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

什麼是特徵處理?

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

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

數值型資料歸一化方案:

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

歸一化的特點

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

降低資料附帶的量綱影響,使不同的特徵具有相同的尺度(

Scale

),進而具有可比性(公平性)

【注】 歸一化也被稱為最大最小標準化(

min-max Normalization

)、調節比例(

Rescaling

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

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

上述公式中,

x

min 表示源資料中特徵的最小值,

x

max 表示特徵的最大值,x則表示源資料中的具體值

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

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

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

其中,

a

表示將資料縮放到指定區間內的上限,

b

表示將資料縮放到指定區間的下線。歸一化整體流程如下圖

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

上述縮放結果是藉助機器學習中的

sklearn

模組來完成的,完整的程式碼如下

預設縮放到[0, 1]時

# -*- coding:utf-8 -*-# @Author: 資料與程式設計之美# @File: min_max_normalization。pyfrom sklearn。preprocessing import MinMaxScalerdef 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]之間時

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

# -*- coding:utf-8 -*-# @Author: 資料與程式設計之美# @File: min_max_normalization。pyfrom sklearn。preprocessing import MinMaxScalerdef 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

(最大)值;在工程規模方面來考慮時,歸一化適用於資料量少的工程。

——END——

首發地址: 公眾號:

資料與程式設計之美