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

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
                # 就执行正常的求平均操作

原文地址:https://www.cnblogs.com/xiaoboge/p/9690171.html

时间: 2024-12-12 12:46:33

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

part4-2 流程控制二(循环结构,while、for循环,列表推导式、生成器推导式,常用工具函数,控制循环结构,4个简单实例)

循环语句在循环条件满足时,可反复执行某一段代码,这段被重复执行的代码称为循环体.在循环体中,需要在合适的时候把循环条件设置为假,从而结束循环:否则循环一直执行下去形成死循环.循环语句通常包含如下4个部分.(1).初始化语句(init_statements):在循环开始前执行,有一条或多条语句,用于完成一些起初始化工作.(2).循环条件(test_expression):一个布尔表达式,决定是否执行循环体.(3).循环体(body_statements):循环的主体,根据循环条件是否允许,这个代码

python 迭代器 itertools模块中常用工具函数

迭代器 itertools模块中常用工具函数,提供了接近二十个迭代器工具函数. 原文地址:https://www.cnblogs.com/bcyczhhb/p/11809842.html

js常用工具函数大全

项目中经常会用到的js工具函数,待更新: 小于10补0,常用于日期月份补0: // 小于10补0 function format(n) { return n.toString().replace(/^(\d)$/, '0$1'); } 千分位显示,常用于价格显示: // 千分位 function toThousands(num) { return parseFloat(num).toFixed(2).replace(/(\d{1,3})(?=(\d{3})+(?:\.))/g, "$1,&quo

Numpy 常用矩阵计算函数

基本属性 在做一些数据分析的时候,我们通常会把数据存为矩阵的形式,然后python本身对于矩阵的操作是不够的,因此出现了numpy这样一个科学开发库来进行python在次上面的不足. Numpy's array 类被称为ndarray. 这个对象常用而重要的属性如下: ndarray.ndim: 输出矩阵(数组)的维度 ndarray.shape: 输出矩阵的各维数大小,相当于matlab中的size()函数 ndarray.size: 输出矩阵(数组)元素的总个数,相当于各维数之积 ndarr

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

前言 以下代码来自:自己写的.工作项目框架上用到的.其他框架源码上的.网上看到的. 主要是作为工具函数,服务于框架业务,自身不依赖于其他框架类库,部分使用到es6/es7的语法使用时要注意转码 虽然尽量在函数中做了错误情况的处理,仍有可能出现报错的情况(不定期完善) 1. 获取url上的参数 /** *获取url上的参数 * @return {object} * @example * getRequest() getRequest().paramA */ function getRequest(

一些常用工具函数

1. 计算字符,有时EditText要判断输入字符的长度,可能会有区分中英文的需求. 这篇详细介绍了不同的处理方案:Android字数限制的EditText实现方案研究 1 /** 2 * 计算内容的字符数,一个汉字=两个字符,一个中文标点=两个字符 3 * 注意:该函数的不适用于对单个字符进行计算,因为单个字符四舍五入后都是1 4 * 5 * @param c 6 * @return 7 */ 8 private int calculateLength(CharSequence c) { 9

前端开发中常用工具函数总结

1.时间格式化等方法 推荐使用 moment.js 的库文件 3.模板.循环.MAP等方法使用 underscode.js 的方法 4.表单序列化成JSON $.fn.serializeJson = function() { var serializeObj = {}; var array = this.serializeArray(); var str = this.serialize(); $(array).each(function() { if (serializeObj[this.na

JS常用工具函数

/** * Created by gaojun-pd on 2016/10/27. */ var Util = { /** * 1.判断非空 * 2.获取字符串真实长度 汉字算两位 * 3.判断参数类型 * 4.日期格式化 * 5.通过key获取url中的参数值 * 6.设置cookie值 * 7.获取cookie值 * 8.删除cookie * 9.HTML编码 * 10.HTML解码 * 11.光标停在文字的后面,文本框获得焦点时调用 * 12.生成一个新的GUID */ /** * 判断非

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

1.设置获取cookie //方式1 //设置cookie function SetCookie(name, value)//两个参数,一个是cookie的名字,一个是值 { var Days = 30; //此 cookie 将被保存 30 天 var exp = new Date(); //new Date("December 31, 9998"); exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); document.