很多算法,例如线性回归,它的推导是基于一个基本的假设-数据服从高斯分布,如果数据不服从高斯分布,那么线性回归的推导根本就是空谈.不幸的是,现实中很少有数据完美的服从高斯分布.你拿到的数据可能是这样的:
首先我们需要找一个直观的方式观察偏斜程度.Q-Q图是一个不错的方式.
fig = plt.figure()
res = stats.probplot(train['SalePrice'], plot=plt)
plt.show()
图中的横轴坐标分布是标准正态分布的分位数与数据的分位数,当数据符合标准正态分布时,正好会落到对象线的直线上.
当原始数据中有小值及零时,可取,还可根据需要选用或
对数变换常用于:
平方根变换常用于:
常用于资料两端波动较大的资料,可使极端值的影响减小。
常用于服从二项分布的率或百分比的资料。一般认为等总体率较小如<30%时或较大(如>70%时),偏离正态较为明显,通过样本率的平方根反正玄变换,可使资料接近正态分布,达到方差齐性的要求。
编程实现:
https://www.kaggle.com/swimmingwhale/skew-normal-to-normal
参考:
https://stackoverrun.com/cn/q/9980317