参考链接: Python中的numpy.bincount

之前接触到bincount这个函数,简单的以为它就是计算分类结果中每一类的数量,如下:

import numpy as np

a = np.array([0,1,3,2,1])

binc = np.bincount(a)

print(binc)

结果输出是这样:

[1 2 1 1]

这个结果表示0有1个,1有两个,2和3各有一个。

但是今天又发现了一个不为人知的巧妙用法,是在一篇论文的源码中发现的。直接看代码

#假设你总共要分3类,也可设为num_classes

prediction = np.array([0,1,1,2,0,1,2])

truth = np.array([0,1,2,2,0,1,1])

#上面两行假设是你的分类结果和真实分类

hist = np.zeros((3,3))#以类数为维数的矩阵

#定义一个函数,要注意label_pred和label_true都必须是np.array()

def _fast_hist(label_pred, label_true, num_classes):

mask = (label_true >= 0) & (label_true < num_classes)

hist = np.bincount(                                    #这是我们要学习的bincount函数

num_classes * label_true[mask].astype(int) +

label_pred[mask], minlength=num_classes ** 2).reshape(num_classes, num_classes)#minlength属性规定了bincount

函数返回的数组的最小长度,用0补齐

#print(hist)

return hist

#通过下面这个循环,可以计算出我们的分类情况

for lp,lt in zip(prediction,truth):

hist += _fast_hist(lp.flatten(),lt.flatten(),3)

print(hist)

print('\n\n')

看结果:

第一次循环

[[1. 0. 0.]

[0. 0. 0.]

[0. 0. 0.]]

第二次循环

[[1. 0. 0.]

[0. 1. 0.]

[0. 0. 0.]]

。。。

[[1. 0. 0.]

[0. 1. 0.]

[0. 1. 0.]]

[[1. 0. 0.]

[0. 1. 0.]

[0. 1. 1.]]

[[2. 0. 0.]

[0. 1. 0.]

[0. 1. 1.]]

[[2. 0. 0.]

[0. 2. 0.]

[0. 1. 1.]]

[[2. 0. 0.]

[0. 2. 1.]

[0. 1. 1.]]

通过对比分类结果,可以看出,第一个和第二个的预测和事实都相等,计算出来的数值位于对角线,而当预测和事实不符时,数值落在别处。从_fast_hist函数中可以看到,利用num_classes,通过巧妙的计算,可以使预测正确的结果落在对角线。

如果直接取对角线,

iu = np.diag(hist)

就能得到每一类分类正确的个数。

[转载] numpy.bincount介绍以及巧妙计算分类结果中每一类预测正确的个数相关推荐

  1. 题目:计算1~100中所有3的倍数的个数

    /* 题目:计算1~100中所有3的倍数的个数 */ #include <stdio.h> int main() { // 记录3的倍数的个数 int count = 0; // 记录当前 ...

  2. 多分类问题中每一类的Precision-Recall Curve曲线以及ROC的Matlab画法

    这两天写论文中,本来设计的是要画这个Precision-Recall Curve的,因为PRC是从信息检索中来的,而且我又做的类似一个检索,所以要画这个图,但是我靠,竟然发现不好画,找了很多资料等.最 ...

  3. 5, 计算1~100中所有7的倍数的个数(c语言编程题,编写程式,分别统计1~100中,满足3的倍数,7的倍数各有多少个...

    编写程式,分别统计1-100中,满足3的倍数,7的倍数各有多少个以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 编写程式 ...

  4. python科学计算是什么意思_Python科学计算和数据分析(NumPy详细介绍)

    本文介绍的科学计算.数据分析必备基础知识. 本文全文约2600字,阅读时间约15分钟,请你耐心观看. 本文使用的开发环境是Python3.8,Numpy版本是1.19,本文的例子全部经过验证,你可以直 ...

  5. [转载] numpy总结

    参考链接: Python中的numpy.tri numpy 'Numerical Python'.它是一个由多维数组对象和一组处理数组的例程组成的库. NumPy通常与 SciPy (Scientif ...

  6. [转载]搜索引擎技术介绍

    转载声明:http://backend.blog.163.com/blog/static/202294126201252872124208/ 引言 早些时候分享过一份关于搜索引擎技术的PPT,这篇文章 ...

  7. Numpy的介绍和优势

    Numpy的介绍和优势 1 Numpy介绍 Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组. Numpy支持常见的数组和矩阵操作.对于同样 ...

  8. Attension Mechanism模型的详细介绍,原理、分类及应用

    模型汇总24 - 深度学习中Attention Mechanism详细介绍:原理.分类及应用 Attention是一种用于提升基于RNN(LSTM或GRU)的Encoder + Decoder模型的效 ...

  9. [转载] Numpy 使用教程--Numpy 数学函数及代数运算

    参考链接: Python中的numpy.logaddexp Numpy 使用教程–Numpy 数学函数及代数运算 一.实验介绍 1.1 实验内容 如果你使用 Python 语言进行科学计算,那么一定会 ...

最新文章

  1. 开发自己的 chart - 每天5分钟玩转 Docker 容器技术(167)
  2. python排序的两个方法
  3. [zz]c++ list sort方法
  4. Python-memcached的基本使用 - Flynewton成长点滴 - 开源中国社区
  5. mysql命令行如何建库_MySQL心得2--命令行方式建库和表
  6. java睡眠后继续执行_Java高级编程基础:如何使用线程的休眠,中断和连接
  7. SAP License:物料账错误描述与解决办法
  8. 送给程序员的 编程箴言
  9. vue动态class类型
  10. 如何全面认识大数据分析的基础知识
  11. HTML标记语言——表单的详细使用说明
  12. python画二维温度云图_利用python画出词云图
  13. 利用第三方库XML解析 (TBXML)转化成模型数据
  14. mysql 分表查询外连接_SQL多表连接查询实例(内连接外连接)
  15. Kafka数据迁移MaxCompute最佳实践
  16. jsp:useBean 解释
  17. Java设计模式--单例模式(代码详解懒汉、饿汉模式)
  18. 计算机系统具有运行可靠性,计算机系统的可靠性技术
  19. 随笔---ubuntu下通过ifstat查看实时网速
  20. 暴雪禁止中国玩家参加炉石赛事/ 谷歌推迟发放年终奖/ 推特蓝V增加包年套餐…今日更多新鲜事在此...

热门文章

  1. 2020icpc赛事安排
  2. 【NOI OpenJudge】【1.4】编程基础之逻辑表达式与条件分支
  3. 【NOIP2016】【Luogu1909】买铅笔(模拟)
  4. Lc165-版本号比较
  5. p44_IP数据包格式
  6. 牛客练习赛30: E. 国政议事(二分匹配)
  7. opencv 图像傅里叶变换
  8. opencv 绘制图像轮廓
  9. string类型的数字字符串直接转换成int型方法
  10. markdown与latex:向量形式给字母加粗 \pmb{}