特徴ベクトルの有無を示すカテゴリ変数として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)
それでも同じエラーが発生しました。
これについて助けていただければ幸いです、ありがとう!
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)