Seaborn 混同行列プロット

Ammar Ali 2022年4月18日
Seaborn 混同行列プロット

このチュートリアルでは、Python で Seaborn の heatmap() 関数を使用して混同行列をプロットする方法について説明します。

Seaborn を使用した混同行列のプロット

分類問題では、予測結果の要約が混同行列内に格納されます。混同行列をプロットして、正しい予測と誤った予測の数を確認する必要があります。

混同行列をプロットするには、混同行列のデータフレームを作成する必要があります。次に、Seaborn の heatmap() 関数を使用して、Python で混同行列をプロットできます。たとえば、ランダムな混同行列を作成し、heatmap() 関数を使用してプロットしてみましょう。以下のコードを参照してください。

import seaborn as snNew
import pandas as pdNew
import matplotlib.pyplot as pltNew

array = [
    [11, 1, 0, 2, 0],
    [3, 8, 0, 1, 0],
    [0, 16, 3, 0, 0],
    [0, 0, 12, 0, 0],
    [0, 0, 0, 13, 0],
    [0, 1, 0, 0, 16],
]

DetaFrame_cm = pdNew.DataFrame(array, range(6), range(5))
snNew.heatmap(DetaFrame_cm, annot=True)
pltNew.show()

出力:

混同行列プロット

混同行列のデータフレームを作成するために、pandas ライブラリの DataFrame() 関数を使用しました。データフレームを作成するには、配列、行数、列数を渡す必要があります。

heatmap() 関数内の 2 番目の引数は、プロットに混同行列の値を表示するために使用されます。2 番目の引数 annot を使用しない場合、マトリックス値は表示されず、色のみが表示されます。

プロットのカラーマップを、冬、夏、涼しい、銅、暑いなどの機能でサポートされている任意のカラーマップに変更できます。cbar 引数を使用してプロットの右側に表示されるカラーバーをオフにし、false に設定することもできます。

linewidths および linecolor パラメータを使用して、各セルの周囲の線の幅と色を指定することもできます。任意の浮動小数点値を使用して、線幅の値を設定できます。色の名前または色の最初の文字を使用して、線の色の値を設定できます。

square 引数を使用して各セルの形状を正方形に設定し、それを true に設定できます。x 軸の目盛りラベルには xticklabels を使用し、y 軸の目盛りラベルには yticklabels を使用して、各軸の目盛りラベルを設定することもできます。

ティックラベル引数を x 軸セルと同じサイズのリストに設定できます。たとえば、上記の引数を変更してみましょう。以下のコードを参照してください。

import seaborn as snNew
import pandas as pdNew
import matplotlib.pyplot as pltNew

array = [
    [11, 1, 0, 2, 0],
    [3, 8, 0, 1, 0],
    [0, 16, 3, 0, 0],
    [0, 0, 12, 0, 0],
    [0, 0, 0, 13, 0],
    [0, 1, 0, 0, 16],
]

DetaFrame_cm = pdNew.DataFrame(array, range(6), range(5))
snNew.heatmap(
    DetaFrame_cm,
    annot=True,
    cmap="summer",
    cbar=False,
    linewidths=3,
    linecolor="r",
    square=True,
    xticklabels=["a", "b", "c", "d", "e"],
)
pltNew.show()

出力:

混同行列プロットのパラメーターの変更

Seaborn の set() 関数を使用して、両方の軸の目盛りラベルのフォントサイズを設定することもできます。set() 関数内の font_scale パラメーターを使用して、フォント値を任意の浮動小数点数に設定できます。たとえば、上記のプロットのフォントサイズを設定するには、以下のコードを使用できます。

snNew.set(font_scale=1.9)

フォントサイズを小さくしたい場合は、1 未満の値を使用する必要があります。

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

関連記事 - Seaborn Plot