Python+sklearn分类效果评估

准确率(accuracy)的定义是: 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。也就是损失函数是0-1损失时测试数据集上的准确率。
TP: true positive 真正例
FP: false positive 假正例
TN: true negative 真反例
FN: false negativa 假反例
精确率(precision)的公式是P=TP/TP+FP,它计算的是所有”正确被检索的item(TP)”占所有”实际被检索到的(TP+FP)”的比例.

召回率(recall)的公式是R=TP/TP+FN,它计算的是所有”正确被检索的item(TP)”占所有”应该检索到的item(TP+FN)”的比例。

参考:
https://blog.csdn.net/pengchengliu/article/details/81009063

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

上一篇:javascript – Google Analytics:如何在不同网站上使用自定义维度来识别Intranet用户


下一篇:使用 Zabbix 监控 Jenkins