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错误处理详解
Sep 28 Python
Python WXPY实现微信监控报警功能的代码
Oct 20 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
Mar 01 Python
python文字转语音的实例代码分析
Nov 12 Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 Python
python pyecharts 实现一个文件绘制多张图
May 13 Python
基于python实现判断字符串是否数字算法
Jul 10 Python
Python文件夹批处理操作代码实例
Jul 21 Python
详解基于Scrapy的IP代理池搭建
Sep 29 Python
Python内置数据结构列表与元组示例详解
Aug 04 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
浅析php原型模式
2014/11/25 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
使用vue.js写一个tab选项卡效果
2017/03/25 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
Python2中的raw_input() 与 input()
2015/06/12 Python
python实现矩阵乘法的方法
2015/06/28 Python
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
Python unittest框架操作实例解析
2020/04/13 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
python中类与对象之间的关系详解
2020/12/16 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
美国机场停车位预订:About Airport Parking
2018/03/26 全球购物
Linux文件系统类型
2012/09/16 面试题
Linux文件系统类型
2012/02/15 面试题
如何客观的进行自我评价
2013/12/17 职场文书
土木建筑学生自我评价
2014/01/14 职场文书
公司前台辞职报告
2014/01/19 职场文书
赡养老人协议书
2014/04/21 职场文书
关于召开会议的通知
2015/04/15 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server