Pythonでxgboostを使う

xgboostはlightgbmに比べると、やや重い印象があります。
ただし、ケースによってはlightgbm以上の精度が出ることもあります。

lightgbm同様、sklearnには導入されていません。

コード

xgboostもsklearnライクな使い方もありますが、デフォルトの方で使ってみます。

基本的にはlightgbmと同じですが、オブジェクトに渡す文字列や、専用のデータセットの作り方など若干の近いがあります。(lightgbmの方が後発ですが、、、)

今回も基本的な動きの確認のため、評価データを作りませんでした。

import xgboost as xgb

回帰

#回帰
dtrain = xgb.DMatrix(boston_X, label=boston_y)
reg_mdl = xgb.train(
    {"objective":"reg:squarederror"},
    dtrain
)

#予測
#reg_mdl.predict(dtrain)

分類

dtrain = xgb.DMatrix(iris_X, iris_y)
mc_mdl = xgb.train(
    {
        "objective":"multi:softmax",
        "num_class":3
    },
    dtrain
)
#予測
#mc_mdl.predict(dtrain)

特徴重要度の可視化

作成したモデルはfeature_importances_になります。 また、可視化を直接してくれるメソッド、木構造を可視化してくれるメソッドも存在します。

xgb_mdl.feature_importances_
xgb.plot_tree(reg_mdl)
xgb.plot_importance(mc_mdl)

f:id:esu-ko:20200919222107p:plain

f:id:esu-ko:20200919222120p:plain