knn-相同的k,不同的结果

shi*_*ran 6 r knn

我有一个矩阵ZZ。在我运行prcomp并选择前 5 台 PC 后,我得到data_new

P= prcomp(zz)
data_new = P$x[,1:5]
Run Code Online (Sandbox Code Playgroud)

然后我分成训练集和测试集

pca_train = data_new[1:121,]
pca_test = data_new[122:151,]
Run Code Online (Sandbox Code Playgroud)

并使用 KNN:

k <- knn(pca_train, pca_test, tempGenre_train[,1], k = 5)
a <- data.frame(k)
res <- length(which(a!=tempGenre_test))
Run Code Online (Sandbox Code Playgroud)

每次运行最后 3 行时,我都会在res中得到不同的值。为什么?

有没有更好的方法来检查测试错误是什么?

Jos*_*osh 8

从 的文档来看knn

对于测试集的每一行,找到k个最近的(欧氏距离)训练集向量,并通过多数投票决定分类,并随机打破平局

如果您不希望发生随机化,则可以使用它set.seed来确保每次运行都有相同的“随机化”。