資料預處理與特徵工程(一) 歸一化與標準化

2021-10-11 01:16:58 字數 2836 閱讀 2316

​ 在機器學習演算法實踐中,我們往往有著將不同規格的資料轉換到同一規格,或不同分布的資料轉換到某個特定分布的需求,這種需求統稱為將資料「無量綱化」。譬如梯度和矩陣為核心的演算法中,譬如邏輯回歸,支援向量機,神經網路,無量綱化可以加快求解速度;而在距離類模型,譬如k近鄰,k-means聚類中,無量綱化可以幫我們提公升模型精度,避免某乙個取值範圍特別大的特徵對距離計算造成影響。(乙個特例是決策樹和樹的整合演算法們,對決策樹我們不需要無量綱化,決策樹可以把任意資料都處理得很好。)

​ 資料的無量綱化可以是線性的,也可以是非線性的。線性的無量綱化包括中心化(zero-centered或者meansubtraction)處理和縮放處理(scale)。中心化的本質是讓所有記錄減去乙個固定值,即讓資料樣本資料平移到某個位置。縮放的本質是通過除以乙個固定值,將資料固定在某個範圍之中,取對數也算是一種縮放處理。

​ 當資料**(x)按照最小值中心化後,再按極差(最大值-最小值)縮放,資料移動了最小值個單位,並且會被收斂到[0,1]之間,而這個過程,就叫做資料歸一化(normalization),又稱(min-max scaling)**。注意,normalization是歸一化,不是正則化,真正的正則化是regularization,不是資料預處理的一種手段。歸一化之後的資料服從正態分佈。 minmaxscaler有乙個重要引數,feature_range,控制我們希望把資料壓縮到的範圍,預設是[0,1]。

​ 當資料**(x)按均值(μ)中心化後,再按標準差(σ)縮放,資料就會服從為均值為0**,方差為1的正態分佈(即標準正態分佈),而這個過程,就叫做資料標準化(standardization,又稱z-score normalization)

​ 大多數機器學習演算法中,會選擇standardscaler來進行特徵縮放,因為minmaxscaler對異常值非常敏感。在pca,聚類,邏輯回歸,支援向量機,神經網路這些演算法中,standardscaler往往是最好的選擇。minmaxscaler在不涉及距離度量、梯度、協方差計算以及資料需要被壓縮到特定區間時使用廣泛,比如數字影象處理中量化畫素強度時,都會使用minmaxscaler將資料壓縮於[0,1]區間之中。建議先試試看standardscaler,效果不好換minmaxscaler

導入庫並準備好以下資料

from sklearn.preprocessing import minmaxscaler 

data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]

對以上資料使用資料歸一化

import pandas as pd

pd.dataframe(data)

#實現歸一化

scaler = minmaxscaler() #例項化

scaler = scaler.fit(data) #fit,在這裡本質是生成min(x)和max(x)

result = scaler.transform(data) #通過介面匯出結果

result

將歸一化後的結果逆**使用inverse_transform

result_ = scaler.fit_transform(data)

scaler.inverse_transform(result)

​ 使用minmaxscaler的引數feature_range實現將資料歸一化到[0,1]以外的範圍中【5,10】

data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]

scaler = minmaxscaler(feature_range=[5,10])

result = scaler.fit_transform(data)

result

對以上資料進行標準化處理。

from sklearn.preprocessing import standardscaler

data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]

scaler = standardscaler() #例項化

scaler.fit(data)

檢視檢視均值的屬性mean_

scaler.mean_   

scaler.var_

x_std = scaler.transform(data)

x_std.mean()

檢視方差的屬性var

x_std.std()
使用inverse_transform逆轉標準化

scaler.fit_transform(data)   

scaler.inverse_transform(x_std)

資料預處理 特徵歸一化

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

特徵工程與資料預處理

通常而言,特徵選擇是指選擇獲得相應模型和演算法最好效能的特徵集。資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已。從這個概念可以看出,特徵工程其實是乙個如何展示和表現資料的問題,在實際工作中需要把資料以一種 良好 的方式展示出來,使得能夠使用各種各樣的機器學習模型來得到更好的效果。...

資料預處理 歸一化

歸一化是一種資料預處理方法,就是要把你需要處理的資料經過處理後 通過某種演算法 限制在你需要的一定範圍內,為了後面資料處理的方便,其次是保正程式執行時 收斂加快 歸一化的三種方法 1 線性函式轉換 表示式如下 y x minvalue maxvalue minvalue 說明 x y分別為轉換前 後...