将矩阵转换为因子

时间:2018-03-31 21:35:33

标签: r naivebayes

我正在尝试应用表函数但是我得到了这个错误,所以我认为因为测试是一个因素而且预测是一个矩阵:

  

表中的错误(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)
  })

1 个答案:

答案 0 :(得分:0)

我使用了特定的列,所以我将它们保存在BC_bind上,如代码所示。

Top_6featurs <- wpdc[,c(33,11,10,32,29,12)] #column number of top 6 featur
BC_bind <- data.frame(cbind(Top_6featurs , wpdc$outcome))