python 标准差计算的实现(std)


Posted in Python onJuly 29, 2019

numpy.std() 求标准差的时候默认是除以 n 的,即是有偏的,np.std无偏样本标准差方式为加入参数 ddof = 1;

pandas.std() 默认是除以n-1 的,即是无偏的,如果想和numpy.std() 一样有偏,需要加上参数ddof=0 ,即pandas.std(ddof=0) ;DataFrame的describe()中就包含有std();

demo:

>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.std(a, ddof = 1)
3.0276503540974917
>>> np.sqrt(((a - np.mean(a)) ** 2).sum() / (a.size - 1))
3.0276503540974917
>>> np.sqrt(( a.var() * a.size) / (a.size - 1))
3.0276503540974917

PS:numpy中标准差std的神坑

我们用Matlab作为对比。计算标准差,得到:

>> std([1,2,3])
ans =
   1

然而在numpy中:

>>> np.std([1,2,3])
0.81649658092772603

什么鬼!这么简单的都能出错?原因在于,np.std有这么一个参数:

ddof : int, optional
Means Delta Degrees of Freedom. The divisor used in calculations is N - ddof, where N represents the number of elements. By default ddof is zero.

因此,想要正确调用,必须使ddof=1:

>>> np.std([1,2,3], ddof=1)
1.0

而且,这一特性还影响到了许多基于numpy的包。比如scikit-learn里的StandardScaler。想要正确调用,只能自己手动设置参数:

ss = StandardScaler()
ss.mean_ = np.mean(X, axis=0)
ss.scale_ = np.std(X, axis=0, ddof=1)
X_norm = ss.transform(X)

当X数据量较大时无所谓,当X数据量较小时则要尤为注意。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python Django做网页
Nov 04 Python
基于python中的TCP及UDP(详解)
Nov 06 Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
Nov 01 Python
Python制作动态字符图的实例
Jan 27 Python
python爬虫selenium和phantomJs使用方法解析
Aug 08 Python
Django 框架模型操作入门教程
Nov 05 Python
tensorflow中tf.slice和tf.gather切片函数的使用
Jan 19 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 25 Python
Django框架模板用法详解
Jun 10 Python
Python中np.random.randint()参数详解及用法实例
Sep 23 Python
Python 二叉树的层序建立与三种遍历实现详解
Jul 29 #Python
Python完成哈夫曼树编码过程及原理详解
Jul 29 #Python
Python秒算24点实现及原理详解
Jul 29 #Python
django之状态保持-使用redis存储session的例子
Jul 28 #Python
django 通过URL访问上传的文件方法
Jul 28 #Python
django使用admin站点上传图片的实例
Jul 28 #Python
Python中变量的输入输出实例代码详解
Jul 28 #Python
You might like
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
Express之托管静态文件的方法
2018/06/01 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
2020/06/01 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
在Django中创建动态视图的教程
2015/07/15 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
python求numpy中array按列非零元素的平均值案例
2020/06/08 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
蔻驰英国官网:COACH英国
2020/07/19 全球购物
AJAX的全称是什么
2012/11/06 面试题
物流专业大学生求职信范文
2013/10/28 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
班级德育工作实施方案
2014/02/21 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
辞职信范文大全
2015/03/02 职场文书
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js
Python学习之包与模块详解
2022/03/19 Python