由於進行分類器或模型的建立與訓練時,輸入的資料範圍可能比較大,同時樣本中各資料可能量綱不一致,這樣的資料容易對模型訓練或分類器的構建結果產生影響,因此需要對其進行歸一化處理。
那就是將該樣本(樣本集中第i行資料)歸一到範圍(0,1)之間。
一種簡單而快速的標準歸一化處理演算法是線性轉換演算法,最為常見的是如下形式:
假設x為樣本,y歸一化後資料,則有
y=(x-min)/(max-min)
因此如果乙個樣本集s=[x1,x2,…,xi,…,xn],i=(1,2,…,n)。
即該樣本集共有n個樣本,其中每個樣本都是這樣的資料:
xi=[x(i,1), x(i,2), …, x(i,j), …, x(i,m)],j=(1,2,…,m)。
即每個樣本都由m個資料構成。
因此對於該樣本集的歸一化處理應該是這樣的:
遍歷該樣本集, yi = ( xi -min(xi) )/( max(xi) -min(xi))
由於陣列的加和乘運算子均為拼接符號,因此需要將其轉換為矩陣陣列,利用矩陣的基本運算。
即:numpy.array()
**如下:
import numpy as np;
a=np.array([[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]]);
def mnmx(arr):
arr=np.array(arr); #將輸入樣本集轉換為矩陣,以便做矩陣基本運算
mnmx=;
for i in range(len(arr)):
maxi,mini=max(arr[i]),min(arr[i]); #得到第i行資料(即第i個樣本)的最大值和最小值
temp=(arr[i]-mini)/(maxi-mini); #將該樣本資料進行歸一化處理
mnmx=np.array(mnmx);
return mnmx;
print(mnmx(a));
結果如下:
#a=
[[1 2 3 4]
[2 3 4 5]
[3 4 5 6]
[4 5 6 7]]
#print
[[0. 0.33333333 0.66666667 1. ]
[0. 0.33333333 0.66666667 1. ]
[0. 0.33333333 0.66666667 1. ]
[0. 0.33333333 0.66666667 1. ]]
資料預處理 歸一化
歸一化是一種資料預處理方法,就是要把你需要處理的資料經過處理後 通過某種演算法 限制在你需要的一定範圍內,為了後面資料處理的方便,其次是保正程式執行時 收斂加快 歸一化的三種方法 1 線性函式轉換 表示式如下 y x minvalue maxvalue minvalue 說明 x y分別為轉換前 後...
資料預處理 歸一化
1 公式 x numpy array格式的資料 n samples,n features n samples 樣本數 n features 特徵數 列 返回值 形狀相同的array 3 缺點 由於歸一化使用最大值最小值進行計算,若最大值 最小值缺失或錯誤,歸一化結果的準確性就會大大降低,為此可採用標...
歸一化(資料預處理)
一 資料標準化 歸一化 首先,資料標準化處理主要包括資料同趨化處理 中心化處理 和無量綱化處理。同趨化處理主要解決不同性質資料問題,對不同性質指標直接加總不能正確反映不同作用力的綜合結果,須先考慮改變逆指標資料性質,使所有指針對測評方案的作用力同趨化,再加總才能得出正確結果。無量綱化處理主要為了消除...