典型分类器评价指标及实例

10 篇文章 2 订阅

一、概述

  • 在NLP中,经常需要使用机器学习的分类器
  • 衡量分类器最常见的指标:准确率与召回率、准确度与F1-Score以及ROC与AUC。
  • 注意:本文以 Scikit-Learn 为环境

二、实验数据

1、导入相关库

from sklearn.cross_validation import train_test_split
from sklearn.datasets import make_classification
from sklearn.neighbors import KNeighborsClassifier

2、生成数据

为了演示,我们生成数据,数据一共1000条记录,每条记录100个特征,内容随机生成。

## 数据集生成
x, y = make_classification(n_samples=1000, n_features=100, n_redundant=0, random_state=1)
train_X, test_X, train_y, test_y = train_test_split(x, y, test_size=0.2, random_state=555)

3、分类器训练与预测

## KNN训练与预测
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(train_X, train_y)
pred_y = knn.predict(test_X)

三、混淆矩阵(Confusion Matrix)

1、概述

混淆矩阵(Confusion Matrix):将分类问题按照真实情况与判别情况两个维度进行归类的一个矩阵,在二分类问题中,可以用一个 2 × 2 2\times 2 2×2 的矩阵表示。

  • 如下图所示,TP 表示实际为真预测为真,TN 表示实际为假预测为假,FN 表示实际为真预测为假,通俗讲就是漏报了,FP 表示实际为假预测为真,通俗讲就是误报了。

在这里插入图片描述

2、实现

from sklearn.metrics import confusion_matrix

conf_m = confusion_matrix(test_y, pred_y)
print('confusion matrix: \n', conf_m)

输出结果

confusion matrix: 
 [[59 49]
 [17 75]]

四、准确率与召回率

1、概述

机器学习中最基本指标是 召回率(Recall Rate,也称 查全率)准确率(Precision Rate,也称查准率)。其计算公式如下:
p r e c i s i o n = T P T P + F P precision=\frac{TP}{TP+FP} precision=TP+FPTP
r e c a l l = T P T P + F N recall=\frac{TP}{TP+FN} recall=TP+FNTP

通俗示例:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下:

p r e c i s i o n = 700 700 + 200 + 100 = 70 % precision=\frac{700}{700+200+100}=70\% precision=700+200+100700=70%
r e c a l l = 700 1400 = 50 % recall=\frac{700}{1400}=50\% recall=1400700=50%

2、实现

from sklearn.metrics import precision_score, recall_score

precision = precision_score(test_y, pred_y)
print("precision score: ", precision)
recall = recall_score(test_y, pred_y)
print("recall score: ", recall)

输出结果

precision score:  0.6048387096774194
recall score:  0.8152173913043478

五、准确度 与 F1-Score

1、概述

  • 准确度(Accuracy) :对检测结果一个均衡的评价,对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。也就是损失函数是 0-1损失 时测试数据集上的准确率。它的定义如下:
    A c c u r a c y = T P + T N P + N = T P + T N T P + T N + F P + F N Accuracy=\frac{TP+TN}{P+N}=\frac{TP+TN}{TP+TN+FP+FN} Accuracy=P+NTP+TN=TP+TN+FP+FNTP+TN

  • F1-Score:对准确率和召回率的一个均衡评价,F1值就是精确值和召回率的调和均值, 也就是
    2 F 1 = 1 P r e c i s i o n + 1 R e c a l l \frac{2}{F_1} = \frac{1}{Precision} + \frac{1}{Recall} F12=Precision1+Recall1
    也就是
    F 1 = 2 P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l = 2 T P 2 T P + F P + F N F_1 = \frac{2Precision\times{Recall}}{Precision+{Recall}} = \frac{2TP}{2TP + FP + FN} F1=Precision+Recall2Precision×Recall=2TP+FP+FN2TP

    国内外不少数据挖掘比赛都是重点关注F1-Score的值。

2、实现

from sklearn.metrics import accuracy_score, f1_score

acc = accuracy_score(test_y, pred_y)
print("accuracy score: ", acc)
f1 = f1_score(test_y, pred_y)
print("F1 score: ", f1)

输出结果

accuracy score:  0.67
F1 score:  0.6944444444444445

六、ROC 与 AUC

1、概述

ROC(Receiver Operating Characteristic Curve,受试者工作特征曲线):以TPR(True Position Rate,真阳性率)为纵坐标,FPR(False Position Rate,假阳性率)为横坐标绘制的曲线,是反映灵敏性和特效性连续变量的综合指标。一般认为ROC越光滑说明分类算法过拟合的概率越低,越接近左上角说明分类性能越好。

AUC(Area Under the Receiver Operating Characteristic Curve) 就是量化衡量ROC分类性能的指标,如下图所示,物理含义是ROC曲线的面积,AUC越大越好。
在这里插入图片描述

2、实现

from sklearn.metrics import auc, roc_curve, roc_auc_score
import matplotlib.pyplot as plt

f_pos, t_pos, thresh = roc_curve(test_y, pred_y)
auc_area = auc(f_pos, t_pos)
plt.plot(f_pos, t_pos, 'darkorange', lw=2, label='AUC = %.2f' % auc_area)
plt.legend(loc='lower right')
plt.plot([0, 1], [0, 1], color='navy', linestyle='--')
plt.title('ROC')
plt.ylabel('True Pos Rate')
plt.xlabel('False Pos Rate')
plt.show()

print("AUC: ", roc_auc_score(test_y, pred_y))

输出结果

AUC:  0.680756843800322

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值