P9 歸一化以及標準化對比
阿新 • • 發佈:2020-12-30
http://bilibili.com/video/BV184411Q7Ng?p=9
Python程式舉例:
""" 對資料進行歸一化處理 """ from sklearn.preprocessing import MinMaxScaler def mMinMaxScaler(): """ 對資料進行歸一化處理 :return: """ mMinMaxScaler=MinMaxScaler() data=mMinMaxScaler.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46],]) print(data) return None if __name__=="__main__": mMinMaxScaler()
執行結果:
C:\Users\TJ\AppData\Local\Programs\Python\Python37\python.exe D:/qcc/python/mnist/data_guiyihua.py
[[1. 0. 0. 0. ]
[0. 1. 1. 0.83333333]
[0.5 0.5 0.6 1. ]]
Process finished with exit code 0
註解:
- 對於每一列特徵都要處理。
""" 對資料進行歸一化處理 """ from sklearn.preprocessing import MinMaxScaler def mMinMaxScaler(): """ 對資料進行歸一化處理 :return: """ mMinMaxScaler=MinMaxScaler(feature_range=(2,3)) data=mMinMaxScaler.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46],]) print(data) return None if __name__=="__main__": mMinMaxScaler()
執行結果:
註解:
- 歸一化到一個指定的區間。
- 預設是歸一化到[0, 1]的。
註解:
- 飛行里程數多的話,可能這個人是個商務人士,但同時陪伴家人的時間可能很少。
- 覺得3個特徵同等重要的時候,就要對資料進行歸一化處理。
註解:
- 如果不進行歸一化,小值將淹沒在大值中,小值的參考作用將失去。
註解:
- 在做歸一化的時候,如果有異常點,會怎樣?
- 歸一化對異常點無法抵抗,會造成資料歸一化錯誤。
""" 對資料進行歸一化處理 """ from sklearn.preprocessing import MinMaxScaler def mMinMaxScaler(): """ 對資料進行歸一化處理 :return: """ mMinMaxScaler=MinMaxScaler(feature_range=(0,1)) data=mMinMaxScaler.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46],]) print(data) return None if __name__=="__main__": mMinMaxScaler()
無異常資料的歸一化結果:
""" 對資料進行歸一化處理 """ from sklearn.preprocessing import MinMaxScaler def mMinMaxScaler(): """ 對資料進行歸一化處理 :return: """ mMinMaxScaler=MinMaxScaler(feature_range=(0,1)) data=mMinMaxScaler.fit_transform([[90,2,10,1040],[60,4,15,45],[75,3,13,46],]) print(data) return None if __name__=="__main__": mMinMaxScaler()
有異常資料之後的歸一化結果:
解決辦法:標準化。
資料標準化示例程式碼:
""" 對資料進行標準化處理 """ from sklearn.preprocessing import MinMaxScaler, StandardScaler def stdardScaler(): """ 對資料進行標準化處理,即處理成均值為0,標準差為1的資料 :return: """ std=StandardScaler() data=std.fit_transform([[1.,-1.,3.],[2.,4.,2.],[4.,6.,-1.]]) print(data) return None if __name__=="__main__": stdardScaler()
執行結果:
註解:
- 可以看到,沒一列的平均值都是0.
- 相對於對資料進行歸一化,對資料進行標準化的好處是不容易受到異常點的影響。
註解:
- 並不是所有資料都要進行歸一化、標準化的。