一 、Z-Score 標準化
公式:$ \frac{x - x.mean}{x.std}$
即:將數據按其屬性(列)減去對應屬性的均值,再除以方差
【得到的結果對于每個屬性(列)來說所有數據都聚集在 $ \color{red}{0} $ 附近,方差為 $ \color{red}{1} $ 】
- 使用sklearn.preprocessing()
from sklearn import preprocessing
scaled = preprocessing.scale(data)
- 使用sklearn.preprocessing.StandardScaler類
使用該類可以保存訓練集中的參數(均值,方差),可以直接使用其對象轉換測試集數據
from sklearn.preprocessing import StandardScaler
scaler = StandradScaler().fit(train_data)
# 查看數據的均值
# scaler.mean_
# 查看數據的方差
# scaler.std_
# 直接對測試集進行轉換
scaler.transform(test_data)
二 、0-1 標準化
也叫離差標準化,是對原始數據進行線性變換,使其結果落在[0,1]區間內
公式:$ \tilde{a} = \frac{x-x.min}{x.max-x.min} $
- 可以通過sklearn.preprocessing.MinMaxScaler類實現
from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()
train_scaled = min_max_scaler.fit_transform(train_data)
# 同樣的縮放應用到測試集數據中
test_scaled = min_max_scaler.transform(test_data)
# 查看縮放因子
# min_max_scaler.scale_
三 、正態分布化(Normalization)
Normalization用來將各個樣本歸一化為norm為1的正態分布。
- 該方法是 $ \color{red}{文本分類} $ 和 $ \color{red}{聚類分析} $ 中經常使用的向量空間模型(SVM)的基礎
- Normalization 主要思想是對每個樣本計算其p-范數,然后對該樣本中每個元素除以該范數,這樣處理的結果是使得每個處理后的樣本的p-范數等于1
- sklearn.preprocessing.normalize()
from sklearn.preprocessing import normalize
data_normalized = normalize(data,norm = 'l2')
# data_normalized = normalize(data,norm = 'l1')