Chuyển đến nội dung chính

第 12 課:使用 scikit-learn 進行管道和 ColumnTransformer

建構抗人工錯誤、復用性好的管道,降低訓練中外流的風險。

🧠 人工智慧與機器學習 — 第 11 課 第 12 課:管道和 ColumnTransformer scikit學習

機器學習:從基礎到高級

第 2 部分:業界標準工作流程

亞洲開發網

簡介

當 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 中需要更新哪些內容?
  • 部署管道時最大的好處是什麼?