通過特定的統計方法(數學方法)將待處理資料轉換為演算法要求的資料的這個過程稱為特徵處理。
數值型資料歸一化方案:
對原始資料進行歸一化處理後使其對映到指定範圍內(通常預設是[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。本以為回答完美,但被面試官追問,為什麼做歸一化,做與不做,有什麼區別?這讓我猝不及防,就按自己的理解說,某些特徵的數值相較其他特徵數值範圍差異大,在演算法的訓練...