找到KNN for statement的最佳值

问题描述 投票:0回答:1

我试图写一个for语句来找到KNN中的最佳值k。不幸的是,我现在尝试了几次我的代码片段,但似乎它没有计算出正确的值。你知道这个陈述有什么问题吗?

# 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)
r for-loop knn rscript
1个回答
1
投票

我在一些基于仿真的数据上进行了测试,它运行得很好!唯一需要注意的是,您可能有不同的Ks,您可以获得最高的准确度,并打印最大的K(因为它的编码方式)。

也许您可以将代码行更改为:

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

因此,当您打印bestk时,您可以看到所有最佳Ks。

© www.soinside.com 2019 - 2024. All rights reserved.