Sklearn數據預處理:scale, StandardScaler, MinMaxScaler, Normalizer

一、標準化

去除均值和方差縮放:通過(X-X_mean)/std計算每個屬性(每列),進而使所有數據聚集在0附近,方差爲1.

(1)、sklearn.preprocessing.scale()
直接將給定數據進行標準化

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)
array([[ 0.        , -1.22474487,  1.33630621],
       [ 1.22474487,  0.        , -0.26726124],
       [-1.22474487,  1.22474487, -1.06904497]])
X_scaled.mean(axis=0)
array([ 0.,  0.,  0.])
X_scaled.std(axis=0)
array([ 1.,  1.,  1.])

(2)、sklearn.preprocessing.StandardScaler()
可保存訓練集中的均值、方差參數,然後直接用於轉換測試集數據。

scaler = preprocessing.StandardScaler().fit(X)
scaler.transform(X)  
array([[ 0.        , -1.22474487,  1.33630621],
       [ 1.22474487,  0.        , -0.26726124],
       [-1.22474487,  1.22474487, -1.06904497]])
scaler.mean_
array([ 1.        ,  0.        ,  0.33333333])
scaler.var_
array([ 0.66666667,  0.66666667,  1.55555556])

二、縮放到指定範圍

將屬性縮放到一個指定的最大和最小值(通常是1-0)之間,這樣處理可對方差非常小的屬性增強其穩定性,也可維持稀疏矩陣中爲0的條目。
preprocessing.MinMaxScaler(feature_range=(0, 1), copy=True)
計算公式:
X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
X_scaled = X_std * (max - min) + min
其中
feature_range : tuple (min, max), default=(0, 1)

minmaxscaler = preprocessing.MinMaxScaler().fit(X)
minmaxscaler.transform(X)
array([[ 0.5       ,  0.        ,  1.        ],
       [ 1.        ,  0.5       ,  0.33333333],
       [ 0.        ,  1.        ,  0.        ]])
minmaxscaler.scale_
array([ 0.5       ,  0.5       ,  0.33333333])
 minmaxscaler.min_ 
 array([ 0.        ,  0.5       ,  0.33333333])

也可直接應用fit_transform(X)實現fit和transform功能。

三、正則化

對每個樣本計算其p-範數,再對每個元素除以該範數,這使得每個處理後樣本的p-範數(l1-norm,l2-norm)等於1。如果後續要使用二次型等方法計算兩個樣本之間的相似性會有用。
preprocessing.Normalizer(norm=’l2’, copy=True)

normalizer = preprocessing.Normalizer().fit(X)
normalizer.transform(X)
array([[ 0.40824829, -0.40824829,  0.81649658],
       [ 1.        ,  0.        ,  0.        ],
       [ 0.        ,  0.70710678, -0.70710678]])

幾個概念

1-範數:向量各分量絕對值之和
2-範數:向量長度
最大範數:向量各分量絕對值的最大值
p-範數的計算公式:||X||p=(|x1|^p+|x2|^p+…+|xn|^p)^1/p

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章