OKトレーニングデータ内に存在しない因子レベルなので、タイタニック競争に関連する他の初心者の質問:私は私のテストデータに対するランダムフォレスト予測を実行しようとしていますランダムフォレスト:新
。すべての私の仕事は、テストとトレーニングのデータを組み合わせて行われました。
私は今、テストデータとtrainingdata
に2分割している私は、次のコードを持っている:
trainingdata <- droplevels(data.combined[1:891,])
testdata <- droplevels(data.combined[892:1309,])
fitRF <- randomForest(as.factor(Survived) ~ Pclass + Sex + Age + SibSp
+ Parch + Fare + Embarked
+ new.title + family.size + FamilyID2,
data=trainingdata,
importance =T,
ntree=2000)
varImpPlot(fitRF)
#All works up to this point
Prediction <- predict(fitRF, testdata)
#This line above generates error
submit <- data.frame(PassengerID = data.combined$PassengerId, Survived
= Prediction)
write.csv(submit, file="14072017_1_RF", row.names = F)
私は予測ラインを実行すると、私は次のエラーを取得する:
> Prediction <- predict(fitRF, testdata)
Error in predict.randomForest(fitRF, testdata) :
New factor levels not present in the training data
を私が str(testdata)とstr(trainingdata)を実行すると、もはや一致する2つの要因が見えます
Trainingdata
$ Parch : Factor w/ 7 levels
Testdata
$ Parch : Factor w/ 8
Trainingdata
$ FamilyID2 : Factor w/ 22
Testdata
$ FamilyID2 : Factor w/ 18
エラーが発生する原因はこれらの違いですか?もしそうなら、私はこれをどのように解決するのですか?
多くのおかげ
追加情報: 私は、ランダムフォレストの作成ラインから煎るとFamilyID2を削除している、とのコードが動作するようになりましたので、それは間違いなく、不一致のレベルの問題を引き起こしているものを2つの変数です。
[Rのランダムフォレストパッケージ]の可能な複製は、テストデータに新しい因子レベルが存在する場合の予測()中のエラーを示します。このエラーを回避する方法はありますか?](https://stackoverflow.com/questions/17059432/random-forest-package-in-r-shows-error-during-prediction-if-there-are-new-fact ) – RUser
私はその投稿を見て、ソリューションを実装しようとしましたが、エラーは同じでした。 –
'testdata < - factor(testdata、levels = levels(trainingdata))'を実行した場合、 'predict()'関数の前には問題はありません。 – Prem