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 splitlines使用技巧
Sep 06 Python
Python字符编码判断方法分析
Jul 01 Python
python中的计时器timeit的使用方法
Oct 20 Python
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
浅谈python之高阶函数和匿名函数
Mar 21 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
python实现查找所有程序的安装信息
Feb 18 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
Feb 20 Python
django models里数据表插入数据id自增操作
Jul 15 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 Python
python如何读取和存储dict()与.json格式文件
Jun 25 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
实用函数2
2007/11/08 PHP
PHP执行linux系统命令的常用函数使用说明
2010/04/27 PHP
php中的curl_multi系列函数使用例子
2014/07/29 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
JS二叉树的简单实现方法示例
2017/04/05 Javascript
基于滚动条位置判断的简单实例
2017/12/14 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
详细介绍解决vue和jsp结合的方法
2020/02/06 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
详解django中自定义标签和过滤器
2017/07/03 Python
python reduce 函数使用详解
2017/12/05 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
车工岗位职责
2013/11/26 职场文书
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
政府门卫岗位职责
2014/04/29 职场文书
新闻通讯稿模板
2015/07/22 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python