1. 準備資料
我們要比較模型預測 (afp_pred, alt_pred) 與實際值 (afp, alt) 的誤差。
在 PostgreSQL 中取出資料:
SELECT
record_date,
afp,
afp_pred,
alt,
alt_pred
FROM cancer_patients
WHERE patient_id = '001'
ORDER BY record_date;
2. 在 Python 中計算誤差
我們來用幾個常見的回歸模型評估指標:
● MAE (Mean Absolute Error):平均誤差絕對值
● MSE (Mean Squared Error):均方誤差
● MAPE (Mean Absolute Percentage Error):平均百分比誤差
import pandas as pd
import psycopg2
from sklearn.metrics import mean_absolute_error, mean_squared_error
conn = psycopg2.connect(
host="localhost",
database="cancer_db",
user="admin",
password="admin123"
)
df = pd.read_sql("SELECT * FROM cancer_patients WHERE patient_id='001'", conn)
mae_afp = mean_absolute_error(df["afp"], df["afp_pred"])
mse_afp = mean_squared_error(df["afp"], df["afp_pred"])
mape_afp = (abs((df["afp"] - df["afp_pred"]) / df["afp"])).mean() * 100
mae_alt = mean_absolute_error(df["alt"], df["alt_pred"])
mse_alt = mean_squared_error(df["alt"], df["alt_pred"])
mape_alt = (abs((df["alt"] - df["alt_pred"]) / df["alt"])).mean() * 100
print(f"AFP 模型誤差:MAE={mae_afp:.2f}, MAPE={mape_afp:.1f}%")
print(f"ALT 模型誤差:MAE={mae_alt:.2f}, MAPE={mape_alt:.1f}%")
這樣就能知道模型目前預測的準確程度,例如:
AFP 模型誤差:MAE=24.6,MAPE=5.4%
ALT 模型誤差:MAE=8.1,MAPE=6.2%
3. 儲存模型評估結果
我們可以將這些數據存進一個新表格,方便後續趨勢追蹤。
CREATE TABLE model_evaluation (
eval_date DATE,
mae_afp FLOAT,
mape_afp FLOAT,
mae_alt FLOAT,
mape_alt FLOAT
);
接著每次運行評估時新增一筆紀錄:
cursor = conn.cursor()
cursor.execute("""
INSERT INTO model_evaluation (eval_date, mae_afp, mape_afp, mae_alt, mape_alt)
VALUES (CURRENT_DATE, %s, %s, %s, %s);
""", (mae_afp, mape_afp, mae_alt, mape_alt))
conn.commit()
cursor.close()
4. 在 Grafana 建立「AI 模型表現 Dashboard」
(1) 折線圖:模型誤差趨勢
查詢語法:
SELECT
eval_date AS "time",
mape_afp AS "AFP MAPE (%)",
mape_alt AS "ALT MAPE (%)"
FROM model_evaluation
ORDER BY eval_date;
顯示模型誤差隨時間的變化(越低越好)。
(2) Stat Panel:模型最新表現
SELECT
mae_afp, mape_afp, mae_alt, mape_alt
FROM model_evaluation
ORDER BY eval_date DESC
LIMIT 1;
在 Grafana 顯示:
AFP 模型準確度:94.6%
ALT 模型準確度:93.8%
5. 建立自我回饋流程
這是進階概念:
可以讓 AI 模型根據誤差「自我修正」或「自動再訓練」。
(A) 簡單版本:自動提醒再訓練
當 MAPE > 10% 時,自動觸發提醒:
if mape_afp > 10 or mape_alt > 10:
print(" 模型誤差上升,建議重新訓練!")
或發送通知(Email / Slack / Line)給系統管理者。
(B) 進階版本:自動再訓練
如果你有儲存過去病人資料,可以自動執行再訓練流程:
import joblib
from sklearn.linear_model import LinearRegression
X = df[["alt", "afp_pred"]] # 或更多特徵
y = df["afp"]
model = LinearRegression()
model.fit(X, y)
joblib.dump(model, "updated_afp_model.pkl")
print(" 模型已自動再訓練!")
然後自動更新系統使用的新模型,實現 AI 自我優化循環。
6. 成果展示
到這裡,你的系統整體架構如下
[病人資料更新]
↓
[AI 預測模型產生結果]
↓
[誤差評估 (MSE/MAE/MAPE)]
↓
[Grafana 可視化模型表現]
↓
[誤差高 → 通知 / 自動再訓練]
● 具備模型監控
● 能追蹤準確率變化
● 具備回饋學習潛力