使用变量在R中的预测函数中定义训练列

时间:2015-10-19 12:59:01

标签: r r-caret

让我们说我们有以下代码(此问题的培训/测试分区无关紧要)。

library(caret)
data(iris)
train( Species ~ .,data=iris, method="rf" )  

现在运行正常。我想要做的是提供我试图使用变量预测的列(因为我将从GUI获取它)。让我们使用下面的示例代码:

library(caret)
data(iris)
colName <- 'Species'
train( colName ~ .,data=iris, method="rf" )  

这不起作用,因为colName不是数据集中的列之一。那有没有办法做到这一点?我一直在寻找高低,一无所获。有人请帮助我:(。

1 个答案:

答案 0 :(得分:1)

这是一个足够简单的案例,因此以下列方式使用paste应该没问题:

library(caret)
data(iris)
colName <- 'Species'

#create the formula using as.formula and paste
formula <- as.formula(paste(colName, ' ~ .' ))

#run model
train(formula, data=iris, method="rf" )  

输出:

> train( formula,data=iris, method="rf" )
Random Forest 

150 samples
  4 predictor
  3 classes: 'setosa', 'versicolor', 'virginica' 

No pre-processing
Resampling: Bootstrapped (25 reps) 

Summary of sample sizes: 150, 150, 150, 150, 150, 150, ... 

Resampling results across tuning parameters:

  mtry  Accuracy   Kappa      Accuracy SD  Kappa SD  
  2     0.9481249  0.9216819  0.02790700   0.04200793
  3     0.9473557  0.9205465  0.02893104   0.04347956
  4     0.9466284  0.9194525  0.02920803   0.04388548

Accuracy was used to select the optimal model using  the largest value.
The final value used for the model was mtry = 2.