precision_recall_fscore_supportの例
#sklearn.metrics.precision_recall_fscore_support
scikit-learn==1.3.0, numpy==1.25.1
scikit-learnのf1_scoreのaverage引数に指定するmicroやmacroやsamplesって、なに?
参考:mean-F1とmacro-F1とmicro-F1で手を動かす
code:python
>> from sklearn.metrics import precision_recall_fscore_support
>> import numpy as np
>> y_true = np.array(1,1,0], 1,0,0, 1,1,1, 0,1,1, [0,0,1)
>> y_pred = np.array(1,0,1], 0,1,0, 1,0,1, 0,0,1, [0,0,1)
>> # デフォルトはaverage=None。クラスごとに算出。上記エントリでの確認と一致
>> precision_recall_fscore_support(y_true, y_pred)
(array(1. , 0. , 0.75), array(0.66666667, 0. , 1. ), array(0.8 , 0. , 0.85714286), array(3, 3, 3))
>> # 転置して渡すとサンプルごと。こちらも上記エントリでの確認と一致
>> precision_recall_fscore_support(y_true.T, y_pred.T)
(array(0.5, 0. , 1. , 1. , 1. ), array(0.5 , 0. , 0.66666667, 0.5 , 1. ), array(0.5 , 0. , 0.8 , 0.66666667, 1. ), array(2, 1, 3, 2, 1))
>> # averageがNone以外(1つの数値に平均される)だとsupportは計算されないらしい
>> precision_recall_fscore_support(y_true, y_pred, average="micro") # TODO: マルチラベルでもaccuracyと同じ?
(0.7142857142857143, 0.5555555555555556, 0.6250000000000001, None)
>> precision_recall_fscore_support(y_true, y_pred, average="macro")
(0.5833333333333334, 0.5555555555555555, 0.5523809523809523, None)
>> precision_recall_fscore_support(y_true, y_pred, average="samples")
(0.7, 0.5333333333333333, 0.5933333333333334, None)