| No. | 頭痛 | 肌肉痛 | 體溫 | 患流感 |
|---|---|---|---|---|
| 1 | 是(1) | 是(1) | 正常(0) | 否(0) |
| 2 | 是(1) | 是(1) | 高(1) | 是(1) |
| 3 | 是(1) | 是(1) | 很高(2) | 是(1) |
| 4 | 否(0) | 是(1) | 正常(0) | 否(0) |
| 5 | 否(0) | 否(0) | 高(1) | 否(0) |
| 6 | 否(0) | 是(1) | 很高(2) | 是(1) |
| 7 | 是(1) | 否(0) | 高(1) | 是(1) |
目標:用 ID3 演算法建立決策樹,預測「患流感」。

衡量資料集純度,熵越低越純。

選擇資訊增益最大的屬性作為分裂節點,分類能力最強。

最終選擇「體溫」為根節點(增益最大),遞迴構建子樹。
package ID3Tree;
public class Entropy { // 資訊熵計算工具類
public class TreeNode { // 樹節點:parent、屬性名、子節點陣列
public class Comparisons implements Comparator { // TreeSet 排序用
public class UtilID3 { // 主邏輯:建樹、計算增益、遞迴分裂、列印
// 關鍵方法:
// create() 入口
// getMaxGain() 選最大增益屬性
// insert() 遞迴插入子節點
// gain() / entropy() 增益/熵計算
// pickUpAndCreateArray() 依屬性值切分資料集
}
flag[]:標記屬性是否已用於分裂,避免重複使用gain == 0(無增益)或資料集純度 100% → 建立葉節點,類別為目標屬性值getAttributes() 取得屬性所有可能取值,自動排序節點名 → 如果:屬性值 → 子樹

本實現完整展示 ID3 從熵計算、增益選擇、遞迴建樹到列印的全流程,程式碼結構清晰,適合教學與二次開發基礎。掌握資訊論基礎與遞迴分治思想,即可靈活擴展至其他決策樹演算法。