r-运行一个变量的随机森林算法



我使用一个预测器来使用随机森林算法。

RF_MODEL <- randomForest(x=Data_[,my_preds], y=as.factor(Data_$P_A), data=Data_, ntree=1000, importance =T)

但我收到了一条错误消息:

Error in if (n == 0) stop("data (x) has 0 rows") : 
l'argument est de longueur nulle

这是否意味着我们不能使用一个变量的RF?

这里的问题是,当您在randomForest中指定x时,x应该是"数据帧或预测器矩阵或描述待拟合模型的公式";。您正在指定一个向量Data_[, my_preds],其中我假设my_preds是一个描述列名的字符串。在指定数据帧的一列时,默认情况下会得到一个向量。

可以使用drop = FALSE来确保x保持为数据帧列。

RF_MODEL <- randomForest(x = Data_[,my_preds, drop = FALSE], 
y = as.factor(Data_$P_A), 
data = Data_, 
ntree = 1000, importance = TRUE)

我们可以使用iris数据集进行演示。

library(randomForest)
randomForest(x = iris[, "Sepal.Width"], y = iris$Species, data = iris)
Error in if (n == 0) stop("data (x) has 0 rows") : 
argument is of length zero

使用drop=FALSE:

randomForest(x = iris[, "Sepal.Width", drop = FALSE], y = iris$Species, data = iris)
Call:
randomForest(x = iris[, "Sepal.Width", drop = FALSE], y = iris$Species,      data = iris) 
Type of random forest: classification
Number of trees: 500
No. of variables tried at each split: 1
OOB estimate of  error rate: 52.67%
Confusion matrix:
setosa versicolor virginica class.error
setosa         31          2        17        0.38
versicolor      3         20        27        0.60
virginica      17         13        20        0.60

你也可以考虑使用一个公式来避免这个问题:

randomForest(Species ~ Sepal.Width, data = iris)

相关内容

  • 没有找到相关文章

最新更新