在进行数据预处理中经常用到数据变换,通过相应的变换操作,能够将数据变换到正态分布中,消除数据之间的量纲问题,使数据看起来更加的规整,这样建模得出来的结果才会更准确,本文总结常用的数据变换方法,并调用Python的sklearn库中相应函数进行实现。
通俗的讲,实际应用中的数据标准化的过程同时也是数据变换的过程,在这里不做明显的区分,本文主要介绍数据变换的方法重要有:最大最小标准化、z-score变换、对数变换、box-cox变换。
1、最大最小标准化(max-min标准化)
最大最小标准化方法主要用于将数据缩放到[0,1]范围内,避免数据的分布太过广泛,但是这种方法有一个致命的缺点,就是其容易受到异常值的影响,一个异常值可能会将变换后的数据变为偏左或者是偏右的分布,因此在做最大最小标准化之前一定要去除相应的异常值才行。
#!/usr/bin/env python
2、z-score变换
z-score变换通常用于将数据变换为正态分布,因为一般的统计分析方法都在假设数据服从正态分布,所有有的模型要求输入数据需为正态分布,遇到这类的模型时需要应用z-score变换。
from
3、对数变换
对数变换能够缩小数据的绝对范围,取乘法操作相当于对数变换后的加法操作。
from
4、box-cox变换
box-cox变换是统计建模中常用的数据变换方法,用于连续的响应变量不满足正态分布的情况。Box-Cox变换之后,可以一定程度上减小不可观测的误差和预测变量的相关性。
从上面的式子中能够看出box-cox变换最终的形式是由
(1)当
(2)当
(3)当
Python中的scipy.stats.boxcox() 定义了boxcox变换,确定了