KNN 概述
k-近鄰(kNN, k-NearestNeighbor)算法是一種基本分類與回歸方法,我們這裡只討論分類問題中的 k-近鄰算法。
一句話總結:近朱者赤近墨者黑!工作原理: 存在一個樣本數據集合,也稱作為訓練樣本集,並且樣本集中每個數據都存在標籤,即我們知道樣本集中每一個數據與所屬分類的對應關係。輸入沒有標籤的新數據後,將新的數據的每個特徵與樣本集中數據對應的特徵進行比較,然後算法提取樣本最相似數據(最近鄰)的分類標籤。一般來說,我們只選擇樣本數據集中前k個最相似的數據,這就是k-近鄰算法中k的出處,通常k是不大於20的整數。最後,選擇k個最相似數據中出現次數最多的分類,作為新數據的分類。
k近鄰算法的輸入為實例的特徵向量,對應於特徵空間的點;輸出為實例的類別,可以取多類。k 近鄰算法假設給定一個訓練數據集,其中的實例類別已定。分類時,對新的實例,根據其 k 個最近鄰的訓練實例的類別,通過多數表決等方式進行預測。因此,k近鄰算法不具有顯式的學習過程。 k近鄰算法實際上利用訓練數據集對特徵向量空間進行劃分,並作為其分類的「模型」。 k值的選擇、距離度量以及分類決策規則是k近鄰算法的三個基本要素。
KNN 場景
電影可以按照題材分類,那麼如何區分
動作片
和
愛情片
呢?
動作片:打鬥次數更多愛情片:親吻次數更多基於電影中的親吻、打鬥出現的次數,使用 k-近鄰算法構造程序,就可以自動劃分電影的題材類型。
現在根據上面我們得到的樣本集中所有電影與未知電影的距離,按照距離遞增排序,可以找到 k 個距離最近的電影。假定 k=3,則三個最靠近的電影依次是, He's Not Really into Dudes 、 Beautiful Woman 和 California Man。knn 算法按照距離最近的三部電影的類型,決定未知電影的類型,而這三部電影全是愛情片,因此我們判定未知電影是愛情片。對於K近鄰算法概念還沒搞太清楚的同學 可以往下面看 直到看完整個demo你就可以理解KNN算法是幹啥的了
KNN 原理
KNN 工作原理
假設有一個帶有標籤的樣本數據集(訓練樣本集),其中包含每條數據與所屬分類的對應關係。輸入沒有標籤的新數據後,將新數據的每個特徵與樣本集中數據對應的特徵進行比較。計算新數據與樣本數據集中每條數據的距離。對求得的所有距離進行排序(從小到大,越小表示越相似)。取前 k (k 一般小於等於 20 )個樣本數據對應的分類標籤。求 k 個數據中出現次數最多的分類標籤作為新數據的分類。KNN 通俗理解
給定一個訓練數據集,對新的輸入實例,在訓練數據集中找到與該實例最鄰近的 k 個實例,這 k 個實例的多數屬於某個類,就把該輸入實例分為這個類。
KNN 開發流程
收集數據:任何方法準備數據:距離計算所需要的數值,最好是結構化的數據格式分析數據:任何方法訓練算法:此步驟不適用於 k-近鄰算法測試算法:計算錯誤率使用算法:輸入樣本數據和結構化的輸出結果,然後運行 k-近鄰算法判斷輸入數據分類屬於哪個分類,最後對計算出的分類執行後續處理
KNN 算法特點
優點:精度高、對異常值不敏感、無數據輸入假定缺點:計算複雜度高、空間複雜度高適用數據範圍:數值型和標稱型
缺點:計算複雜度高、空間複雜度高
適用數據範圍:數值型和標稱型
喜歡點下關注,你的關注是我寫作的最大支持