2016-07-02 7 views
-2

RでRFモデルを作成しましたが、テストセットの結果を正しく予測できました。私は、私が試してみて、モデルで使用するいくつかの新しいデータを生成したい正しく新しいデータのランダムなフォレスト予測子がトレーニングデータと一致しないr

> str(testing) 
'data.frame': 4489 obs. of 9 variables: 
$ pf    : Factor w/ 1755 levels 
$ p.E    : Factor w/ 24 levels 
$ p.EF    : Factor w/ 30 levels 
$ p.B    : Factor w/ 9 levels 
$ p.BC    : Factor w/ 26 levels 
$ p.L    : num 110 122 201 60 9 ... 
$ p.N    : Factor w/ 9 levels 
$ p    : num 580 
$ pt    : Factor w/ 30 levels 

変数PFを測定していますので、私はしようとする、テスト・セットの最初の行と同一であったいくつかの新しいデータを、作られましたそして、PFを予測:

> df=testing[1,] 
> df=droplevels(df) 
> str(df) 
'data.frame': 1 obs. of 9 variables: 
$ pf    : Factor w/ 1 level 
$ p.E    : Factor w/ 1 level 
$ p.EF    : Factor w/ 1 level 
$ p.B    : Factor w/ 1 level 
$ p.BC    : Factor w/ 1 level 
$ p.L    : num 110 
$ p.N    : Factor w/ 1 level 
$ p    : num 580 
$ pt    : Factor w/ 1 level 

と、次のエラーを受け取りました:

> predict(model,df,type='class') 
Error in predict.randomForest(model, df, type = "class") : 
    Type of predictors in new data do not match that of the training data. 

は、誰かがこれが発生した理由を説明したり、私はこの問題を解決できる方法をお勧めてもらえますか?

新しいデータに基づいて結果を予測しようとするモデルを作成するという目的を打ち破る、新しいDFのレベルを落としてはいけませんか?あるいは私は盲目的に何かをミューティングしていますか?

+0

を働きました。 – zacdav

+0

レベルを削除しないでください。これは「目的を打ち負かす」ことはありません。新しいデータは、各要因をトレーニングセットと同じレベルで表現する必要があります。 – dww

答えて

-1

理由はわかりませんが、上記の提案は機能しませんでした。

修正するには、新しい値の行を作成し、値を変更し、テストセットの最後の行として入力して、最後の行で予測を実行しました。あなたは、人々が助けしやすいことができ、再作成されることが可能であるデータの例を使用して完全なコードが含まれている場合

df=testing[1,] 
df[9]=as.factor(4) 
testing=rbind(testing,df) 
predict(model, testing[4490,],type='class') 

これは

+0

あなたはこの意味で「働いている」と言っていますか?それは間違いなく実行され、予測を与えた可能性がありますが、予測が列車のセットと有意義な関係にあることははるかに明確ではないようです。 –

関連する問題