注:本文是人工智能研究網的學習筆記學習
Precision和Recall都可以從下面的TP,TN,FP,FN裏面計算出來。人工智能
幾個縮寫的含義:code
縮寫 | 含義 |
---|---|
P | condition positive |
N | condition negative |
TP | true positive (with hit) |
TN | true negative (with correct rejection) |
FP | false positive (with false alarm, Type I error) |
FN | false negative (with miss, Type II error) |
TP: 我認爲是真的,結果確實是真的
TN: 我認爲是假的,結果確實是假的
FP: 我認爲是真的,結果是假的
FN: 我認爲是假的,結果是真的blog
T / F: 表名我預測的結果的真假
P / N: 表名我所認爲的真仍是假ci
precision和recall的進一步解釋get
precision和accuracy的區別it
簡單的來講,給定一組測量點的集合:io
精確(precision): 全部的測量點到測量點集合的均值很是接近,與測量點的方差有關。就是說各個點緊密的聚合在一塊兒。table
準確(accuracy): 全部的測量點到真實值很是接近。與測量點的誤差有關。class
以上兩個概念是相互獨立的,所以數據點集合能夠使accurate的,也能夠使precise的,還能夠都不是或者都是。
from sklearn import metrics y_pred = [0, 1, 0, 0] y_true = [0, 1, 0, 1] print(metrics.precision_score(y_true, y_pred)) # 1.0 print(metrics.recall_score(y_true, y_pred)) # 0.5 # beta值越小,表示越看中precision # beta值越大,表示越看中recall print(metrics.f1_score(y_true, y_pred)) # 0.666666666667 print(metrics.fbeta_score(y_true, y_pred, beta=0.5)) # 0.833333333333 print(metrics.fbeta_score(y_true, y_pred, beta=1)) # 0.666666666667 print(metrics.fbeta_score(y_true, y_pred, beta=2)) # 0.555555555556
from sklearn import metrics y_pred = [0, 1, 2, 0, 1, 2] y_true = [0, 2, 1, 0, 0, 1] print(metrics.precision_score(y_true, y_pred, average='macro')) print(metrics.recall_score(y_true, y_pred, average='micro')) print(metrics.f1_score(y_true, y_pred, average='weighted')) print(metrics.fbeta_score(y_true, y_pred, beta=0.5, average='macro')) print(metrics.precision_recall_fscore_support(y_true, y_pred, beta=0.5, average=None))