模型訓練

端到端機器學習

Joshua Stapleton

Machine Learning Engineer

奧卡姆剃刀

  • 夠好且最簡潔的解釋最佳
  • 模型選擇傾向簡單

展示奧卡姆剃刀原則的範例圖片

端到端機器學習

建模選項

Logistic Regression

  • 找出類別間的決策邊界
  • sklearn.linear_model.LogisticRegression

Support Vector Classifier

  • 找出分隔類別的超平面
  • sklearn.svm.SVC

Decision Tree

  • 找出簡單「規則」來分類資料
  • sklearn.tree.DecisionTreeClassifier

Random Forest

  • 結合多棵決策樹
  • sklearn.ensemble.RandomForestClassifier
端到端機器學習

其他模型

深度學習模型

  • 神經網路
  • 卷積神經網路
  • 生成式預訓練轉換器(GPT)

K-Nearest Neighbors (KNN)

  • 監督式學習演算法

XGBoost

端到端機器學習

訓練原則

模型:

  • 使用已清理且已處理特徵的資料集
  • 從訓練資料學習模式
  • 目標是預測心臟病診斷的標的

原則:

  • 模型必須能泛化到未見資料(訓練集外)
  • 保留一部分資料,訓練完成後用來測試模型
  • 訓練/測試通常切分為 70/30 或 80/20
  • 可用 sklearn.model_selection.train_test_split
端到端機器學習

訓練模型

# 匯入必要的函式庫
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# 將資料分成訓練集與測試集(80:20) X_train, X_test, y_train, y_test = train_test_split(features, heart_disease_y, test_size=0.2, random_state=42)
# 定義模型 logistic_model = LogisticRegression(max_iter=200)
# 訓練模型 logistic_model.fit(X_train, y_train)
端到端機器學習

取得模型預測

# Jane Doe 的健康資料,例如:[年齡、膽固醇、血壓等]
jane_doe_data = [45, 230, 120, ...]

# 轉為 2D,因為 scikit-learn 需要 2D 類陣列輸入 jane_doe_data = jane_doe_data.reshape(1, -1)
# 使用模型預測 Jane 的心臟病診斷機率 jane_doe_probabilities = logistic_model.predict_proba(jane_doe_data) jane_doe_prediction = logistic_model.predict(jane_doe_data)
端到端機器學習

取得模型預測(續)

# 印出機率
print(f"Jane Doe's predicted probabilities: {jane_doe_probabilities[0]}")
print(f"Jane Doe's predicted health condition: {jane_doe_prediction[0]}")
Jane Doe's predicted health condition probabilities: [0.2 0.8]

Jane Doe's predicted health condition: 1
端到端機器學習

一起來練習吧!

端到端機器學習

Preparing Video For Download...