numpy 常用工具函数 —— np.bincount/np.average

numpy 常用api(一) 
numpy 常用api(二)

一个函数提供 random_state 的关键字参数(keyword parameter):是为了结果的可再现性(reoccurrence)或叫可重复性。

1. np.bincount():统计次数

接口为:

numpy.bincount(x, weights=None, minlength=None)
  • 1

尤其适用于计算数据集的标签列(y_train)的分布(distribution),也即获得 class distribution :

>>> np.bincount(y_train.astype(np.int32))
  • 1
>>> np.bincount(np.array([0, 1, 1, 3, 2, 1, 7]))
array([1, 3, 1, 1, 0, 0, 0, 1], dtype=int32)
# 分别统计0-7分别出现的次数
  • 1
  • 2
  • 3

If weights is specified the input array is weighted by it, i.e. if a value n is found at position i, out[n] += weight[i] instead of out[n] += 1.

>>> w = np.array([0.3, 0.5, 0.2, 0.7, 1., -0.6]) # weights
>>> x = np.array([0, 1, 1, 3, 2, 2])
>>> np.bincount(x, w)
array([ 0.3, 0.7, 0.4, 0.7])
# 0: 0.3
# 1:0.5+0.2
# 2: 1+(-0.6)
# 3: 0.7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

np.bincount() 从零开始计数;

>>> np.bincount([3, 4, 4, 3, 3, 5])
array([0, 0, 0, 3, 2, 1], dtype=int32)
# 分别表示0出现的次数,
# 1出现的次数,
# 2出现的次数,
# 。。。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2. np.average()

np.average(X, axis=0, weights=w) == w.dot(X)

等式左部表示加权平均,sum(w)==1时才有意义,也即等式的左部比等式的右部多了一层加权平均的意义,内积代表着实现该意义的动作。

X = np.array([[.9, .1],
[.8, .2],
[.4, .6]])
w = np.array([.2, .2, .6])
print(w.dot(X))
print(np.average(X, axis=0, weights=w))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在一些情况下只能使用np.average()而无法使用简单的矩阵乘法操作: 
比如:

P = np.asarray([c.predict_proba(X) for c in clfs])
# 此时P是一个三维矩阵
# (# of clfs) * (# of samples) * (# of classes)
np.average(P, axis=0, weights=w)
# 此时的shape为 ((# of samples) * (# of classes))
# 仍然维持行和为1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

也有一些情况下只能使用 np.average 而无法使用dot(矩阵乘法,matrix multiplication)运算:

def predict_proba(self, X):
probas = np.asarray([clf.predict_proba(X) for clf in self.classifiers_])
# return self.weights.dot(probas)
# 此时self.weights有未赋值的风险
# None类型肯定是不支持dot函数的
return np.average(probas, axis=0, weights=self.weights)
# np.average的功能便是,如果weights参数为None
# 就执行正常的求平均操作

numpy 常用工具函数 —— np.bincount/np.average的更多相关文章

  1. Numpy 常用矩阵计算函数

    基本属性 在做一些数据分析的时候,我们通常会把数据存为矩阵的形式,然后python本身对于矩阵的操作是不够的,因此出现了numpy这样一个科学开发库来进行python在次上面的不足. Numpy's ...

  2. JavaScript常用工具函数

    检测数据是不是除了symbol外的原始数据 function isStatic(value) { return ( typeof value === 'string' || typeof value ...

  3. javascript常用工具函数总结(不定期补充)未指定标题的文章

    前言 以下代码来自:自己写的.工作项目框架上用到的.其他框架源码上的.网上看到的. 主要是作为工具函数,服务于框架业务,自身不依赖于其他框架类库,部分使用到es6/es7的语法使用时要注意转码 虽然尽 ...

  4. JS开发常用工具函数 总结

    js原生工具库 1.isStatic:检测数据是不是除了symbol外的原始数据 */ function isStatic(value) { return( typeof value === 'str ...

  5. 前端开发 —— js 常用工具函数(utilities)

    1. 时间 function getCurTime() { var date = new Date(); return date.toLocaleTimeString(); } date.toLoca ...

  6. JS开发常用工具函数

    1.isStatic:检测数据是不是除了symbol外的原始数据 function isStatic(value) { return ( typeof value === 'string' || ty ...

  7. JS常用工具函数

    /** * Created by gaojun-pd on 2016/10/27. */ var Util = { /** * 1.判断非空 * 2.获取字符串真实长度 汉字算两位 * 3.判断参数类 ...

  8. JS常用工具函数(持续记录)

    1.设置获取cookie //方式1 //设置cookie function SetCookie(name, value)//两个参数,一个是cookie的名字,一个是值 { var Days = 3 ...

  9. PHP常用工具函数之手机号相关

    1.手机号正确与否判定 //测试手机号 $phone = '17777777777'; $pattern = '/^1[356789]\d{9}$/'; $is = preg_match($patte ...

随机推荐

  1. selenium基础(控制浏览器)

    python基础(控制浏览器) 控制浏览器 控制浏览器窗口大小 设置浏览器屏幕大小方法:set_window_size() 浏览器最大化:maximize_window() 浏览器最小化:minimi ...

  2. C# IP正则表达式

    public static bool IsValidIp(string strIn) { bool b = Regex.IsMatch(strIn, @"^[0-9]{1,3}\.[0-9] ...

  3. Linux操作系统系列-Linux基础

    概述 先了解下unix,unix是一个多任务.多用户的操作系统,并且是收费的操作系统. 1991年的10月5日,林纳斯·托瓦兹在comp.os.minix新闻组上发布消息,正式向外宣布Linux内核的 ...

  4. 使用 JDK11 遇到的问题

    1.下载的 JDK 解压版中没有 jre 目录以及相应的包,需要通过命令自动生成 进入 JDK 的 bin 目录下,执行以下命令,然后会在 bin 目录下生成一个 jre 目录,需要将该 jre 目录 ...

  5. telnet- Linux必学的60个命令

    1.作用 telnet表示开启终端机阶段作业,并登入远端主机.telnet是一个Linux命令,同时也是一个协议(远程登陆协议). 2.格式 telnet [-8acdEfFKLrx][-b][-e] ...

  6. h5 上下左右前后居中

    .outer { width: 200px; height: 200px; background: red; position: relative; } .inner { position: abso ...

  7. cdq分治(偏序)

    偏序问题: https://www.luogu.org/blog/Owencodeisking/post-xue-xi-bi-ji-cdq-fen-zhi-hu-zheng-ti-er-fen 优质题 ...

  8. [转]C# 之泛型详解

    什么是泛型 我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,但我们没有办法,只能分别写多个方法处理每个数据类型,因为 ...

  9. 杂项-SpringBoot-Jasypt:Jasypt(安全框架)

    ylbtech-杂项-SpringBoot-Jasypt:Jasypt(安全框架) 1. 使用jasypt加密Spring Boot应用中的敏感配置返回顶部 1. 本文讲述了在Spring Boot/ ...

  10. mac下安装Python的工具包pip

    1. 在终端下输入 sudo easy_install pip  password:输入电脑密码 Finished processing dependencies for pip 表示安装完成 boe ...