前一天介紹了維度表的應用以及有關商業智慧的部分,今天我們來看Python程式如何做到資料前處理的各個步驟。
1.觀看資料特徵,是數值型特徵還是類別型特徵
2.觀看資料的離群值/異常值,這些值是真的異常還是有特別的涵義?決定去除或保留
3.觀看資料的缺失值,思考用什麼方法進行補值
4.數值型特徵標準化,思考要使用MinMaxScaler還是StandarScaler
5.類別型特徵編碼,使用適當的編碼方式
6.處理完特徵後,進行標準化
統計值:如平均數、標準差、中位數、分位數、z-score、IQR
畫圖:如直方圖、盒圖、次數累積分布等
要填補缺失值,可以使用均值,中位數,眾數,也可以使用Imputer方法
import numpy as np
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit([[1, 2], [np.nan, 3], [7, 6]])
x = [[np.nan, 2], [6, np.nan], [7, 6]]
imp.transform(x)
>>>array([[4. , 2. ],
[6. , 3.66666667],
[7. , 6. ]])
標籤編碼(Label Encoder):
獨熱編碼(One Hot Encoder):
類別型特徵有標籤編碼 (Label Encoding) 與獨熱編碼(One Hot Encoding) 兩種基礎編碼方式中,標籤編碼比較常用,當特徵重要性高,且可能值較少時,才應該考慮獨熱編碼
使用時機:類別特徵看起來來與目標值有顯著相關時,使用目標值的平均值,取代原本的類別型特徵
如果類別的目標均價與類別筆數呈正相關(或負相關),也可以將筆數本身當成特徵例如 : 購物網站的消費金額預測
在sklearn.preprocessing中使用scale的方法,可以實現標準化
preprocessing提供了Normalizer方法,實用transform方法同樣也可以對新的數據進行同樣的轉換
normalizer = preprocessing.Normalizer().fit(x) #Normalizer(copy=True, norm='l2')
normalizer.transform(x)
MinMax可用在特徵分佈均勻且沒有極端值的情況
Standard可用在特徵分佈為常態時
為什麼資料離散化?
今天先介紹到這,明天我們來討論資料視覺化的技巧。