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使用minidom读写xml的方法
Jun 03 Python
python如何修改装饰器中参数
Mar 20 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
pandas使用apply多列生成一列数据的实例
Nov 28 Python
PySide和PyQt加载ui文件的两种方法
Feb 27 Python
pytorch 输出中间层特征的实例
Aug 17 Python
Python3进制之间的转换代码实例
Aug 24 Python
基于Python中的yield表达式介绍
Nov 19 Python
python绘制雪景图
Dec 16 Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 Python
使用tkinter实现三子棋游戏
Feb 25 Python
详解python第三方库的安装、PyInstaller库、random库
Mar 03 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提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
学习php过程中的一些注意点的总结
2013/10/25 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
2016/09/11 PHP
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
jquery ajax,ashx,json的用法总结
2014/02/12 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
Bootstrap进度条组件知识详解
2016/05/01 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
深入理解Vue 单向数据流的原理
2017/11/09 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
Python中的random()方法的使用介绍
2015/05/15 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
python机器学习之贝叶斯分类
2018/03/26 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
python中if及if-else如何使用
2020/06/02 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
一套带网友答案的.NET笔试题
2016/12/06 面试题
个人党性剖析材料
2014/02/03 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
弘扬雷锋精神演讲稿
2014/05/10 职场文书
借款担保书范文
2014/05/13 职场文书
辞职信的写法
2015/02/27 职场文书
Redis Cluster集群动态扩容的实现
2021/07/15 Redis
Python之matplotlib绘制折线图
2022/04/13 Python
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android