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中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
Python实现端口复用实例代码
Jul 03 Python
详解Django中的权限和组以及消息
Jul 23 Python
基python实现多线程网页爬虫
Sep 06 Python
Python基础中所出现的异常报错总结
Nov 19 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
用sqlalchemy构建Django连接池的实例
Aug 29 Python
pytorch torch.expand和torch.repeat的区别详解
Nov 05 Python
django框架cookie和session用法实例详解
Dec 10 Python
pytorch 修改预训练model实例
Jan 18 Python
python基于tkinter实现gif录屏功能
May 19 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
虹吸式咖啡壶操作
2021/03/03 冲泡冲煮
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
vuejs绑定class和style样式
2017/04/11 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python编程开发之类型转换convert实例分析
2015/11/13 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
python实现打砖块游戏
2020/02/25 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
Python中常见的数制转换有哪些
2020/05/27 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
爱国主义演讲稿
2014/05/07 职场文书
网站出售协议书范文
2014/10/10 职场文书
委托书的样本
2015/01/28 职场文书
护理培训心得体会
2016/01/22 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript
Python Pygame实战之塔防游戏的实现
2022/03/17 Python
Oracle中DBLink的详细介绍
2022/04/29 Oracle