什麼是特徵處理?
透過特定的統計方法(數學方法)將待處理資料轉換為演算法要求的資料的這個過程稱為特徵處理。
數值型資料歸一化方案:
歸一化的特點
對原始資料進行歸一化處理後使其對映到指定範圍內(通常預設是[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——
首發地址: 公眾號:
資料與程式設計之美