1. 程式人生 > 其它 >使用R完成K近鄰分類

使用R完成K近鄰分類

使用資料集iris, 驗證Petal.Length, Petal.Width兩個特徵的分類能力。程式碼如下:

with(iris, plot(Petal.Length, Petal.Width,  col=as.integer(Species)))
text(2.2, 0.3, "setosa")
text(3.0, 1.3,  "versicolor")
text(6.5, 1.7, "virginica")

呼叫kknn函式進行模型訓練與預測,程式碼如下:

library(kknn)
 
data(iris)
m <-  dim(iris)[1]  #獲取資料集記錄條數
val <- sample(1:m, size =round(m/3), replace  = FALSE, prob= rep(1/m, m))  #抽樣,選取三分之二的資料作為訓練集。
iris.learn <-  iris[-val,]  #選取訓練集
iris.valid <- iris[val,]   #選取驗證集
#訓練模型並進行預測分類
iris.kknn <- kknn(Species~Petal.Length +  Petal.Width,iris.learn, iris.valid, k=7, distance=2)
summary(iris.kknn)   #檢視分類結果
#判定分類準確性
fit <-  fitted(iris.kknn)
table(iris.valid$Species, fit)

最終結果:可以看出,只有兩個個記錄被誤分類。

以視覺化方式呈現誤分類情況,呼叫如下程式碼:

pcol <- as.character(as.numeric(iris.valid$Species))
plot(iris.valid[3:4], pch = pcol, col = c("green3", "red")
 [(iris.valid$Species != fit)+1])