K近鄰(KNN)算法R語(yǔ)言實(shí)踐
第一步:數(shù)據(jù)集分為訓(xùn)練集和測(cè)試集
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算法對(duì)測(cè)試集進(jìn)行分類
result.KNN<-knn(train=subset(iris.train,select=-Species),test=subset(iris.test,select=-Species), cl=iris.train$Species)
第四步:生成結(jié)果集的混淆矩陣
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)分類算法香嗓,是一個(gè)理論上比較成熟的方法舌厨,也是最簡(jiǎn)單的機(jī)器學(xué)習(xí)算法之一橄务。該方法的思路是:如果一個(gè)樣本在特征空間中的k個(gè)最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某一個(gè)類別得院,則該樣本也屬于這個(gè)類別拜银。
2、KNN算法中钠至,所選擇的鄰居都是已經(jīng)正確分類的對(duì)象。該方法在定類決策上只依據(jù)最鄰近的一個(gè)或者幾個(gè)樣本的類別來(lái)決定待分樣本所屬的類別胎源。KNN方法雖然從原理上也依賴于極限定理棉钧,但在類別決策時(shí),只與極少量的相鄰樣本有關(guān)涕蚤。由于KNN方法主要靠周圍有限的鄰近的樣本宪卿,而不是靠判別類域的方法來(lái)確定所屬類別的,因此對(duì)于類域的交叉或重疊較多的待分樣本集來(lái)說(shuō)万栅,KNN方法較其他方法更為適合佑钾。
3、KNN算法不僅可以用于分類烦粒,還可以用于回歸休溶。通過(guò)找出一個(gè)樣本的k個(gè)最近鄰居,將這些鄰居的屬性的平均值賦給該樣本扰她,就可以得到該樣本的屬性兽掰。更有用的方法是將不同距離的鄰居對(duì)該樣本產(chǎn)生的影響給予不同的權(quán)值(weight),如權(quán)值與距離成正比徒役。
參考文獻(xiàn):
本文轉(zhuǎn)載自 ? ?http://www.360doc.com/userhome.aspx?userid=26290960&cid=10