定义函数,函数的参数为样本数据集data,样本的类别向量cl,k折交叉验证法的k值kf。该函数使用k折交叉验证法计算最佳k值(1-101之间的奇数),该函数具有通用性,可以计算任何数据集的最佳knn模型,以及其最佳准确率。
求问各位我的函数编写出了什么问题?
myknnCV<-function(data,cl,kf){
folds<-createFolds(y=train$y,k=kf)
A<-data
k_values<-seq(1,101,by=2)
for(i in length(k_values)){
p.51=rep(0,times=51)
for(j in 1:kf){
A.test=A[folds[[j]],]
A.train=A[-folds[[j]],]
set.seed(1)
knn.pred<-knn(A.train,A.test,A.train$data,k=k_values[j])
p.51[j]=mean(knn.pred==A.test$data)
}
knn.p<-mean(p.51)
}
print(paste("kv=",k_values[which.max(knn.p)]))
print(paste0("ar=",knn.p[which.max(knn.p)]))
}