PythonでCatboostを使いたい

Catboostはboosting系の中で、やや重いですが。カテゴリをそのまま扱えるといった特徴があります。

xgboost,lightgbm同様に専用のパッケージをインストールします。

コード

catboostは、Poolという形でデータをできるかぎり扱うようにすると楽です。
今回も基本的な動きの確認のため、評価データを作りませんでした。

from catboost import CatBoost,Pool

回帰

#回帰
reg_train = Pool(
    boston_X,
    boston_y
)

reg_mdl = CatBoost()
reg_mdl.fit(
    reg_train,
    verbose=False,
    #jupyter上で学習過程を可視化してくれる
    #plot=True  
)

分類

# 多値分類問題

mc_train = Pool(
    iris_X,
    iris_y
)

mc_mdl = CatBoost(
    {
        'loss_function': 'MultiClass'
    }
)
mc_mdl.fit(
    mc_train,
    verbose=False,
    #plot=True  
)

予測

予測で帰ってくる値は`prediction_typeで調整します。

#Classだとクラスを、Probabilityだと各確率を返してくれる
mc_mdl.predict(iris_X,prediction_type='Probability')

特徴重要度の可視化

作成したモデルの特徴重要度はfeature_importances_で見れます。
木構造を可視化してくれるメソッドも存在しますが、何番目の木か、を指定する必要があります。

mc_mdl.feature_importances_

mc_mdl.plot_tree(tree_idx=1)

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