K近鄰算法

一、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

四、總結

            可以看到鳶尾花的數據是已經經過特徵提取的四維數據,因此使用最近鄰是合適的。但是現在深度學習都是直接使用圖片的像素作爲輸入特徵,特徵值多,且數據量大,使用最近鄰是不適合的。

 

 

         

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章