数据预处理—4.为什么要趋近于正态分布?详解
文章目录
- 多变量分析统计基于的假设
- 1.为什么变量分布要呈现正态分布?
- 2.判断数据是否服从正态分布的指标:偏态与峰度
- 3.如何调整原始分布趋于正态分布?
多变量分析统计基于的假设
- 正态性
当谈论正态性时,即数据应该看起来像正态分布。这很重要,因为几个统计检验都依赖于此(例如t统计)。单变量正态性虽然不能确保多变量正态性(这是我们想要的),但它有帮助。在大样本数据中,如果我们解决正态性,我们就避免了很多其他问题(例如异方差),所以这就是我们进行这种分析的主要原因。 - 同方差
同方差性是指“假设因变量在预测变量范围内的方差水平相等。同方差是可取的,因为我们希望误差项在所有自变量的值上都是相同的。 - 线性度
评估线性度最常见的方法是检查散点图并寻找线性模式。如果模式不是线性的,那么研究数据转换是值得的。 - 无相关误差。
相关错误是在一个错误与另一个错误相关联时发生的。
例如,如果一个正误差系统地产生一个负误差,则意味着这些变量之间存在关联。
这通常发生在时间序列中,其中某些模式与时间相关。
1.为什么变量分布要呈现正态分布?
我不是统计学科班,对于这些统计上的概念不是很理解。在特征工程中,我们为什么想要变量分布呈现正态分布?我觉得可以这么理解:单变量正态性虽然不能保证多变量的正态性,但是它是有帮助的。并且一般解决了正态性问题的话,就可以解决异方差或者线性度的问题。而且很多模型假设数据服从正态分布后,它的样本均值和方差就相互独立,这样就能更好的进行统计推断和假设验证。
2.判断数据是否服从正态分布的指标:偏态与峰度
这里就不详细介绍了,可参考其他博客偏态与分布。
正态分布是指多数频数集中在中央位置,两端的频数分布大致对称。偏态分布是指频数分布不对称,集中位置偏向一侧。若集中位置偏向数值小的一侧,称为正(右)偏态分布;集中位置偏向数值大的一侧,称为负(左)偏态分布。与正态分布相对而言,偏态分布有两个特点:
- 左右不对称(即所谓偏态);
- 当样本增大时,其均数趋向正态分布
df[var].kurtosis(),df[var].skew()
在pandas中有skew()方法来表示偏态,大于0右偏,小于0左偏。在pandas中使用kurtosis()方法来表示峰度,kurtosis>0,尖峰态(leptokurtic),数据集比较分散,极端数值较多。kurtosis<0,低峰态(platykurtic),数据集比较集中,两侧的数据比较少
3.如何调整原始分布趋于正态分布?
数据右偏的话可以对所有数据取对数、取平方根等,它的原理是因为这样的变换的导数是逐渐减小的,也就是说它的增速逐渐减缓,所以就可以把大的数据向左移,使数据接近正态分布。 如果左偏的话可以取相反数转化为右偏的情况。
通常来说,可以尝试一下几种方法:
如果数据高度偏态,则使用对数变换
对数变换 即将原始数据X的对数值作为新的分布数据:
x = np.log(x)
当原始数据中有小值及零时,
x = np.log1p(x)
如果数据轻度偏态,则使用平方根变换
- 平方根变换 即将原始数据X的平方根作为新的分布数据
x = np.sqrt(x)
如果数据的两端波动较大,则使用倒数变换
倒数变换 即将原始数据X的倒数作为新的分析数据
x = 1 / x
平方根反正弦变换
方差分析的一个重要前提就是数据要符合正态分布,但是如果我们分析的数据是比值的时候,因为比值一般都不符合正态分布,所以为了使数据符合方差分析的要求,我们会对百分比的平方根取反正弦变化以改善分布的正态性,获得一个比较一致的方差。
- 平方根反正弦变换 即将原始数据X的平方根反正弦值作为新的分析数据
对于双峰偏态数据,可以参考下面一篇文章。
双峰偏态数据如何转变为正态分布数据
它好像仅限双峰,我试了一下三峰
转换前
转换后
代码
dfg = QuantileTransformer(n_quantiles = 300,output_distribution='normal', random_state=0).fit_transform(df['GarageArea'].values.reshape(-1,1))
dfg = pd.Series(dfg.flatten())
# 画直方图与连续概率估计,fit参数传入norm-标准正态分布
sns.distplot(dfg, fit=norm);
fig = plt.figure()
# probplot,样本数据相对于指定的理论分布(默认为正态分布)的分位数的概率。probplot可以计算出数据的最佳拟合线。这个图是用来看线性度的
res = probplot(dfg, plot=plt)
如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论留言!
数据预处理—4.为什么要趋近于正态分布?详解相关推荐
- [Python从零到壹] 十五.文本挖掘之数据预处理、Jieba工具和文本聚类万字详解
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- 机器学习:数据预处理之独热编码(One-Hot)详解
一. 什么是独热编码? ---------------------------------------- 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等. 这 ...
- 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)...
不多说,直接上干货! 这个很简单,在集群机器里,选择就是了,本来自带就有Impala的. 扩展博客 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解) 欢迎大 ...
- dapper mysql 预处理_.Net Core中Dapper的使用详解
Dapper 是一个轻量级ORM框架,在项目中如果对性能比较看中,Dapper是一个不错的选择.接下来我们就来看看如何在项目中使用Dapper. 1.安装Dapper 这里直接使用Nuget安装. 安 ...
- 大数据WEB阶段(八)Tomcat服务器安装与详解、HTTP协议详解
Tomcat 一. 服务器 动态web资源运行需要服务器环境 客户端发送请求到服务器 , 服务器调用动态web资源 Servlet容器 . web容器 .服务器 Servlet容器 java中的动态资 ...
- 海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解
前言 表格存储Tablestore是阿里云自研的面向海量结构化数据存储的Serverless NoSQL多模型数据库.Tablestore在阿里云官网上有各种文档介绍,也发布了很多场景案例文章,这些文 ...
- mysql数据库主主_MySQL主主复制(图文详解)
MySQL主主复制(图文详解) 发布时间:2020-07-12 23:10:25 来源:51CTO 阅读:218 作者:BonnieJason 一.实现原理 主主复制即在两台MySQL主机内都可以变更 ...
- hbase 二进制数据写入_分布式数据库HBase的架构设计详解(有彩蛋)
原标题:分布式数据库HBase的架构设计详解(有彩蛋) 本文根据DBAplus社群第99期线上分享整理而成,文末还有好书送哦~ 讲师介绍 陈鸿威 云财经大数据CTO 曾任百度高级工程师,现主持设计开发 ...
- 阿里云大数据网络增强型实例规格族d1ne配置性能详解
阿里云大数据网络增强型实例规格族d1ne配置性能CPU.内存.适用场景.d1ne实例规格族,InstanceTypes分享大数据网络增强型实例规格族d1ne实例详解: 大数据网络增强型实例规格族d1n ...
- python读取json格式文件大量数据,以及python字典和列表嵌套用法详解
1.Python读取JSON报错:JSONDecodeError:Extra data:line 2 column 1 错误原因: JSON数据中数据存在多行,在读取数据时,不能够单单用open(), ...
最新文章
- python Tkinter学习笔记 menu控件 02
- [新手学Go]GO语言闭包的使用
- Django层级模型定义及序列化嵌套的方法
- Django环境搭建
- java 获取js变量类型_JavaScript 的数据类型及其检测
- 转: oracle中schema指的是什么?
- python能自学成功吗-自学入门Python能学会吗?
- js设计模式 -- 单例模式
- Eclipse如何使用git上传项目到G码云
- 玩游戏提示计算机内存不足,Win10玩吃鸡游戏提示“虚拟内存不足”怎么办?
- 文档透明加密底层安全机制
- 微信小程序之文本换行居中
- 基于EEG信号与面部表情的连续情绪识别
- IxChariot测试网络设备性能
- Linux下如何彻底删除用户
- 向量的外积(outer product)与克罗内克积(Kronecker)
- 计算机c语言运算符号取整,c语言取整(c语言四舍五入取整)
- office 365 excel 遇到问题 需要修复
- 哪个直播平台更适合做企业会议直播?
- myeclipse把选中的字母转换成大写或者大写转小写