網路城邦
上一篇 回創作列表 下一篇   字體:
Python機器學習筆記(七):我與姚明一樣高 - 縮放特徵使其具相同比例
2020/04/05 15:07:02瀏覽1674|回應0|推薦8

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)

( 知識學習其他 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=gwogo&aid=132370859