RでrandomForestを使用しています。
因子変数を含む一連のデータをトレーニングします。この変数には次のレベルがあります。
[1] "Economics" "Engineering" "Medicine"
[4] "Accounting" "Biology" "Computer Science"
[7] "Physics" "Law" "Chemistry"
私の評価セットには、これらのレベルのサブセットがあります。
[1] "Law" "Medicine"
randomForest パッケージではレベルが同じである必要があるため、次のことを試しました。
levels(evaluationSet$course) <- levels(trainingSet$course)
しかし、評価セットの行を調べると、値が変更されています。
evaluationSet[1:3,c('course')]
# Gives "[1] Economics Engineering Economics", should give "[1] Law Medicine Law"
私はRを初めて使用しますが、ここで起こっていることは、因子が列挙されたセットであると思います. 評価セットでは、「法律」と「医療」は係数 (それぞれ 1 と 2) で数値で表されます。新しいレベルを適用すると、それらのインデックスがマップする値が変更されます。
SOでいくつかの同様のトピックを見つけて、それらの提案を試しましたが、うまくいきませんでした:
evaluationSet <- droplevels(evaluationSet)
levels(evaluationSet$course) <- levels(trainingSet$course)
evaluationSet$course <- factor(evaluationSet$course)
データの値を維持しながら、レベルをトレーニング セットと同じに設定するにはどうすればよいですか?
編集: level(evaluationSet$course) の前後に head(evaluationSet) の結果を追加 <-level(trainingSet$course):
timestamp score age takenBefore course
1 1374910975 0.87 18 0 law
2 1374910975 0.81 21 0 medicine
3 1374910975 0.88 21 0 law
4 1374910975 0.88 21 0 law
5 1374910975 0.74 22 0 law
6 1374910975 0.76 23 1 medicine
timestamp score age takenBefore course
1 1374910975 0.87 18 0 economics
2 1374910975 0.81 21 0 engineering
3 1374910975 0.88 21 0 economics
4 1374910975 0.88 21 0 economics
5 1374910975 0.74 22 0 economics
6 1374910975 0.76 23 1 engineering