归一化:(问题来了1)为什么要做归一化?
引入归一化,是由于不同的特征之间,其量纲或者量纲单位往往不同,变化区间也处于不同的数量级,若不进行归一化,可能导致某些指标被忽略,影响到数据分析的结果。
(问题来了2)如果原始数据里存在异常数据对归一化是否有影响?影响程度如何?
若遇到原始数据里存在异常数据,归一化会受到影响,并且影响程度高。这时,我们可以寻找其他类似算法进行数据预处理,比如:标准化
废话不多说,放代码!!!
""" 归一化:采用 sklearn.preprocessing 里的包 MinMaxScaler """ import numpy as np from sklearn.preprocessing import MinMaxScaler X = np.array([ [1, -1, 2, 3], [2, 0, 0, 3], [0, 1, -10, 3] ], dtype=np.float64) scaler = MinMaxScaler(feature_range=(0, 1)) scaler.fit(X) print('-------------原始每列特征属性最小值----------') print(scaler.data_min_) print('--------------原始每列特征属性最大值----------') print(scaler.data_max_) print('-------------原始每列特征属性取值范围大小(max-min)----------') print(scaler.data_range_) print('---------------------------归一化后的数据---------------------------') print(scaler.transform(X))
-------------原始每列特征属性最小值----------
[ 0. -1. -10. 3.]
--------------原始每列特征属性最大值----------
[2. 1. 2. 3.]
-------------原始每列特征属性取值范围大小(max-min)----------
[ 2. 2. 12. 0.]
---------------------------归一化后的数据---------------------------
[[0.5 0. 1. 0. ]
[1. 0.5 0.83333333 0. ]
[0. 1. 0. 0. ]]
Process finished with exit code 0