{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "c000",
   "metadata": {},
   "source": [
    "# Logistic Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "c001",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:00.183154Z",
     "iopub.status.busy": "2026-10-23T03:54:00.183093Z",
     "iopub.status.idle": "2026-10-23T03:54:01.052621Z",
     "shell.execute_reply": "2026-10-23T03:54:01.052276Z"
    },
    "tags": [
     "hide-input",
     "thebe-init",
     "runnable"
    ]
   },
   "outputs": [],
   "source": [
    "path_data = '../../data/'\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "plt.style.use('fivethirtyeight')\n",
    "%matplotlib inline\n",
    "\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.pipeline import make_pipeline\n",
    "from sklearn.metrics import accuracy_score, confusion_matrix, precision_score, recall_score\n",
    "\n",
    "# The churn data and the train-test split from Section 1404.\n",
    "churn = pd.read_csv(path_data + 'customer_churn.csv')\n",
    "features = ['tenure_months', 'monthly_charges', 'support_calls']\n",
    "X = churn[features]\n",
    "y = churn['churn']\n",
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "    X, y, test_size=0.3, random_state=14, stratify=y)\n",
    "\n",
    "# Error costs from Section 1405.\n",
    "COST_FN = 400    # dollars lost for each churner we miss\n",
    "COST_FP = 50     # dollars wasted for each loyal customer we flag\n",
    "\n",
    "def error_cost(actual, predicted):\n",
    "    \"\"\"Total dollar cost of the false negatives and false positives.\"\"\"\n",
    "    tn, fp, fn, tp = confusion_matrix(actual, predicted).ravel()\n",
    "    return COST_FN * fn + COST_FP * fp"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c002",
   "metadata": {},
   "source": [
    "```{contents}\n",
    ":local:\n",
    ":depth: 2\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c003",
   "metadata": {},
   "source": [
    "A nearest neighbor classifier answers \"churn\" or \"stays\". For many business decisions, a **probability** is more useful: a customer with a 90% chance of leaving deserves a phone call today, one with a 15% chance might get an email, and one with a 2% chance can be left alone. Section 1405 also showed that when a missed churner costs much more than a false alarm, we may want to flag customers whose chance of churning is well below 50%. That requires a classifier that reports how likely each outcome is.\n",
    "\n",
    "**Logistic regression** is the most widely used classifier of this kind. Despite its name, it is a classification method: it predicts the probability that an observation belongs to the positive class. It builds on the linear regression of Chapter 13, so its coefficients can be read in a similar way. In this section we fit it to the same churn data, training set, and test set as Sections 1404 and 1405."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c004",
   "metadata": {},
   "source": [
    "## The Logistic Curve\n",
    "\n",
    "```{index} logistic function\n",
    "```\n",
    "\n",
    "```{index} sigmoid function\n",
    "```\n",
    "\n",
    "```{index} logistic regression\n",
    "```\n",
    "\n",
    "Linear regression predicts a number by adding up the features, each multiplied by a slope: $z = b_0 + b_1 x_1 + b_2 x_2 + \\cdots$. That number can be anything, such as $-3$ or $250$, but a probability must lie between 0 and 1. Logistic regression fixes this by passing $z$ through the **logistic function**, also called the *sigmoid*:\n",
    "\n",
    "$$p = \\frac{1}{1 + e^{-z}}$$\n",
    "\n",
    "The logistic function turns any number into a value between 0 and 1. When $z = 0$, $p = 0.5$; large positive $z$ gives $p$ close to 1, and large negative $z$ gives $p$ close to 0."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c005",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.054091Z",
     "iopub.status.busy": "2026-10-23T03:54:01.054011Z",
     "iopub.status.idle": "2026-10-23T03:54:01.095349Z",
     "shell.execute_reply": "2026-10-23T03:54:01.094883Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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F5ZewWKrSIzHukxaOXwwXWoEQ4233HKL6u1asGCB41tMROQiSJxfdUK/rMhdbaPl/ET94sJERG4NurTAynTNIeRugflaa1jbDbDoKBGRJ0ovMMqTm/WTgepHBcnjnWKqbJuIyLfYHXRhFXBtIWxNnTp11PWhQ4dKF4UGbVYjp1kTkad6flumnM43GVcUkZe7x0l0CMsZEpFz2H00qVu3rloZHivGa6t8I4erZs2aKshavHixug01uz777LPS+4mIPM2WU4Xy4V85utsubRAulzdi5Xki8oCgKzAwUK644goVcKFGl5bTNXbsWPXznXfeKSNGjJDevXvL+vXr1X3XXnut87aciMgJDMYSeWB9mpjWnY8MDpCXe7AmFxF5UJ0uBFa1a9eW4OD/nubRRx+V3bt3y88//yzLly8/9yLBwfLcc89Jly5dHN9iIiInmrMnW3an6VfRmNQxRhpGO23BDiIixaGjSrt27dTFVFhYmHz55ZeydetWVbsLyfV9+vSRhg0bOvJSREROdyzbIC/9rp/40zYhWO48L5qtTURO57JTOfRqObNnC3li8+fPV4Eces7w3FdffbUK8uw1b948WbdunURGRsqbb77ptG0lIu/w2KYMyTHoF7Se1TNeQgLPlb8hInImr+g/x3JDV111lSQnJ5fe9uGHH8o777wj33//vSQmJlb6Offs2SOPP/64qh+GJYsYdBH5l58O58lPR/QLV49rGSnda9l/IkdE5Jag68iRIyphHgtgI7k+ISFBzj//fOnZs6cu56uyUID1pptuUgFX586d5cYbb5TCwkKZO3eu7Nq1Sx544IHS5Ycq85z4uwsvvFD1nGGGJRH5j8xCozy6Ub+gdfXwQHm2C5PniciDg67Dhw/LxIkTZcmSJbraXKa1uyZPniyjR4+26/mXLVumEvPPO+88lZyvFWAdNWqUWuMRPV1JSUmqMn5lhhURsCFIHDhwoF3bRUTeXZMrOVdfk2tq1zhJCGNNLiJynUBHh/0GDx4sv/76qwq4mjdvrha4Rq4VAiLkSp04cULuvvtuef755+16jd9++01djx8/vjTgAgwpjhkzRvcYW2B7pkyZIpMmTVJrQhKRf9mYUiBz9+lrcg2sGybXNmNNLiLy4J6u++67T06fPq16mWbNmiX9+/fX3Z+amiovvvii6lmaOXOmCsgQjFXG3r171XW3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",
      "text/plain": [
       "<Figure size 600x350 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def logistic(z):\n",
    "    return 1 / (1 + np.exp(-z))\n",
    "\n",
    "z = np.linspace(-6, 6, 200)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(6, 3.5))\n",
    "ax.plot(z, logistic(z), lw=3)\n",
    "ax.axhline(0.5, color='gray', lw=1, ls='--')\n",
    "ax.set_xlabel('z (weighted sum of the features)')\n",
    "ax.set_ylabel('probability p')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c006",
   "metadata": {},
   "source": [
    "Here is the curve in action with a single feature. We fit logistic regression to predict churn from the number of support calls alone, and compare its predicted probabilities with the actual churn rate among training customers with each number of calls."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "c007",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.096477Z",
     "iopub.status.busy": "2026-10-23T03:54:01.096407Z",
     "iopub.status.idle": "2026-10-23T03:54:01.104061Z",
     "shell.execute_reply": "2026-10-23T03:54:01.103714Z"
    },
    "tags": []
   },
   "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>support_calls</th>\n",
       "      <th>predicted probability</th>\n",
       "      <th>actual churn rate (training)</th>\n",
       "      <th>customers (training)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.113</td>\n",
       "      <td>0.124</td>\n",
       "      <td>170</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0.204</td>\n",
       "      <td>0.190</td>\n",
       "      <td>232</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>0.339</td>\n",
       "      <td>0.364</td>\n",
       "      <td>165</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>0.508</td>\n",
       "      <td>0.440</td>\n",
       "      <td>84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>0.674</td>\n",
       "      <td>0.757</td>\n",
       "      <td>37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5</td>\n",
       "      <td>0.806</td>\n",
       "      <td>0.778</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>6</td>\n",
       "      <td>0.893</td>\n",
       "      <td>1.000</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   support_calls  predicted probability  actual churn rate (training)  \\\n",
       "0              0                  0.113                         0.124   \n",
       "1              1                  0.204                         0.190   \n",
       "2              2                  0.339                         0.364   \n",
       "3              3                  0.508                         0.440   \n",
       "4              4                  0.674                         0.757   \n",
       "5              5                  0.806                         0.778   \n",
       "6              6                  0.893                         1.000   \n",
       "\n",
       "   customers (training)  \n",
       "0                   170  \n",
       "1                   232  \n",
       "2                   165  \n",
       "3                    84  \n",
       "4                    37  \n",
       "5                     9  \n",
       "6                     3  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calls_model = LogisticRegression()\n",
    "calls_model.fit(X_train[['support_calls']], y_train)\n",
    "\n",
    "calls = pd.DataFrame({'support_calls': np.arange(0, 7)})\n",
    "calls['predicted probability'] = calls_model.predict_proba(calls[['support_calls']])[:, 1].round(3)\n",
    "\n",
    "actual_rate = y_train.groupby(X_train['support_calls']).mean().round(3)\n",
    "calls['actual churn rate (training)'] = calls['support_calls'].map(actual_rate)\n",
    "calls['customers (training)'] = calls['support_calls'].map(X_train['support_calls'].value_counts())\n",
    "calls"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c008",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.105048Z",
     "iopub.status.busy": "2026-10-23T03:54:01.104977Z",
     "iopub.status.idle": "2026-10-23T03:54:01.137791Z",
     "shell.execute_reply": "2026-10-23T03:54:01.137472Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl0AAAFkCAYAAAAaH47TAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAc3FJREFUeJztnQd4U2X7xu90b8ree29QBFERREXAiRsHuAcobhS3nxv3ABVciH7iBhVxoKIgG9l77w1ddLf5X/fLd/pP26TNatq09++6cqVNTs54c5Jz53mf535sSUlJdgghhBBCiDIlpGxXL4QQQgghJLqEEEIIIQKEIl1CCCGEEAFAoksIIYQQIgBIdAkhhBBCBACJLiGEEEKIACDRJYQQQggRACS6hBBCCCECgESXEEIIIUQAkOgSQgghhAgAEl3lTGZmJrZs2WLuhcZP515woM+txk7nXXCRWUGutRJdFYC8vLzy3oWgRuOnsdN5F1zoM6uxq6rnnUSXEEIIIUQAkOgSQgghhAgAYQgiVq1ahYULFyI3NxeXXXYZqlev7tV6VqxYgZUrVyIsLAw9evRAy5Yt/b6vQgghhBBBJbrsdjtGjx6Nn3/+GTt37ix4/LTTTvNYdKWkpOCGG27AzJkzCz1+7bXX4vXXX0doaKjf9lsIIYQQFQC7HaGpWxGbsg6hqblAZDvAZiuXXQkLhsS3iRMnmr87dOhghNOuXbu8Wtftt99uBFdiYiIGDBiAnJwcI+YmT56MWrVq4YknnvDz3gshhBCiXLDbEb5+EiJXjgeyjqJabiZC1kYBkdWR1XkEctoOD7j4qvA5XSEhIRg7dqyZEpw7dy66dOni1XqWLVuG6dOno06dOvjnn38wYcIEfPTRR0Z0RUVFYfz48Thy5Ijf918IIYQQAcZuR/SsWxG14DGEJm9AaOZBhOemmnv+z8ej/7rNLBdIwoJBdN1yyy0+r+fHH3809yNGjEDDhg0LHu/atSuuuOIKTJo0Cb/88guGDh3q03by8/Nx7Ngxt71AuHxERASSk5ORmprq07arIho/jZ0/4Q+w2NhY870jhAhewtdPQtiOGQjJcX5d5eNh26cjfP0nyGk3PGD7VeFFl79g4jzp27dvsef69etnRBejab6ILgqAw4cPIy4uzkxX2twIW/I12dnZRnjpi967Mdf4eYfGrnj+KH8s8TNcs2ZNfR6FCFbsdjOl6EpwWYTkpCFy1TiJrrJg9+7d5r5p06bFnrMe27t3b6nrKSmCxQhXTEwMIiMjzRc4b6VhLcN7XgSFZ2j8vEdjVxx+dvk5PHr0qIl4uYJC3/FeuI/Gzns0du7BpHnmcLlF5lHkHFyLvPjm8CVC7i5VJtJliSVng0OhRDIyMkpdz549e1y62oaHh5t1efNFzKR+4T0aP42dv2DEmVP97uR47t+/32/brWpo7DR2ZQWrFJk0744fQX5uFg7uWI9jCd7JIboetGjRwu3lq4zo4vQdoSCyRFZRQcZfuaXRoEEDl88xL8uddRSNNlAwULC5Mx0pNH7+Queea6Kjo1GvXj2Xz/N7hKKhbt26Bd8twj00dt6jsXMP2kKYKsXc0vOkQ8IiUbtJW9SIb4xAUGVEF6sW16xZY6YZaRnhbOqRy/gSRuSvY0/zsqwpRQou5XR5jsbPezR2ruFn0Z0pAwouT6YWhMbOH+i8KwX6cEVWBzIPlrYkEFUd4bXbIxyBocqU6NDji8yfP7/Yc7SicFxGCCGEEEGKzWZ8uPLD40tcjM9ndRqJQFJlRNc555xj7unHlZaWVihH67PPPjO/bGmYKoQQQojgJqftcOQ2GYT88DiXgiu36WDktB0W0P0KiunFH374oaCycPv27eb+m2++wZw5c8zfF110UcHUIPOzPvnkE8THxxeyf6BVxEknnYRFixahf//+uPzyy838+KeffoqkpCSzbKNGjcrl+CoLixcvxr///otLLrnElNwHapt8T/l+1q5dO6iPpSqzadMm/PHHHzjzzDPVC1UI4Ts2GzL6vWd8uGgLwSpFJs0zh4tTioxwGcEV4FzqoBBd7777rnGRd+SVV14p+Lt79+4Foou2DezV2Lhx42KeWx9++KG5iG7YsAHPPPNMweO9e/fGSy+9VObHUdmhu//LL7+Mk08+OWBChYa2PBfYi9NT0cWpZnqzOWueXh7HUpVZsmSJ+dx+8MEHEl1CCP9gsxkPLnM7uNZUKTJpnjlc5UVQiK7zzjuvxHwrxwR4JrXefPPNTpthU4j9/fffxp2eZqks9WT0i1OPSmIPTnr06IHrr7/eK2HE8+Dtt9922jyd6+V5RJNbUfa0bt3ajHfLli013EIIv0MfLtpCsEoxUEnzQSu62KjaXWhoWFLUiqLs0ksvNTcR/FAwn3HGGX4v2x84cKC5icBwwgknmJsQQlRmgkJ0ieDn0KFDpkqUhpOMSp1yyiklRqc2b95spv/CwsLMsoxS/vrrr9i2bZuJiFieZq5yulgswdczF7BatWomUtqqVauC57/77ruC1lCO+YHNmjUzBRUl5XQxb3DhwoUmv5C5g926dTOvK43Zs2dj7dq1ZtqbXnH8n8fD/p+cIrfYsWOH2X5KSgrq16+PU0891bSWcgY93rienTt3mmXZ0oqPsTikffv26NOnT4En18SJE033BQpVekwx6nvw4EHccMMNBbYHubm5ZjyZY8Xob8eOHc3xudo231NarvD1HF9nDendWa6knC5asfD1fC8TEhLQs2dPp/mXfD/nzZuHQYMGmfNlwYIFWL9+vbGI4bjwtUIIUZ5IdAWQQ5l5Lvrf5SMiPw8hIYHtdu5IrSh3vHu944UXXsBrr72GrKysgsdoIvvAAw/g/vvvLzYeDz30kBEIVpsaTgM/9dRT5sL7008/GZFAMeYqp4uFFI8++qgRLY6cddZZ+Pjjj42AeeONN7Bs2bJi+YGDBw82ostVTtcXX3yBRx55xIhICwpAir733nuvxHH49ttv8dFHH6Ft27bmuDdu3Ggef/jhh43oori45557jAh0bCHFqc/XX38dF154YTGhcuWVV5p7C4q/N9980+RHcdrVEl3sosDHKLgoFrlNCizCdVAMUbzdcccdBcUqFlwH99txqvXPP/80Eeh9+/YVWpbRKi5rtdZydzlXOV0Uj2PGjCn0XlIMXnfddea8coxwcv95XEw3GDVqlNm2Bff966+/dikghRAiEEh0BZBWnxe+8FQkkq5vWGZFELw4WgULzZs3x9atW01EgsUMjEIxcmXx1ltvYcKECebCyorThg0bmujQY489VmI3AAv2zLvvvvtMdKVXr15o06aNiXrRGHfmzJmmawBF18UXX2yECKMjnGq2cro6depUomi69dZbzd9cb+fOnY04YkSM+WHuMnLkSNNy6oILLjCO5laU69prr8WsWbNMZIZCh/vESBjFxE033WQEiiUaKGCvuOIKExHkOhgNo2BlwcmIESNcbpvHy4ghI008VooW3pYvX24KChjF43ExMshjY7SI2x8+fDimT59e6BgopLgc94ljyagSx4LvryWm3F3OGb///rsRgdwP7hNvjND99ddfpiiGYtxZKsHjjz9umlZTQHMs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RwghhBBlj0RXOZMX3xzHEsJQI74xwst7Z4QQQghRZoSU3aqFEEIIIYSFRJcQQgghRACQ6BJCCCGECAASXUIIIYQQAUCiSwghhBAiAEh0VQBCQ0PLexeCGo2fxk7nXXChz6zGrqqed7akpCR7ee+EEEIIIURlR5EuIYQQQogAINElhBBCCBEAJLqEEEIIIQKARJcQQgghRACQ6BJCCCGECAASXUIIIYQQASAsEBsRztm5cyd+/PFH7Nu3D3Xq1MG5556LZs2aabjcHLuff/4ZmzdvNmN37733atzc4OjRo5g1axY2bdqEY8eOoWnTphgwYAAaNmyo8SuF/Px8/PPPP1i5ciX279+PGjVq4LTTTsOJJ56osfOQKVOmYNmyZahWrRrGjBmj8SvhnHv44Yddjs/QoUPRtWtXjV8ppKen47fffsPq1asRHh6OHj164IwzzkB5IJ+ucuKzzz4zQiErK6vgMZ4MY8eOxfXXX19eu1Xh+ffffzFq1CisWrWq4LHWrVtj0aJF5bpfwcAdd9yBL7/8EtnZ2YUeDwsLM1/sEq6umTNnDm677Tbs2rWr2HMDBw7EBx98gNjY2DJ41yof69atw+mnn27OwwYNGmDNmjXlvUsVltzcXNSqVcvl8zzvLrnkkoDuU7Dx559/YsSIEdi7d2+hx7t06YK///474PujSFc5sHz5ciMc8vLycOGFF6J79+5GgX/99de477770KlTJ5x00knlsWsVnq1btxrB1ahRIxOh+fDDD8t7l4IGRmkoDM477zw0b97ciHx+6cydOxf/+c9/0KpVK1xwwQXlvZsVki1btuDAgQPo378/OnbsiOrVq2Pjxo2YNm2aibg+8cQTePnll8t7Nys8drsdd999N3r16oWFCxeW9+4EDe3atcOwYcOKPa4oV8nwx/iVV15pghvdunXD2WefjejoaCxYsAC//vorygNFusqBG264Ad9++y0efPDBQqH1t956C4899pj55czwuyjOtm3bkJqais6dOxf8ClSky33RRTEfERFR6PGHHnoI7777rhFcn3zyiU47F2I/ISEBNWvWLPT4kiVLcOaZZ5rHOdUtSoY/kh555BFzLvbu3duMmyJdrrG+48455xx88cUXOr085NRTTzUBjTvvvNP8sLTZbAXPMU2A15FAo0T6cpij59xyVFSUiXY5cuutt5ocB4ZDHacd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",
      "text/plain": [
       "<Figure size 600x350 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "grid = pd.DataFrame({'support_calls': np.linspace(0, 6, 100)})\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(6, 3.5))\n",
    "ax.plot(grid['support_calls'], calls_model.predict_proba(grid)[:, 1], lw=3, label='logistic regression')\n",
    "ax.scatter(calls['support_calls'], calls['actual churn rate (training)'], s=60, color='darkorange',\n",
    "           zorder=5, label='actual churn rate')\n",
    "ax.set_xlabel('support calls last quarter')\n",
    "ax.set_ylabel('probability of churn')\n",
    "ax.legend(loc='upper left')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c009",
   "metadata": {},
   "source": [
    "The predicted probability rises along an S-shaped curve, from about 0.11 for customers who made no support calls to about 0.67 at 4 calls and 0.89 at 6. The actual churn rates follow the same pattern; they bounce around more at 5 and 6 calls because only a handful of training customers made that many calls."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c010",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.138791Z",
     "iopub.status.busy": "2026-10-23T03:54:01.138731Z",
     "iopub.status.idle": "2026-10-23T03:54:01.140264Z",
     "shell.execute_reply": "2026-10-23T03:54:01.139997Z"
    },
    "tags": [
     "thebe-interactive"
    ]
   },
   "outputs": [],
   "source": [
    "### Exercise: The Logistic Function\n",
    "#   1. Write logistic(z) = 1 / (1 + e^(-z)) using np.exp.\n",
    "#   2. Apply it to the array z_values and print the results rounded to 3 decimals.\n",
    "# Print exactly:\n",
    "# [0.018 0.269 0.5   0.731 0.982]\n",
    "z_values = np.array([-4, -1, 0, 1, 4])\n",
    "### Your code starts here.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "### Your code ends here."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c011",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.141064Z",
     "iopub.status.busy": "2026-10-23T03:54:01.141012Z",
     "iopub.status.idle": "2026-10-23T03:54:01.142654Z",
     "shell.execute_reply": "2026-10-23T03:54:01.142378Z"
    },
    "tags": [
     "hide-input"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.018 0.269 0.5   0.731 0.982]\n"
     ]
    }
   ],
   "source": [
    "### Solution\n",
    "z_values = np.array([-4, -1, 0, 1, 4])\n",
    "\n",
    "def logistic(z):\n",
    "    return 1 / (1 + np.exp(-z))\n",
    "\n",
    "print(logistic(z_values).round(3))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c012",
   "metadata": {},
   "source": [
    "## Fitting LogisticRegression\n",
    "\n",
    "```{index} LogisticRegression\n",
    "```\n",
    "\n",
    "```{index} coefficient; logistic regression\n",
    "```\n",
    "\n",
    "```{index} intercept; logistic regression\n",
    "```\n",
    "\n",
    "Fitting logistic regression with all three features follows the same `fit` pattern as every other scikit-learn model. Behind the scenes, `fit` searches for the intercept and coefficients that make the observed churn outcomes in the training set as likely as possible."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "c013",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.143574Z",
     "iopub.status.busy": "2026-10-23T03:54:01.143523Z",
     "iopub.status.idle": "2026-10-23T03:54:01.149007Z",
     "shell.execute_reply": "2026-10-23T03:54:01.148659Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Intercept: [-3.533]\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>coefficient</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>tenure_months</th>\n",
       "      <td>-0.073</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>monthly_charges</th>\n",
       "      <td>0.045</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>support_calls</th>\n",
       "      <td>1.053</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 coefficient\n",
       "tenure_months         -0.073\n",
       "monthly_charges        0.045\n",
       "support_calls          1.053"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "logit = LogisticRegression()\n",
    "logit.fit(X_train, y_train)\n",
    "\n",
    "coefficients = pd.DataFrame({'coefficient': logit.coef_[0].round(3)}, index=features)\n",
    "print('Intercept:', logit.intercept_.round(3))\n",
    "coefficients"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c014",
   "metadata": {},
   "source": [
    "**Reading the coefficients.** Each coefficient multiplies its feature inside $z$, so its **sign** tells the direction of the effect, holding the other features fixed:\n",
    "\n",
    "- A **positive** coefficient means that larger values of the feature raise $z$ and therefore raise the predicted probability of churn.\n",
    "- A **negative** coefficient means that larger values lower the probability.\n",
    "\n",
    "Here tenure has a negative coefficient (customers who have stayed longer are less likely to churn), while monthly charges and support calls have positive coefficients (higher bills and more support calls go with more churn). These directions match the group averages in Section 1404.\n",
    "\n",
    "The size of a coefficient is harder to read than in linear regression, because the logistic curve is not a straight line: the same change in $z$ moves the probability a lot near 50% and only a little near 0% or 100%. (Statisticians translate coefficients into changes in the *odds* of churning; that is beyond this introduction.) The coefficients also depend on each feature's units, so do not compare their sizes across features unless the features have been scaled.\n",
    "\n",
    "The clearest way to see what the model says is to compare predicted probabilities for customers who differ in one feature. Here is the new customer from Section 1404 (6 months, \\$95 a month, 4 support calls), and the same customer with fewer support calls."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "c015",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.149984Z",
     "iopub.status.busy": "2026-10-23T03:54:01.149906Z",
     "iopub.status.idle": "2026-10-23T03:54:01.153291Z",
     "shell.execute_reply": "2026-10-23T03:54:01.152967Z"
    },
    "tags": []
   },
   "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>tenure_months</th>\n",
       "      <th>monthly_charges</th>\n",
       "      <th>support_calls</th>\n",
       "      <th>probability of churn</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6</td>\n",
       "      <td>95.0</td>\n",
       "      <td>4</td>\n",
       "      <td>0.989</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6</td>\n",
       "      <td>95.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.917</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6</td>\n",
       "      <td>95.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.572</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   tenure_months  monthly_charges  support_calls  probability of churn\n",
       "0              6             95.0              4                 0.989\n",
       "1              6             95.0              2                 0.917\n",
       "2              6             95.0              0                 0.572"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "what_if = pd.DataFrame({'tenure_months': [6, 6, 6],\n",
    "                        'monthly_charges': [95.0, 95.0, 95.0],\n",
    "                        'support_calls': [4, 2, 0]})\n",
    "what_if['probability of churn'] = logit.predict_proba(what_if[features])[:, 1].round(3)\n",
    "what_if"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c016",
   "metadata": {},
   "source": [
    "With 4 support calls, this new, high-paying customer has a 99% predicted chance of churning. With 2 calls the probability is still 92%, and with no calls it drops to 57%. Going from 4 calls to 2 moves the probability only 7 points, while going from 2 to 0 moves it 35 points: how much a feature changes the probability depends on where the customer sits on the curve."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "c017",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.154178Z",
     "iopub.status.busy": "2026-10-23T03:54:01.154120Z",
     "iopub.status.idle": "2026-10-23T03:54:01.155497Z",
     "shell.execute_reply": "2026-10-23T03:54:01.155224Z"
    },
    "tags": [
     "thebe-interactive"
    ]
   },
   "outputs": [],
   "source": [
    "### Exercise: A Two-Feature Model\n",
    "#   1. Fit a LogisticRegression on X_train[['tenure_months', 'support_calls']] and y_train.\n",
    "#   2. Print the two coefficients rounded to 3 decimals.\n",
    "#   3. Print whether each one raises or lowers the probability of churn.\n",
    "# Print exactly:\n",
    "# tenure_months: -0.067 (lowers churn probability)\n",
    "# support_calls: 0.944 (raises churn probability)\n",
    "### Your code starts here.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "### Your code ends here."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c018",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.156341Z",
     "iopub.status.busy": "2026-10-23T03:54:01.156274Z",
     "iopub.status.idle": "2026-10-23T03:54:01.160311Z",
     "shell.execute_reply": "2026-10-23T03:54:01.159976Z"
    },
    "tags": [
     "hide-input"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tenure_months: -0.067 (lowers churn probability)\n",
      "support_calls: 0.944 (raises churn probability)\n"
     ]
    }
   ],
   "source": [
    "### Solution\n",
    "two_features = ['tenure_months', 'support_calls']\n",
    "model2 = LogisticRegression()\n",
    "model2.fit(X_train[two_features], y_train)\n",
    "\n",
    "for name, coef in zip(two_features, model2.coef_[0]):\n",
    "    direction = 'raises' if coef > 0 else 'lowers'\n",
    "    print(f'{name}: {round(coef, 3)} ({direction} churn probability)')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c019",
   "metadata": {},
   "source": [
    "## Predicted Probabilities\n",
    "\n",
    "```{index} predicted probability\n",
    "```\n",
    "\n",
    "```{index} predict_proba\n",
    "```\n",
    "\n",
    "`predict_proba` returns one column per class: the probability of class 0 (stays) and of class 1 (churns). Each row adds up to 1. We usually keep the second column, the probability of the positive class."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "c020",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.161089Z",
     "iopub.status.busy": "2026-10-23T03:54:01.161033Z",
     "iopub.status.idle": "2026-10-23T03:54:01.162947Z",
     "shell.execute_reply": "2026-10-23T03:54:01.162657Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.973 0.027]\n",
      " [0.674 0.326]\n",
      " [0.948 0.052]\n",
      " [0.938 0.062]\n",
      " [0.261 0.739]]\n"
     ]
    }
   ],
   "source": [
    "proba = logit.predict_proba(X_test)\n",
    "print(proba[:5].round(3))\n",
    "\n",
    "p_churn = proba[:, 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "c021",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.163779Z",
     "iopub.status.busy": "2026-10-23T03:54:01.163713Z",
     "iopub.status.idle": "2026-10-23T03:54:01.167068Z",
     "shell.execute_reply": "2026-10-23T03:54:01.166741Z"
    },
    "tags": []
   },
   "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>tenure_months</th>\n",
       "      <th>monthly_charges</th>\n",
       "      <th>support_calls</th>\n",
       "      <th>p_churn</th>\n",
       "      <th>predicted</th>\n",
       "      <th>actual</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>366</th>\n",
       "      <td>31</td>\n",
       "      <td>49.05</td>\n",
       "      <td>0</td>\n",
       "      <td>0.027</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>536</th>\n",
       "      <td>32</td>\n",
       "      <td>44.00</td>\n",
       "      <td>3</td>\n",
       "      <td>0.326</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>455</th>\n",
       "      <td>44</td>\n",
       "      <td>61.69</td>\n",
       "      <td>1</td>\n",
       "      <td>0.052</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>837</th>\n",
       "      <td>52</td>\n",
       "      <td>78.84</td>\n",
       "      <td>1</td>\n",
       "      <td>0.062</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>504</th>\n",
       "      <td>1</td>\n",
       "      <td>80.18</td>\n",
       "      <td>1</td>\n",
       "      <td>0.739</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>764</th>\n",
       "      <td>9</td>\n",
       "      <td>44.31</td>\n",
       "      <td>1</td>\n",
       "      <td>0.241</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>210</th>\n",
       "      <td>20</td>\n",
       "      <td>70.35</td>\n",
       "      <td>2</td>\n",
       "      <td>0.568</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>189</th>\n",
       "      <td>21</td>\n",
       "      <td>76.16</td>\n",
       "      <td>1</td>\n",
       "      <td>0.357</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     tenure_months  monthly_charges  support_calls  p_churn  predicted  actual\n",
       "366             31            49.05              0    0.027          0       0\n",
       "536             32            44.00              3    0.326          0       1\n",
       "455             44            61.69              1    0.052          0       0\n",
       "837             52            78.84              1    0.062          0       0\n",
       "504              1            80.18              1    0.739          1       1\n",
       "764              9            44.31              1    0.241          0       0\n",
       "210             20            70.35              2    0.568          1       1\n",
       "189             21            76.16              1    0.357          0       1"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_view = X_test.copy()\n",
    "test_view['p_churn'] = p_churn.round(3)\n",
    "test_view['predicted'] = logit.predict(X_test)\n",
    "test_view['actual'] = y_test\n",
    "test_view.head(8)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c022",
   "metadata": {},
   "source": [
    "The `predict` method turns each probability into a label using a cutoff of 0.5: \"churn\" when the probability is at least 0.5, otherwise \"stays\". We can check that this is exactly what it does."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c023",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.167916Z",
     "iopub.status.busy": "2026-10-23T03:54:01.167858Z",
     "iopub.status.idle": "2026-10-23T03:54:01.170261Z",
     "shell.execute_reply": "2026-10-23T03:54:01.170015Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "predict matches p_churn >= 0.5: True\n",
      "Test accuracy: 0.843\n"
     ]
    }
   ],
   "source": [
    "print('predict matches p_churn >= 0.5:', np.array_equal(logit.predict(X_test), (p_churn >= 0.5).astype(int)))\n",
    "print('Test accuracy:', round(logit.score(X_test, y_test), 3))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c024",
   "metadata": {},
   "source": [
    "A histogram of the predicted probabilities, split by what actually happened, shows how well the model separates the two groups. Customers who stayed mostly get low probabilities; churners are spread out, with many above 0.5 but a fair number below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "c025",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.171182Z",
     "iopub.status.busy": "2026-10-23T03:54:01.171130Z",
     "iopub.status.idle": "2026-10-23T03:54:01.210565Z",
     "shell.execute_reply": "2026-10-23T03:54:01.210200Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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4YQJEyQhISGYhyMiIiKK7eAKhg0bJk2aNJG33npLNm7cKMeOHdMfKFCggNx+++3Sv39/KVWqlB3bS97Ex8vm5DTH9lHJfHFSLJdz909ERBQLgg6u4K677tKf3bt3a7uFM2fOSPHixaVu3bqSO3duOx6CfJCUkiYT1x52bF89dFFxKZbIl4KIiMjx4Mo6g9DMIiQiIiLKibhwMxEREZGNGFwRERER2YjBFREREZGNGFwRERERRWpBOxFRLHn66aclOTlZEhM5TZaIfMfgiojIg65du3LfEJHfOCxIREREFAnB1YIFC3ThZl/O7Py5LREREVGOHBZMSUmRAwcOyJEjR2y9LRFRpNi3b5+kpqbquqilS5cO9+YQUZQISc0VlsMBLoVDRNGkTZs2snfvXilbtqysW7cu3JtDRFEiJDVXy5cv18sSJUqE4uGIiIiIIj9zhbO2oUOHZvw/hvlg/fr10q1bN7d/k56eLvv375fFixfr/7do0SL4LSYiIiKKheAKwdTUqVN9vt7VtddeKx07dvR/C4mIiIhiMbiqUaOGDB48OOP/N2/eLKNHj9bre/bs6fZvUARauHBhufDCC6V27dr2bDERERFRLARX5cqVk169emX8/++//y6TJ0/W4Mp6PREREVFOFvBswcsuu0x27txp79YQERERRTnHZguePXtWVq1apRmuU6dOOfUwRERERLETXM2fP18efPBB+eyzzzJdv23bNmnZsqVcfvnl0rZtW6lXr57eloiIiCjWBRVcDR8+XL744gttsGfVt29f2bBhgxaz4+fQoUNy7733SlJSUrDbS0RERBTRAq65OnHihMyZM0eDp9atW2fKWs2bN0/q1KkjP/30k1539dVXa5+sadOmcX3BaBYfL5uT0xy7+5L54qRYLufun8hf33zzjZw7d05y5QrJYhZEFCMC/sbYtWuXpKWlSYUKFSQuLi7j+rlz5+rlPffcIwULFtR/d+nSRZ555hn5448/GFxFsaSUNJm49rBj9//QRcWlWKJjd0/kN8yGJiIK2bDgwYMH9RKZKyt33dgrV66c6W+IiIiIYlXAwZUJqpDBssLsQGSs6tatm3HdyZMn9dJksoiIiIhiVcDBVc2aNaVAgQKye/fujNqqGTNmyJ49e7QHFrqzG7gOypcvb8c2ExGFxJdffinjx4/XSyIix2uu8uXLJ506dZIxY8bomoEItrZs2aK/c13IedmyZXp5ySWXBPpwREQh9+KLL8revXt1RvTtt9/OV4CInG/FMHDgQLnpppt0Ng1mA6anp8uAAQN0kWbrkOCPP/6oWa6rrroqmIcjIiIiinhBzS9GwISU+f79++Wff/7RwvXExMzTvVJSUuSjjz6SYsWKSf78+YPdXiIiIqKIZkvzlvPPP19/3ClatKh2aQ/G2rVrtd/Mxo0b5cCBA/pYrVq10uFIDE+6s2PHDhk9erSsXr1ae9Q0btxY7r//filevHhQ20JERETkjW2d8ZC5wlqCR44ckVKlSmnwY4fnnntORo4cmeX6r7/+Wj744AMNusqUKZPpd+indeutt0pycnLGdb/88otMmDBBZs2aJZUqVbJl24iIiIhsD67QiuHJJ5/UuirUXAECKxNc/f3331qDVa5cOQ1s/HX06FFt69C+fXstmsfw4po1a+Ttt9+WTZs2afD1ySefZBqG7NGjhwZWyJjdd999et2IESNkwYIF0qdPH5k+fXqwT5uIiIjI/uBq586dWqSOobpChQrpjBoM3Vkhq4SAaOHChTq8Z+1/5YvXX39dhxatELiZhaF//vnnTL9DAIftatasmWaqTPd4/A2uw9I8gWwHERERkeOzBfv166eBFQIX1DYNGjTI7e2wtiAgu+Uv18DKqF+/vpQoUSLT0juA9Q6he/fumX6H4vu7775b/z179my/t4OIiIjI0eAKw3UIlvLkyaO1T56CIKhYsaJerl+/XuyydetWOXz4sFxxxRWZrjeZs4YNG2b5m4svvlgvMZxIREREFFHDgps3b5bU1FSpVauWDgd6Y2YSIhiyw9mzZ+Xhhx/WbBT6arkGfYCielfnnXeeXqLoPjunT58WO6HuC1LT0sQpqHnDaxKt94/7Pn363/3kxL43lxQ60b7vS5Ysqe97XNr9neC0aN/30Yz7Pjb3vafuBLYGV2gcCghwsmPWFrSjzxUe94EHHtAZgePGjZPq1au73S60X3BlrkNwlh10ZbY9kChwvpw69e++cMLZlCKSfCI5au8/OTmP7Dqw37H7Rz82Co9o3fcff/xxxr9d11GNFtG672MB933s7Hss6Ve1alXngyuTrdq+fbukpaVJfLznEcYlS5boZZUqVSQYZ86c0dl/GI7El567/llmcejjx49nCfyOHTuml66NTt3JLhvnL0TR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mIYp9dHZDsDJbafsxMnmZOcG18pxaaCYlJoeJ0lnnbnv9PQEKVgwURIO75eEhARHHoP1aJGNwRWFvy7H3P/dXUSkYFS2A3By28m7s2np8v5KZ4L+X17uIaVOH5S8J5Pl1Q7RWztGWaWmp8vaQ2cc2TWYyHHJyROS9ut0iU9w5jDLerTIxuCKiMiDQ1vXyq5D+6RkYnT20SKi8GDNFREREZGNYjZztXXrVvnwww9l9erVOubdpEkT6d27t5x33nnh3jSKQYm54hytR6ufmiZxiUcdu//EdJ5nhYfDdT/xTjZ6cHb7oXB6nBxz6P4LOtoEg3K6mAyu5s+fL7fddpucOnUq03Wff/65fP/991K1atWwbh/FnoRTx0VmTnXs/vPeeauj95+A+6eQSxVn636aOBxAOLn90MTBuqgmku7I/RJBzJ2unj59Wu6//34NrBBgfffddzJt2jRp3bq1HDhwQB566KFwbyIRERHFsJjLXM2cOVN2794tl112mYwePTpj6n2zZs2kefPmsnDhQlm1apUuaxFqlRJSHG0HEO1DR04NrUX7EiwUviHZ7+LT5CRfAMphrSScHpItmgPam8RccDV37ly97NatW6YgJl++fHL33XfLwIED9TbhCK7yn06WXHOnS5xDqfo8N98oueY4txRFPO4/fwHn7v/MSUe2P13SJb59W8lVoIBj+z49PsHRfROt9499r/ft4L536n0DxfPnk/QSJaR4wYLO7B8HX9dQ7PtofV86ft/4D/2t8uWX9HhnDrOpcfGy8aQzPbSggYP33yguXuLz5nfkvtPTzok41FvMH3FHjx6NqYHn66+/XrNTy5Yty1JbNXv2bLn11ls1yHrvvffCto1EREQUu2JurOTo0X+HxUqWLJnld6VKldLLI0eOhHy7iIiIKGeIueDq3LlzepkrV9ZUrLnO3IaIiIjIbjEXXBUs+O8SJMeOHcvyO3NdoUKFQr5dRERElDPEXHBVsWJFvdy8eXOW323atCnTbYiIiIjsFnPBFTqxm5YMrmbM+HdGUePGjUO+XURERJQzxFxw1b59e8mdO7eMHTtWfvnll4zrx48fr93ZUejepk2bsG4jERERxa6Ya8UAr7zyigwbNixjCPDs2bPy999/6/9jvcG77rrLtsfatWuXdoHft2+frlt44403SuXKlcN2PznJli1bZNasWXLw4EEp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",
      "text/plain": [
       "<Figure size 600x350 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(6, 3.5))\n",
    "bins = np.arange(0, 1.05, 0.05)\n",
    "ax.hist(p_churn[y_test == 0], bins=bins, alpha=0.6, label='actually stayed', ec='white')\n",
    "ax.hist(p_churn[y_test == 1], bins=bins, alpha=0.6, label='actually churned', ec='white')\n",
    "ax.axvline(0.5, color='k', lw=2, ls='--')\n",
    "ax.set_xlabel('predicted probability of churn')\n",
    "ax.set_ylabel('test customers')\n",
    "ax.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "c026",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.211526Z",
     "iopub.status.busy": "2026-10-23T03:54:01.211462Z",
     "iopub.status.idle": "2026-10-23T03:54:01.212953Z",
     "shell.execute_reply": "2026-10-23T03:54:01.212637Z"
    },
    "tags": [
     "thebe-interactive"
    ]
   },
   "outputs": [],
   "source": [
    "### Exercise: High-Risk Customers\n",
    "#   1. Using p_churn (the test-set churn probabilities), count the test customers\n",
    "#      whose predicted probability of churn is above 0.8.\n",
    "#   2. Among those customers, compute the share who actually churned\n",
    "#      (use y_test), rounded to 3 decimals.\n",
    "# Print exactly:\n",
    "# High-risk customers: 32\n",
    "# Share who churned: 0.938\n",
    "### Your code starts here.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "### Your code ends here."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "c027",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.213758Z",
     "iopub.status.busy": "2026-10-23T03:54:01.213704Z",
     "iopub.status.idle": "2026-10-23T03:54:01.215550Z",
     "shell.execute_reply": "2026-10-23T03:54:01.215106Z"
    },
    "tags": [
     "hide-input"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "High-risk customers: 32\n",
      "Share who churned: 0.938\n"
     ]
    }
   ],
   "source": [
    "### Solution\n",
    "high_risk = p_churn > 0.8\n",
    "\n",
    "print('High-risk customers:', high_risk.sum())\n",
    "print('Share who churned:', round(y_test[high_risk].mean(), 3))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c028",
   "metadata": {},
   "source": [
    "## Changing the Decision Threshold\n",
    "\n",
    "```{index} decision threshold\n",
    "```\n",
    "\n",
    "```{index} threshold; precision and recall\n",
    "```\n",
    "\n",
    "```{index} cost of errors; threshold\n",
    "```\n",
    "\n",
    "The cutoff of 0.5 is called the **decision threshold**. Nothing forces us to use 0.5. Lowering the threshold flags more customers: recall goes up (we catch more churners) and precision usually goes down (more false alarms). Raising it does the opposite. Which threshold is best depends on the costs from Section 1405: a missed churner costs \\$400 and a false alarm \\$50."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "c029",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.216592Z",
     "iopub.status.busy": "2026-10-23T03:54:01.216525Z",
     "iopub.status.idle": "2026-10-23T03:54:01.239689Z",
     "shell.execute_reply": "2026-10-23T03:54:01.239347Z"
    },
    "tags": []
   },
   "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>threshold</th>\n",
       "      <th>flagged</th>\n",
       "      <th>FP</th>\n",
       "      <th>FN</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>precision</th>\n",
       "      <th>recall</th>\n",
       "      <th>error cost ($)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.1</td>\n",
       "      <td>194</td>\n",
       "      <td>110</td>\n",
       "      <td>2</td>\n",
       "      <td>0.627</td>\n",
       "      <td>0.433</td>\n",
       "      <td>0.977</td>\n",
       "      <td>6300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.2</td>\n",
       "      <td>155</td>\n",
       "      <td>75</td>\n",
       "      <td>6</td>\n",
       "      <td>0.730</td>\n",
       "      <td>0.516</td>\n",
       "      <td>0.930</td>\n",
       "      <td>6150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.3</td>\n",
       "      <td>127</td>\n",
       "      <td>52</td>\n",
       "      <td>11</td>\n",
       "      <td>0.790</td>\n",
       "      <td>0.591</td>\n",
       "      <td>0.872</td>\n",
       "      <td>7000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.4</td>\n",
       "      <td>104</td>\n",
       "      <td>35</td>\n",
       "      <td>17</td>\n",
       "      <td>0.827</td>\n",
       "      <td>0.663</td>\n",
       "      <td>0.802</td>\n",
       "      <td>8550</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.5</td>\n",
       "      <td>87</td>\n",
       "      <td>24</td>\n",
       "      <td>23</td>\n",
       "      <td>0.843</td>\n",
       "      <td>0.724</td>\n",
       "      <td>0.733</td>\n",
       "      <td>10400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.6</td>\n",
       "      <td>72</td>\n",
       "      <td>18</td>\n",
       "      <td>32</td>\n",
       "      <td>0.833</td>\n",
       "      <td>0.750</td>\n",
       "      <td>0.628</td>\n",
       "      <td>13700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.7</td>\n",
       "      <td>53</td>\n",
       "      <td>7</td>\n",
       "      <td>40</td>\n",
       "      <td>0.843</td>\n",
       "      <td>0.868</td>\n",
       "      <td>0.535</td>\n",
       "      <td>16350</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   threshold  flagged   FP  FN  accuracy  precision  recall  error cost ($)\n",
       "0        0.1      194  110   2     0.627      0.433   0.977            6300\n",
       "1        0.2      155   75   6     0.730      0.516   0.930            6150\n",
       "2        0.3      127   52  11     0.790      0.591   0.872            7000\n",
       "3        0.4      104   35  17     0.827      0.663   0.802            8550\n",
       "4        0.5       87   24  23     0.843      0.724   0.733           10400\n",
       "5        0.6       72   18  32     0.833      0.750   0.628           13700\n",
       "6        0.7       53    7  40     0.843      0.868   0.535           16350"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rows = []\n",
    "for threshold in [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7]:\n",
    "    flagged = (p_churn >= threshold).astype(int)\n",
    "    tn, fp, fn, tp = confusion_matrix(y_test, flagged).ravel()\n",
    "    rows.append({'threshold': threshold,\n",
    "                 'flagged': tp + fp,\n",
    "                 'FP': fp, 'FN': fn,\n",
    "                 'accuracy': round(accuracy_score(y_test, flagged), 3),\n",
    "                 'precision': round(precision_score(y_test, flagged), 3),\n",
    "                 'recall': round(recall_score(y_test, flagged), 3),\n",
    "                 'error cost ($)': error_cost(y_test, flagged)})\n",
    "\n",
    "thresholds = pd.DataFrame(rows)\n",
    "thresholds"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "c030",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.240706Z",
     "iopub.status.busy": "2026-10-23T03:54:01.240644Z",
     "iopub.status.idle": "2026-10-23T03:54:01.268873Z",
     "shell.execute_reply": "2026-10-23T03:54:01.268589Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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cG546623ypxP+MEHHxR74rQsOrJz5061TBuWkTM2bNgw+eyzz6w6aeKDb9SoUbJ582b1JtacPXu20mcJd/TqLDfffLNaAs8YPuy//fZbq/73Dz74QN5++23Dqi7Ghg8fLu+//74Kknpz/vx5VXY4/szXtZ4zZ45VJxAshYhjd+/evcVuQwD68ccfpU6dOqI3OFZuvfVWFViMNWvWTH755Rf1haG8cALCJO9YN1w7tiMjI0VvMKfpXXfdJQsXLix2okTZmU+wX5IOHTrIoUOHLN6G5TCfe+450Rt8sRg3bpx8//33JtuxIMCsWbOkdevWVt8XvtzidTB/7+L9ii8denzfTp48WX3eFxQUzWqH99g333wj3bt3L/Pvjx49Km3bti11n5tuukm++uorsSd9V9l4ENQsIVQg7GHt3uuvv159i/juu+9k9uzZak1frC1szckCJx8sQYcaGnz7K+nbr54+/O68804V9lBDgDdaenq6Kjus2PLCCy/Im2++adW3ZdR0YYWXyy+/XAUd1Fj9+eef8sMPP0jt2rVl0qRJojcPPPCACnv4lovwgvLESQNfGh599FH53//+V+Z94Fjdt2+fCiotW7aUWrVqqWP5119/lV27dsm9996rahD15oknnlDvt5o1a6r3L74Q4P2KWmas/Y0VeipyMkLNSuPGjdXJWK9eeuklFfbwWXXHHXeo9xuOF5Qdrq9Zs8bqGmacrJ966imLqyTp0YcffqjCHmrRUVb4YoGyRC3ziBEj1KU1taT4UoFzDc4RCNpaLRfC32+//aZaivQW+H788Uf15R3vMZRV3bp1Ve0mzpU4j2zdulWqVq1a6n2gjF5//XWLt+HLCs4lt99+u92fO2v4dAK1UI888ohcffXVMm/ePEPz67Zt26RPnz4SGhqqvsWWVcWOwIcPTDRn4sPyqquuUidiPdfw4VsoapeaNm2qmta05i98C0OTOJooDhw4IFFRUaXeD5ozcJINCwsz2Y4P1oceekjq16+vXg89wf+DJmt8qOMEi5Mv4ASAYxG1fzh5IACXFfhQ24UyMobjDsdgQkKCOokgCOoFat7w5QxhY926dYb/DeWA4+748eMq5CIEWwvhccCAAfLzzz/LK6+8or5w6LGGD59T+BKL7gM42eJ3rdYPtfLoioLPRAQQa2r48IUZXyw8AZb3xOcU3lP47NOOL3xR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",
      "text/plain": [
       "<Figure size 600x350 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(6, 3.5))\n",
    "ax.plot(thresholds['threshold'], thresholds['error cost ($)'], marker='o', lw=2)\n",
    "ax.set_xlabel('decision threshold')\n",
    "ax.set_ylabel('total error cost ($)')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c031",
   "metadata": {},
   "source": [
    "At the default threshold of 0.5, the errors cost \\$10,400. Lowering the threshold to 0.2 flags 155 customers instead of 87, raises recall from 0.73 to 0.93, and cuts the error cost to \\$6,150, a saving of more than \\$4,000 on 300 customers, even though accuracy falls from 0.84 to 0.73. The retention team makes more calls that turn out to be unnecessary, but each one is cheap compared with a lost customer. Notice also that the most accurate thresholds (0.5 and 0.7) are among the most expensive.\n",
    "\n",
    "There is a simple rule of thumb behind this. Flag a customer when the expected cost of *not* flagging is larger than the cost of flagging:\n",
    "\n",
    "$$400 \\times p > 50 \\times (1 - p) \\quad\\Longleftrightarrow\\quad p > \\frac{50}{50 + 400} \\approx 0.11 .$$\n",
    "\n",
    "If the probabilities are accurate, the cost-minimizing threshold is the false-alarm cost divided by the sum of the two costs, about 0.11 here, which is close to what the table shows. As before, a careful analysis would choose the threshold on a validation set and confirm it on the test set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "c032",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.270073Z",
     "iopub.status.busy": "2026-10-23T03:54:01.270004Z",
     "iopub.status.idle": "2026-10-23T03:54:01.271516Z",
     "shell.execute_reply": "2026-10-23T03:54:01.271244Z"
    },
    "tags": [
     "thebe-interactive"
    ]
   },
   "outputs": [],
   "source": [
    "### Exercise: A Threshold of 0.25\n",
    "#   1. Flag the test customers whose p_churn is at least 0.25.\n",
    "#   2. Print the number flagged, the recall rounded to 3 decimals, and the\n",
    "#      total error cost with error_cost(y_test, flagged).\n",
    "# Print exactly:\n",
    "# Flagged: 138\n",
    "# Recall: 0.895\n",
    "# Error cost: 6650\n",
    "### Your code starts here.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "### Your code ends here."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "c033",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.272354Z",
     "iopub.status.busy": "2026-10-23T03:54:01.272293Z",
     "iopub.status.idle": "2026-10-23T03:54:01.275643Z",
     "shell.execute_reply": "2026-10-23T03:54:01.275288Z"
    },
    "tags": [
     "hide-input"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Flagged: 138\n",
      "Recall: 0.895\n",
      "Error cost: 6650\n"
     ]
    }
   ],
   "source": [
    "### Solution\n",
    "flagged = (p_churn >= 0.25).astype(int)\n",
    "\n",
    "print('Flagged:', flagged.sum())\n",
    "print('Recall:', round(recall_score(y_test, flagged), 3))\n",
    "print('Error cost:', error_cost(y_test, flagged))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c034",
   "metadata": {},
   "source": [
    "## Comparing with Nearest Neighbors\n",
    "\n",
    "```{index} comparing classifiers; logistic regression and nearest neighbors\n",
    "```\n",
    "\n",
    "```{index} KNeighborsClassifier; predict_proba\n",
    "```\n",
    "\n",
    "A nearest neighbor classifier can also report a probability: `predict_proba` gives the share of the $k$ neighbors in each class. With $k = 11$, the possible probabilities are $0/11, 1/11, \\ldots, 11/11$. So we can compare the two classifiers on the same test set, both at the usual threshold of 0.5 and at a lower threshold suited to the costs."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "c035",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.276523Z",
     "iopub.status.busy": "2026-10-23T03:54:01.276469Z",
     "iopub.status.idle": "2026-10-23T03:54:01.291246Z",
     "shell.execute_reply": "2026-10-23T03:54:01.290930Z"
    },
    "tags": []
   },
   "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>classifier</th>\n",
       "      <th>threshold</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>precision</th>\n",
       "      <th>recall</th>\n",
       "      <th>error cost ($)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>kNN (k = 11)</td>\n",
       "      <td>0.50</td>\n",
       "      <td>0.853</td>\n",
       "      <td>0.762</td>\n",
       "      <td>0.709</td>\n",
       "      <td>10950</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>logistic regression</td>\n",
       "      <td>0.50</td>\n",
       "      <td>0.843</td>\n",
       "      <td>0.724</td>\n",
       "      <td>0.733</td>\n",
       "      <td>10400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>kNN (k = 11)</td>\n",
       "      <td>0.15</td>\n",
       "      <td>0.653</td>\n",
       "      <td>0.449</td>\n",
       "      <td>0.930</td>\n",
       "      <td>7300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>logistic regression</td>\n",
       "      <td>0.15</td>\n",
       "      <td>0.697</td>\n",
       "      <td>0.485</td>\n",
       "      <td>0.942</td>\n",
       "      <td>6300</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            classifier  threshold  accuracy  precision  recall  error cost ($)\n",
       "0         kNN (k = 11)       0.50     0.853      0.762   0.709           10950\n",
       "1  logistic regression       0.50     0.843      0.724   0.733           10400\n",
       "2         kNN (k = 11)       0.15     0.653      0.449   0.930            7300\n",
       "3  logistic regression       0.15     0.697      0.485   0.942            6300"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=11))\n",
    "knn.fit(X_train, y_train)\n",
    "p_churn_knn = knn.predict_proba(X_test)[:, 1]\n",
    "\n",
    "def summarize(name, probabilities, threshold):\n",
    "    flagged = (probabilities >= threshold).astype(int)\n",
    "    return {'classifier': name, 'threshold': threshold,\n",
    "            'accuracy': round(accuracy_score(y_test, flagged), 3),\n",
    "            'precision': round(precision_score(y_test, flagged), 3),\n",
    "            'recall': round(recall_score(y_test, flagged), 3),\n",
    "            'error cost ($)': error_cost(y_test, flagged)}\n",
    "\n",
    "pd.DataFrame([summarize('kNN (k = 11)', p_churn_knn, 0.5),\n",
    "              summarize('logistic regression', p_churn, 0.5),\n",
    "              summarize('kNN (k = 11)', p_churn_knn, 0.15),\n",
    "              summarize('logistic regression', p_churn, 0.15)])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c036",
   "metadata": {},
   "source": [
    "At the usual threshold of 0.5 the two classifiers are close: nearest neighbors is slightly more accurate (0.853 against 0.843), while logistic regression has slightly higher recall and a lower error cost (\\$10,400 against \\$10,950). At a threshold of 0.15 both become much cheaper, and logistic regression is the cheaper of the two (\\$6,300 against \\$7,300). Once the threshold is lowered, both also beat the \\$10,700 of flagging every customer (Section 1405). Logistic regression fits this data set well, which is not surprising: the synthetic data were generated from a logistic model (see the chapter's `MATERIALS.md`). On real data either method may win.\n",
    "\n",
    "Beyond the numbers, the two methods have different strengths:\n",
    "\n",
    "- **Logistic regression** gives smooth probabilities, coefficients whose signs explain the direction of each feature's effect, and fast predictions. It assumes that the probability changes smoothly and in one direction as each feature grows.\n",
    "- **Nearest neighbors** makes no such assumption and can follow irregular patterns, but it offers no coefficients to explain its predictions, needs scaled features, and must search the whole training set for every prediction.\n",
    "\n",
    "In practice, analysts often try both, compare them on validation data with the measure that matters to the business, and choose a threshold to match the costs."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "c037",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.292196Z",
     "iopub.status.busy": "2026-10-23T03:54:01.292132Z",
     "iopub.status.idle": "2026-10-23T03:54:01.293664Z",
     "shell.execute_reply": "2026-10-23T03:54:01.293366Z"
    },
    "tags": [
     "thebe-interactive"
    ]
   },
   "outputs": [],
   "source": [
    "### Exercise: Compare at a Threshold of 0.3\n",
    "#   1. Flag test customers at a threshold of 0.3, once with p_churn (logistic regression)\n",
    "#      and once with p_churn_knn (11-nearest neighbors).\n",
    "#   2. Print the error cost of each with error_cost(y_test, flagged), and the name\n",
    "#      of the cheaper classifier.\n",
    "# Print exactly:\n",
    "# logistic regression cost: 7000\n",
    "# kNN cost: 8650\n",
    "# Cheaper: logistic regression\n",
    "### Your code starts here.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "### Your code ends here."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "c038",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-23T03:54:01.294462Z",
     "iopub.status.busy": "2026-10-23T03:54:01.294408Z",
     "iopub.status.idle": "2026-10-23T03:54:01.297029Z",
     "shell.execute_reply": "2026-10-23T03:54:01.296714Z"
    },
    "tags": [
     "hide-input"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "logistic regression cost: 7000\n",
      "kNN cost: 8650\n",
      "Cheaper: logistic regression\n"
     ]
    }
   ],
   "source": [
    "### Solution\n",
    "costs = {}\n",
    "for name, probabilities in [('logistic regression', p_churn), ('kNN', p_churn_knn)]:\n",
    "    flagged = (probabilities >= 0.3).astype(int)\n",
    "    costs[name] = error_cost(y_test, flagged)\n",
    "    print(name, 'cost:', costs[name])\n",
    "\n",
    "print('Cheaper:', min(costs, key=costs.get))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c039",
   "metadata": {},
   "source": [
    "## Summary\n",
    "\n",
    "- Logistic regression predicts a probability by passing a weighted sum of the features through the logistic (sigmoid) curve, which always gives a value between 0 and 1.\n",
    "- `LogisticRegression` is fitted with `fit`; `predict_proba` returns the predicted probabilities, and `predict` applies a threshold of 0.5.\n",
    "- The sign of a coefficient tells whether a larger value of that feature raises or lowers the predicted probability, holding the other features fixed.\n",
    "- Moving the decision threshold trades precision against recall; with known error costs, choose the threshold with the lowest total cost.\n",
    "- Logistic regression and nearest neighbors can be compared on the same test set with the same measures and costs."
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "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.13.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
