資料歸一化:
資料的標準化是將資料按比例縮放,使之落入乙個小的特定區間,去除資料的單位限制,將其轉化為無量綱的純數值,便於不同單位或量級的指標能夠進行比較和加權。
為什麼要做歸一化:
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範圍之內處理,更加便捷快速。二 目的 不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到資料分析的結果,為了消除指標之間的量綱影響,需...
資料歸一化
近來,在網上搜了很多關於資料歸一化的帖子,看了太多,很雜,這裡整理總結一下 歸一化是一種資料預處理方法,就是要把你需要處理的資料經過處理後 通過某種演算法 限制在你需要的一定範圍內,為了後面資料處理的方便,其次是保正程式執行時 收斂加快。比如說,對於奇異樣本資料 所謂奇異樣本資料資料指的是相對於其他...