我有一个大约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)
仍有同样的错误。
感谢您的帮助,谢谢!
答案 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)