9.5 Batch Prediction
Batch prediction 指的是一次讀入多筆資料,批次產生模型預測結果,再輸出成 CSV、資料表或其他系統可接收的格式。本篇使用合成三類表格分類資料,示範從訓練模型、保存 scaler、讀取待預測 CSV 到輸出 prediction CSV 的完整流程。
1. 學習目標
實務上不是每個模型都需要即時 API。有些任務更適合每天、每小時或每週批次執行,例如:
- 每晚預測明天的客戶流失名單。
- 對新上架商品批次分類。
- 對大量交易資料批次計算風險分數。
- 產出報表或匯入資料庫。
Batch prediction 的核心是可重複執行、可追蹤輸入與輸出,而不是只在 notebook 中印出幾筆預測。
2. 標準流程
本篇使用以下流程:
這個流程特別適合表格資料。若是圖片或文字資料,輸入格式會不同,但仍需要保存前處理規格、批次推論與輸出結果。
3. 輸入與輸出格式
待預測資料會是一份 CSV:
| 欄位 | 說明 |
|---|---|
sample_id |
每筆資料的識別碼 |
feature_0 到 feature_n |
模型輸入特徵 |
輸出結果會包含:
| 欄位 | 說明 |
|---|---|
sample_id |
回連原始資料的識別碼 |
predicted_class |
預測類別編號 |
predicted_label |
預測類別名稱 |
confidence |
最大預測機率 |
prob_* |
各類別機率 |
保留 sample_id 很重要,否則預測結果很難回接原始資料或後續系統。
4. 批次推論程式重點
模型推論前要先載入訓練時保存的 scaler:
model = tf.keras.models.load_model('model.keras')
scaler = joblib.load('scaler.joblib')
features = input_df[feature_columns].to_numpy(dtype='float32')
features_scaled = scaler.transform(features)
probabilities = model.predict(features_scaled)
接著將機率轉成類別與信心分數:
最後把結果寫成 CSV,供報表、資料庫或下一個流程使用。
5. 如何套用到自己的資料?
替換成自己的資料時,請確認:
- 待預測 CSV 欄位和訓練時特徵欄位一致。
- 缺失值、類別編碼、標準化方式和訓練時一致。
- 輸出結果保留能回接原資料的 ID。
- 每次批次推論都記錄模型版本、輸入檔名與輸出檔名。
- 若資料量很大,使用 chunk 或
tf.data分批推論。
批次推論比 API 簡單,但更需要重視檔案命名、版本紀錄與資料品質檢查。
6. 小結
Batch prediction 是模型落地時很常見的形式。只要把模型、前處理、輸入 CSV、輸出 CSV 與版本資訊整理清楚,就能把 notebook 中的 predict() 變成可重複執行的推論流程。