web-dev-qa-db-ja.com

yのエラー-ymean:二項演算子randomForestRへの非数値引数

特徴ベクトルの有無を示すカテゴリ変数として1と0で構成される約37kx1024の行列があります。このマトリックスを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

Null値または欠落データがないかチェックしましたが、見つかりませんでした。

全部をdata.frameにして、次のことを試しました

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

それでも同じエラーが発生しました。

これについて助けていただければ幸いです、ありがとう!

6
user5735224

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)
14
eipi10