scikit-learn
のconfusion-matrix
ではそれぞれのインデックスを取得することができなかったので。
(もしかしてできる?)
条件
例えば猫かどうかを判定するとして、1が猫、0が猫でないとする。
preds
を予測、labels
を正解データとする。
手順
numpyの行列に変換する
import numpy as np
preds = [0., 1., 1., ..., 0., 1., 0.] # 適当な0or1のリスト
labels = [0., 1., 1., ..., 0., 1., 0.] # 適当な0or1のリスト
preds = np.array(preds)
labels = np.array(labels)
猫のインデックスを取る
one_ind_p = preds == 1
one_ind_l = labels == 1
zero_ind_p = np.logical_not(one_ind_p) # boolの反転
zero_ind_l = np.logical_not(one_ind_l)
# array([False, True, True, ..., False, True, False]) みたいなデータになる
混同行列の各要素のインデックスを取得する
tp = np.argwhere(one_ind_l & one_ind_p)
fp = np.argwhere(zero_ind_l & one_ind_p)
fn = np.argwhere(one_ind_l & zero_ind_p)
tn = np.argwhere(zero_ind_l & zero_ind_p)