本篇文章給大家分享的內容是python歸一化多維陣列的方法 ,具有一定的參考價值,有需要的朋友參考一下
今天遇到需要歸一化多維陣列的問題,但是在網上查閱了很多資料都是歸一化數組的一行或者一列,對於怎麼歸一化一個多維陣列的資料比較少,可是在tensorflow中為了訓練神經網路常常需要用到多維資料。因此歸一化多維陣列非常有必要。
在查閱了大量資料之後發現在sklearn庫中的preprocessing可以直接歸一化多維陣列。
1、使用sklearn.preprocessing.scale()函數,對給定資料進行標準化:具體公式是(x - mean)/std。其含義是:對每一列的資料減去這一列的均值,然後除以這一列資料的標準差。最終得到的資料都在0附近,方差為1。具體程式樣本如下:
from sklearn import preprocessingdata_normal = preprocessing.scale(data)#data是多維資料
2、使用sklearn.preprocessing.StandardScaler類,這個類可以計算每一列資料的均值和方差,並根據均值和方差直接把未經處理資料歸一化。簡單樣本如下:
from sklearn import preprocessing#計算未經處理資料每行和每列的均值和方差,data是多維資料scaler = preprocessing.StandardScaler().fit(data)#得到每列的平均值,是一維數組mean = scaler.mean_ #得到每列的標準差,是一維數組 std = scaler.std_ #標準化資料data_nomal = scaler.transform(data) #可以直接使用訓練集對測試集資料進行轉換 scaler.transform([[-1., 1., 0.]])
3、sklearn.preprocessing.MinMaxScaler類把資料縮放到一個指定的範圍。具體樣本如下:
from sklearn import preprocessingmin_max_scaler = preprocessing.MinMaxScaler()#標準化訓練集資料data_train_nomal = min_max_scaler.fit_transform(data_train) #對測試集資料進行相同的歸一化處理data_test_minmax = min_max_scaler.transform(data_test)#擷取縮放因子屬性,結果是一維數組min_max_scaler.scale_ min_max_scaler.min_
4、附sklearn.preprocessing還可以做正則化
(1)preprocessing.normalize()對資料做正則化轉換
data_normalized = preprocessing.normalize(data, norm='l2')
(2)preprocessing.Normalizer()先擬合資料再對資料進行正則化變換
normalizer = preprocessing.Normalizer().fit(data) #擬合未經處理資料,data是多維陣列normalizer.transform(data) #正則化