1. 程式人生 > >【sklearn例項】5--資料標準化/歸一化

【sklearn例項】5--資料標準化/歸一化

標準化&歸一化

Standardization: z-score標準化(-1 ~ 1)

將資料均值轉化為0,標準差轉化為1。處理後的資料符合標準正態分佈。

Normalization: min-max歸一化(0 ~ 1)

利用最大最小值,將資料進行線性轉化,範圍落在(0  ~  1)。

為何要標準化/歸一化

 

1 可以提升模型的收斂速度  採用梯度下降法求解時,歸一化後優化形狀變為圓形,梯度方向直指圓心,迭代速度變快,大大減少尋找最優解的時間;
2 提升模型的精度   

設計距離計算時,數量級小的特徵對結果的影響遠遠小於數量級大的特徵,對精度造成損失,歸一化可以使各個特徵對結果做出的貢獻相同。

適用場合

基於樹演算法不需要標準化(決策樹、RF、XGboost等)

1、在分類、聚類演算法中,需要使用距離來度量相似性的時候、或者使用PCA技術進行降維的時候,標準化Z-score 表現更好

2、在不涉及距離度量、協方差計算、資料不符合正太分佈的時候,可以使用min-max或其它歸一化方法。比如影象處理中,將RGB影象轉換為灰度影象後將其值限定在[0~255]的範圍。

        歸一化min-max後,其協方差產生了倍數值的縮放,因此這種方式無法消除量綱對方差、協方差的影響,對PCA分析影響巨大;同時,由於量綱的存在,使用不同的量綱、距離的計算結果會不同。
        標準化z-score方式中,新的資料由於對方差進行了歸一化,這時候每個維度的量綱已經等價了,每個維度都服從均值為0、方差1的正態分佈,在計算距離時,每個維度都是去量綱化的,避免了不同量綱的選取對距離計算產生的巨大影響。

參考:https://blog.csdn.net/sjyttkl/article/details/80181018 

sklearn實現

# min-max歸一化
from sklearn.preprocessing import MinMaxScaler
std=MinMaxScaler()
X_std=std.fit_transform(X_train)
# z-score標準化
from sklearn.preprocessing import StandardScaler
std=StandardScaler()
X_std=std.fit_transform(X_train)

 為了讓測試集和訓練集有相同的標準化或歸一化變換,一般先fit (train) ,再transform ( train) 、transform ( test)。

 

內容略有單薄,其實是來蹭勳章的  o(*////▽////*)q   第二顆勳章get !  10.24原來是程式設計師節日!又漲知識了。