定義
標准化(Standardization):將數據按照比例進行縮放,不改變數據的原始分布,使得不同的變量經過標准化處理后可以有平等分析和比較的基礎。縮放后的數據均值為0,方差為1。但並不是標准正態分布。
歸一化(Normalization):中心化和標准化基本一樣,都是要把數據縮放到某個范圍里。歸一化通常有兩種做法:
min-max 歸一化的公式為:
mean 歸一化(有的地方也叫中心化)的公式為:
正態化:改變數據的原始分布,使其服從正態分布。通常采用的方法有取對數,開平方根,取倒數,開平方,取指數等等,使得不對稱分布的數據(偏態數據)呈現(或近似)正態分布。要這么做的原因在於:有些機器學習方法,比如線性回歸模型就默認數據是正態分布。
https://blog.csdn.net/lcmssd/article/details/80179102?utm_source=blogxgwz0
https://blog.csdn.net/weixin_36604953/article/details/102652160
關於到底是先標准化/歸一化還是先划分數據集(前者歸一化的時候同時考慮了測試集和訓練集,如均值就與測試集有關;后者划分過后均值只和訓練集有關),個人認為應該先划分數據集,對划分出來的訓練集標准化后,再用相同的標准化公式(其中均值方差來自於訓練集)對測試集進行標准化,保證測試集在維度上與訓練集保持一致。代碼如下:
from sklearn import preprocessing scaler = preprocessing.StandardScaler().fit(X_train)#通過訓練集獲得歸一化公式 X_train_transformed = scaler.transform(X_train)#對訓練集進行歸一化 X_test_transformed = scaler.transform(X_test)#對測試集進行歸一化