scikit-learnのsklearen.metricには混同行列を生成するconfusion_matrix関数があります
from sklearn import metrics
ここでは4群分類を扱う.正解ラベル(true)と推定ラベル(pred)を用意します
群のラベルは0, 1, 2, 3でデータ数は0~2までが10個、3が15個の計45個.
これを、ある分類器がある入力データに対して推定したと仮定します.
true = [0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]
pred = [2,0,0,0,1,1,1,1,1,0,1,2,1,1,1,1,1,3,1,0,2,2,3,2,3,2,2,1,2,2,0,1,3,2,3,3,2,3,2,3,0,2,3,1,3]
metrics.confusion_matrix(true,pred)
array([[4, 5, 1, 0],
[1, 7, 1, 1],
[0, 1, 7, 2],
[2, 2, 4, 7]], dtype=int64)
# 正解率を求める
metrics.accuracy_score(true,pred)
0.5555555555555556
# 適合率を求める
metrics.precision_score(true,pred,average='macro')
0.5691391941391941
# 再現率を求める
metrics.recall_score(true,pred,average='macro')
0.5666666666666667
# F値を求める
metrics.f1_score(true,pred,average='macro')
0.5498209718670077
# マクロ平均を求める
metrics.precision_recall_fscore_support(true,pred,average='macro')
(0.5691391941391941, 0.5666666666666667, 0.5498209718670077, None)
# 重みを考慮したマクロ平均を求める
metrics.precision_recall_fscore_support(true,pred,average='weighted')
(0.5836792836792836, 0.5555555555555556, 0.5509519749928957, None)
# ミクロ平均を求める
metrics.precision_recall_fscore_support(true,pred,average='micro')
(0.5555555555555556, 0.5555555555555556, 0.5555555555555556, None) 次回は画像領域の評価を予定しています