2013-10-10 11 views
6

私は当初、N行に12列からなるデータフレームを持っていました。最後の列は私のクラス(0または1)です。私はRで分類するためのrandomforest()の使用?

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

で数値に私の全体のデータフレームに変換する必要がありました。しかし、その後、私は分類器としてランダムフォレスト()ツールを使用するために係数欄するクラスの列を必要と思ったので、私は

training[,"Class"] <- factor(training[,ncol(training)]) 
をしました

私は

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

でツリーを作成するに進んしかし、私は2つのエラー取得しています:

私が作っているフォーマットミスを誰かが指摘できるのであれば、私は感謝します。

ありがとうございます!

+0

あなたは '< - 'の代わりに '<='を使用しようとしています。また、新しい列を作成していますか?そうであれば、 'Class'の数値バージョンを取り除くか、あなたの式に' .'を使わないでください。 –

+0

この問題を解決できる唯一の情報は 'str(training)'の出力です。 – joran

+0

@joran:num [1:891、1:12] 1 2 3 4 5 6 7 8 9 10 ... - attr(*、 "dimnames")=リスト2 .. $:NULL .. $:chr [1:12] "ID" "Class" "Sex" "Age" ... – marc

答えて

5

最初に、構文エラーのために要因への強制は機能しません。第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) 
+0

これは私の問題を解決しなかった、それは私が回帰をしたいかどうか私に依頼しています... – marc

+0

私がちょうど私が投稿した行を追加した後、私はこの構文を使用して終了しました。 – marc

6

したがって、問題は実際には非常に簡単です。私の訓練データは原子ベクトルであることが判明しました。だから最初はデータフレームとして変換する必要がありました。だから私は次の行を追加する必要がありました:

training <- as.data.frame(training) 

問題が解決しました!

関連する問題