数据标准化是处理不同规模和量纲数据的方式,使其缩放到相同的数据区间和范围,以减少规模、特征、分布差异等对模型的影响。比如:员工数量的值是 50 - 2000 人,销售额的值是 1000000 - 5000000 万。单位尺度不同,使用梯度下降算法,就需要很多次迭代。

Max-Min 标准化方法是对原始数据进行线性变换,假设原转换的数据为 x,新数据为 x′,那么 x’=(x-min)/(max-min),其中 min 和 max 为 x 所在列的最小值和最大值。得到的数据会完全落入 [0, 1] 区间内。

Python 中的 sklearn 库使用起来比较方便,接下来还是演示下。

1
2
3
4
5
6
# 导入包
import seaborn as sns
from pandas import Series,DataFrame
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
1
2
3
4
5
6
7
# 拿到小费数据集
tips = sns.load_dataset('tips')

# 数据介绍: total_bill列为消费总金额;tip列为小费金额;sex列为顾客性别;smoker列为顾客是否抽烟;day列为消费的星期;time列为聚餐的时间段;size列为聚餐人数

# 查看前5行数据
tips.head()

image.png

1
2
tips = tips.drop(['sex','smoker','day','time'],axis=1)
tips.head()

image.png

1
2
3
4
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
result = scaler.fit_transform(tips)
result[:5]
1
2
3
4
5
array([[0.29157939, 0.00111111, 0.2       ],
[0.1522832 , 0.07333333, 0.4 ],
[0.3757855 , 0.27777778, 0.4 ],
[0.43171345, 0.25666667, 0.2 ],
[0.45077503, 0.29 , 0.6 ]])

通过这个演示也可以看到,Max-Min标准化只能用在数值型特征上,不适用在分类变量。