預處理的幾種方法:標准化、數據最大最小縮放處理、正則化、特征二值化和數據缺失值處理。
知識回顧:
p-范數:先算絕對值的p次方,再求和,再開p次方。
數據標准化:盡量將數據轉化為均值為0,方差為1的數據,形如標准正態分布(高斯分布)。
標准化(Standardization)
公式為:(X-X_mean)/X_std 計算時對每個屬性/每列分別進行。
將數據按其屬性(按列進行)減去其均值,然后除以其方差。最后得到的結果是,對每個屬性/每列來說所有數據都聚集在0附近,方差值為1。
sklearn中preprocessing庫里面的scale函數使用方法:
sklearn.preprocessing.scale(X, axis=0, with_mean=True, with_std=True, copy=True)
根據參數不同,可以沿任意軸標准化數據集。
參數:
- X:數組或者矩陣
- axis:int類型,初始值為0,axis用來計算均值和標准方差。如果是0,則單獨的標准化每個特征(列),如果是1,則標准化每個觀測樣本(行)。
- with_mean:boolean類型,默認為True,表示將數據均值規范到0。
- with_std:boolean類型,默認為True,表示將數據方差規范到1。
范例:假設現在構造一個數據集X,然后想要將其標准化。
方法一:使用sklearn.preprocessing.scale()函數
方法說明:
- X.mean(axis=0)用來計算數據X每個特征的均值;
- X.std(axis=0)用來計算數據X每個特征的方差;
- preprocessing.scale(X)直接標准化數據X。
方法二:sklearn.preprocessing.StandardScaler類
sklearn.preprocessing.
StandardScaler
(copy=True, with_mean=True, with_std=True)
scaler = preprocessing.StandardScaler()
X_scaled = scaler.fit_transform(X)scaler = preprocessing.StandardScaler().fit(X)
X_scaled = scaler.transform(X)
上面兩段代碼等價。
轉換器(Transformer)主要有三個方法:
fit():訓練算法,擬合數據
transform():標准化數據
fit_transform():先擬合數據,再標准化。