Я протестировал его на нескольких данных, основанных на симуляции, и он работает просто отлично!Единственное, на что следует обратить внимание, - это то, что у вас могут быть разные K, для которых вы получаете наивысшую точность, и вы печатаете самый большой K (из-за способа его кодирования).
Возможно, вы можете изменить строку своего кодана это:
if(bestaccuracy< knn.cvac.accuracy) bestk=c(bestk, k)
Таким образом, вы можете увидеть все оптимальные Ks при печати bestk.