處理遺漏值

用 Python 練習機器學習面試題

Lisa Stuart

Data Scientist

先修課程

用 Python 練習機器學習面試題

課程大綱

  • 第 1 章:前處理與視覺化
    • 遺漏值、離群值、正規化
  • 第 2 章:監督式學習
    • 特徵選擇、正則化、特徵工程
  • 第 3 章:非監督式學習
    • 叢集演算法選擇、特徵萃取、降維
  • 第 4 章:模型選擇與評估
    • 模型泛化與評估、模型選擇
用 Python 練習機器學習面試題

機器學習(ML)流程管線

管線總覽

用 Python 練習機器學習面試題

本課的 ML 流程管線

流程管線

用 Python 練習機器學習面試題

遺漏值

  • 不同技術的影響
  • 尋找遺漏值
  • 處理策略
用 Python 練習機器學習面試題

技術手法

  1. 省略
    • 移除列 --> .dropna(axis=0)
    • 移除欄 --> .dropna(axis=1)
  2. 插補
    • 以 0 填補 --> SimpleImputer(strategy='constant', fill_value=0)
    • 以平均值填補 -> SimpleImputer(strategy='mean')
    • 以中位數填補 --> SimpleImputer(strategy='median')
    • 以眾數填補 --> SimpleImputer(strategy='most_frequent')
    • 反覆插補 --> IterativeImputer()
用 Python 練習機器學習面試題

為什麼要在意?

  • 降低引入偏誤的機率
  • 多數 ML 演算法需要完整資料
用 Python 練習機器學習面試題

插補的影響

  • 視以下因素而定:
    • 遺漏值情況
    • 原始變異數
    • 是否有離群值
    • 偏態的大小與方向
  • 省略 --> 可能刪掉過多資料
  • 以 0 填補 --> 使結果往下偏
  • 平均值 --> 較易受離群值影響
  • 中位數 --> 有離群值時較佳
  • 眾數與反覆插補 --> 試試看並比較
用 Python 練習機器學習面試題
函式 回傳
df.isna().sum() 缺失數量
df['feature'].mean() 該特徵平均值
.shape 列、欄維度
df.columns 欄名
.fillna(0) 以 0 填補缺失
select_dtypes(include = [np.number] ) 數值欄位
select_dtypes(include = ['object'] ) 字串欄位
.fit_transform(numeric_cols) 擬合並轉換
用 Python 練習機器學習面試題

遺漏值的影響

在機器學習(ML)情境中,遺漏值有何影響? 請選出正確的陳述:

  • 遺漏值不成問題,因為多數 sklearn 的演算法都能處理。
  • 一般而言,移除含遺漏值的觀測或特徵是好主意。
  • 遺漏資料傾向引入偏誤,導致誤導性結果,因此不能忽視。
  • 以 0 填補遺漏值會讓結果往上偏。
用 Python 練習機器學習面試題

遺漏值的影響:解答

在機器學習(ML)情境中,遺漏值有何影響? 正確答案是:

  • 遺漏資料傾向引入偏誤,導致誤導性結果,因此不能忽視。(測試各種填補方式,選擇最不影響資料集變異數者,是較佳做法。)
用 Python 練習機器學習面試題

遺漏值的影響:錯誤選項說明

在機器學習(ML)情境中,遺漏值有何影響?

  • 遺漏值不成問題……(多數 sklearn 演算法無法處理遺漏值,會拋出錯誤。)
  • 移除含遺漏值的觀測或特徵……(除非資料集很大且遺漏比例很小,否則刪列或刪欄常使資料集縮水過多,不利後續 ML。)
  • 以 0 填補會讓結果往上偏。(相反地,填 0 會使結果往下偏。)
用 Python 練習機器學習面試題

一起來練習吧!

用 Python 練習機器學習面試題

Preparing Video For Download...