聊一聊Normalization and Standardization
什麼是
Normalization就是歸一化,是最小-最大縮放(min-max scaling)的特例,指的是將數據縮放到指定range,這個range通常是0 1或者-1 +1,直觀來講就是下圖,在數據不包含離群點時很有用,
公式則是
$$
x^{(i)}
$$
若要縮放至-1~+1,則是
$$
x' = frac{x – min}{max – min}
$$
代碼實現
1 |
#導入數據預處理庫 |
1 |
#測試集縮放標準化 |
Z-score 標準化指的是,通過縮放讓數據的均值為0(移除均值),標準差為固定值(比如1)。在許多模型裡,如SVM的RBF、線性模型的L1 & L2 正則項對於所有的feature都有這樣的假設。
$$
x^{(i)}_{std} = frac{x^{(i)} – mu_x}{sigma_x}
$$
以下是一個簡單的例子展示了兩者的區別:
1 |
#導入數據預處理庫 |
同時對測試集的數據進行標準化處理,以保證訓練集和測試集的變換方式相同。
1 |
#測試集數據標準化 |
值得注意
從流程上講,標準化和歸一化應該在讀入數據、處理缺失值,切分訓練測試集之後,而且我們要做的是在切分之後,在訓練集fit,再去transform測試集,而不是在整個數據上轉換以後再切分,因為
類似於缺失值的填充,舉個例子,我們使用均值填充以下數據,
1 |
#使用均值填充缺失值 |
以同樣的方式填充測試集,以保證測試集和訓練集的數據填充方式保持一致。
1 |
#填充測試集 |