我为一个随机森林模型写了这段代码。
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‘必须是数字“。我该如何修复这两行代码呢?
training_set[-3] = scale(training_set[-3])
test_set[-3] = scale(test_set[-3])发布于 2021-05-08 03:18:30
似乎至少有一个预测器不是数字的。当你有一个与你的数据相关的问题时,建议你dput你的数据集的一个样本,或者发布一个重现你的错误的例子,也包括你使用的library。然而,你可能只需要转换你的预测值。用str检查每一列的class,然后用as.numeric转换非数字的predictors。另外,在数据拆分之前最好使用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这个可以正常工作
https://stackoverflow.com/questions/67394253
复制相似问题