机器学习中常用的评估指标,大体上可以从两种任务来分析:分类任务和回归任务。常见的评价方法又包括混淆矩阵、准确率、敏感度、特异性、ROC曲线、AUC值等等。
此专栏将对常见的评价指标进行介绍,将从概念、原理、到代码实现。将采用图文并茂的形式展开。第一章我们从混淆矩阵开始
01
在某一指定阈值下,对模型预测结果的统计:
1.矩阵的一行表示预测类中的实例(可以理解为模型预测输出,predict);
2.矩阵的一列表示对该预测结果与标签(Ground Truth)比较,给出预测结果是否正确,正确为True,反之为False
真正(True Positive , TP):被模型预测为正(P),预测对了(T)。
假正(False Positive , FP):被模型预测为正(P),预测错了(F)。
假负(False Negative , FN):被模型预测为负(N),预测错了(F)。
真负(True Negative , TN):被模型预测为负(N),预测对了(T)。
真正率(True Positive Rate,TPR):TPR=TP/(TP+FN),即被预测为正的正样本数 /正样本实际数。
假正率(False Positive Rate,FPR) :FPR=FP/(FP+TN),即被预测为正的负样本数 /负样本实际数。
假负率(False Negative Rate,FNR) :FNR=FN/(TP+FN),即被预测为负的正样本数 /正样本实际数。
真负率(True Negative Rate,TNR):TNR=TN/(TN+FP),即被预测为负的负样本数 /负样本实际数/2
举个栗子
y_true = ["tb", "tb", "normal", "tb", "normal", "normal", "normal"]
y_pred = ["tb", "tb", "normal", "normal", "normal", "tb", "normal"]
此时,得到下面这样一个混淆矩阵:
sklearn相应的包:sklearn.metrics.confusion_matrix
from sklearn.metrics import confusion_matrix# y_pred是预测标签
y_pred, y_true =[1,0,1,0], [0,0,1,0]
c_matrix = confusion_matrix(y_true=y_true, y_pred=y_pred)# array([[2, 1],# [0, 1]], dtype=int64)
print(c_matrix)
总结:到这里,我们发现了一个问题,就是混淆矩阵是在某一阈值下得到的结果。阈值的不同也将导致混淆矩阵结果的不同,这样就显得特别的不客观。
那有没有什么方法,能够更加全面的评价呢?有的,我们在之后的内容中继续学习。喜欢欢迎关注哦,持续更新中。
往期回顾
Python数据系列(一)- 列表List:Python的“苦力”
Python数据系列(二)- 字典Dictionary:Python的“大胃王”
Python数据系列(三)- 元组Tuple:Python的“不可变序列”
Python数据系列(四)- 数组array-NumPy:Python的“运算加速氮气”
深度学习常见评价指标(一)- 图像语义分割
深度学习常见评价指标(二)- 图像分类任务