10

私は元々、N行の12列で構成されるデータフレームを持っていました。最後の列は私のクラス (0 または 1) です。データフレーム全体を数値に変換する必要がありました

training <- sapply(training.temp,as.numeric)

しかし、次に、randomforest() ツールを分類子として使用するには、class 列を factor 列にする必要があると考えたので、そうしました。

training[,"Class"] <- factor(training[,ncol(training)])

ツリーの作成に進みます

training_rf <- randomForest(Class ~., data = trainData, importance = TRUE, do.trace = 100)

しかし、次の 2 つのエラーが発生します。

1: In Ops.factor(training[, "Status"], factor(training[, ncol(training)])) : 
<= this is not relevant for factors (roughly translated)
2: In randomForest.default(m, y, ...) :
The response has five or fewer unique values.  Are you sure you want to do regression?

誰かが私が行っているフォーマットの間違いを指摘していただければ幸いです。

ありがとう!

4

2 に答える 2

8

したがって、問題は実際には非常に単純です。私のトレーニング データは原子ベクトルであることがわかりました。そのため、最初にデータ フレームとして変換する必要がありました。したがって、次の行を追加する必要がありました。

training <- as.data.frame(training)

問題が解決しました!

于 2013-10-11T09:14:39.377 に答える
6

まず、構文エラーのため、因子への強制が機能していません。第 2 に、RF モデルを指定するときは常にインデックスを使用する必要があります。これを機能させるためのコードの変更を次に示します。

    training <- sapply(training.temp,as.numeric)
      training[,"Class"] <- as.factor(training[,"Class"])

    training_rf <- randomForest(x=training[,1:(ncol(training)-1)], y=training[,"Class"], 
                                importance=TRUE, do.trace=100)

# You can also coerce to a factor directly in the model statement
    training_rf <- randomForest(x=training[,1:(ncol(training)-1)], y=as.factor(training[,"Class"]), 
                                importance=TRUE, do.trace=100)
于 2013-10-10T18:14:05.347 に答える