1. 程式人生 > >資料歸一化以及Python實現方式

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

資料歸一化:

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

為什麼要做歸一化:

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)

獲取二維陣列列方向的最大值: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_values[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] = \
            (data_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實現方式

資料歸一化: 資料的標準化是將資料按比例縮放,使之落入一個小的特定區間,去除資料的單位限制,將其轉化為無量綱的純數值,便於不同單位或量級的指標能夠進行比較和加權。 為什麼要做歸一化: 1)加快梯度下降求最優解的速度 如果兩個特徵的區間相差非常大,其所

機器學習(附Python實現原始碼)

# -*- coding: utf-8 -*- import inspect import math import numpy as np from sklearn import preprocessing def max_min_normalization(data_list):

資料matlab及python 實現

歸一化的目的簡而言之,是使得沒有可比性的資料變得具有可比性,同時又保持相比較的兩個資料之間的相對關係。 歸一化首先在維數非常多的時候,可以防止某一維或某幾維對資料影響過大,其次可以程式可以執行更快。 資料歸一化應該針對屬性,而不是針對每條資料,針對每條資

C++ 實現matlab資料函式mapminmax

matlab驗證了我的資料處理方法,今天換成了c++版,實現matlab的mapminmax()函式。程式碼如下: void normalize(float *data) { int datamax = 1; //設定歸一化的範圍 int datamin = 0;

資料及三種方法(python

資料標準化(歸一化)處理是資料探勘的一項基礎工作,不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到資料分析的結果,為了消除指標之間的量綱影響,需要進行資料標準化處理,以解決資料指標之間的可比性。原始資料經過資料標準化處理後,各指標處於同一數量級,適合進行綜合對比評價。以下是三種常用的歸一化方法:m

Bobo老師機器學習筆記-資料

  實現演算法: def normalizate_max_min(X): """ 利用最大和最小化方式進行歸一化,過一化的資料集中在【0, 1】 :param X: :return: """ np.asarray(X, dty

資料(續)

評價是現代社會各領域的一項經常性的工作,是科學做出管理決策的重要依據。隨著人們研究領域的不斷擴大,所面臨的評價物件日趨複雜,如果僅依據單一指標對事物進行評價往往不盡合理,必須全面地從整體的角度考慮問題,多指標綜合評價方法應運而生。所謂多指標綜合評價方法,就是把描述評價物件不同方面的多個指標的資訊綜合

機器學習之資料

器學習中,資料歸一化是非常重要,如果不進行資料歸一化,可能會導致模型壞掉或者訓練出一個奇怪的模型。 為什麼要進行資料歸一化 現在有一個訓練資料集,包含兩個樣本,內容如下: 樣本1 1 200 樣本2 5

資料(標準化)

資料歸一化 資料預處理中,標準的第一步是資料歸一化。雖然這裡有一系列可行的方法,但是這一步通常是根據資料的具體情況而明確選擇的。特徵歸一化常用的方法包含如下幾種: min-max標準化 逐樣本均值消減(也稱為移除直流分量) Z-score 標準化(使資料集中所有特徵都具有零均值和單位方差)

資料,標準化,正則話的聯絡與區別

資料處理的features engineering過程中,常常需要根據演算法的input資料格式對資料進行預處理,對數值性數的表處理可以提高演算法的精度,保證演算法的可信度。常用的資料處理辦法有資料歸一化,標準話和正則話。 1:資料歸一化(Normalization)  1.把資料變為

資料/標準化

方法1:歸一化(normalization):將值轉化為0—1之間                                 &n

scikit-learn中KNN演算法資料的分裝

import numpy as np class StandardScaler: def __init__(self): """初始化""" """用符號和下劃線表示非使用者傳入的引數""" self.mean_ =

資料到均值為零、單位方差

prestd這個函式說是將資料歸一化成零均值和單位方差。如   p = [-0.92 0.73 -0.47 0.74 0.29; -0.08 0.86 -0.67 -0.52 0.93];       [pn,meanp,stdp] = prestd(p);結果為  pn =   -1.3389    0.8

機器學習之資料問題

1.機器學習中,為何要經常對資料做歸一化: 1)歸一化後加快了梯度下降求最優解的速度;2)歸一化有可能提高精度。 1)歸一化為什麼能提高梯度下降法求解最優解的速度: 如下圖所示,藍色的圈圈圖代表的是兩個特徵的等高線。其中左圖兩個特徵X1和X2的區間相差非常大,X1區間是[0,2000],

one hot 編碼及資料

問題由來 在很多機器學習任務中,特徵並不總是連續值,而有可能是分類值。 例如,考慮一下的三個特徵: ["male", "female"] ["from Europe", "from US", "from Asia"] ["uses Firefox", "uses Chrome", "uses

為什麼要資料方法 為什麼要資料方法

轉 為什麼要資料歸一化和歸一化方法 2017年09月22日 08:59:58 wuxiaosi808 閱讀數:11657

模式識別之樣本資料(Normalization)與標準化(Standardization)

%  normalize each row to unit A = A./repmat(sqrt(sum(A.^2,2)),1,size(A,2)); %  normalize each column to unit A = A./repmat(sqrt(sum(A.^2,1)),size(A,1),1);

NumPy學習筆記(4)--資料

# 歸一化,將矩陣規格化到0-1之間 import numpy as np a = 10*np.random.random((5, 5)) # 新建5*5矩陣做演示 print(a) print('---') amin, amax = a.min(), a.max() #

資料小結

在各種模型訓練,特徵選擇相關的演算法中,大量涉及到資料歸一化的問題。比如最常見的情況是計算距離,如果不同維度之間的取值範圍不一樣,比如feature1的取值範圍是[100,200],feature2的取值範圍是[1,2],如果資料不做歸一化處理,會造成featu

C++ 將float資料到[0,1]

<pre name="code" class="cpp">std::ofstream fileout(‘features_normalize.txt’,std::ios::app); float ymax = 1; //歸一化資料範圍 float ymin =