一、 混淆矩阵( Confusion Matrix )

混淆矩阵是评判模型结果的一种指标,属于模型评估的一部分,常用于评判分类器模型的优劣。

首先要明白两个标志位的含义?第一位表示分类器是否预测正确,第二位表示分类器的预测结果。因此我们应该从后往前看,先看预测结果是Positive(正样本)还是Negative(负样本)?再看分类器有没有预测正确。

TP:True Positive,分类器预测结果为正样本,实际也为正样本,即正样本被正确识别的数量。

FP:False Positive,分类器预测结果为正样本,实际为负样本,即误报的负样本数量。

TN:True Negative,分类器预测结果为负样本,实际为负样本,即负样本被正确识别的数量。

FN:False Negative,分类器预测结果为负样本,实际为正样本,即漏报的正样本数量。

我的理解:以TP为例。TP,字面意思,真正的 正样本。首先一点,只有预测值才有真假一说,真实值是没有真假一说的,或者就认为是真的,因为真实值是已经发生的。所以,TP的T指的是预测值的真假性,此处为T,即P正样本这一预测值是正确的,何为正确,即符合真实值。

以daisy为例,将下图划分为四个区域:

部分代码:

for i in range(self.num_classes):
    # 真正例(True Positives,TP),即混淆矩阵中对角线上的值,表示类别i被正确预测为类别i的次数
    TP = self.matrix[i, i]  # 分类器预测结果为正,实际也为正

    # 假正例(False Positives,FP),即混淆矩阵中第i行除了对角线上的所有值的和,表示被错误地预测为类别i的次数
    FP = np.sum(self.matrix[i, :]) - TP # 分类器预测结果为正,实际为负

    # 假负例(False Negatives,FN),即混淆矩阵中第i列除了对角线上的所有值的和,表示类别i被错误地预测为其他类别的次数
    FN = np.sum(self.matrix[:, i]) - TP  # 分类器预测结果为负,实际为正

    # 真负例(True Negatives,TN),即混淆矩阵中除了第i行和第i列之外的所有值的和,表示其他类别被正确预测为非类别i的次数
    TN = np.sum(self.matrix) - TP - FP - FN  # 分类器预测结果为负(不是...类),实际为负(不是...类)

    # 真正例占所有被预测为该类别的样本的比例。如果分母(TP + FP)为0(即没有样本被预测为该类),则精度设为0
    Precision = round(TP / (TP + FP), 3) if TP + FP != 0 else 0.

    # 真正例占所有实际属于该类别的样本的比例。如果分母(TP + FN)为0(即没有实际属于该类的样本),则召回率设为0
    Recall = round(TP / (TP + FN), 3) if TP + FN != 0 else 0.

    # 真负例占所有被预测为非该类别的样本的比例。如果分母(TN + FP)为0(即没有样本被预测为非该类),则特异性设为0
    Specificity = round(TN / (TN + FP), 3) if TN + FP != 0 else 0.
  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值