Pythonで混同行列の軸を整数から文字列ラベルに変更して表示する方法
はじめに
Pythonで混同行列を可視化すると、デフォルトでは軸が整数値で表示されます。しかし、実際のクラス名(文字列ラベル)を軸に表示できれば、グラフの可読性は格段に向上します。本記事では、Matplotlibとscikit-learnを組み合わせて、文字列ラベル付きの軸で混同行列をプロットする手順を詳しく解説します。
実装の手順
- クラス名(ラベル)のリストを作成します。
- confusion_matrix() 関数を使って混同行列を生成し、分類結果を評価します。
- add_subplot() メソッドで、図(Figure)に ~.axes.Axes オブジェクトをサブプロットとして追加します。
- matshow() メソッドで、2次元行列や配列の値を色分けされた画像として描画します。
- colorbar() メソッドを使い、ScalarMappableインスタンス(*mappable*)に対するカラーバーを作成します。
- set_xticklabels() および set_yticklabels() メソッドで、X軸・Y軸の目盛りラベルを文字列に設定します。
- show() メソッドで図を表示します。
サンプルコード
from matplotlib import pyplot as plt from sklearn.metrics import confusion_matrix plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True # クラスラベルのリスト labels = ['business', 'health'] # 混同行列の作成 cm = confusion_matrix([3], [2]) fig = plt.figure() ax = fig.add_subplot(111) cax = ax.matshow(cm) fig.colorbar(cax) # 軸ラベルを文字列に設定 ax.set_xticklabels([''] + labels) ax.set_yticklabels([''] + labels) plt.show()
出力結果

ポイント解説
目盛りラベルを設定する際、リストの先頭に空文字列 '' を追加している点に注目してください。matshow() の仕様上、目盛りは0から始まるため、先頭に空要素を入れることでラベルの位置がマス目と正しく揃います。このテクニックを覚えておくと、分類モデルの評価結果を見やすい形でレポートや資料にまとめる際に非常に便利です。
-
Python Matplotlibで3Dグラフをプロットする方法を解説
PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使
-
Matplotlibを使ってPythonで3D密度マップを描画する方法を徹底解説
MatplotlibとNumPyを組み合わせると、Pythonで簡単に3D密度マップ(濃度分布図)を作成できます。本記事では、pcolormesh()メソッドを使って擬似カラープロットとして密度マップを可視化する具体的な手順を、サンプルコード付きでわかりやすく解説します。 3D密度マップを描画する基本の手順 NumPyでデータを生成する:side、x、y、zの各データをNumPyで作成します。特にlinspace関数を使うと、指定した2点間の範囲を任意の分割数で等間隔にデータ生成できるため便利です。 座標行列を作成する:sideデータをもとにmeshgrid()を使い、座標ベクトルから2次元