1.归一化
特点:通过对原始数据进行变换把数据映射到(默认为[0,1])之间
归一化公式计算过程:
sklearn归一化API: sklearn.preprocessing.MinMaxScaler
MinMaxScalar(feature_range=(0,1)…) 每个特征缩放到给定范围(默认[0,1])
MinMaxScalar.fit_transform(X) X:numpy array格式的数据[n_samples,n_features] 返回值:转换后的形状相同的array
# coding=utf-8
_author_ = 'liuzc'
from sklearn.preprocessing import MinMaxScaler, StandardScaler, Imputer
def guiyihua():
"""
归一化处理
"""
mm = MinMaxScaler(feature_range=(2,3))
data = mm.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])
print(data)
return None
if __name__ == "__main__":
guiyihua()
结果:
[[ 3. 2. 2. 2. ]
[ 2. 3. 3. 2.83333333]
[ 2.5 2.5 2.6 3. ]]
总结:
注意在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。
2.标准化
特点:通过对原始数据进行变换把数据变换到均值为0,方差为1范围内
sklearn特征化API: scikit-learn.preprocessing.StandardScaler
StandardScaler语法 :
# coding=utf-8
_author_ = 'liuzc'
from sklearn.preprocessing import MinMaxScaler, StandardScaler, Imputer
def stand():
"""
标准化缩放
:return:
"""
std = StandardScaler()
data = std.fit_transform([[ 1., -1., 3.],[ 2., 4., 2.],[ 4., 6., -1.]])
print(data)
return None
if __name__ == "__main__":
stand()
结果:
[[-1.06904497 -1.35873244 0.98058068]
[-0.26726124 0.33968311 0.39223227]
[ 1.33630621 1.01904933 -1.37281295]]
总结:
在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。