【问题标题】:Convert matrix to factor将矩阵转换为因子
【发布时间】: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)
  })

【问题讨论】:

  • 我已将代码添加到问题中,这是类和长度&gt; class(rfe_nB_test_folds[,7]) [1] "factor" &gt; length(rfe_nB_test_folds[,7]) [1] 20 &gt; class(rfe_nB_predict) [1] "matrix" &gt; length(rfe_nB_predict) [1] 40
  • 请重新阅读链接!如果我运行您的代码,我会立即收到一个错误,因为 BC_bind 未定义,因此您的示例不完整,我怀疑它是否可验证。
  • BC_bind 是数据集,我上传到这里dropbox.com/s/fsz07fkme5nlz4s/WPDC.xlsx?dl=0

标签: r naivebayes


【解决方案1】:

我使用了特定的列,因此我将它们保存在 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))

【讨论】:

    猜你喜欢
    • 2012-12-03
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    相关资源
    最近更新 更多