SEが最近起こったことを書くブログ

ITエンジニアが試したこと、気になったことを書いていきます。

PythonでPermutation Importanceの出し方メモ

Permutation Imporatanceをの出力方法を以下にメモしておく

以下を事前に用意する

  • model
    • Premutation Importanceを計算するモデル
  • X
    • Permutation Importanceを計算するときに使う説明変数
  • Y
    • Permutation Importanceを計算するときに使う目的変数

sklearnを使う方法

from sklearn.inspection import permutation_importance
from sklearn.metrics import mean_squared_error, make_scorer

result = permutation_importance(model, X, Y, scoring='neg_mean_absolute_error', n_repeats=10, n_jobs=-1, random_state=100)
perm_df = pd.DataFrame({"importances_mean":result["importances_mean"], "importances_std":result["importances_std"]}, index=X.columns)
print("[Permutation feature Importance]")
display(perm_df)
perm_df .sort_values("importances_mean", ascending=False).importances_mean.plot.barh()
plt.show()

eli5を使うもっと簡単な方法

from eli5.sklearn import PermutationImportance

perm_train = PermutationImportance(model).fit(X, Y)
eli5.show_weights(perm_train, feature_names=list(X.columns))

参考資料

www.amazon.co.jp

qiita.com

eli5.readthedocs.io

scikit-learn.org

scikit-learn.org