kNN 的好处之一是您可以处理任意数量的类。RA Fisher 创建的经典数据挖掘数据集。它具有三种类型的虹膜(Virginica、Setosa 和 Versicolor),分布均匀(每种 50 个)。我们将使用 knn 函数尝试对花朵样本进行分类。
library(class) #Has the knn function
set.seed(4948493) #Set the seed for reproducibility
#Sample the Iris data set (70% train, 30% test)
ir_sample<-sample(1:nrow(iris),size=nrow(iris)*.7)
ir_train<-iris[ir_sample,] #Select the 70% of rows
ir_test<-iris[-ir_sample,] #Select the 30% of rows
将数据分开后,我们可以开始尝试不同级别的 K。我们将设置一个保持变量 (iris_acc) 来存储每个 K 的性能。然后我们将从 1 循环到 50(即邻居数),然后绘图看看哪一个表现最好。
iris_acc<-numeric() #Holding variable
for(i in 1:50