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 29 Python
python strip() 函数和 split() 函数的详解及实例
Feb 03 Python
Python实现的爬取网易动态评论操作示例
Jun 06 Python
基于Python List的赋值方法
Jun 23 Python
对TensorFlow的assign赋值用法详解
Jul 30 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
Oct 11 Python
Python实现的各种常见分布算法示例
Dec 13 Python
Puppeteer使用示例详解
Jun 20 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 Python
Python自动化测试基础必备知识点总结
Feb 07 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+xml编程之xpath的应用实例
2015/01/24 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
2014/08/22 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
在Express中提供静态文件的实现方法
2019/10/17 Javascript
python实现多线程采集的2个代码例子
2014/07/07 Python
Python中zip()函数用法实例教程
2014/07/31 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
animation和transition的区别
2020/10/12 HTML / CSS
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
庆祝儿童节标语
2014/10/09 职场文书
出纳工作检讨书
2014/10/18 职场文书
结婚典礼致辞
2015/07/28 职场文书
pandas进行数据输入和输出的方法详解
2022/03/23 Python