y - ymean中的错误:二元运算符randomForest R

时间:2016-09-04 18:54:01

标签: r matrix statistics random-forest

我有一个大约37k x 1024的矩阵,由1和0组成,作为分类变量来表示特征向量的存在与否。我通过R中的randomForest包运行这个矩阵,如下所示:

rfr <- randomForest(X_train,Y_train)

其中X_train是包含分类变量的矩阵,Y_train是由矩阵中每行的标签组成的向量。当我运行它时,我收到以下错误:

Error in y - ymean : non-numeric argument to binary operator
In addition: Warning message:
In mean.default(y) : argument is not numeric or logical: returning NA

我检查了任何空值或缺少数据,但没有找到任何。

我甚至将整个事情变成了data.frame并尝试了以下

rfr <- randomForest(labels ~ ., data = featureDF)

仍有同样的错误。

感谢您的帮助,谢谢!

1 个答案:

答案 0 :(得分:13)

我猜测labels是一个字符变量,但randomForest期望分类结果变量是因子。将其更改为一个因子,看看错误是否消失:

featureDF$labels = factor(featureDF$labels) 

randomForest的帮助没有明确表示需要成为一个因素的响应,但暗示:

y  A response vector. If a factor, classification is assumed, otherwise   
   regression is assumed. If omitted, randomForest will run in unsupervised mode.

您尚未提供示例数据,因此以下是内置iris数据的示例:

Species是原始数据框中的一个因素。我们将Species转换为字符:

iris$Species = as.character(iris$Species)
rf <- randomForest(Species ~ ., data=iris)
Error in y - ymean : non-numeric argument to binary operator

Species转换回因子后,randomForest无误地运行。

iris$Species = factor(iris$Species)
rf <- randomForest(Species ~ ., data=iris)