0
点赞
收藏
分享

微信扫一扫

数据预处理-标准化

标准化

数据分析及建模过程中,许多机器学习算法需要其输入特征为标准化形式。
例如,SVM算法中的RBF核函数,线性模型中的𝑙1、𝑙2正则项,目标函数往往假设其特征均值在0附近且方差齐次;若样本的特征之间的量纲差异太大,样本之间相似度评估结果将存在偏差。
常见数据标准化方法:
Z-Score标准化
Min-Max标准化

1、Z-Score标准化

sklearn.preprocessing.StandardScaler
preprocessing.StandardScaler(
copy=True, #如果为False,尝试避免复制并改为直接替换
with_mean=False, #如果为True,则在缩放之前将数据居中
with_std=False #如果为True,则将数据缩放为单位方差(或单位标准差)
)
对特征取值中的每一个数据点作减去均值并除以标准差的操作,使得处理后的数据具有固定均值和标准差,处理函数为:
𝑓_𝑖′=(𝑓_𝑖−𝜇)/𝜎
其中,𝑓_𝑖′为标准化后各数据点的取值, 𝑓_𝑖为原始各数据点取值,𝜇为该特征取值的平均值,𝜎为该特征取值的标准差。
适用于特征的最大值或最小值未知、样本分布非常离散的情况。

2、Min-Max标准化

sklearn.preprocessing.MinMaxScaler
preprocessing.MinMaxScaler(
feature_range=(0, 1), #期望的转换数据范围
copy=True #设置为False以执行就地标准化并避免复制
)
Min-Max标准化(离差标准化或最大-最小值标准化)通过对特征作线性变换,使得转换后特征的取值分布在 [0,1] 区间内。
𝑓_𝑖*=(𝑓_𝑖−𝑓_𝑚𝑖𝑛)/(𝑓_𝑚𝑎𝑥−𝑓_𝑚𝑖𝑛 )
将特征𝑓映射到 [a,b] 区间内:
𝑓_𝑖*=(b−a)/(𝑓_𝑚𝑎𝑥−𝑓_𝑚𝑖𝑛 ) (𝑓_𝑖−𝑓_𝑚𝑖𝑛 )+a
𝑓_𝑚𝑖𝑛为特征的最小值,𝑓_𝑚𝑎𝑥为特征的最大值
若数据存在离群值,标准化后的效果较差。

3、考虑离群值的标准化

sklearn.preprocessing.RobustScaler
preprocessing.RobustScaler(
with_centering=False, #如果为True,则在标准化之前将数据居中
with_scaling=False, #如果为True,则将数据缩放到分位数范围
quantile_range=(25.0, 75.0), #用于计算scale_的分位数范围
copy=True #如果为False,请尝试避免复制并改为直接替换
)

4、方法:

fit(X[, y]) #计算均值和方差。
fit_transform(X[, y]) #计算均值和方差并执行标准化。
inverse_transform(X[, copy]) #将已标准化的数据转换为原始表示。
partial_fit(X[, y]) #inline计算X上的mean和std。
transform(X[, y, copy]) #执行标准化。

举报

相关推荐

0 条评论