Использование переменной для определения обучающего столбца в функции прогнозирования в R
Допустим, у нас есть следующий код (раздел обучения / тестирования для этой проблемы не имеет значения).
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 ответ
Решение
Это достаточно простой случай, поэтому использование 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.