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

knn- same k, different result

我有矩阵ZZ。在我 运行 prcomp 并选择前 5 台电脑后,我得到 data_new:

P= prcomp(zz)
data_new = P$x[,1:5]

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

pca_train = data_new[1:121,]
pca_test = data_new[122:151,]

并使用 KNN:

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

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

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

来自 knn

的文档

For each row of the test set, the k nearest (in Euclidean distance) training set vectors are found, and the classification is decided by majority vote, with ties broken at random.

如果您不希望发生随机化,您可以使用 set.seed 来确保每个 运行.

上的 "randomization" 相同

我不知道为什么,但你可以使用 np.random.seed(32) 来修复它。