【发布时间】:2018-09-10 13:41:17
【问题描述】:
我正在尝试应用表函数但我得到了这个错误,所以我认为这是因为测试是一个因素而预测是一个矩阵:
表中的错误(rfe_nB_test_folds[, 7], rfe_nB_predict): 所有参数的长度必须相同
为此,我需要将预测结果转换为因子,以便可以在表函数上使用它,但我收到此错误,我认为这是因为 10 次交叉验证,因为当我在没有 10 次交叉验证的情况下尝试它时它可以工作:
[.default(rfe_nB_predict, , 2) 中的错误: 维数不正确
我的代码:
set.seed(100)
rfe_nB_folds<-createFolds(BC_bind$outcome, k=10) #create folds
rfe_nB_fun <- lapply (rfe_nB_folds, function(x){
rfe_nB_traing_folds<-BC_bind[-x,]
rfe_nB_test_folds<-BC_bind[x,]
#build the model
rfe_nB_model<-naiveBayes(outcome ~ ., data = rfe_nB_traing_folds) #test the model
rfe_nB_predict<-predict(rfe_nB_model,rfe_nB_test_folds[-7],type="raw")
rfe_nB_predict<-as.factor(rfe_nB_predict)
CR<-roc.curve(rfe_nB_test_folds[,7], rfe_nB_predict[,2])
print(CR)
rfe_nB_table<-table(rfe_nB_test_folds[,7],rfe_nB_predict)
rfe_nB_confusionMatrix<-confusionMatrix(rfe_nB_table,positive = "R") #to see the matrex of echo flods
return (rfe_nB_confusionMatrix$table)
})
【问题讨论】:
-
我已将代码添加到问题中,这是类和长度
> class(rfe_nB_test_folds[,7]) [1] "factor" > length(rfe_nB_test_folds[,7]) [1] 20 > class(rfe_nB_predict) [1] "matrix" > length(rfe_nB_predict) [1] 40 -
请重新阅读链接!如果我运行您的代码,我会立即收到一个错误,因为
BC_bind未定义,因此您的示例不完整,我怀疑它是否可验证。 -
BC_bind 是数据集,我上传到这里dropbox.com/s/fsz07fkme5nlz4s/WPDC.xlsx?dl=0
标签: r naivebayes