簡介
當 ML 專案從許多預處理步驟開始時,手寫每個步驟很容易出錯。 Pipeline 和 ColumnTransformer 可協助您將所有預處理和模型組合成統一的流程,易於重現、易於調試並降低洩漏風險。
課程目標
- 了解為什麼應該使用管道而不是離散處理。
- 了解如何使用 ColumnTransformer 處理多種列類型的資料。
- 建立一致的訓練/預測工作流程。
為什麼管道很重要?
管道有助於避免常見錯誤,例如在訓練和測試上安裝縮放器、在預測新資料時忘記應用相同的轉換,或儲存模型但忘記預處理邏輯。
標準結構
- 數字:估算然後縮放。
- 分類:先估算後單熱。
- 使用 ColumnTransformer 合併。
- 在最後一步中設定分類器或回歸器。
程式碼範例
從 sklearn.compose 導入 ColumnTransformer
從 sklearn.pipeline 導入管道
從 sklearn.preprocessing 導入 OneHotEncoder、StandardScaler
從 sklearn.impute 導入 SimpleImputer
從 sklearn.ensemble 導入 RandomForestClassifier
實踐中的好處
- 易於進行交叉驗證。
- 使用 joblib 輕鬆儲存/載入。
- 部署批次推理時錯誤更少。
常見錯誤
- 列清單的錯誤使用。
- 新增了新功能但忘記更新 ColumnTransformer。
- 在管道外呼叫fit_transform,然後在管道內再次進行擬合。
練習練習
- 為客戶流失或住房資料建立完整的管道。
- 比較使用管道的程式碼和手動處理的程式碼。
- 寫 5 行:管道最能幫助減少哪種類型的錯誤?
完成標準
- 可以自己建構Pipeline和ColumnTransformer。
- 了解管道如何幫助避免洩漏。
- 可以儲存/載入完整的工作流程。
逐步練習(進階)
1.寫一個完整的pipeline,包括預處理+模型。 2. 將數字/分類分割為兩個變換分支。 3. 使用相同的流程來訓練、驗證和預測新樣本。 4. 使用 joblib 儲存管道並重新載入以進行預測。 5. 編寫小測試以確保輸入模式不會被破壞。
應提交工件
- 文件管道可以重複使用。
- 1 筆記錄的最小預測腳本。
- 基於管道的洩漏預防檢查表。
自測題
- 為什麼手動 fit_transform 比 pipeline 更容易出錯?
- 新增功能時,ColumnTransformer 中需要更新哪些內容?
- 部署管道時最大的好處是什麼?