Найти лучшее значение для КНН для заявления - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь написать оператор for, чтобы найти лучшее значение k в KNN.К сожалению, я уже несколько раз пробовал свой фрагмент кода, но, похоже, он не вычисляет правильное значение.У вас есть идея, что не так в утверждении

# Tune the value of K using K-Fold Cross Validation
bestaccuracy = 0
bestaccuracy
n.folds <- 100
for (k in 1:n.folds) {
set.seed(1)
knn.cvac <- knn.cv(train= x.australian.stan, cl= y.australian, k=k)
knn.cvac.table <- table (knn.cvac, y.australian)
knn.cvac.accuracy <- sum(diag(knn.cvac.table))/sum(knn.cvac.table)
if(bestaccuracy< knn.cvac.accuracy) bestk=k
if(bestaccuracy< knn.cvac.accuracy) bestaccuracy = knn.cvac.accuracy}
print(bestk)
print(bestaccuracy)

1 Ответ

0 голосов
/ 22 мая 2018

Я протестировал его на нескольких данных, основанных на симуляции, и он работает просто отлично!Единственное, на что следует обратить внимание, - это то, что у вас могут быть разные K, для которых вы получаете наивысшую точность, и вы печатаете самый большой K (из-за способа его кодирования).

Возможно, вы можете изменить строку своего кодана это:

if(bestaccuracy< knn.cvac.accuracy) bestk=c(bestk, k)

Таким образом, вы можете увидеть все оптимальные Ks при печати bestk.

...