knn- тот же k, другой результат

У меня матриз 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,]

и используйте КНН:

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

Каждый раз, когда я запускаю эти 3 последние строки, я получаю другое значение в res. Почему?

Есть ли лучший способ проверить, что является ошибкой теста?


r knn
person shiran    schedule 31.07.2015    source источник


Ответы (1)


Из документации knn,

Для каждой строки тестового набора находятся k ближайших (по евклидову расстоянию) векторов обучающего набора, и классификация определяется большинством голосов, при этом ничьи разрываются случайно.

Если вы не хотите, чтобы происходила рандомизация, вы можете использовать set.seed, чтобы обеспечить одинаковую «рандомизацию» при каждом запуске.

person Josh    schedule 31.07.2015
comment
Спасибо!!! не могли бы вы показать мне, как использовать set.seed и какое значение я должен выбрать? - person shiran; 01.08.2015
comment
Используйте set.seed(x), где x — любое число. Разные значения приведут к разным рандомизациям, но использование одного и того же значения обеспечит одинаковую репликацию. - person Josh; 02.08.2015