Python機器學習筆記(七):我與姚明一樣高 - 縮放特徵使其具相同比例
「特徵縮放」(feature scaling)是數據預處理的一個關鍵,其重要性,可用一個簡單例子來說明。假設我們有二個特徵,第一個特徵的測量值從1到10,而第二個測量值則是從1到100,000,由於第二個特徵的測量值遠大於第一個特徵值,不少演算法模型在求解最佳化的學習過程時,將會被數值較大的第二個特徵所支配,而數值較小的第一個特徵則會被邊緣化。為避免前述偏誤的產生,在對數據集實際分析前,須先把不同規模的特徵,轉換成相同規模,無論原始數值差異有多大,經特徵縮放後,都處在同一衡量尺度基礎上,高大如姚明者,也縮放成一般人高度了。在實務上,有「常態化」(normalization)和「標準化」(standardization)這二種特徵縮放特徵處理方式。
一、常態化
常態化是指將特徵值「縮放」到【0,1】範圍之內。某個樣本的特徵值 x ,其常態化公式為:
常態化的某樣本特徵值 x = (常態化前的 x 特徵值 - 所有樣本中最小的特徵值 x)/ (所有樣本中最大的特徵值 x - 有樣本中最小的特徵值 x)
我們可利用 scikit-learn 實作的 MinMaxScaler 類別來處理特徵常態化的問題。假設有個需進行常態化處理的特徵資料集 df
•匯入 MinMaxScaler 類別
from sklearn.preprocessing import MinMaxScaler
•初始化 MinMaxScaler 類別估計器 mms
mms = MinMaxScaler( )
•估計器 mms 叫用 fit 方法,練習擬合 df 資料集內容
mms.fit(df)
•利用練習擬合後的估計器 mms ,叫用 transform方法,將 df 資料集的特徵值,轉換為常態化後的特徵值
df_norm = mms.transform(df)
二、標準化
標準化是指將特徵值「縮放」為「平均值」為0,「標準差」為1的「常態分配」。某個樣本的特徵值 x ,其標準化公式為:
標準化的某樣本特徵值 x = (標準化前的 x 特徵值 - 特徵值欄 x 的平均值)/ (特徵值欄 x 的標準差)
我們可利用 scikit-learn 實作的 StandardScaler 類別來處理特徵標準化的問題。假設有個需進行標準化處理的特徵資料集 df
•匯入 StandardScaler類別
from sklearn.preprocessing import StandardScaler
•初始化 StandardScaler 類別估計器 stdsc
stdsc = StandardScaler( )
•估計器 stdsc 叫用 fit 方法,練習擬合 df 資料集內容
stdsc.fit(df)
•利用練習擬合後的估計器 stdsc ,叫用 transform方法,將 df 資料集的特徵值,轉換為標準化後的特徵值
df_std = stdsc.transform(df)
限會員,要發表迴響,請先登入









