bg:歸一化(Normalization)通常指將數據按比例縮放至某個特定范圍,但具體范圍并不一定是固定的?0到1。標準化是將數據轉換成均值為0,標準差為1的分布。
使用場景:
用歸一化:
需要嚴格限定范圍(如神經網絡輸入、圖像處理)。
數據分布均勻且無極端值。
用標準化:
數據服從正態分布(或需要轉換為正態分布)。
算法假設數據均值為 0(如 PCA、線性回歸、SVM)。
歸一化
1、pandas構建二維數組
from sklearn.preprocessing import MinMaxScaler
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
import pandas as pd
pd.DataFrame(data)
2、實現歸一化
scaler = MinMaxScaler() #實例化
scaler = scaler.fit(data) #fit,在這里本質是生成min(x)和max(x)
result = scaler.transform(data) #通過接口導出結果
result
--也可以使用fit_tranform一步到位
3、反歸一化就用scaler.inverse_transform(result)
4、上面默認轉換為0-1之間的數據,如果需要其它范圍的就在實例化MinMaxScaler的時候加上參數feature_range
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
scaler = MinMaxScaler(feature_range=[5,10])
result = scaler.fit_transform(data) #fit_transform一步導出結果
result
標準化
from sklearn.preprocessing import StandardScaler
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
scaler = StandardScaler() #實例化
scaler.fit(data) #fit,本質是生成均值和方差
scaler.mean_ #查看均值的屬性mean_
scaler.var_ #查看方差的屬性var_
x_std = scaler.transform(data) #通過接口導出結果
x_std.mean() #導出的結果是一個數組,用mean()查看均值
x_std.std() #用std()查看方差
scaler.fit_transform(data) #使用fit_transform(data)一步達成結果
scaler.inverse_transform(x_std) #使用inverse_transform逆轉標準化