機略戦記

Maneuver warfare

importance(randomForest)の結果をdata.table (もしくはdata.frame)で得たい

前提

RのrandomForestパッケージにあるimportance()関数を使うと、学習した各種特徴量が目的変数の説明にどのくらい寄与しているのか得られる。

この時、この結果は、特徴量をrownameとするMatrixとして得られる。これをV1を特徴量の名前、V2を寄与度とするdata.tableに変換したい。

結論

nikkei225.rf <- randomForest(change~., data=train.rf, mtry = 242)
nikkei225.rfp <- predict(nikkei225.rf, test)

valiable_names <- rownames(importance(nikkei225.rf))
valiable_importances <- importance(nikkei225.rf)[,'IncNodePurity']

data.table(valiable_names=valiable_names, valiable_importances=valiable_importances)

説明

rownames()でMatrixのrow nameが得られるので、そいつと、寄与度を取り出して、新たにdata.tableとして組み立てる。

もっと賢いやり方があるに違いないが、とりあえずできた。