机器学习的评估指标zhuanlan.zhihu.com
该篇文章介绍了机器学习的一些评估指标,要得到这些指标的基础,就是先求得混淆矩阵,那在代码中怎么获取混淆矩阵呢?
二分类
二分类比较简单,所以我们先来分析一下二分类的情况。
我们利用 sklearn中的 confusion_matrix 函数来得到混淆矩阵,函数原型为:
sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None, sample_weight=None)y_true:样本真实的分类标签列表
y_pred:样本预测的分类结果列表
labels:类别列表,可用于对类别重新排序或选择类别子集。如果默认,则将y_true 或y_pred 中至少出现一次的类别按排序顺序构成混淆矩阵。
sample_weight:样本权重
先看下面这个例子:
>>> from sklearn.metrics import confusion_matrix
>>> y_true = [0, 1, 0, 1]
>>> y_pred = [1, 1, 1, 0]
>>> confusion_matrix(y_true, y_pred)
[[0 2]
[1 1]]
我们得到了一个2x2的矩阵,这是什么意思?建议先去看看本文最开始的那篇文章。
在二分类的模型中,混淆矩阵把预测情况与实际情况的所有结果进行组合,形成了真正 (true positive)、假正 (false positive)、真负 (true negative) 和假负 (false negative) 四种情形,分别由TP、FP、TN、FN 表示(T代表预测正确,F代表预测错误)。
返回值是一个形状为[n_classes, n_classes]的混淆矩阵,对于二分类模型,这个2x2的矩阵表示如下:
TN|FP
FN|TP
所以我们可以通过ravel()来直接得到这四个值:
tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0]).ravel()
如果知道 tn, fp, fn, tp 这四个值的