r - 为随机森林树训练数据时出错 - 我该如何解决?
问题描述
我为随机森林模型编写了这段代码。
set.seed(123)
split = sample.split(arrow_clean$discountflag, SplitRatio = 0.70)
training_set = subset(arrow_clean, split == TRUE)
test_set = subset(arrow_clean, split == FALSE)
length(training_set)
training_set[-3] = scale(training_set[-3])
test_set[-3] = scale(test_set[-3])
head(training_set)
library(randomForest)
classifier = randomForest(x = training_set[-3],
y = training_set$discountflag,
ntree = 500, random_state = 0)
y_pred = predict(classifier, newdata = test_set[-3])
y_pred
cm = table(test_set[, 3], y_pred)
cm
它正在工作,但现在以下部分给了我一个错误,上面写着“colMeans(x,na.rm = TRUE)中的错误:'x'必须是数字”。我该如何解决这两行的问题?
training_set[-3] = scale(training_set[-3])
test_set[-3] = scale(test_set[-3])
解决方案
似乎您的预测变量中至少有一个不是数字的。当您遇到与数据相关的问题时,建议dput
您使用数据集的样本,或发布一个重现您的错误的示例,还包括library
您使用的 s。但是,您可能只需要转换您的预测变量。用检查class
每列的str
,然后用 转换非数字预测变量as.numeric
。此外,最好scale
在数据拆分之前使用函数。iris
查看数据集的示例
set.seed(123)
iris[-5] = scale(iris[-5])
split = caTools::sample.split(iris$Species, SplitRatio = 0.70)
training_set = subset(iris, split == TRUE)
test_set = subset(iris, split == FALSE)
library(randomForest)
classifier = randomForest(x = training_set[-5],
y = training_set$Species,
ntree = 500, random_state = 0)
y_pred = predict(classifier, newdata = test_set[-5])
y_pred
cm = table(test_set[, 5], y_pred)
cm
这工作很好
推荐阅读
- javascript - 在 iOS 上替换 Appcelerator 应用程序数据库
- wordpress - 单击图像时将脚本添加到所有页面
- excel - Excel宏忽略更改A和G列大小的步骤
- continuous-integration - 如何在 openshift 中拥有完整的 CI/CD?
- db2 - 没有滚动游标的 DB2 临时表
- python - Python:如何复制矩阵的同一行?
- android - 如何在没有导航抽屉的情况下创建导航视图
- android - 重新启动互联网时 Firestore 保持断开连接
- swift - Swift,Firebase:创建用户后实时数据库中没有数据
- android - 如何制作这种类型的自定义 EditText UI?