对于以上参数的概念以及理解,请参考我的文章:
机器学习中TP,TN,FP,FN,Acc,Pre,Sen, Rec的含义_汤宪宇的博客-CSDN博客_机器学习accz
这里我们在将上面概念的定义重新梳理一遍:
1.概念
TP:true positive,被判定为正样本,事实上也是正样本;
TN:true negative,被判定为负样本,事实上也是负样本;
FP:false positive,被判定为正样本,但事实上是负样本;
FN:false negative,被判定为负样本,但事实上是正样本;
精确度Precision:
召回率Recall:
2.举例说明
这里以二分类为例,分类结果为0和1,共有15个需要预测的结果。
假设真值和预测值结果如下:
真值 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
预测值 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
2.1 对于结果“1”来说
TP为预测为1,真值也为1的值,即图中深绿色底色的值,共有5个;
TN为预测为0,真值也为0的值,即图中橙色底色的值,共有4个;
FP为预测为1,但是预测错了,真值为0的值,即图中红色底色的值,共有4个;
FN为预测为0,但是预测错了,真值为1的值,即图中浅绿色底色的值,共有2个;
计算Pre=TP/(TP+FP)=5/(5+4)=55.56%
计算Recall=TP/(TP+FN)=5/(5+2)=71.43%
2.2 对于结果“0”来说
TP为预测为0,真值也为0的值,即图中深绿色底色的值,共有4个;
TN为预测为1,真值也为1的值,即图中橙色底色的值,共有5个;
FP为预测为0,但是预测错了,真值为1的值,即图中红色底色的值,共有2个;
FN为预测为1,但是预测错了,真值为0的值,即图中浅绿色底色的值,共有4个;
计算Pre=TP/(TP+FP)=4/(4+2)=66.67%
计算Recall=TP/(TP+FN)=4/(4+4)=50%
3. 程序验证
from sklearn.metrics import classification_report
true_data = [0,1,1,0,1,1,0,0,1,0,1,0,1,0,0]
pred_data = [1,1,1,1,1,0,0,0,0,0,1,1,1,0,1]
print(classification_report(true_data, pred_data))
得到的结果如下:
precision recall f1-score support
0 0.67 0.50 0.57 8
1 0.56 0.71 0.63 7
accuracy 0.60 15
macro avg 0.61 0.61 0.60 15
weighted avg 0.61 0.60 0.60 15
和我们上面的计算一致。
4. 个人的理解
Recall的意思是溯源,看源头也就是真实值当中,有多少预测对了。
Precision的意思是精确度,看预测为positive的准确度是多少(预测为Postive中,真是为Postive的比例)