Python+sklearn分类效果评估

有一个模型,能够找出不好的来,找的结果如下(混淆矩阵):
在这里插入图片描述

参考:
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

猜你喜欢

转载自blog.csdn.net/qq_38441207/article/details/89844549