{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "304cdb1c",
   "metadata": {},
   "source": [
    "# 第 4 章　迴歸分析：線性、多項式與邏輯迴歸\n",
    "\n",
    "「醫學生的機器學習入門」配套 notebook。對應網站章節：`docs/chapters/04-regression.md`。\n",
    "\n",
    "- 在 Colab 開啟時請選「執行階段 → 全部執行」。所需套件（numpy、pandas、scikit-learn、statsmodels、matplotlib）Colab 皆已預裝，不需要另外安裝。\n",
    "- 資料集皆為 scikit-learn 內建（sklearn diabetes、Breast Cancer Wisconsin Diagnostic），**不需網路下載**。\n",
    "- 圖上標籤用英文，避免 Colab 沒有中文字型而顯示成方塊。\n",
    "- 本 notebook 的醫學資料僅供學習，不構成臨床建議。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a62fa6e8",
   "metadata": {},
   "source": [
    "## 0. 環境與版本\n",
    "先匯入套件並印出版本。本教材以 Colab 現況（scikit-learn 1.6）為底線，也在較新版本測試過。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "725e5b0c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:11.304786Z",
     "iopub.status.busy": "2026-09-29T20:03:11.304662Z",
     "iopub.status.idle": "2026-09-29T20:03:12.105421Z",
     "shell.execute_reply": "2026-09-29T20:03:12.105067Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Python 3.12.2\n",
      "numpy 2.1.3 | pandas 2.2.3 | scikit-learn 1.6.1\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import sklearn\n",
    "\n",
    "print(\"Python\", sys.version.split()[0])\n",
    "print(\"numpy\", np.__version__, \"| pandas\", pd.__version__, \"| scikit-learn\", sklearn.__version__)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4874c6a4",
   "metadata": {},
   "source": [
    "## 1. 載入 sklearn diabetes 資料\n",
    "442 位糖尿病病人，10 個基線特徵（年齡、性別、BMI、血壓、6 項血清指標），目標 `target` 是一年後的疾病進展指標（連續值，數字愈大代表惡化愈多）。`scaled=False` 保留原始單位，係數才好解讀。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c82af738",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.106627Z",
     "iopub.status.busy": "2026-09-29T20:03:12.106527Z",
     "iopub.status.idle": "2026-09-29T20:03:12.158698Z",
     "shell.execute_reply": "2026-09-29T20:03:12.158327Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(442, 11)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age</th>\n",
       "      <th>sex</th>\n",
       "      <th>bmi</th>\n",
       "      <th>bp</th>\n",
       "      <th>s1</th>\n",
       "      <th>s2</th>\n",
       "      <th>s3</th>\n",
       "      <th>s4</th>\n",
       "      <th>s5</th>\n",
       "      <th>s6</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>59.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>32.1</td>\n",
       "      <td>101.0</td>\n",
       "      <td>157.0</td>\n",
       "      <td>93.2</td>\n",
       "      <td>38.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.8598</td>\n",
       "      <td>87.0</td>\n",
       "      <td>151.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>48.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>21.6</td>\n",
       "      <td>87.0</td>\n",
       "      <td>183.0</td>\n",
       "      <td>103.2</td>\n",
       "      <td>70.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.8918</td>\n",
       "      <td>69.0</td>\n",
       "      <td>75.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>72.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>30.5</td>\n",
       "      <td>93.0</td>\n",
       "      <td>156.0</td>\n",
       "      <td>93.6</td>\n",
       "      <td>41.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.6728</td>\n",
       "      <td>85.0</td>\n",
       "      <td>141.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>24.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>25.3</td>\n",
       "      <td>84.0</td>\n",
       "      <td>198.0</td>\n",
       "      <td>131.4</td>\n",
       "      <td>40.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4.8903</td>\n",
       "      <td>89.0</td>\n",
       "      <td>206.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>50.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>101.0</td>\n",
       "      <td>192.0</td>\n",
       "      <td>125.4</td>\n",
       "      <td>52.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.2905</td>\n",
       "      <td>80.0</td>\n",
       "      <td>135.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    age  sex   bmi     bp     s1     s2    s3   s4      s5    s6  target\n",
       "0  59.0  2.0  32.1  101.0  157.0   93.2  38.0  4.0  4.8598  87.0   151.0\n",
       "1  48.0  1.0  21.6   87.0  183.0  103.2  70.0  3.0  3.8918  69.0    75.0\n",
       "2  72.0  2.0  30.5   93.0  156.0   93.6  41.0  4.0  4.6728  85.0   141.0\n",
       "3  24.0  1.0  25.3   84.0  198.0  131.4  40.0  5.0  4.8903  89.0   206.0\n",
       "4  50.0  1.0  23.0  101.0  192.0  125.4  52.0  4.0  4.2905  80.0   135.0"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.datasets import load_diabetes\n",
    "\n",
    "df = load_diabetes(as_frame=True, scaled=False).frame\n",
    "print(df.shape)\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a14fd98",
   "metadata": {},
   "source": [
    "## 2. 簡單線性迴歸：只用 BMI\n",
    "先切出訓練集與測試集（75%／25%），只用訓練集找最小平方直線。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "e46fc788",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.159681Z",
     "iopub.status.busy": "2026-09-29T20:03:12.159591Z",
     "iopub.status.idle": "2026-09-29T20:03:12.251355Z",
     "shell.execute_reply": "2026-09-29T20:03:12.250849Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "slope = 10.51, intercept = -125.2\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "X = df[[\"bmi\"]]\n",
    "y = df[\"target\"]\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)\n",
    "\n",
    "lin = LinearRegression().fit(X_train, y_train)\n",
    "print(f\"slope = {lin.coef_[0]:.2f}, intercept = {lin.intercept_:.1f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "58e8bed6",
   "metadata": {},
   "source": [
    "斜率約 10.5：在這份資料裡，BMI 每高 1 kg/m²，**模型預測的**一年後進展指標平均高約 10.5。這是關聯，不是因果。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "228572df",
   "metadata": {},
   "source": [
    "## 3. 用測試集評估：MSE、RMSE、R²"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c7945f87",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.252531Z",
     "iopub.status.busy": "2026-09-29T20:03:12.252435Z",
     "iopub.status.idle": "2026-09-29T20:03:12.255131Z",
     "shell.execute_reply": "2026-09-29T20:03:12.254694Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test MSE = 3776, RMSE = 61.4, R2 = 0.317\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error, r2_score\n",
    "\n",
    "pred = lin.predict(X_test)\n",
    "mse = mean_squared_error(y_test, pred)\n",
    "print(f\"Test MSE = {mse:.0f}, RMSE = {np.sqrt(mse):.1f}, R2 = {r2_score(y_test, pred):.3f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "766b8f0b",
   "metadata": {},
   "source": [
    "RMSE 約 61：預測值平均和實際值差 61 個單位左右。R² 約 0.32：BMI 單獨只能解釋測試集約三成的變異。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "419d902c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.256229Z",
     "iopub.status.busy": "2026-09-29T20:03:12.256159Z",
     "iopub.status.idle": "2026-09-29T20:03:12.305290Z",
     "shell.execute_reply": "2026-09-29T20:03:12.304894Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xs = pd.DataFrame({\"bmi\": np.linspace(X[\"bmi\"].min(), X[\"bmi\"].max(), 100)})\n",
    "plt.figure(figsize=(6, 4))\n",
    "plt.scatter(X_train[\"bmi\"], y_train, s=12, alpha=0.5, label=\"train\")\n",
    "plt.scatter(X_test[\"bmi\"], y_test, s=12, alpha=0.5, label=\"test\")\n",
    "plt.plot(xs[\"bmi\"], lin.predict(xs), color=\"black\", lw=2, label=\"least-squares line\")\n",
    "plt.xlabel(\"BMI (kg/m^2)\")\n",
    "plt.ylabel(\"Disease progression (1 year)\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4f090f0e",
   "metadata": {},
   "source": [
    "## 4. 多元線性迴歸：放進全部 10 個特徵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "8f57754b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.306469Z",
     "iopub.status.busy": "2026-09-29T20:03:12.306398Z",
     "iopub.status.idle": "2026-09-29T20:03:12.311912Z",
     "shell.execute_reply": "2026-09-29T20:03:12.311651Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train R2 = 0.519, Test R2 = 0.485\n",
      "Test RMSE = 53.4\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "age     0.17\n",
       "sex   -23.07\n",
       "bmi     5.73\n",
       "bp      1.31\n",
       "s1     -1.26\n",
       "s2      0.80\n",
       "s3      0.43\n",
       "s4      9.94\n",
       "s5     63.43\n",
       "s6      0.11\n",
       "dtype: float64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_all = df.drop(columns=\"target\")\n",
    "Xtr, Xte, ytr, yte = train_test_split(X_all, y, test_size=0.25, random_state=42)\n",
    "\n",
    "multi = LinearRegression().fit(Xtr, ytr)\n",
    "pred_m = multi.predict(Xte)\n",
    "print(f\"Train R2 = {r2_score(ytr, multi.predict(Xtr)):.3f}, Test R2 = {r2_score(yte, pred_m):.3f}\")\n",
    "print(f\"Test RMSE = {np.sqrt(mean_squared_error(yte, pred_m)):.1f}\")\n",
    "pd.Series(multi.coef_, index=X_all.columns).round(2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "056be3fc",
   "metadata": {},
   "source": [
    "測試集 R² 從 0.32 升到約 0.48。注意每個係數的單位不同（`s5` 是 log 轉換後的三酸甘油酯，範圍只有 3–6，所以係數看起來很大），**係數大小不能直接比較重要性**。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0750e7d7",
   "metadata": {},
   "source": [
    "## 5. 自己寫梯度下降\n",
    "把 BMI 標準化後，從斜率 0、截距 0 出發，每一步沿著 MSE 下降最快的方向走一小步。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "a4fdc3c0",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.313039Z",
     "iopub.status.busy": "2026-09-29T20:03:12.312966Z",
     "iopub.status.idle": "2026-09-29T20:03:12.316467Z",
     "shell.execute_reply": "2026-09-29T20:03:12.316159Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "gradient descent slope (original BMI units) = 10.51\n",
      "LinearRegression slope                       = 10.51\n"
     ]
    }
   ],
   "source": [
    "x = X_train[\"bmi\"].to_numpy()\n",
    "x_std = (x - x.mean()) / x.std()\n",
    "yv = y_train.to_numpy()\n",
    "\n",
    "w, b = 0.0, 0.0\n",
    "learning_rate = 0.1\n",
    "losses = []\n",
    "for step in range(200):\n",
    "    error = (w * x_std + b) - yv\n",
    "    losses.append(np.mean(error ** 2))\n",
    "    w -= learning_rate * 2 * np.mean(error * x_std)   # d(MSE)/dw\n",
    "    b -= learning_rate * 2 * np.mean(error)           # d(MSE)/db\n",
    "\n",
    "print(f\"gradient descent slope (original BMI units) = {w / x.std():.2f}\")\n",
    "print(f\"LinearRegression slope                       = {lin.coef_[0]:.2f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0ffb2b87",
   "metadata": {},
   "source": [
    "兩個斜率一樣：梯度下降一步一步走到的，就是最小平方公式直接算出的答案。下圖是每一步的 MSE。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "cda2c48f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.317629Z",
     "iopub.status.busy": "2026-09-29T20:03:12.317563Z",
     "iopub.status.idle": "2026-09-29T20:03:12.416690Z",
     "shell.execute_reply": "2026-09-29T20:03:12.416386Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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MV1HntwmPelrl3bteq1ds/VXph7oNelXx9DQJGJtgtATqXY/9XQ51kRsrTXTrsTabFjWqnadhyfhWU/WekLUsUmKO1E98cQTsmjRIrNcRdH9Q7th/8///I9cfPHFZp5aA6V5Vzruj64LXQc6nXYd1m7jekLTk52uh9LU/pxp2pVdy6z7h3bN1sD9/fff9ya2nmrORlnWgWd76ZADuk41aNB9Wb+bTz75pKnp0/1Ag2Pdt3QeOsaT7lP63T0TOTN6PNGEeR0pWpdHv3Oa4K7jVOn68m2i0vLqD5+CtT26LMozJpE2V+r3QBUcMVwDLN2ftAkU5ayUvZ6AM2Lr1q3WsGHDrLPOOsuKioqyKleubLqTDh061HRF9qVds7X7rz/JyclWt27drJiYGKt27dqme+369etNt0jtmuvr3//+t+k2rV1jW7VqZc2YMcPMu6Su2Wrfvn2my3Djxo2tSpUqmS6yXbt2tV5//fVCXUm166YvT7dk3/KkpaWZrtXaVdhf9/CCtLvtfffdZ7o267ro1auXtXv37lMu62uvvWZdccUVZn66Plq0aGGNGjXKdJ/3pd3btYt2nTp1zHTavVXn7dv1XLs8P/zww2ZbRkREmO1w6aWXWs8995yVlZWVbx1oN96CCi5DTk6Ode+995rP1C72pTl8XXjhhaZbenFds323U48ePUx3bN33dNkHDhxorVq1yjvNL7/8YvXp08dsH53ulltu8Xa39S2rp2uzDidQkG5T7RJckHa71ltJXbP9dZ33t7/+/PPP5nP0O6TrTLt9676u81yxYkWx66248pd2HXi66Dds2NB05S+4zrUsl19+udlv9abfc92HNm/ebJ1Jubm51vjx48360/1U1+97771XaDrPUBAF95viuob70uEfdP5vvvlmhS+TG4XoP+UdIAFAMNBfyTpUvdayFDcQm1toc5COBKzd77VWBWd23WuNlua4lXcvKYgQzABwLE2Q1p5a2tyizR1uomOkFBwT5qKLLjKJ4JogjzNHm7C0eU2vsO176QSUH3JmADiW5lmV1PPKqTTRVsez0dwqzanSy15oAqvmguDM0nwhrR1ExSGYAQAH0iRp7XaswYvWxmjStw50p13uAaehmQkAANga48wAAABbI5gBAAC2Rs5MBfek+O2338yAUFxYDACA0tORY/RCw3qNrILX4CuIYKYCaSDT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",
      "text/plain": [
       "<Figure size 600x350 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(6, 3.5))\n",
    "plt.plot(losses)\n",
    "plt.yscale(\"log\")\n",
    "plt.xlabel(\"step\")\n",
    "plt.ylabel(\"MSE\")\n",
    "plt.title(\"Gradient descent (learning rate = 0.1)\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "61df1e0b",
   "metadata": {},
   "source": [
    "## 6. 預測 vs 解釋：statsmodels 的 OLS\n",
    "同樣是線性迴歸，statsmodels 會給係數的 95% 信賴區間與 p 值，這是統計推論（解釋）的工具。這裡用全部 442 人。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "a49b871f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.417862Z",
     "iopub.status.busy": "2026-09-29T20:03:12.417789Z",
     "iopub.status.idle": "2026-09-29T20:03:12.668287Z",
     "shell.execute_reply": "2026-09-29T20:03:12.667869Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R2 = 0.518\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>coef</th>\n",
       "      <th>CI_low</th>\n",
       "      <th>CI_high</th>\n",
       "      <th>p</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>const</th>\n",
       "      <td>-334.567</td>\n",
       "      <td>-467.148</td>\n",
       "      <td>-201.986</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>age</th>\n",
       "      <td>-0.036</td>\n",
       "      <td>-0.463</td>\n",
       "      <td>0.390</td>\n",
       "      <td>0.867</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <td>-22.860</td>\n",
       "      <td>-34.330</td>\n",
       "      <td>-11.389</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>bmi</th>\n",
       "      <td>5.603</td>\n",
       "      <td>4.194</td>\n",
       "      <td>7.012</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>bp</th>\n",
       "      <td>1.117</td>\n",
       "      <td>0.674</td>\n",
       "      <td>1.560</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>s1</th>\n",
       "      <td>-1.090</td>\n",
       "      <td>-2.217</td>\n",
       "      <td>0.037</td>\n",
       "      <td>0.058</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>s2</th>\n",
       "      <td>0.746</td>\n",
       "      <td>-0.297</td>\n",
       "      <td>1.790</td>\n",
       "      <td>0.160</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>s3</th>\n",
       "      <td>0.372</td>\n",
       "      <td>-1.166</td>\n",
       "      <td>1.910</td>\n",
       "      <td>0.635</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>s4</th>\n",
       "      <td>6.534</td>\n",
       "      <td>-5.178</td>\n",
       "      <td>18.245</td>\n",
       "      <td>0.273</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>s5</th>\n",
       "      <td>68.483</td>\n",
       "      <td>37.685</td>\n",
       "      <td>99.282</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>s6</th>\n",
       "      <td>0.280</td>\n",
       "      <td>-0.257</td>\n",
       "      <td>0.817</td>\n",
       "      <td>0.306</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          coef   CI_low  CI_high      p\n",
       "const -334.567 -467.148 -201.986  0.000\n",
       "age     -0.036   -0.463    0.390  0.867\n",
       "sex    -22.860  -34.330  -11.389  0.000\n",
       "bmi      5.603    4.194    7.012  0.000\n",
       "bp       1.117    0.674    1.560  0.000\n",
       "s1      -1.090   -2.217    0.037  0.058\n",
       "s2       0.746   -0.297    1.790  0.160\n",
       "s3       0.372   -1.166    1.910  0.635\n",
       "s4       6.534   -5.178   18.245  0.273\n",
       "s5      68.483   37.685   99.282  0.000\n",
       "s6       0.280   -0.257    0.817  0.306"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import statsmodels.api as sm\n",
    "\n",
    "ols = sm.OLS(y, sm.add_constant(X_all)).fit()\n",
    "ci = ols.conf_int()\n",
    "table = pd.DataFrame({\"coef\": ols.params, \"CI_low\": ci[0], \"CI_high\": ci[1], \"p\": ols.pvalues})\n",
    "print(f\"R2 = {ols.rsquared:.3f}\")\n",
    "table.round(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bd7e48c9",
   "metadata": {},
   "source": [
    "`age` 的 p 值約 0.87：校正其他變數後，年齡與進展指標的關聯**未達統計顯著**（不等於「年齡沒有影響」）。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e8e59b72",
   "metadata": {},
   "source": [
    "## 7. 多項式迴歸與過擬合\n",
    "用模擬的劑量反應資料（真實曲線會飽和），比較 1、3、15 次方多項式。先把劑量縮放到 [-1, 1]，高次方才不會數值爆掉。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "6d8a067a",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.669304Z",
     "iopub.status.busy": "2026-09-29T20:03:12.669207Z",
     "iopub.status.idle": "2026-09-29T20:03:12.675663Z",
     "shell.execute_reply": "2026-09-29T20:03:12.675270Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "degree  1: train MSE =    68.4, test MSE =    94.4\n",
      "degree  3: train MSE =    30.3, test MSE =    69.4\n",
      "degree 15: train MSE =     7.0, test MSE =  1472.8\n"
     ]
    }
   ],
   "source": [
    "from sklearn.pipeline import make_pipeline\n",
    "from sklearn.preprocessing import MinMaxScaler, PolynomialFeatures\n",
    "\n",
    "def true_curve(dose):\n",
    "    return 100 * dose / (2 + dose)\n",
    "\n",
    "rng = np.random.default_rng(42)\n",
    "x_tr = np.sort(rng.uniform(0, 10, 25))\n",
    "y_tr = true_curve(x_tr) + rng.normal(0, 8, 25)\n",
    "x_te = rng.uniform(x_tr.min(), x_tr.max(), 200)\n",
    "y_te = true_curve(x_te) + rng.normal(0, 8, 200)\n",
    "\n",
    "models = {}\n",
    "for degree in [1, 3, 15]:\n",
    "    model = make_pipeline(MinMaxScaler(feature_range=(-1, 1)),\n",
    "                          PolynomialFeatures(degree),\n",
    "                          LinearRegression())\n",
    "    model.fit(x_tr.reshape(-1, 1), y_tr)\n",
    "    models[degree] = model\n",
    "    train_mse = mean_squared_error(y_tr, model.predict(x_tr.reshape(-1, 1)))\n",
    "    test_mse = mean_squared_error(y_te, model.predict(x_te.reshape(-1, 1)))\n",
    "    print(f\"degree {degree:2d}: train MSE = {train_mse:7.1f}, test MSE = {test_mse:7.1f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4abd9c26",
   "metadata": {},
   "source": [
    "15 次方的訓練誤差最小，測試誤差卻暴增：它背下了訓練集的雜訊。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "345caad0",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.676788Z",
     "iopub.status.busy": "2026-09-29T20:03:12.676732Z",
     "iopub.status.idle": "2026-09-29T20:03:12.751230Z",
     "shell.execute_reply": "2026-09-29T20:03:12.750811Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/MAAAFjCAYAAABxBVvJAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAuS5JREFUeJzsnQeYU2X2xt+06b3SOwgooKIIIjZQ1LUAupbVta66tl107Q2xt7X3vv7V1VUBexexoQhSFellGJjea+r/Od8kmZtMJpM6k5l5f88T5t6b5OYmQ9455ztN53A4HCCEEEIIIYQQQki3Qd/VF0AIIYQQQgghhJDgoDNPCCGEEEIIIYR0M+jME0IIIYQQQggh3Qw684QQQgghhBBCSDeDzjwhhBBCCCGEENLNoDNPCCGEEEIIIYR0M+jME0IIIYQQQggh3Qw684QQQgghhBBCSDeDzjwhhBBCCCGEENLNoDNPui233XYbdDpdV18GIYTEHNRHQgihFpKeD515QmKczz//HBdccAH22WcfGAwGDBkypKsviRBCYoK7774bkydPRm5uLhISEjBy5EjMnTsXpaWlXX1phBASc7bi9u3bVSDM1+3NN9/kb6wbYuzqCyCE+OeNN97AW2+9hf333x/9+vXjx0UIIU5WrFiBfffdF6effjpSU1Oxfv16PP/88/joo4+watUqJCcn87MihPR4grUVzzjjDBx33HEex6ZMmRLFKyTRgs48IUHS1NSEuLg46PX6Tos8iXFqMplw/PHHY926dZ3yuoQQEuv6+O6777Y5JgbpKaecgg8++EA5+YQQ0tnEuq0oTv9ZZ53VKddGogvT7Em34Pvvv8eBBx6o0iiHDx+OZ599tt3Hvvbaa5g4cSISExORlZWljLmCgoI2j3vyyScxbNgw9bhJkybhu+++w+GHH65uLr755ht36tHNN9+M/v37IykpCTU1Ner+n3/+GccccwzS09PV8cMOOww//PBDm9cqLCzE+eefj/z8fMTHx2PvvffGSy+9FNB7lxVWEWdCCKE+dowrvbSqqor/YQjpRdBWDM5WrK+vh9lsjtrvg3QOjMyTmGft2rU4+uijVU2kNHWyWq2YN2+ecoy9ueuuu3DLLbfg1FNPxd/+9jdVN/n444/j0EMPxcqVK5GRkaEe9/TTT+Pyyy/HtGnTcOWVV6oaolmzZiEzMxMDBgxoc9477rhDrbBeffXVaG5uVttff/01jj32WLVwINcjq68vv/wyjjzySLUwIAsEQnFxsarplEUBeU15H5988omqbZJFAanvJIQQ6mNo+uhwOFBeXq7+NmzatAnXX3+9qhnVLswSQno2tBWDY/78+bjmmmuUbSp2rNjPYmuTboiDkBhn1qxZjoSEBMeOHTvcx37//XeHwWBwaP8Lb9++XR276667PJ6/du1ah9FodB9vbm52ZGdnOw488ECHxWJxP+6VV15R5zvssMPcxxYvXqyODRs2zNHQ0OA+brfbHSNHjnTMnDlTbbuQxwwdOtRx1FFHuY9dcMEFjr59+zrKyso8ruv00093pKene5y3I/70pz85Bg8eHPDjCSE9G+qjw7Fnzx6l067bgAEDHG+99VZX/2oIIZ0ItTAwW1Fs6aOPPtrx9NNPO95//33HI4884hg0aJBDr9c7Pvzww077fZHIwTR7EtPYbDZ89tlnKmo+aNAg9/ExY8Zg5syZHo9dsGAB7Ha7isqXlZW5b3369FEdjhcvXqwet3z5chXFufDCC2E0tiannHnmmSoy74tzzjlHpeO7kMZKEgH6y1/+os7lei1JWZo+fTq+/fZbdS0SMZKazhNOOEFta69Lrr+6uhq//vprFD45QkhPh/rYgpRTffHFF6pG/vbbb0dOTg7q6uq6+LdDCOksqIWBI7a02NV///vflW36z3/+U2WuSlbUv/71ryj+lki0YJo9iWkkTb6xsVE5497stdde+Pjjj9374lyLw+zrsYKr7nzHjh3q54gRIzzuF8e+vVEeQ4cO9diX13I5+e0hjrrFYlF1m88995y6+aKkpKTdcxBCSHtQH1uQsqcZM2aobWn8JAuqU6dORV5entonhPRsqIXhIQui5513Hu69917s2rXLZ7kpiV3ozJMeg0TCpfZH6i2lXtKblJSUkM+tjcq7Xkt44IEH1FgkX8jrSdRekI6h7Tn+48ePD/m6CCEkEHqTPh588MHo27cvXn/9dTrzhJBeq4XBMHDgQPWzoqKCznw3g848iWkk7UfE0RUJ17JhwwaPfelyL5F5iaKPGjWq3XMOHjxY/dy8eTOOOOII93FpniSN8AIRTHktIS0tzR0Rau/6ZfaxpID5exwhhAQL9dH/WCjJjiKE9HyoheGzdetW92dJuhesmScxjayaSm35okWLsHPn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",
      "text/plain": [
       "<Figure size 1200x350 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "grid = np.linspace(x_tr.min(), x_tr.max(), 400).reshape(-1, 1)\n",
    "fig, axes = plt.subplots(1, 3, figsize=(12, 3.5), sharey=True)\n",
    "for ax, degree in zip(axes, [1, 3, 15]):\n",
    "    ax.scatter(x_te, y_te, s=6, alpha=0.3, label=\"test\")\n",
    "    ax.scatter(x_tr, y_tr, s=18, color=\"black\", label=\"train\")\n",
    "    ax.plot(grid, models[degree].predict(grid), color=\"tab:red\", lw=2)\n",
    "    ax.set_ylim(-20, 120)\n",
    "    ax.set_title(f\"degree {degree}\")\n",
    "    ax.set_xlabel(\"dose\")\n",
    "axes[0].set_ylabel(\"response\")\n",
    "axes[0].legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e0884010",
   "metadata": {},
   "source": [
    "## 8. 正則化：替 15 次方踩剎車\n",
    "Ridge 迴歸在 MSE 之外加上「係數平方和」的懲罰，讓係數不能亂長。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "51164e27",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.752332Z",
     "iopub.status.busy": "2026-09-29T20:03:12.752250Z",
     "iopub.status.idle": "2026-09-29T20:03:12.760666Z",
     "shell.execute_reply": "2026-09-29T20:03:12.760333Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Ridge alpha = 0.001: test MSE = 80.4\n",
      "Ridge alpha = 0.01 : test MSE = 79.9\n",
      "Ridge alpha = 0.1  : test MSE = 80.9\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import Ridge\n",
    "\n",
    "for alpha in [0.001, 0.01, 0.1]:\n",
    "    ridge = make_pipeline(MinMaxScaler(feature_range=(-1, 1)),\n",
    "                          PolynomialFeatures(15),\n",
    "                          Ridge(alpha=alpha))\n",
    "    ridge.fit(x_tr.reshape(-1, 1), y_tr)\n",
    "    test_mse = mean_squared_error(y_te, ridge.predict(x_te.reshape(-1, 1)))\n",
    "    print(f\"Ridge alpha = {alpha:<5}: test MSE = {test_mse:.1f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "143d0399",
   "metadata": {},
   "source": [
    "## 9. 邏輯迴歸：WDBC 乳癌良惡性\n",
    "sklearn 的編碼是 0 = 惡性、1 = 良性，和醫學習慣相反；這裡翻轉成 **1 = 惡性**，讓「陽性」代表惡性。邏輯迴歸前一律先標準化（放進 Pipeline）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "0fe7a0b7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.761732Z",
     "iopub.status.busy": "2026-09-29T20:03:12.761672Z",
     "iopub.status.idle": "2026-09-29T20:03:12.771169Z",
     "shell.execute_reply": "2026-09-29T20:03:12.770854Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "first 5 probabilities: [0.999 0.004 1.    0.    0.035]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import load_breast_cancer\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "bc = load_breast_cancer(as_frame=True)\n",
    "Xb = bc.data\n",
    "yb = 1 - bc.target   # 1 = malignant, 0 = benign\n",
    "\n",
    "Xb_tr, Xb_te, yb_tr, yb_te = train_test_split(\n",
    "    Xb, yb, test_size=0.25, stratify=yb, random_state=42)\n",
    "\n",
    "clf = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))\n",
    "clf.fit(Xb_tr, yb_tr)\n",
    "proba = clf.predict_proba(Xb_te)[:, 1]   # predicted probability of malignancy\n",
    "print(\"first 5 probabilities:\", proba[:5].round(3))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "22bdf158",
   "metadata": {},
   "source": [
    "## 10. 閾值與混淆矩陣\n",
    "同一組機率，切在不同閾值，敏感度與特異度就會此消彼長。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "eb807393",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.772363Z",
     "iopub.status.busy": "2026-09-29T20:03:12.772305Z",
     "iopub.status.idle": "2026-09-29T20:03:12.774946Z",
     "shell.execute_reply": "2026-09-29T20:03:12.774567Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "threshold 0.5: TP=49 FN=4 FP=1 TN=89 | sensitivity=0.925, specificity=0.989\n",
      "threshold 0.2: TP=51 FN=2 FP=3 TN=87 | sensitivity=0.962, specificity=0.967\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "for threshold in [0.5, 0.2]:\n",
    "    pred_label = (proba >= threshold).astype(int)\n",
    "    tn, fp, fn, tp = confusion_matrix(yb_te, pred_label).ravel()\n",
    "    print(f\"threshold {threshold}: TP={tp} FN={fn} FP={fp} TN={tn} | \"\n",
    "          f\"sensitivity={tp / (tp + fn):.3f}, specificity={tn / (tn + fp):.3f}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "22e51def",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.775841Z",
     "iopub.status.busy": "2026-09-29T20:03:12.775782Z",
     "iopub.status.idle": "2026-09-29T20:03:12.809365Z",
     "shell.execute_reply": "2026-09-29T20:03:12.808982Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyQAAAFUCAYAAADVt/jsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAANphJREFUeJzt3QmcjXX///HPmX1hZuz7vitb/JLKUoRbC7mTuslWKlt2pZIQukMqtxZkvUm6ya3uu9wKUUm2SmUf26DIPpgxy/V/fL7+5zTDMMOc43Ku83o+HidzrrN95zrT+Zz39V0ul2VZlgAAAACADYLseFEAAAAAUAQSAAAAALYhkAAAAACwDYEEAAAAgG0IJAAAAABsQyABAAAAYBsCCQAAAADbEEgAAAAA2IZAAgAAAMA2BBI4isvlkt69e4tT27Ny5UrznPpvdpo0aWIuAIAbG7XrT9SuwEQggd/59ttv5eWXX5YTJ07Y3RRkYcuWLdKyZUvJkyeP5M+fXx577DE5cuRIjvZV2bJlTWG++PL000+zrwH4NWqXM2vX0aNHZdy4cdKoUSMpVKiQxMXFyW233SYffvjhdWm3U4TY3QDgWj7UR4wYIV26dDH/4+PGkZCQYD6UY2NjZcyYMZKYmCjjx4+XzZs3y/fffy9hYWHZPkft2rVl4MCBmbZVrlzZh60GAN+jdjmzdq1Zs0ZeeOEFadWqlbz44osSEhIiCxculEceeUR+/fVX830F2SOQAP/fmTNnJDo6mv2RC/pBrvtxw4YNUrp0abPt1ltvlXvuuUdmzpwpTz75ZLbPUaJECenYsSPvAwDkALXL3tp10003yY4dO6RMmTKebT179pRmzZrJ3//+dxkyZAjfLXKAIVvwKzpUa/DgwebncuXKeYb07NmzJ9P9Fi9eLDfffLOEh4ebD4vPP//8kufRx+nRi7/97W+SL18+ufPOOz23//Of/5S6detKZGSk6brVIx379+/P9Bz6AfTXv/5VihYtKhEREVKyZElzv5MnT17S7uzaozZt2iR/+ctfJCYmxnQZN23aVL777rsc7ZcpU6ZIhQoVTHv1Q3T16tViBz0qdN9993k+0JV+KGsPx4IFC3L8POfPnzfFAQCcgNrl3Nql30UyhhGl3y/atGkjycnJEh8f77N2Owk9JPArbdu2le3bt8sHH3wgEydOlIIFC5rtOm7T7euvv5ZFixaZIxR58+aVt956ywSHffv2SYECBTI9X7t27aRSpUrm6IhlWWbb6NGjZdiwYfLwww/LE088YcaQTpo0yXTnamjQYWL6hblFixbmw6ZPnz4mlBw4cEA+/fRTM7dFu32vpj2//PKLNGzY0IQRPZoSGhoq7733npnc99VXX0n9+vUvu0/ef/99eeqpp+T222+Xfv36mQ+/Bx54wASpUqVKZbtPNUClpKRkez8NXRqULkd//8OHD0u9evUuuU0LzX//+1/JieXLl0tUVJSkpaWZD/n+/ftL3759c/RYALgRUbucX7su9ttvv5l/3d9TkA0L8DPjxo3T5GDt3r37ktt0e1hYmLVz507Pth9//NFsnzRpkmfb8OHDzbZHH3000+P37NljBQcHW6NHj860ffPmzVZISIhn+6ZNm8zjP/rooyu2NaftadOmjbnfrl27PNsOHjxo5c2b12rUqJFn24oVK8xj9V91/vx5q3Dhwlbt2rWt5ORkz/2mTJli7te4cWMrO3ofvW92l86dO1/xedatW2fuN3v27EtuGzx4sLktKSnpis9x//33W3//+9+txYsXW++//77VsGFD87ghQ4Zk+3sAwI2M2uXc2nWxo0ePmt9Paxhyhh4SOI52s2oXsFvNmjVNz0NW3aYXr96kPRnp6emmd+SPP/7wbNceEO1JWbFihTz//POeHpClS5eaiWx6RP9a26M9Af/73/9M92758uU99ytWrJgZTjZ16lQ5deqUeczF1q9fb47sjBw5MtOkO53w7x7alp0JEybI8ePHs71f8eLFr3j7uXPnzL86LC2rI1Tu+2R1u9uSJUsyXe/atasZxvb666+bnigdFgcATkTt8t/alZF+h+jQoYMZLaGjK5AzBBI4TsYxoG46RySrDy4d+3nxvBDt2NDwkRUdSuV+3IABA8wX5blz55rhVtrVrJOxMw7Xykl7dEjY2bNnpUqVKpfcr1q1aubDTeev6NyTi+3du9f8e3F7tZ0Zw82V6FwZb9AxwEqHsV0sKSkp031ySsfh6pAtDX567hUmuwNwKmqXM2qXHjzTeaKzZ8+WWrVqeaWNgYBAAscJDg7Ocrt7jkhGF3/I6Jd//RL82WefZfk8Gceh6tEZPZrz73//2/RwPPPMMzJ27FgzET3jkfyraY8djh07ZubEZEf31cVhKyPt0VGHDh265DbdpuOCc3qEKSP3WGJtJwA4FbXL/2uXLvH79ttvy6uvvmrOY4KcI5DA72hg8BUdWqVBQXtAcnLuixo1apiLrj2ua8zfcccd8u6778orr7yS49fUCfk65Gvbtm2X3LZ161YJCgq67AQ/98oe2rNz9913e7brRL/du3fn6OiMTrbUifPZ6dy5s1n+8ErL9ervosPILqbruOv5Ra6Fe2hbxoULAMDfULucXbsmT55sVlPTCfrPPvtsjh6DPxFI4Hfc5wrxxZna9QNu6NCh5iiHLv2bsYBoUNEjMroyls7p0BChJ0By02Ci4SGrbt/sjoo1b97c9LTo8sV6tnL1+++/y7x588xyxFnNH1G6Koh+kGoI0vkW7nkk+uGb0/3jrXG4SlcPmzVrlhli5g5RX375pVkZTYdeZSw6u3btMket3EendN/q9YxHCfV+eqRJf6+77rorR78PANyIqF3OrF1Kz8quoyR07ogO5cbVI5DA77jHjeqZUfW8Hzrm9P777/fKiYe0h0R7NzSUaDjQiea6VK8esfn444/NyZEGDRpklqbt3bu3WTZYe1JSU1Nlzpw55su0frBdLX3NZcuWmfChywNr0NFlfzXcvPbaa5d9nP7u+lhdOlGPMrVv3960dcaMGdd9HK7SCf8fffSRCQ+6VK+e7XbcuHEmrGnRybjMos6PyXjkSie06+/y0EMPmR4qDSgayH7++WezLLMuLAAA/ora5czapb0onTp1Mgcr9fxhOq80I13WOKe/U0DL4WpcwA1l1KhRVokSJaygoKBMSwDrz7169brk/mXKlMm09J972d8jR45k+fwLFy607rzzTis6Otpcqlatap5327Zt5vb4+HirW7duVoUKFayIiAgrf/781l133WV98cUXmZ4np+1RGzdutFq0aGHlyZPHioqKMs/37bffZrrPxcv+ur399ttWuXLlrPDwcKtevXrWqlWrzJKIOVk60dt+/vlnq3nz5uZ3iIuLszp06GD99ttvme6j79fFyzGuX7/eLPur76sugaz7Qd+DBQsWXPffAQB8gdrlvNo1Y8aMKy47rLcjey79j92hCAAAAEBgCrK7AQAAAAACF4EEAAAAgG0IJAAAAABsQyABAAAAYBsCCQAAAADbEEgAAAAA2IYTI/qh9PR0OXjwoDlhX8YziQNwLl2h/fTp0+asw0FBHEuCf6FuAYHJymHt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",
      "text/plain": [
       "<Figure size 900x350 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import ConfusionMatrixDisplay\n",
    "\n",
    "fig, axes = plt.subplots(1, 2, figsize=(9, 3.5))\n",
    "for ax, threshold in zip(axes, [0.5, 0.2]):\n",
    "    ConfusionMatrixDisplay.from_predictions(\n",
    "        yb_te, (proba >= threshold).astype(int),\n",
    "        display_labels=[\"benign\", \"malignant\"], ax=ax, colorbar=False)\n",
    "    ax.set_title(f\"threshold = {threshold}\")\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "19f391e0",
   "metadata": {},
   "source": [
    "## 11. 係數 → 勝算比（odds ratio）\n",
    "只用 3 個特徵建一個小模型，把係數取指數得到「每增加 1 個標準差，惡性勝算乘上幾倍」。再用 statsmodels 的不懲罰版本對照。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "0cd3fb5b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.810386Z",
     "iopub.status.busy": "2026-09-29T20:03:12.810328Z",
     "iopub.status.idle": "2026-09-29T20:03:12.815237Z",
     "shell.execute_reply": "2026-09-29T20:03:12.814832Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>coef (per SD)</th>\n",
       "      <th>odds ratio (per SD)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>worst radius</th>\n",
       "      <td>3.33</td>\n",
       "      <td>27.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>worst texture</th>\n",
       "      <td>1.31</td>\n",
       "      <td>3.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>worst concave points</th>\n",
       "      <td>2.25</td>\n",
       "      <td>9.48</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                      coef (per SD)  odds ratio (per SD)\n",
       "worst radius                   3.33                27.92\n",
       "worst texture                  1.31                 3.69\n",
       "worst concave points           2.25                 9.48"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "features = [\"worst radius\", \"worst texture\", \"worst concave points\"]\n",
    "small = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))\n",
    "small.fit(Xb_tr[features], yb_tr)\n",
    "coef = small[-1].coef_[0]\n",
    "pd.DataFrame({\"coef (per SD)\": coef, \"odds ratio (per SD)\": np.exp(coef)}, index=features).round(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "fbfdd358",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-09-29T20:03:12.816530Z",
     "iopub.status.busy": "2026-09-29T20:03:12.816450Z",
     "iopub.status.idle": "2026-09-29T20:03:12.822021Z",
     "shell.execute_reply": "2026-09-29T20:03:12.821722Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OR</th>\n",
       "      <th>CI_low</th>\n",
       "      <th>CI_high</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>const</th>\n",
       "      <td>0.31</td>\n",
       "      <td>0.17</td>\n",
       "      <td>0.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>worst radius</th>\n",
       "      <td>160.50</td>\n",
       "      <td>28.81</td>\n",
       "      <td>894.24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>worst texture</th>\n",
       "      <td>5.89</td>\n",
       "      <td>2.81</td>\n",
       "      <td>12.31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>worst concave points</th>\n",
       "      <td>18.25</td>\n",
       "      <td>5.80</td>\n",
       "      <td>57.37</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                          OR  CI_low  CI_high\n",
       "const                   0.31    0.17     0.58\n",
       "worst radius          160.50   28.81   894.24\n",
       "worst texture           5.89    2.81    12.31\n",
       "worst concave points   18.25    5.80    57.37"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Xs = pd.DataFrame(StandardScaler().fit_transform(Xb_tr[features]),\n",
    "                  columns=features, index=Xb_tr.index)\n",
    "logit = sm.Logit(yb_tr, sm.add_constant(Xs)).fit(disp=0)\n",
    "or_table = pd.DataFrame({\"OR\": np.exp(logit.params),\n",
    "                         \"CI_low\": np.exp(logit.conf_int()[0]),\n",
    "                         \"CI_high\": np.exp(logit.conf_int()[1])})\n",
    "or_table.round(2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c1441e79",
   "metadata": {},
   "source": [
    "兩個版本的勝算比差很多：sklearn 預設有 L2 正則化，會把係數往 0 拉；statsmodels 沒有懲罰，但信賴區間非常寬（三個特徵彼此高度相關）。**要做統計推論請用 statsmodels 這類工具，並好好處理共線性；sklearn 的係數是為了預測而調過的。**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "74b08901",
   "metadata": {},
   "source": [
    "## 動手試試\n",
    "\n",
    "1. 第 7 節把訓練點數 `25` 改成 `100`（兩處），15 次方的測試誤差會怎麼變？為什麼資料變多能減輕過擬合？\n",
    "2. 第 5 節把 `learning_rate` 改成 `0.01` 和 `1.02`，看 loss 曲線怎麼變化。\n",
    "3. 第 10 節把閾值改成 `0.8`，記下敏感度與特異度；如果這是篩檢工具，你會選哪個閾值？"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3",
   "language": "python"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
