关于sklearn中的混淆矩阵confusion matrix的学习

定义

混淆矩阵是有 TP、TN、 FP、FN组成的一个元组,这句话是不错的,看官网给定的代码!

>>> from sklearn.metrics import confusion_matrix
>>> y_true = [2, 0, 2, 2, 0, 1]
>>> y_pred = [0, 0, 2, 2, 0, 2]
>>> confusion_matrix(y_true, y_pred)
array([[2, 0, 0],
       [0, 0, 1],
       [1, 0, 2]])

初看,这混淆矩阵怎么是3行3列的呀?看不懂,再往下瞅瞅简单的,

>>> tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0]).ravel()
>>> (tn, fp, fn, tp)
(0, 2, 1, 1)

初看不明白,细细琢磨,欸!confusion_matrix的输入是标签和预测的数据,
那么它们分别 是啥? 对号入座

[[0, 1, 0, 1] , 
[1, 1, 1, 0]] # -> 按位置对应 就变成了  [[0, 1], [1, 1], [0, 1], [1, 0]]

tn 就是 真实值是 0, 预测值也是 0 这个事件所发生的次数,
fp 自然就是 真实值为 0 预测值是 1的情况
fn 即 真实值为 1 预测值是 0 的情况啦
tp 就是 真实值是 1. 预测值也是 1 这种情况的次数

[0, 0] 出现零次 、[0, 1]出现两次、[1, 0]出现一次、[1, 1]出现一次,所以是[ 0,2,1,1]

所以在这个混淆矩阵中 tp 就是 是这个类并且预测对了的情况,当然这是二元的比较好理解。因为二维的,所得到的结果就是 2*2,才会有这四个值以及正类和负类之分。

那么我们回过头来看第一段代码。
理解了二元的,三元的也是如此,

[2, 0, 2, 2, 0, 1]
[0, 0, 2, 2, 0, 2] ->[[2, 0], [0, 0], [2,2],[2,2],[1, 2]]
#所得混淆矩阵如下
[1, 0, 0
 0, 0, 1
 1, 0, 2]

有三个类,那么混淆矩阵的值就变成了 3*3,其中,对角线中间的值都是判断正确的,其他位置上的都是判断错误的,只是错误的种类不同而已。就拿这个举例子,矩阵(x, y)上的值代表的是将x判断成y类的事件发生的数量,仅此而已。x与y的值相同那显然是判断对的咯!


仅为自己理解,随喜点赞!!!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值