有一个模型,能够找出不好的来,找的结果如下(混淆矩阵):
参考:
https://blog.csdn.net/pengchengliu/article/details/81009063
举例:
一共有100个人考试,其中作弊的有20个人,没有作弊的有80个人。
现在有一个系统,能够预测作弊的情况。预测结果为:找到了50个人作弊。与标签对比后发现,这50个人里,有20个人确实作弊了,有30个人没有作弊。
模型准确率 = 判断对的人数/总人数
=(作弊判断为作弊+没作弊判断为没作弊)/总人数
=(20+50)/100
= 70%
模型精确度 = 抓到的人里面,真作弊的占多少
= 20/50
= 40%
召回率 = 真正作弊的人里面,找到了多少
= 20 /20
= 100%
F 1 = 2* 40% * 100% /(40%+100%)
=57.1%
1、准确率
第一种方式:accuracy_score
// An highlighted block
import numpy as np
from sklearn.metrics import accuracy_score
y_pred = [0,2,1,3,9,9,8,5,8]
y_true = [0,1,2,3,2,6,3,5,9]
acc = accuracy_score(y_true,y_pred)
print(acc)
Out[127]: 0.33333333333333331
第二种方式:metrics
宏平均比微平均更合理,但也不是说微平均一无是处,具体使用哪种评测机制,还是要取决于数据集中样本分布
宏平均(Macro-averaging),是先对每一个类统计指标值,然后在对所有类求算术平均值。
微平均(Micro-averaging),是对数据集中的每一个实例不分类别进行统计建立全局混淆矩阵,然后计算相应指标。
// An highlighted block
from sklearn import metrics
acc2 = metrics.precision_score(y_true,y_pred,average='micro')
print(acc2)
Out[130]: 0.33333333333333331
acc3 = metrics.precision_score(y_true,y_pred,average='macro')
print(acc3)
Out[131]: 0.375
2、召回率
// An highlighted block
acc4 = metrics.recall_score(y_true,y_pred,average='micro')
print(acc4)
Out[134]: 0.33333333333333331
acc5 = metrics.recall_score(y_true,y_pred,average='macro')
print(acc5)
Out[135]: 0.3125
3、F1
// An highlighted block
acc6 = metrics.f1_score(y_true,y_pred,average='weighted')
print(acc6)
Out[136]: 0.37037037037037035