r - 随机森林的动态响应变量
问题描述
我正在尝试创建一个动态 ML 应用程序,该应用程序允许用户使用随机森林模型上传数据集以获取数据集中第一列的预测。
我遇到了randomforest()
函数问题,特别是当我尝试将响应变量指定为数据集的第一列时。对于下面的示例,我使用iris 数据集并将响应变量Species移动到第一列中。
这是我的尝试:
model <- randomForest(names(DATA[1]) ~ ., data = DATA, ntree = 500, mtry = 3, importance = TRUE)
但是,这不起作用。我得到的错误是:
错误:可变长度不同(为“物种”找到)
当我像这样手动指定响应变量时,应用程序和功能似乎才起作用:
model <- randomForest(Species ~ ., data = DATA, ntree = 500, mtry = 3, importance = TRUE)
我曾尝试使用该paste()
功能来发挥一些作用,但没有成功。
我应该如何编写代码才能使其正常工作?
解决方案
看起来您想从字符串构建公式。你可以使用eval
andparse
来做到这一点。像这样的东西应该工作:
model <- randomForest(eval(parse(text = paste(names(DATA)[1], "~ ."))),
data = DATA, ntree = 500, mtry = 3, importance = TRUE)
使用原始 iris 数据集的示例:
model <- randomForest(eval(parse(text = paste(names(iris)[5], "~ ."))),
data = iris, ntree = 500, mtry = 3, importance = TRUE)
model
Call:
randomForest(formula = eval(parse(text = paste(names(iris)[5], "~ ."))), data = iris,
ntree = 500, mtry = 3, importance = TRUE)
Type of random forest: classification
Number of trees: 500
No. of variables tried at each split: 3
OOB estimate of error rate: 4%
Confusion matrix:
setosa versicolor virginica class.error
setosa 50 0 0 0.00
versicolor 0 47 3 0.06
virginica 0 3 47 0.06
推荐阅读
- vue.js - 请告诉我如何消除每次更改道具时被覆盖的错误
- node.js - 代码 ELIFECYCLE npm local pacakges 不工作
- node.js - 使用 Firebase Fucntions (Node) 从存储中获取图像下载 url
- c# - 在c#中使用国家名称、日期时间和时区偏移值获取ZoneId
- python - /shop/checkout/ 处的 ValueError 不正确的 AES 密钥长度(22 字节)
- r - 在 R 中使用 Mutate_at() 更改列数据类型
- python - Python 服务器到 Oracle 数据库
- windows - 如何只为来自不同进程的一个进程修改 GetKeyState?
- react-native - 从“react-native-video”中包含 {Video} 后,我收到此错误。否则我的代码工作正常
- json - 外部类型问题的 JSON 序列化 - 将 map[string]interface{} 项转换为 int