查准率、召回率、F1系数、文本报告
查准率与查全率
• 查准率/准确率(precision): P = TP/(TP+FP)
• 查全率/召回率/灵敏度(recall):R = TP/(TP+FN)
• “1”代表正例,“0”代表反例
比较易理解的例子:
12张是狗的图片其余是猫的图片.现在利用程序去识别狗的图片,结果在识别出的8张图片中有5张是狗的图片,3张是猫的图片。
则该程序的查准率/精度precision=5/8,查全率/召回率recall=5/12。
由此可见:(我的理解,个人觉得比较好记)
查准率=正确结果数/识别总数量
查全率=正确结果数/正确结果的总数
F1系数
• 综合查准率与查全率:
F1 值是精确度和召回率的调和平均值:
精确度和召回率都高时,F1值也会高. F1值在1时达到最佳值(完美的精确度和召回率),最差为0.在二元分类中, F1值是测试准确度的量度。
• 更一般的形式:
• 其中 β 为正数,度量了查全率对查准率的相对重要性
• β = 1 :标准的F1系数
• β > 1 :查全率有更大影响
β < 1 :查准率有更大影响
from sklearn.metrics import precision_score #引入精准率
from sklearn.metrics import confusion_matrix #引入混淆矩阵
from sklearn.metrics import classification_report #分类指标的文本报告
#precision精准度/查准率/准确率 recall召回率 f1-sorce F1系数 support为每个标签的出现次数
#avg / total行为各列的均值(support列为总和)
y_true = [1, 0, 1, 1, 0] #样本实际值
y_pred = [1, 0, 1, 0, 0] #模型预测值
res = precision_score(y_true,y_pred, average=None) #求查准率/准确率=TP / ( TP + FP )
res1 = confusion_matrix(y_true,y_pred) #得出混淆矩阵
res2 = classification_report(y_true,y_pred) #得到文本报告
print(res)
print(res1)
print(res2)
运行代码得到的结果: