【数据预处理】sklearn实现数据预处理(归一化、标准化)

1. 为什么需要归一化/标准化?

原因: 特征的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其他的特征,即无量纲化

2. 归一化

2.1 定义

通过对原始数据进行变换把数据映射到(默认为[0,1])之间

2.2 公式

【数据预处理】sklearn实现数据预处理(归一化、标准化)_第1张图片

作用于每一列,max为一列的最大值,min为一列的最小值,那么X’’为最终结果,mx,mi分别为指定区间值默认mx为1,mi为0

2.3 sklearn中的Minmax归一化API

  • sklearn.preprocessing.MinMaxScaler (feature_range=(0,1)… )
    • MinMaxScalar.fit_transform(X)
      • X:numpy array格式的数据[n_samples,n_features]
    • 返回值:转换后的形状相同的array

2.4 代码示例

2.4.1 数据集

【数据预处理】sklearn实现数据预处理(归一化、标准化)_第2张图片

2.4.2 代码

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

def minmax_demo():
    '''
    归一化
    :return: None
    '''
    # 获取数据
    data = pd.read_csv('./database/dating.txt', sep='\t')
    print(data)
    # 1. 实例化转换器(feature_range是归一化的范围,即最小值-最大值)
    transfer = MinMaxScaler(feature_range=(0, 1))
    # 2. 调用fit_transform (只需要处理特征)
    data = transfer.fit_transform(data[['milage','Liters','Consumtime']])
    print('Min-Max归一化处理后的结果:\n', data)
    return None


if __name__ == '__main__':
    minmax_demo()

结果:
【数据预处理】sklearn实现数据预处理(归一化、标准化)_第3张图片

2.4.3 总结

最大值和最小值是变化的,而且最大值和最小值容易受异常点的影响,所以归一化方法鲁棒性较差,只适合传统精确小数据场景。那么,这时候更倾向于使用标准化。

3. 标准化

3.1 定义

通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内

3.2 公式

【数据预处理】sklearn实现数据预处理(归一化、标准化)_第4张图片

作用于每一列,mean为平均值,σ为标准差

3.3 sklearn中实现标准化的API

  • sklearn.preprocessing.StandardScaler( )
    • 处理之后每列来说所有数据都聚集在均值0附近 标准差差为1
    • StandardScaler.fit_transform(X)
      • X:numpy array格式的数据[n_samples,n_features]
    • 返回值:转换后的形状相同的array

3.4 代码示例

数据集同上

import pandas as pd
from sklearn.preprocessing import StandardScaler

def stander_demo():
    '''
    标准化
    :return:
    '''
    # 获取数据
    data = pd.read_csv('./database/dating.txt', sep='\t')
    # 1. 实例化一个转换器
    transfer = StandardScaler()
    # 2. 调用fit_transform
    transfer.fit_transform(data[['milage','Liters','Consumtime']])
    print('标准化处理后的结果:\n', data)
    print('每一列的平均值为:\n', transfer.mean_)
    print('每一列的标准差为:\n', transfer.var_)

    return None
if __name__ == '__main__':
    stander_demo()

结果:
【数据预处理】sklearn实现数据预处理(归一化、标准化)_第5张图片

3.5 标准化总结

在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景


4. 归一化、标准化对于异常值的表现

【数据预处理】sklearn实现数据预处理(归一化、标准化)_第6张图片

你可能感兴趣的:(sklearn,机器学习,python,特征工程,数据处理)