sklearn數據預處理 - 歸一化

MinMaxScalar

將數據歸一化到[0,1],計算公式如下:
Xscaled=XX.min(axis=0))X.max(axis=0)X.min(axis=0)(maxmin)+min X_{scaled} = \frac{X - X.min(axis=0))}{X.max(axis=0) - X.min(axis=0)}*(max - min)+min
其中min,max = feature_range,爲歸一化後數據的區間,默認是[0,1]。
MinMaxScalar歸一化得到的數據會完全落入[0,1]區間內(z-score沒有類似區間),而且能使數據歸一化落到一定的區間內,同時保留原始數據的結構。

MaxAbsScalar

將數據歸一化到[-1,1],計算公式如下:
Xsacled=XX.max(axis=0) X_{sacled} = \frac{X}{|X|.max(axis=0)}
同MinMaxScalar相同,MaxAbsScalar得到的數據會完全落入[-1, 1]區間內(z-score沒有類似區間),而且能使數據歸一化落到一定的區間內,同時保留原始數據的結構。

MinMaxScalar和MaxAbsScalar的優點:

  1. 對於方差非常小的屬性可以增強其穩定性;
  2. 維持稀疏矩陣中爲0的條目

StandardScaler

將數據縮放到均值爲0,方差爲1,計算公式如下:
Xsacled=XX.mean(axis=0)X.std(axis=0) X_{sacled} = \frac{X - X.mean(axis=0)}{X.std(axis=0)}
StandardScaler適合大多數的數據類型的數據,得到的數據是以0爲均值,1爲方差的正態分佈,但這種方法改變了原始數據的結構,因此不適宜用於對稀疏矩陣做數據預處理
StandardScaler也能夠接受 scipy.sparse 作爲輸入,只要參數 with_mean=False 被準確傳入它的構造器。否則會出現 ValueError 的錯誤,因爲默認的中心化會破壞稀疏性,並且經常會因爲分配過多的內存而使執行崩潰。

RobustScaler

計算公式如下:
Xscaled=XX.median(axis=0)X.quantile(max)X.quantile(min)X_{scaled} = \frac{X - X.median(axis=0)}{X.quantile(max) - X.quantile(min)}
如果數據包含許多異常值,可以使用RobustScaler或robust_scaler。
RobustScaler將中位數當做數據的中心,移除中位數,然後根據分位數範圍(默認爲IQR,0.75分位數和0.25分位數間距)

QuantileTransformer

此變換是非線性的。通過累積密度函數投影原始值。可以通過設置參數將數據轉化爲均勻分佈或是高斯分佈。

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