2

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
4

2 に答える 2