knn演算法是基本的機器學習方法,其原理很簡單:如果乙個例項在特徵空間中的k個最相似(即特徵空間中最近鄰)的例項中的大多數屬於某乙個類別,則該例項也屬於這個類別。其實際上是選擇k個最可能的樣本進行投票,這和k-means尋找k個幾何中心點進行聚類是不同的. 如下圖所示:
有兩種型別的樣本資料,一類是藍色的正方形,另一類是紅色的三角形,中間綠色的圓形是待分類資料.如果k=3,那麼離綠色點最近的有2個紅色的三角形和1個藍色的正方形,這三個點進行投票,於是綠色的待分類點就屬於紅色的三角形。而如果k=5,那麼離綠色點最近的有2個紅色的三角形和3個藍色的正方形,這五個點進行投票,於是綠色的待分類點就屬於藍色的正方形。
knn演算法的關鍵有兩個:
特徵空間的選擇,也就是你如何來定義各個特徵的距離;
k值的選擇,也就是最近鄰的範圍的選擇;
在《機器學習實戰》中給了兩個例子,乙個是關於**約會推薦,乙個是手寫數字識別,相關的**和注釋都在我的github上:
knn
機器學習實戰第二章 KNN
tile的使用方法 tile a,n 的功能是把a陣列重複n次 可以在列方向,也可以在行方向 argsort 函式 argsort 函式返回的是陣列中值從大到小的索引值 dict.get 函式 語法 dict.get key,default none key 字典中要查詢的鍵 default 如果指...
機器學習實戰 第二章 K 近鄰演算法
本系列目的在於總結每乙個分類器的特點 優點 缺點 使用資料型別 使用時的注意事項等 相關 自己搜。python 建議使用2.7 python常用函式庫 numpy scikit learn等 python整合環境 anaconda 優點 1 對異常值不敏感 2 無資料輸入假設 缺點 1 計算複雜度高...
機器學習實戰 第二章KNN中的一些問題
第一 書中file2matrix函式可能無法通過編譯。函式如下 def file2matrix filename fr open filename arrayolines fr.readlines numberoflines len arrayolines returnmat zeros numbe...