歸一化
-
目的
使得單一特征對于最後的結果影響不太大,尤其是錯誤值
- API
- 代碼示範
from sklearn.preprocessing import MinMaxScaler
def mm():
mm = MinMaxScaler()
data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])
print(data)
return None
if __name__ == '__main__':
mm()
-
問題:如果資料中異常點較多,會有什麼影響
對于最大值或者最小值會産生影響,也就對于歸一化過程産生影響,是以這種歸一化方法的魯棒性比較差,隻适合傳統精确小資料場景
标準化
- 目的:通過對原始資料進行變換把資料變換到均值為0,标準差為1範圍内,如果出現異常點,由于具有一定的資料量,少量的異常點對于平均值的影響并不大,進而方差改變較小
- API
- 代碼示範
from sklearn.preprocessing import StandardScaler
def stand():
std = StandardScaler()
data = std.fit_transform([[1,-1,3], [2,4,2], [4,6,-1]])
print(data)
return None
if __name__ == '__main__':
stand()
-
總結
在已有樣本足夠多的情況下比較穩定,适合現在嘈雜大資料場景
一般都是進行标準化處理,而非歸一化處理
缺失值處理
- 删除或者插補
一般使用pandas:dropna,fillna
但是要求資料格式為np.nan float類型
replace(“?”,np.nan)進行替換後使用fit_transform進行操作
- 代碼示範
from sklearn.preprocessing import Imputer
import numpy as np
def im():
im = Imputer(missing_values='NaN',strategy='mean',axis=0)
data = im.fit_transform([[1,2],[np.nan,3],[7,6]])
print(data)
return None
if __name__ == '__main__':
im()