归一化和标准化

一,归一化

处理不同特征之间数据相差不是太大的问题。

特征1 特征2 特征3 特征4
80 2 10 30
40 4 15 40
30 3 12 45

以计算80这个位置进行转换为例,特征1这一列   x‘=(80-30)/(80-30)=1  x''=1*(1-0)+0=1 故80转换化为x''=1 其它位置同理。

代码如下:

from sklearn.preprocessing import MinMaxScaler
def guiyi():
    mm=MinMaxScaler()
    data=mm.fit_transform([[80,2,10,30],[40,4,15,40],[30,3,12,45]])
    print(data)
    return None

if __name__ == '__main__':
    guiyi()

运行结果如下:

[[1.         0.         0.         0.        ]
 [0.2        1.         1.         0.66666667]
 [0.         0.5        0.4        1.        ]]

也可以规定归一化后特征的范围:

from sklearn.preprocessing import MinMaxScaler
def guiyi():
    mm=MinMaxScaler(feature_range=(2,3))
    data=mm.fit_transform([[80,2,10,30],[40,4,15,40],[30,3,12,45]])
    print(data)
    return None

if __name__ == '__main__':
    guiyi()

结果如下:

[[3.         2.         2.         2.        ]
 [2.2        3.         3.         2.66666667]
 [2.         2.5        2.4        3.        ]]

二,标准化

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

 同上,继续用上面表格里面的数据进行标准化,代码如下:

from sklearn.preprocessing import StandardScaler
def standardScaler():

    std=StandardScaler()

    data=std.fit_transform([[80,2,10,30],[40,4,15,40],[30,3,12,45]])
    print(data)
    return None


if __name__ == '__main__':
    standardScaler()

运行结果如下:

[[ 1.38873015 -1.22474487 -1.13554995 -1.33630621]
 [-0.46291005  1.22474487  1.29777137  0.26726124]
 [-0.9258201   0.         -0.16222142  1.06904497]]
原文地址:https://www.cnblogs.com/little-monk96/p/14315708.html