0
实施ROCR曲线,kNN,K 10倍交叉验证。 我正在使用电离层数据集。“预测格式不正确”
这里是供参考的属性信息:
- 所有34是连续的,上述 所描述 - 第35届属性为“好”或“坏”,根据上面概述的定义 。这是一个二进制分类任务。
data1<-read.csv('https://archive.ics.uci.edu/ml/machine-learning-databases/ionosphere/ionosphere.data',header = FALSE)
knn对自己的作品,kNN与kfold也行得通。但是当我输入ROCR代码时,它并不喜欢它。 我收到错误:“预测的格式不正确”。 我检查了dataframes pred和Class 1.维度是相同的。我尝试data.test $ V35而不是Class1我得到这个选项相同的错误。
install.packages("class")
library(class)
nrFolds <- 10
data1[,35]<-as.numeric(data1[,35])
# generate array containing fold-number for each sample (row)
folds <- rep_len(1:nrFolds, nrow(data1))
# actual cross validation
for(k in 1:nrFolds) {
# actual split of the data
fold <- which(folds == k)
data.train <- data1[-fold,]
data.test <- data1[fold,]
Class<-data.train[,35]
Class1<-data.test[,35]
# train and test your model with data.train and data.test
pred<-knn(data.train, data.test, Class, k = 5, l = 0, prob = FALSE, use.all = TRUE)
data<-data.frame('predict'=pred, 'actual'=Class1)
count<-nrow(data[data$predict==data$actual,])
total<-nrow(data.test)
avg = (count*100)/total
avg =format(round(avg, 2), nsmall = 2)
method<-"KNN"
accuracy<-avg
cat("Method = ", method,", accuracy= ", accuracy,"\n")
}
install.packages("ROCR")
library(ROCR)
rocrPred=prediction(pred, Class1, NULL)
rocrPerf=performance(rocrPred, 'tpr', 'fpr')
plot(rocrPerf, colorize=TRUE, text.adj=c(-.2,1.7))
任何帮助表示赞赏。
我没有看到对循环内分配的LHS任何索引。这是一种常见的R-newb错误。 (我也不确定ROCR是否设立了处理CV多重挑战。) –
谢谢您的评论。 Guilty- R-newb。我不明白你的任务的LHS索引是什么意思。你能指出我在你认为是错误的代码行吗? – codingyo
我真的不知道它是否是“错误的”,但你是否知道,每当你赋予'pred',data','count', 'total','avg',你是否覆盖了每个人的先前值?相反,如果你将它们设置为你可以做的列表:'pred [[i]] < - knn(...)' –