Introduction
- 現實中所蒐集的數據不可能完美,往往伴隨著缺失值的存在
處理方法通常為:
- 直接將含有缺失值的樣本刪除
- 直接將含有過多缺失值的特徵列刪除
- 使用
sklearn.impute.SimpleImputer
將均值、中位數、眾數、常數填補數據- 專門用作填補缺失值的類
- 使用隨機森林回歸填補缺失值
使用特定值填補缺失值
1 | from sklearn.impute import SimpleImputer |
X_missing
:是含有缺失值的pandas.dataframe
或是numpy.ndarray
類型的數據x_missing_mean
:是使用均值填補的結果- 返回的類型為
numpy.ndarray
類型
- 返回的類型為
strategy
參數:可為"mean"
(平均數[預設])、"median"
(中位數)、"most_frequent"
(眾數[可用於填充文字])、"constant"
(常數[可用於填充文字])- 若使用
"constant"
(常數)進行填補,則需再指定fill_value
參數為何值fill_value = 0
:使用0進行填補
- 若使用
copy
: 預設為True
:創建特徵矩陣的副本 ; 設為False
時,會將缺失值直接填補到原本的特徵矩陣中去
判斷是否填補完成
- 使用
pandas.DataFrame.isnull()
判斷是否填補完成 - 加總每一列的結果確定皆為0,則代表填補完成
1 | pd.DataFrame(x_missing_mean).isnull().sum() |
使用隨機森林回歸進行填補
- 建立在回歸演算法認為特徵和標籤之間存在著某種關係
- 利用標籤 + 其他特徵反推缺失值
- 此種做法對於某一個特徵大量缺失,其他特徵卻很完整的情況非常適用
流程
- 先遍歷所有特徵,查看有缺失值的為哪些特徵,並從缺失值最少的特徵開始進行填補
- 填補缺失值最少的特徵所需要的準確信息最少
- 填補其中一個特徵時,先將其他特徵缺失值用0代替
- 劃分測試集及訓練集
- 建模後預測該特徵的缺失值
- 將預測值放到原本的特徵矩陣中;重複第2步驟