基於資料歸一化以及Python實現方式

2022-10-04 19:06:13 字數 3114 閱讀 4555

資料歸一化:

資料的標準化是將資料按比例縮放,使之落入乙個小的特定區間,去除資料的單位限制,將其轉化為無量綱的純數值,便於不同單位或量級的指標能夠進行比較和加權。

為什麼要做歸一化:

1)加快梯度下降求最優解的速度

如果兩個特徵的區間相差非常大,其所形成的等高線非常尖,很有可能走「之字型」路線(垂直等高線走),從而導致需要迭代很多次才能收斂。

2)有可能提高精度

一些分類器需要計算樣本之間的距離,如果乙個特徵值域範圍非常大,那麼距離計算就主要取決於這個特徵,從而與實際情況相悖(比如這時實際情況是值域範圍小的特徵更重要)。

歸一化型別

1)線性歸一化

這種歸一化比較適用在數值比較集中的情況,缺陷就是如果max和min不穩定,很容易使得歸一化結果不穩定,使得後續的效果不穩定,實際使用中可以用經驗常量程式設計客棧來代替max和min。

2)標準差標準化

經過處理的資料符合標準正態分佈,即均值為0,標準差為1。

3)非線性歸一化

經常用在資料分化較大的場景,有些數值大,有些很小。通過一些數學函式,將原始值進行對映。該方法包括log、指數、反正切等。需要根據資料分布的情況,決定非線性函式的曲線。

log函式:x = lg(x)/lg(max)

反正切函式:x = atan(x)*2/pi

python實現

線性歸一化

定義陣列:x = numpy.array(x)

獲取二維陣列列方向的最大xrkvjmzov值:x.max(axis = 0)

獲取二維陣列列方向的最小值:x.min(axis = 0)

對二維陣列進行線性歸一化:

def max_min_normalization(data_value, data_col_max_values, data_col_min_values):

""" data normalization using max value and min value

args:

data_value: the data to be normalized

data_col_max_values: the maximum value of data's columns

data_col_min_values: the minimum value of data's columns

"""data_shape = data_value.shape

data_rows = data_shape[0]

data_cols = data_shape[1]

for i in xrange(0, data_rows, 1):

for j in xrange(0, data_cols, 1):

data_value[i][j] = \

(data_value[i][j] - data_col_min_va程式設計客棧lues[j]) / \

(data_col_max_values[j] - data_col_min_values[j])

標準差歸一化

定義陣列:x = numpy.array(x)

獲取二維陣列列方向的均值:x.mean(axis = 0)

獲取二維陣列列方向的標準差:x.std(axis = 0)

對二維陣列進行標準差歸一化:

def standard_deviation_normalization(data_value, data_col_means,

data_col_standard_deviation):

""" data normalization using standard deviation

args:

data_value: the data to be normalized

data_col_means: the means of data's columns

data_col_standard_deviation: the variance of data's columns

"""data_shape = 程式設計客棧data_value.shape

data_rows = data_shape[0]

data_cols = data_shape[1]

for i in xrange(0, data_rows, 1):

for j in xrange(0, data_cols, 1):

data_value[i][j] = \

(dxrkvjmzovata_value[i][j] - data_col_means[j]) / \

data_col_standard_deviation[j]

非線性歸一化(以lg為例)

定義陣列:x = numpy.array(x)

獲取二維陣列列方向的最大值:x.max(axis=0)

獲取二維陣列每個元素的lg值:numpy.log10(x)

獲取二維陣列列方向的最大值的lg值:numpy.log10(x.max(axis=0))

對二維陣列使用lg進行非線性歸一化:

def nonlinearity_normalization_lg(data_value_after_lg,

data_col_max_values_after_lg):

""" data normalization using lg

args:

data_value_after_lg: the data to be normalized

data_col_max_values_after_lg: the maximum value of data's columns

"""data_shape = data_value_after_lg.shape

data_rows = data_shape[0]

data_cols = data_shape[1]

for i in xrange(0, data_rows, 1):

for j in xrange(0, data_cols, 1):

data_value_after_lg[i][j] = \

data_value_after_lg[i][j] / data_col_max_values_after_lg[j]

本文標題: 基於資料歸一化以及python實現方式

本文位址:

matlab歸一化函式,以及還原歸一化

2 只按行歸一化,如果是矩陣,則每行各自歸一化,如果需要對整個矩陣歸一化,用如下方法 flatteneddata originaldata 展開矩陣為一列,然後轉置為一行。mapminmax flatteneddata,0,1 歸一化。reshape size originaldata 還原為原始矩...

python歸一化處理 python歸一化處理

一 定義 歸一化方法有兩種形式,一種是把數變為 0,1 之間的小數,一種是把有量綱表示式變為無量綱表示式。主要是為了資料處理方便提出來的,把資料對映到0 1範圍之內處理,更加便捷快速。二 目的 不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到資料分析的結果,為了消除指標之間的量綱影響,需...

資料歸一化

近來,在網上搜了很多關於資料歸一化的帖子,看了太多,很雜,這裡整理總結一下 歸一化是一種資料預處理方法,就是要把你需要處理的資料經過處理後 通過某種演算法 限制在你需要的一定範圍內,為了後面資料處理的方便,其次是保正程式執行時 收斂加快。比如說,對於奇異樣本資料 所謂奇異樣本資料資料指的是相對於其他...