使用R完成K近鄰分類
阿新 • • 發佈:2022-05-04
使用資料集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])