首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在训练随机森林树的数据时出现错误-如何修复?

在训练随机森林树的数据时出现错误-如何修复?
EN

Stack Overflow用户
提问于 2021-05-05 10:02:47
回答 1查看 17关注 0票数 0

我为一个随机森林模型写了这段代码。

代码语言:javascript
复制
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

它是工作的,但现在下面的部分给我一个错误,告诉我"Error in colMeans(x,na.rm = TRUE):'x‘必须是数字“。我该如何修复这两行代码呢?

代码语言:javascript
复制
training_set[-3] = scale(training_set[-3])
test_set[-3] = scale(test_set[-3])
EN

回答 1

Stack Overflow用户

发布于 2021-05-08 03:18:30

似乎至少有一个预测器不是数字的。当你有一个与你的数据相关的问题时,建议你dput你的数据集的一个样本,或者发布一个重现你的错误的例子,也包括你使用的library。然而,你可能只需要转换你的预测值。用str检查每一列的class,然后用as.numeric转换非数字的predictors。另外,在数据拆分之前最好使用scale函数。请参阅iris数据集的示例

代码语言:javascript
复制
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

这个可以正常工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67394253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档