資料特徵處理之數值型資料(歸一化)

2021-10-12 13:53:59 字數 2460 閱讀 7224

通過特定的統計方法(數學方法)將待處理資料轉換為演算法要求的資料的這個過程稱為特徵處理。

數值型資料歸一化方案:

對原始資料進行歸一化處理後使其對映到指定範圍內(通常預設是[0,1]之間)

降低資料附帶的量綱影響,使不同的特徵具有相同的尺度(scale),進而具有可比性(公平性)

【注】 歸一化也被稱為最大最小標準化(min-max normalization)、調節比例(rescaling)

我們常用的歸一化特徵處理的統計(數學)方法便是線性轉換的方式,

上述公式中, xmin 表示源資料中特徵的最小值,xmax 表示特徵的最大值,x則表示源資料中的具體值

我們平時所見的歸一化都是將資料對映到[0,1]之間,若是將資料對映到自定義範圍內呢?顯然上述公式不具有通用性。具備通用性的其實是下面這個

其中,a表示將資料縮放到指定區間內的上限,b表示將資料縮放到指定區間的下線。歸一化整體流程如下圖

[注] 上述公式的效果作用於每一列(特徵)

上述縮放結果是借助機器學習中的sklearn模組來完成的,完整的**如下

預設縮放到[0, 1]時

# -*- coding:utf-8 -*-

# @author: 資料與程式設計之美

# @file: min_max_normalization.py

# @time: 2020/12/07 23:15

from sklearn.preprocessing import minmaxscaler

def min_max_handle(): # 歸一化

mms = minmaxscaler()

data = mms.fit_transform([[425, 42, 0.16],

[544, 66, 1.28],

[509, 75, 0.87],

[496, 60, 0.99],

[580, 23, 1.15]])

print(data)

if __name__ == "__main__":

min_max_handle()

縮放到任意區間內時,只需加入引數並指定區間範圍既可,如指定到[5, 8]之間時

# @author: 資料與程式設計之美

# @file: min_max_normalization.py

# @time: 2020/12/07 23:15

from sklearn.preprocessing import minmaxscaler

def min_max_handle(): # 歸一化

mms = minmaxscaler(feature_range=(5, 8))

data = mms.fit_transform([[425, 42, 0.16],

[544, 66, 1.28],

[509, 75, 0.87],

[496, 60, 0.99],

[580, 23, 1.15]])

print(data)

if __name__ == "__main__":

min_max_handle()

上述內容便是資料特徵處理中的資料歸一化理論、操作流程。然而歸一化只是眾多特徵處理方案中的一種手段,其最終服務的成熟演算法還是有侷限性的。

對於常見的歸一化處理手段(基於線性轉換的方式) ,叢其理論表示式可以看出,歸一化後的結果與xmin (最小)、xmax(最大)值相關,也就是由極值決定。當增加樣本量資料時,有可能導致某特徵的極值發生變化,從而導致歸一化結果不穩定(不具備魯棒性),實際使用時可以使用經驗常量來代替xmin (最小)、xmax(最大)值;在工程規模方面來考慮時,歸一化適用於資料量少的工程。

資料歸一化處理 特徵歸一化

1 定義 資料的歸一化處理,即將資料統一對映到 0,1 區間上。2 方法 1 最大最小標準化 min max normalization 本歸一化方法又稱為離差標準化,使結果值對映到 0 1 之間,轉換函式如下 應用場景 在不涉及距離度量 協方差計算 資料不符合正太分布的時候,可以使用第一種方法或其...

資料預處理 特徵歸一化

對資料進行特徵歸一化 normalization 處理,可以使得資料的各個特徵處於同一數值量級,而不會導致模型學習出來的結果傾向於數值差別比較大的那些特徵。線性函式歸一化 min max scaling 對原始資料進行線性變換,是結果對映到 0,1 範圍,實現對原始資料的等比縮放。歸一化公式為 x ...

機器學習中數值型特徵做特徵歸一化

今天去某外賣平台面試機器學習演算法工程師,二面時面試官問到數值型特徵工程,提到歸一化,按常規想法就是minmaxscaler或zscore。本以為回答完美,但被面試官追問,為什麼做歸一化,做與不做,有什麼區別?這讓我猝不及防,就按自己的理解說,某些特徵的數值相較其他特徵數值範圍差異大,在演算法的訓練...