一、K近鄰算法詳述
1.算法步驟
爲了判斷未知實例的實例,以已知實例的實例作爲參照。
選擇參數K(K個與未知實例最近鄰的點,通常k是不大於20的整數)
計算未知實例與所有已知實例的距離。
選擇K個最近K個已知實例的點。
根據少數服從多數的投票原則,讓未知實例歸類爲K個最近鄰樣本中最多數的實例。
2.細節
距離的衡量方法:歐式距離、餘弦值、相關度、曼哈頓距離等。
3.訓練算法需要做什麼
選擇參數K以及距離衡量方法。
4.算法優缺點
4.1 優點:簡單、易於理解、容易實現、通過對K的選擇可以去噪聲。
4.2 缺點:需要大量空間存儲樣本數據、算法複雜度高、不適用於樣本不均衡的情況。
二、K近鄰算法的sklearn用法
from sklearn import neighbors
from sklearn import datasets
knn = neighbors.KNeighborsClassifier()
knn.fit(iris.data,iris.target)
predictedLabel = knn.predict([[0.1,0.2,0.3,.04]])
三、使用K近鄰分類鳶尾花
1.鳶尾花數據集(Iris)
實例個數:150個實例
數據維度:蕚片長度,蕚片寬度,花瓣長度,花瓣寬度。
分類數目:三個:Iris setosa,Iris versicolor,Iris virginica
2.實際代碼
from sklearn import neighbors
from sklearn import datasets
knn = neighbors.KNeighborsClassifier()
iris = datasets.load_iris()
print iris
knn.fit(iris.data,iris.target)
predictedLabel = knn.predict([[0.1,0.2,0.3,.04]])
print predictedLabel
四、總結
可以看到鳶尾花的數據是已經經過特徵提取的四維數據,因此使用最近鄰是合適的。但是現在深度學習都是直接使用圖片的像素作爲輸入特徵,特徵值多,且數據量大,使用最近鄰是不適合的。