私はPartyパッケージを使用してRでCART回帰ツリーモデルを構築していますが、テストデータセットでモデルを適用しようとするとレベルが一致しないというエラーメッセージが表示されます。デシジョンツリーパーティーパッケージ予測エラー - レベルが一致しない
私は先週、フォーラムのスレッドを読んで過ごしましたが、私の問題の正しい解決策はまだ見つかりませんでした。だから私はここで私が作った偽の例を使ってこの質問を再掲載しています..誰かがエラーメッセージを説明して解決策を教えてもらえますか?
私の訓練データセットは約1000レコードあり、テストデータセットは約150です。いずれのデータセットにも空白フィールドがありません。パーティのパッケージの下ctreeを使用して
私のCARTモデルは次のとおりです。
mytree<- ctree(Rate~Bank+Product+Salary, data=data_train)
data_train例:
Rate Bank Product Salary
1.5 A aaa 100000
0.6 B abc 60000
3 C bac 10000
2.1 D cba 50000
1.1 E cca 80000
data_test例:
Rate Bank Product Salary
2.0 A cba 80000
0.5 D cca 250000
0.8 E cba 120000
2.1 C abc 65000
levels(data_train$Bank) : A, B, C, D, E
levels(data_test$Bank): A,D,E,C
私は同じレベルに設定してみました次のコードを使用してください:
>is.factor(data_test$Bank)
TRUE
(Made sure Bank and Products are factors in both datasets)
>levels(data_test$Bank) <-union(levels(data_test$Bank), levels(data_train$Bank))
> levels(data_test$product)<-union(levels(data_test$product),levels(data_train$product))
はしかし、私はテスト・データセットに対する予測を実行しようとすると、私は次のエラーを取得:
> fit1<- predict(mytree,newdata=data_test)
Error in checkData(oldData, RET) :
Levels in factors of new data do not match original data
を私はまた、次の方法を試してみましたが、それは私のテストデータセットのフィールドを変更します... :
levels(data_test$Bank) <-levels(data_train$Bank)
data_testテーブルが変更された:
Rate Bank(altered) Bank (original)
2.0 A A
0.5 B D
0.8 C E
2.1 D C
素晴らしい回避策。マジックのように動作します。 – yiyisue