我想在训练模型时减少变量的数量。我总共有784个要减少的功能,比方说500.我可以用选择的功能制作一个长字符串,使用粘贴命令折叠+,以得到一个长字符串。 例如,假设这是我的载体
val <- "pixel40+pixel46+pixel48+pixel65+pixel66+pixel67"
然后我想把它传递给火车这样的功能
Rf_model <- train(label~val, data =training, method="rf", ntree=200, na.action=na.omit)
但我收到了错误
model.frame.default(form = label ~ val, data = training, na.action = na.omit)
谢谢! 路易斯
答案 0 :(得分:3)
你可以这样做:
val <- "pixel40+pixel46+pixel48+pixel65+pixel66+pixel67"
#use paste to paste the label to val
#and then use as.formula to convert to formula
form <- as.formula(paste('label ~', val))
#> form
#label ~ pixel40 + pixel46 + pixel48 + pixel65 + pixel66 + pixel67
Rf_model <- train(form, data =training, method="rf", ntree=200, na.action=na.omit)
此外,在这种情况下,使用字符串创建公式应该没问题,因为这很简单,但对于更复杂的公式,它可能会出错。在这种情况下,您可以浏览stats::update
或Formula
包。
或者您也可以使用update
(虽然我更喜欢上一种方式):
#> update(label ~ 1, paste('~', val) )
#label ~ pixel40 + pixel46 + pixel48 + pixel65 + pixel66 + pixel67