XGBoostのfeature_importances_(特徴量重要度)をMatplotlibで棒グラフとして可視化する方法
XGBoostで学習したモデルのfeature_importances_(特徴量重要度)は、各特徴量が予測にどれだけ寄与しているかを数値で示してくれる便利な属性です。この記事では、その重要度をMatplotlibを使って棒グラフとして可視化する手順を解説します。
実装の手順
- 図のサイズを設定し、サブプロット間・周囲の余白(パディング)を調整します。
- CSVファイルからデータを読み込みます。
- 読み込んだデータセットから説明変数 X と目的変数 y を取り出します。
- XGBClassifier モデルのインスタンスを作成します。
- モデルに対して X と y のデータを学習(fit)させます。
- モデルの feature_importances_ を出力して確認します。
- Matplotlibの bar() メソッドで棒グラフを作成します。
- show() メソッドで図を表示します。
コード例
from numpy import loadtxt
from xgboost import XGBClassifier
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# data.csv の形式例 -> 13, 145, 82, 19, 110, 22.2, 0.245, 57, 0
dataset = loadtxt('data.csv', delimiter=",")
X = dataset[:, 0:8]
y = dataset[:, 8]
model = XGBClassifier()
model.fit(X, y)
print(model.feature_importances_)
plt.bar(range(len(model.feature_importances_)), model.feature_importances_)
plt.show()実行結果
[13:46:53] WARNING: ../src/learner.cc:1095: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior. [0.10621197 0.2424023 0.08803366 0.07818192 0.10381887 0.1486732 0.10059207 0.13208601]
このように、feature_importances_ の配列には各特徴量ごとの重要度が0〜1の範囲で格納されており、合計すると1になります。上記のコードを実行すると、横軸に特徴量のインデックス番号、縦軸に重要度をとった棒グラフが表示されます。
なお、警告メッセージにある通り、XGBoost 1.3.0以降では二値分類(binary:logistic)のデフォルト評価指標が「error」から「logloss」に変更されています。以前の挙動に戻したい場合は、eval_metric='error' を明示的に指定してください。
また、より見やすい可視化を行いたい場合は、XGBoostが標準で提供している xgboost.plot_importance() 関数を使うと、特徴量名付きで自動的にソートされたグラフを簡単に描画できます。
-
Matplotlibを使ってPythonで3D密度マップを描画する方法を徹底解説
MatplotlibとNumPyを組み合わせると、Pythonで簡単に3D密度マップ(濃度分布図)を作成できます。本記事では、pcolormesh()メソッドを使って擬似カラープロットとして密度マップを可視化する具体的な手順を、サンプルコード付きでわかりやすく解説します。 3D密度マップを描画する基本の手順 NumPyでデータを生成する:side、x、y、zの各データをNumPyで作成します。特にlinspace関数を使うと、指定した2点間の範囲を任意の分割数で等間隔にデータ生成できるため便利です。 座標行列を作成する:sideデータをもとにmeshgrid()を使い、座標ベクトルから2次元
-
Python Matplotlibで円グラフの一部を強調表示して描画する方法
はじめに あなたが最も好きなグラフの種類は何ですか?経営層やビジネスアナリストにこの質問をすると、即座に「円グラフ(パイチャート)!」と答えられるほど、円グラフは割合を視覚的に表現するための最も一般的な手法のひとつです。 この記事では、PythonのMatplotlibを使って基本的な円グラフを描く方法から、explodeパラメータで特定のセクターを強調表示するテクニック、さらにパーセンテージではなく実際の値をラベルとして表示するカスタム関数の実装まで、段階的に解説します。 基本的な円グラフの作成手順 ステップ1:Matplotlibのインストール まず、以下のコマンドでMatplotlibを