最近掌柜遇到这样一组数据,它呈现出双峰偏态形状:
大家都知道,在构建模型的时候都尽量要让偏态数据转换为正态分布数据。
所以问题又来了?为什么偏态数据要尽量转换为正态分布数据呢?
因为很多模型假设数据服从正态分布后,它的样本均值和方差就相互独立,这样就能更好的进行统计推断和假设验证。比如熟悉的线性回归就是假设误差服从正态分布。
好了,现在回到这里,刚刚上图显示的是双峰偏态数据,掌柜查阅了一下,发现如果要转换成正态分布形式的话,可以使用Sklearn里面的QuantileTransformer方法。具体使用方法如下:
from sklearn.preprocessing import QuantileTransformer
QuantileTransformer(data, n_quantiles = 300,output_distribution='normal', random_state=0)
这里的参数n_quantiles
指的是要计算的分位数,默认取值是1000。而通过设置另一个参数 output_distribution='normal'
就可以把这里的双峰偏态数据 转换成一个正态分布的形式。
下图👇就是掌柜用QuantileTransformer对上面的变量进行转换后得到的对比图:
🧐接下来就可以愉快的进行模型的构建了。
参考资料:
Sklearn官网之映射数据为正态分布
数据的偏态分布