機器學習_ML_Imputer 資料插補
說明
在現實的資料處理中,我們常會遇到資料有缺的狀況,這邊一個,那邊缺一個,這時候我們有兩個選擇,一是放棄它,直接刪除,二是插補。在sklearn中就有方便的lib可以協助我們直接處理這個問題!
IMPORT
from sklearn.preprocessing import Imputer
CLASS
class sklearn.preprocessing.Imputer(missing_values=’NaN’,
strategy=’mean’,
axis=0,
verbose=0,
copy=True)
參數說明
missing_values
integer or ‘NaN’, optional (default=‘NaN’)對於numpy的缺值部份,都是以NaN來表示,這部份在pandas亦然。
strategy
string, optional (default=‘mean’)- mean:以均值補
- median:以中位數補
- most_frequent:最常出現的來補
axis
integer, optional (default=0)- 0:column
- 1:row
verbose
default 0過程是否輸出
0不輸出
1偶爾輸出
1就一定輸出
copy
boolean, optional (default=True)範例
資料集如下:類別 | 身高 | 體重 | 性別 | 年紀 |
---|---|---|---|---|
胖 | 175 | 70 | 男 | 35 |
瘦 | 160 | 50 | 女 | 31 |
瘦 | 175 | 男 | 27 | |
胖 | 180 | 80 | 女 | |
胖 | 180 | 100 | 男 | 18 |
# 載入需求lib
import numpy as np
import pandas as pd
# 插補套件
from sklearn.preprocessing import Imputer
# 手動寫入資料集
ds = [
('胖',175,70,'男',35),
('瘦',160,50,'女',31),
('瘦',175,None,'男',27),
('胖',180,80,'女',None),
('胖',180,100,'男',18)]
columns = ['label','high','weight','sex','years']
# 假裝一下資料載入pandas,比較有fu
df = pd.DataFrame.from_records(ds,columns=columns)
# 確認資料是否載入pandas
df
# 資料拆分
X = df.iloc[:,1:].values
y = df.iloc[:,0].values
# 檢查X的資料,可以發現NULL的部份是NaN
X
# 做資料插補
imputer = Imputer(missing_values='NaN', axis=0, strategy='mean')
imputer.fit_transform(X[:,[1,3]])
# 驗證
print((70+50+80+100)/4)
# 75
print((35+31+27+18)/4)
# 27.75
沒有留言:
張貼留言