Edited at

【sckit-learnメモ】sckit-learnのconfusion matrixでラベルを含めて表示する


はじめに

scikit-learnのライブラリを使って簡単にconfusion matirxを表示できるが、数値マトリックスのみでラベルがないので実用上は不便。

この対応を簡単に行うためのメモ。(ラベルつきDataFrameに変換して表示する)


前提

sckit-learnがライブラリとして使えること


サンプルコード

以下にサンプルコードを記載します。

import numpy as np

import pandas as pd

# y_test に正解値、 y_predに予測値がすでに入っていることを前提にします。
# 以下の2行はこの前提を満たすためのダミーコードです。

y_test = np.array(
['notckd', 'notckd', 'notckd', 'notckd', 'notckd',
'ckd', 'ckd', 'ckd', 'notckd','notckd',
'ckd', 'notckd', 'notckd', 'notckd', 'ckd',
'notckd', 'notckd', 'notckd','notckd', 'notckd',
'ckd', 'ckd', 'notckd', 'notckd', 'notckd',
'ckd', 'notckd','notckd'])

y_pred = np.array(
['notckd', 'notckd', 'notckd', 'notckd', 'notckd',
'ckd', 'ckd', 'ckd', 'notckd', 'notckd',
'ckd', 'notckd', 'notckd', 'notckd', 'ckd',
'notckd', 'ckd', 'notckd', 'notckd', 'notckd',
'notckd', 'ckd', 'notckd', 'notckd', 'notckd',
'ckd', 'notckd', 'notckd'])

# 混同行列(confusion matrix)の取得
labels = ['ckd', 'notckd']
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred, labels=labels)

# データフレームに変換
cm_labeled = pd.DataFrame(cm, columns=labels, index=labels)

# 結果の表示
cm_labeled

結果は次のとおり。

この例は二値分類ですが、同じコードで多値分類も対応可能と思います。

スクリーンショット 2019-01-10 11.06.36.png