Z-score標准化
1.產生隨機數
import numpy as np ## 產生隨機數 data_1 = np.random.randn(3, 4) # 從標准正態分布中返回一個或多個樣本值. data_2 = np.random.rand(3, 4) # 產生(0,1)的數 print('randn產生的隨機數:\n', data_1) print('rand產生的隨機數:\n', data_2) Shape = data_1.shape print('data_1的維數:\n', Shape)
2.使用sklearn包
from sklearn.preprocessing import StandardScaler ## 標准化(使特征數據方差為1,均值為0) # 使用sklearn的包 scaler = StandardScaler() scaler.fit(data_2) # 使用transfrom必須要用fit語句 trans_data_2 = scaler.transform(data_2) # transfrom通過找中心和縮放等實現標准化 fit_trans_data_2 = scaler.fit_transform(data_2) # fit_transfrom為先擬合數據,然后轉化它將其轉化為標准形式 print('使用fit,transform標准化的數據:\n', trans_data_2) print('使用fit_transform標准化的數據:\n', fit_trans_data_2)
3.使用numpy進行處理
import numpy as np # 使用numpy的語句 Sum_total = data_2.sum() # 整個矩陣求和 Sum_row = data_2.sum(axis=1) # 行求和 Sum_col = data_2.sum(axis=0) # 列求和 mean = np.mean(data_2, axis=0) # 求平均值 std = np.std(data_2, axis=0) # 標准差 var = std**2 print('data_2求和為:\n', Sum_col/3) print('平均值為:\n', mean) print('方差為:\n', var) numpy_trans_data_2 = (data_2 - mean)/std print('使用numpy進行標准化:\n', numpy_trans_data_2)
注意:z-score標准化是要除以std(標准差),恰好對應於StandardScaler()
min-max標准化僅僅將StandardScaler()換為MinMaxScaler()即可