[转载] numpy.bincount介绍以及巧妙计算分类结果中每一类预测正确的个数
参考链接: 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~100中所有3的倍数的个数
/* 题目:计算1~100中所有3的倍数的个数 */ #include <stdio.h> int main() { // 记录3的倍数的个数 int count = 0; // 记录当前 ...
- 多分类问题中每一类的Precision-Recall Curve曲线以及ROC的Matlab画法
这两天写论文中,本来设计的是要画这个Precision-Recall Curve的,因为PRC是从信息检索中来的,而且我又做的类似一个检索,所以要画这个图,但是我靠,竟然发现不好画,找了很多资料等.最 ...
- 5, 计算1~100中所有7的倍数的个数(c语言编程题,编写程式,分别统计1~100中,满足3的倍数,7的倍数各有多少个...
编写程式,分别统计1-100中,满足3的倍数,7的倍数各有多少个以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 编写程式 ...
- python科学计算是什么意思_Python科学计算和数据分析(NumPy详细介绍)
本文介绍的科学计算.数据分析必备基础知识. 本文全文约2600字,阅读时间约15分钟,请你耐心观看. 本文使用的开发环境是Python3.8,Numpy版本是1.19,本文的例子全部经过验证,你可以直 ...
- [转载] numpy总结
参考链接: Python中的numpy.tri numpy 'Numerical Python'.它是一个由多维数组对象和一组处理数组的例程组成的库. NumPy通常与 SciPy (Scientif ...
- [转载]搜索引擎技术介绍
转载声明:http://backend.blog.163.com/blog/static/202294126201252872124208/ 引言 早些时候分享过一份关于搜索引擎技术的PPT,这篇文章 ...
- Numpy的介绍和优势
Numpy的介绍和优势 1 Numpy介绍 Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组. Numpy支持常见的数组和矩阵操作.对于同样 ...
- Attension Mechanism模型的详细介绍,原理、分类及应用
模型汇总24 - 深度学习中Attention Mechanism详细介绍:原理.分类及应用 Attention是一种用于提升基于RNN(LSTM或GRU)的Encoder + Decoder模型的效 ...
- [转载] Numpy 使用教程--Numpy 数学函数及代数运算
参考链接: Python中的numpy.logaddexp Numpy 使用教程–Numpy 数学函数及代数运算 一.实验介绍 1.1 实验内容 如果你使用 Python 语言进行科学计算,那么一定会 ...
最新文章
- 开发自己的 chart - 每天5分钟玩转 Docker 容器技术(167)
- python排序的两个方法
- [zz]c++ list sort方法
- Python-memcached的基本使用 - Flynewton成长点滴 - 开源中国社区
- mysql命令行如何建库_MySQL心得2--命令行方式建库和表
- java睡眠后继续执行_Java高级编程基础:如何使用线程的休眠,中断和连接
- SAP License:物料账错误描述与解决办法
- 送给程序员的 编程箴言
- vue动态class类型
- 如何全面认识大数据分析的基础知识
- HTML标记语言——表单的详细使用说明
- python画二维温度云图_利用python画出词云图
- 利用第三方库XML解析 (TBXML)转化成模型数据
- mysql 分表查询外连接_SQL多表连接查询实例(内连接外连接)
- Kafka数据迁移MaxCompute最佳实践
- jsp:useBean 解释
- Java设计模式--单例模式(代码详解懒汉、饿汉模式)
- 计算机系统具有运行可靠性,计算机系统的可靠性技术
- 随笔---ubuntu下通过ifstat查看实时网速
- 暴雪禁止中国玩家参加炉石赛事/ 谷歌推迟发放年终奖/ 推特蓝V增加包年套餐…今日更多新鲜事在此...