Python數據標准化、歸一化


在進行數據分析或者機器學習時,通常需要對數據進行預處理,其中主要的步驟就是數據標准化/歸一化。

常用的數據標准化和歸一化方法主要有:

1. 最大最小標准化

  y=(x-min(x))/(max(x)-min(x)),x為一序列,即x={x1,x2,x3......},max(x)為最大值,min(x)為最小值

2. z-score標准化

  y=(x-mean(x))/std(x),mean(x)指的是均值,std(x)指的是標准差,結果會形成均值為0,方差為1的序列

3. 直接歸一化

  y=x/sum(x),sum(x)指的是x序列的和

其中,Python實現 z-score的方法如下:

import numpy as np
aa = np.array([2,3,9,6,8]) bb = np.array([5,6,3,7,9]) cc = np.array([aa, bb]) print(cc) cc_mean = np.mean(cc, axis=0) #axis=0,表示按列求均值 ——— 即第一維,每一列可看做一個維度或者特征 cc_std = np.std(cc, axis=0) cc_zscore = (cc-cc_mean)/cc_std #直接計算,對數組進行標准化,一定要注意維度

同時,scikit-learn也集成了z-score標准化的方法:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
#scaler.fit(cc)                               
#trans_data_2 = scaler.transform(cc)          
cc_zscore_sk = scaler.fit_transform(cc)  #與上面numpy的計算結果一致

Python實現最大最小標准化的代碼也很簡單:

cc_min_max = (cc-np.min(cc, axis=0))/(np.max(cc, axis=0)-np.min(cc, axis=0))

或者使用sklearn包:

from sklearn.preprocessing import MinMaxScaler
cc_min_max = MinMaxScaler().fit_transform(cc)

##

注:pandas同樣可以類似實現。

參考:

https://www.jianshu.com/p/fa73a07cd750

https://blog.csdn.net/qq_38958113/article/details/98050932


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM