跳轉到

2.3 類別資料編碼

範例程式:Open In Colab

類別欄位不能直接丟進 Dense layer,必須先轉成數字表示。本篇示範 pandas one-hot encoding,也示範 Keras StringLookupCategoryEncoding 類型的前處理方式,讓模型能同時使用數值欄位與文字類別欄位。

1. 學習目標

表格資料常包含城市、設備類型、部門、產品類別等文字欄位。模型不理解文字類別本身,因此需要把類別轉成 index、one-hot 或 embedding。

2. 常見類別編碼方式

方法 說明 適合情境
One-hot encoding 每個類別變成一個 0/1 欄位 類別數量不多
Integer lookup 類別轉成整數 index 搭配 embedding
Embedding 將類別學成低維向量 類別數量較多
Keras preprocessing layer 把編碼流程放進模型 部署時保留前處理

3. 未知類別要注意

正式資料常會出現訓練時沒看過的新類別。Keras StringLookup 可保留 OOV token,讓未知類別有固定處理方式。

4. 實作流程

Notebook 會建立一份含城市、裝置類型、年齡與拜訪次數的合成資料,模擬常見的使用者行為表格。流程先示範 pandas get_dummies,再使用 Keras preprocessing layer 建立可訓練模型,最後測試訓練時沒看過的新城市與新裝置。

5. 如何套用自己的資料?

先列出數值欄位與類別欄位。類別欄位若數量少,可用 one-hot;若類別很多,後續可改用 embedding。正式專案中也要保留 OOV 處理,避免未來推論遇到新類別時整個流程中斷。

6. 小結

類別編碼的重點是讓訓練、驗證、測試與未來推論使用同一套 mapping。把前處理放進 Keras layer,可降低部署時前處理不一致的風險。