sklearn機器學習庫中資料的標準化
阿新 • • 發佈:2019-01-26
本篇部落格主要借鑑的是http://www.cnblogs.com/chaosimple/p/4153167.html 這位大牛的部落格,
最近在學習sklearn,寫演算法基本上都會用到標準化, 資料標準化一共有三種,廢話不多說,看具體的程式碼:
#encoding:utf-8 ''' Created on 2015年10月13日 @author: ZHOUMEIXU204 ''' #sklearn資料標準化,資料標準化有三種 #第一種是Z-Score,或者去除均值和方差縮放 from sklearn import preprocessing import numpy as np x=np.array([[1.,-1.,2.], [2.,0.,0.], [0.,1.,-1.]]) x_scaled=preprocessing.scale(x) x_scaled.mean(axis=0) x_scaled.std(axis=0) # 使用sklearn.preprocessing.StandardScaler類, # 使用該類的好處在於可以儲存訓練集中的引數(均值、方差) # 直接使用其物件轉換測試集資料。 scaler=preprocessing.StandardScaler().fit(x) scaler.mean_ scaler.std_ scaler.transform(x) #跟上面的結果是一樣的 #第二種是將屬性縮放到一個指定範圍,也是就是(x-min)/(max-min) #依賴於preprocessing中的MinMaxScaler類 x_train=np.array([[1.,-1.,2.], [2.,0.,0.], [0.,1.,-1.]]) min_max_scaler=preprocessing.MinMaxScaler() x_train_minmax=min_max_scaler.fit_transform(x_train) print(x_train_minmax) # 當然,在構造類物件的時候也可以直接指定最大最小值的範圍:feature_range=(min, max),此時應用的公式變為: # x_std=(X-X.min(axis=0))/(X.max(axis=0)-X.min(axis=0)) # x_scaled=X_std/(max-min)+min #第三種是正則化Normalization x=np.array([[1.,-1.,2.], [2.,0.,0.], [0.,1.,-1.]]) x_normalized=preprocessing.normalize(x,norm='l2') print(x_normalized) # 可以使用processing.Normalizer()類實現對訓練集和測試集的擬合和轉換 normalizer=preprocessing.Normalizer().fit(x) print(normalizer) normalizer.transform(x)