機器學習算法實現(五):KNN

K近鄰(KNN)算法R語言實踐


第一步:數據集分為訓練集和測試集

index <-sample(1:nrow(iris), 100)iris.train <-iris[index, ]iris.test <-iris[-index, ]


第二步:加載能夠做k近鄰的class包

library(class)

## ?Warning: package 'class'was built under R version 3.1.3


第三步:利用kNN算法對測試集進行分類

result.KNN<-knn(train=subset(iris.train,select=-Species),test=subset(iris.test,select=-Species), cl=iris.train$Species)


第四步:生成結果集的混淆矩陣

table(result.KNN, iris.test$Species)

result.KNN/? setosa? versicolor? virginica

setosa? ? ? ? 21? ? ? 0? ? ? ? ? ? 0

versicolor? ? 0? ? ? ? 11? ? ? ? ? 1

virginica? ? 0? ? ? ? 1? ? ? ? ? ? 16


kNN算法原理

1、K最近鄰(k-NearestNeighbor,KNN)分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。該方法的思路是:如果一個樣本在特征空間中的k個最相似(即特征空間中最鄰近)的樣本中的大多數屬于某一個類別,則該樣本也屬于這個類別。

2、KNN算法中,所選擇的鄰居都是已經正確分類的對象。該方法在定類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。KNN方法雖然從原理上也依賴于極限定理,但在類別決策時,只與極少量的相鄰樣本有關。由于KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對于類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更為適合。

3、KNN算法不僅可以用于分類,還可以用于回歸。通過找出一個樣本的k個最近鄰居,將這些鄰居的屬性的平均值賦給該樣本,就可以得到該樣本的屬性。更有用的方法是將不同距離的鄰居對該樣本產生的影響給予不同的權值(weight),如權值與距離成正比。


參考文獻:

本文轉載自 ? ?http://www.360doc.com/userhome.aspx?userid=26290960&cid=10

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • kNN算法原理 1、K最近鄰(k-NearestNeighbor,KNN)分類算法,是一個理論上比較成熟的方法,也...
    雨一流閱讀 24,991評論 0 8
  • 前言 學習數據挖掘已經有一段時間了,相關的文章和書也看了一些,感覺學習這個的關鍵還是離不開其中形形色色的算法。作為...
    謙嘯閱讀 5,524評論 2 21
  • 一.樸素貝葉斯 1.分類理論 樸素貝葉斯是一種基于貝葉斯定理和特征條件獨立性假設的多分類的機器學習方法,所...
    wlj1107閱讀 3,126評論 0 5
  • 偶然之間看到,很多R包中都有knn算法的應用,他們有什么不同之處嗎?到底應該選擇哪個包來實現knn呢?為了解決這些...
    奔跑的蜈蚣閱讀 10,920評論 2 6
  • ——20日夜戀纏綿秋雨中杭城的霓虹 秋雨大街小巷里纏綿, 你卻穿梭搖曳, 忘記了整個夜晚, 于是凄楚的街耀眼的冷艷...
    青荷小泉閱讀 142評論 0 0