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步驟