{ "cells": [ { "cell_type": "markdown", "id": "add886cf", "metadata": {}, "source": [ "# 🔢 MNIST Classification — Complete Workflow\n", "### Binary, Multiclass, Multilabel & Multioutput Classification\n", "\n", "This notebook covers the full classification arc on the MNIST handwritten\n", "digits dataset, mirroring everything you built across the season:\n", "\n", "| Stage | What's covered |\n", "|-------|-----------------|\n", "| Binary Classification | Detect digit \"8\" with SGD, Random Forest, and a dummy baseline |\n", "| Cross-Validation | `cross_val_score`, `cross_val_predict`, `StratifiedKFold` |\n", "| Metrics | Confusion matrix, precision, recall, F1, decision function, PR curve, ROC curve, AUC |\n", "| Multiclass | One-vs-Rest / One-vs-One with SVC |\n", "| Multilabel | KNN predicting two independent yes/no labels at once |\n", "| Multioutput | KNN denoising images (predicting a full image, not a label) |\n", "\n", "> **Note on metrics:** This notebook explains precision, recall, F1, k-fold CV,\n", "> and decision functions in more depth than the rest, since these are the\n", "> concepts most people get stuck on first.\n" ] }, { "cell_type": "markdown", "id": "05cf3896", "metadata": {}, "source": [ "## 1. Imports" ] }, { "cell_type": "code", "execution_count": 1, "id": "49db1652", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from sklearn.datasets import fetch_openml\n", "from sklearn.linear_model import SGDClassifier\n", "from sklearn.ensemble import RandomForestClassifier\n", "from sklearn.dummy import DummyClassifier\n", "from sklearn.svm import SVC\n", "from sklearn.neighbors import KNeighborsClassifier\n", "from sklearn.multiclass import OneVsRestClassifier\n", "from sklearn.multioutput import ClassifierChain\n", "\n", "from sklearn.model_selection import (\n", " cross_val_score, cross_val_predict, StratifiedKFold\n", ")\n", "from sklearn.base import clone\n", "from sklearn.metrics import (\n", " confusion_matrix, ConfusionMatrixDisplay,\n", " precision_score, recall_score, f1_score,\n", " precision_recall_curve, roc_curve, roc_auc_score\n", ")\n", "\n", "%matplotlib inline\n" ] }, { "cell_type": "markdown", "id": "370d2dfe", "metadata": {}, "source": [ "## 2. Loading MNIST\n", "\n", "MNIST is 70,000 images of handwritten digits (0-9), each flattened into a\n", "784-length vector (28×28 pixels). We split it into the first 60,000 rows for\n", "training and the last 10,000 for testing — this is the dataset's standard split." ] }, { "cell_type": "code", "execution_count": 2, "id": "f2f46d13", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "X shape: (70000, 784), y shape: (70000,)\n" ] } ], "source": [ "mnist = fetch_openml(\"mnist_784\", as_frame=False)\n", "X, y = mnist.data, mnist.target\n", "print(f\"X shape: {X.shape}, y shape: {y.shape}\")\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "a955daf4", "metadata": {}, "outputs": [ { "data": { "image/png": "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iNi/f3/xZsWKFTUd62xzwQUXFG+mTJlSvFm1alXxpnPnzsWbiIgrr7yyeHPzzTfXdKxzkSsFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgCkuqqqquY+CY739ddf17S77bbbijcHDhyo6VicWa1bty7eLFy4sHhTX19fvKlFnz59atp169ateDNo0KCajnUucqUAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkd0ltofbt21fTbtiwYcWb7du313Sss00tv3a13LHzk08+Kd5ERLRr16544w64lHKlAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGA1Ka5T4AT6969e027uXPnFm/WrFlTvBk6dGjxZurUqcWbWl111VXFmw0bNhRv6uvrizffffdd8SYiYt68eTXtoIQrBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoApLqqqqrmPgma18GDB4s3nTt3Lt5MmjSpeBMR8eabbxZvFi1aVLwZN25c8QbONq4UAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQ2jT3CdD8/vWvf52R43Tp0uWMHCeitpvo3X///cWbVq18X8XZxe9oAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAg1VVVVTX3SXBu+O2332rajR49unjz6aefFm8+/PDD4s3IkSOLN9CSuVIAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEByQzxavO3btxdvrr766uJN165dize33npr8eaaa64p3kREPPbYY8Wburq6mo7FucuVAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkhvicVZatWpV8Wb8+PHFm4MHDxZvavXCCy8Ubx588MHiTe/evYs3nD1cKQCQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAILkhHvzbt99+W7yZNm1a8WbDhg3Fm1o98sgjxZuZM2cWb/r27Vu8oWVypQBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgOSGePAX7N+/v3izZs2amo710EMPFW9q+eN9++23F2/Wr19fvKFlcqUAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkd0mFf4j27dsXb5qamoo3bdu2Ld6sW7eueHPLLbcUbzj9XCkAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACC1ae4TgJbim2++Kd6sWLGieLNx48biTURtN7erxeDBg4s3N91002k4E5qDKwUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACQ3xKPF27ZtW/Fm/vz5xZuVK1cWbxobG4s3Z1KbNuV/xHv37l28adXK95dnC38nAUiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQ3BCPmtRyI7glS5bUdKxXXnmleLNjx46ajtWSXXvttcWbmTNnFm/GjBlTvOHs4UoBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgDJDfHOMnv27CnebNmypXgzefLk4s3WrVuLNy3dsGHDijdPPPFETce6++67izetWvm+jzJ+xwCQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAMldUs+Affv2FW8mTZpU07E2b95cvNm+fXtNx2rJRowYUbyZNm1a8eaOO+4o3nTs2LF4A2eKKwUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKAKRz+oZ4X331VfHmpZdeKt5s3LixeLN79+7iTUvXqVOnmnZTp04t3sycObN4U19fX7yBs40rBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoApHP6hnirVq06I5szafDgwcWb0aNHF29at25dvJk+fXrxJiKia9euNe2Acq4UAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQ6qqqqpr7JABoGVwpAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJD+D5AeyRRQIFucAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(X[0].reshape(28, 28), cmap=\"binary\")\n", "plt.title(f\"Label: {y[0]}\")\n", "plt.axis(\"off\")\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "50078e10", "metadata": {}, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]\n" ] }, { "cell_type": "markdown", "id": "a4075960", "metadata": {}, "source": [ "## 3. Binary Classification — \"Is it an 8?\"\n", "\n", "We convert the 10-class problem into a yes/no problem: is this digit an 8 or not?\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "64ada266", "metadata": {}, "outputs": [], "source": [ "y_train8 = (y_train == \"8\")\n", "y_test8 = (y_test == \"8\")\n" ] }, { "cell_type": "markdown", "id": "fc39f86f", "metadata": {}, "source": [ "### 3.1 SGD Classifier (baseline linear model)" ] }, { "cell_type": "code", "execution_count": 6, "id": "64ab9cc6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([False, False, True])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sgd = SGDClassifier(random_state=42)\n", "sgd.fit(X_train, y_train8)\n", "sgd.predict(X_train[-3:])\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "4ffe8aae", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9446166666666667" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sgd.score(X_train, y_train8)\n" ] }, { "cell_type": "markdown", "id": "415c5936", "metadata": {}, "source": [ "### 3.2 Cross-validated accuracy\n", "\n", "A single `.score()` call only tells you accuracy on the data the model trained\n", "on — there's no guarantee it generalises. `cross_val_score` solves this by\n", "splitting the training data into 5 folds (`cv=5`), training on 4, testing on the\n", "5th, and repeating 5 times so every fold gets a turn as the test set.\n" ] }, { "cell_type": "code", "execution_count": 8, "id": "01164858", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.90666667, 0.93833333, 0.91566667, 0.80708333, 0.8995 ])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cross_val_score(sgd, X_train, y_train8, cv=5, scoring=\"accuracy\")\n" ] }, { "cell_type": "markdown", "id": "19d87f55", "metadata": {}, "source": [ "### 3.3 Why accuracy alone is misleading — the Dummy baseline\n", "\n", "About 90% of digits are *not* an 8. A lazy classifier that always predicts\n", "\"not 8\" would already be ~90% accurate while being completely useless.\n", "`DummyClassifier` exists specifically to expose this trap.\n" ] }, { "cell_type": "code", "execution_count": 9, "id": "93adfcb8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.int64(0)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dummy_c = DummyClassifier()\n", "dummy_c.fit(X_train, y_train8)\n", "dummy_c.predict(X_train).sum() # how many times it predicted \"True\" — should be 0\n" ] }, { "cell_type": "code", "execution_count": 10, "id": "84393911", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.9025 , 0.9025 , 0.9025 , 0.9025 , 0.90241667])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cross_val_score(dummy_c, X_train, y_train8, cv=5, scoring=\"accuracy\")\n" ] }, { "cell_type": "markdown", "id": "b240c3b2", "metadata": {}, "source": [ "**Reading this number:** if the dummy baseline scores ~0.90 and your SGD\n", "model also scores ~0.90, your model has learned *nothing* — it's no better\n", "than always guessing \"not 8\". This is exactly why precision/recall/F1 (next\n", "section) matter more than raw accuracy for imbalanced classes." ] }, { "cell_type": "markdown", "id": "17268c63", "metadata": {}, "source": [ "### 3.4 What k-fold cross-validation is actually doing\n", "\n", "This manual loop is the same thing `cross_val_score` does internally —\n", "written out so you can see every step:\n", "\n", "* `StratifiedKFold(n_splits=5)` splits the data into 5 folds, but **stratified**\n", " means each fold keeps the same ratio of 8s to non-8s as the full dataset.\n", " Without this, an unlucky fold could end up with very few 8s, making the score\n", " for that fold unreliable.\n", "* For each of the 5 iterations: clone a fresh, untrained copy of the model\n", " (`clone(sgd)`), train it on 4 folds, test it on the 1 held-out fold.\n", "* `correct_predictions / len(y_pred)` is just accuracy for that single fold.\n" ] }, { "cell_type": "code", "execution_count": 11, "id": "916635a3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9066666666666666\n", "0.9383333333333334\n", "0.9156666666666666\n", "0.8070833333333334\n", "0.8995\n" ] } ], "source": [ "skf = StratifiedKFold(n_splits=5)\n", "\n", "for train_i, test_i in skf.split(X_train, y_train8):\n", " cloned_sgd = clone(sgd)\n", " X_train_f, y_train8_f = X_train[train_i], y_train8[train_i]\n", " X_test_f, y_test_f = X_train[test_i], y_train8[test_i]\n", "\n", " cloned_sgd.fit(X_train_f, y_train8_f)\n", " y_pred = cloned_sgd.predict(X_test_f)\n", " correct_predictions = (y_pred == y_test_f).sum()\n", " print(correct_predictions / len(y_pred))\n" ] }, { "cell_type": "markdown", "id": "4c424410", "metadata": {}, "source": [ "### 3.5 Getting predictions for every training sample — `cross_val_predict`\n", "\n", "`cross_val_score` only gives you the **score** for each fold. `cross_val_predict`\n", "gives you the actual **predictions** — each sample's prediction comes from the\n", "fold where it was in the test set, so you still never get a prediction that\n", "\"cheated\" by training on its own answer. This is essential for the metrics below." ] }, { "cell_type": "code", "execution_count": 12, "id": "ddb1e9a6", "metadata": {}, "outputs": [], "source": [ "y_pred = cross_val_predict(sgd, X_train, y_train8, cv=5)\n" ] }, { "cell_type": "markdown", "id": "37f91c30", "metadata": {}, "source": [ "## 4. The Confusion Matrix — the foundation of every metric below\n", "\n", "A confusion matrix counts how predictions split against the truth:\n", "\n", "```\n", " Predicted: Not 8 Predicted: 8\n", "Actual: Not 8 True Negative (TN) False Positive (FP)\n", "Actual: 8 False Negative (FN) True Positive (TP)\n", "```\n", "\n", "* **TN** — correctly said \"not 8\"\n", "* **TP** — correctly said \"8\"\n", "* **FP** — said \"8\" but it wasn't (a false alarm)\n", "* **FN** — said \"not 8\" but it actually was an 8 (a miss)\n", "\n", "Every metric below (precision, recall, F1) is just a different ratio of these\n", "four numbers.\n" ] }, { "cell_type": "code", "execution_count": 13, "id": "ecf97e36", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[49148, 5001],\n", " [ 1392, 4459]])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "confusion_matrix(y_train8, y_pred)\n" ] }, { "cell_type": "markdown", "id": "b4b2ae52", "metadata": {}, "source": [ "## 5. Precision, Recall, F1 — explained in depth\n", "\n", "These three numbers are the ones students get stuck on most, so here's what\n", "each one is really asking:\n", "\n", "### Precision — \"Of everything I called an 8, how many actually were?\"\n", "\n", "$$\\text{Precision} = \\frac{TP}{TP + FP}$$\n", "\n", "If precision = 0.85, it means: **when the model says \"this is an 8,\" it's\n", "right 85% of the time.** A model can cheat at precision by only ever guessing\n", "\"8\" when it's extremely confident — it becomes very picky, missing a lot of\n", "real 8s in the process, but rarely wrong when it does guess.\n", "\n", "### Recall — \"Of all the real 8s, how many did I catch?\"\n", "\n", "$$\\text{Recall} = \\frac{TP}{TP + FN}$$\n", "\n", "If recall = 0.75, it means: **out of every real 8 in the data, the model\n", "correctly found 75% of them** — and missed the other 25%. A model can cheat\n", "at recall by guessing \"8\" very liberally, catching almost every real 8, at the\n", "cost of a lot of false alarms (which tanks precision).\n", "\n", "### The precision/recall tradeoff\n", "\n", "These two numbers pull in opposite directions. Being more cautious (raising\n", "the threshold to say \"8\") increases precision but lowers recall. Being more\n", "liberal does the reverse. There's no single \"right\" number — it depends on\n", "the cost of a false positive vs. a false negative for your specific problem.\n", "(E.g. a cancer-screening model should favor recall — missing a real case is\n", "worse than a false alarm. A spam filter should favor precision — wrongly\n", "blocking a real email is worse than missing one piece of spam.)\n", "\n", "### F1 score — a single number balancing both\n", "\n", "$$F1 = 2 \\times \\frac{\\text{Precision} \\times \\text{Recall}}{\\text{Precision} + \\text{Recall}}$$\n", "\n", "F1 is the **harmonic mean** of precision and recall (not the regular average).\n", "The harmonic mean punishes imbalance — if either precision or recall is very\n", "low, F1 will be low too, even if the other one is high. This makes F1 useful\n", "when you want one number that's only high if *both* precision and recall are\n", "reasonably good.\n" ] }, { "cell_type": "code", "execution_count": 14, "id": "3b8fafaf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.47135306553911205" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "precision_score(y_train8, y_pred)\n" ] }, { "cell_type": "code", "execution_count": 15, "id": "e16611ff", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.762091950094001" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "recall_score(y_train8, y_pred)\n" ] }, { "cell_type": "code", "execution_count": 16, "id": "1efbb754", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5824570570178303" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f1_score(y_train8, y_pred)\n" ] }, { "cell_type": "markdown", "id": "0a1ecc9b", "metadata": {}, "source": [ "## 6. The Decision Function — what's actually happening under the hood\n", "\n", "Every classifier has to make a **yes/no** decision somehow. For linear models\n", "like SGD, this happens via `decision_function()` — it computes a raw, signed\n", "number for each sample:\n", "\n", "* **Positive number** → model leans toward \"yes, this is an 8\" (further from\n", " zero = more confident)\n", "* **Negative number** → model leans toward \"no, not an 8\"\n", "* **The default decision threshold is 0** — anything above 0 gets classified\n", " as \"8\", anything below as \"not 8\"\n", "\n", "This is the *real* mechanism behind `.predict()` — `.predict()` is just\n", "`decision_function() > 0` under the hood.\n" ] }, { "cell_type": "code", "execution_count": 17, "id": "b3dd1b8b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-12954.44836362])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sgd.decision_function([X_train[0]])\n" ] }, { "cell_type": "markdown", "id": "58827f8e", "metadata": {}, "source": [ "**Why this matters:** because the threshold (0) is something *you* can move.\n", "Raising the threshold (e.g. requiring score > 2 instead of > 0) makes the\n", "model more cautious → higher precision, lower recall. Lowering it does the\n", "opposite. The PR curve below visualizes exactly this tradeoff across every\n", "possible threshold." ] }, { "cell_type": "code", "execution_count": 18, "id": "7d9e4bf2", "metadata": {}, "outputs": [], "source": [ "y_scores = cross_val_predict(sgd, X_train, y_train8, cv=5, method=\"decision_function\")\n" ] }, { "cell_type": "markdown", "id": "770a9be0", "metadata": {}, "source": [ "## 7. Precision-Recall Curve\n", "\n", "`precision_recall_curve` computes precision and recall at **every possible\n", "threshold value**, letting you see the full tradeoff instead of just one\n", "fixed point.\n" ] }, { "cell_type": "code", "execution_count": 19, "id": "c664513a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "thresholds shape: (60000,)\n", "precision shape : (60001,)\n", "recall shape : (60001,)\n" ] } ], "source": [ "prec, recall, thresholds = precision_recall_curve(y_train8, y_scores)\n", "print(\"thresholds shape:\", thresholds.shape)\n", "print(\"precision shape :\", prec.shape)\n", "print(\"recall shape :\", recall.shape)\n" ] }, { "cell_type": "markdown", "id": "e7087a3d", "metadata": {}, "source": [ "Note `prec` and `recall` have one more entry than `thresholds` — sklearn adds\n", "a final point representing threshold = +infinity (precision=1, recall=0), so\n", "the curve has a clean end point." ] }, { "cell_type": "code", "execution_count": 20, "id": "9696bf2f", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(7, 5))\n", "ax.plot(thresholds, prec[:-1], \"r\", label=\"precision\")\n", "ax.plot(thresholds, recall[:-1], \"black\", label=\"recall\")\n", "ax.set_xlabel(\"decision threshold\")\n", "ax.legend()\n", "ax.set_title(\"Precision & Recall vs. Threshold\")\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "755b033a", "metadata": {}, "source": [ "**Reading this plot:** as the threshold moves right (more cautious), the red\n", "precision line climbs while the black recall line falls. The crossing point\n", "is roughly where precision and recall are balanced — but you might deliberately\n", "pick a different point depending on what matters more for your use case." ] }, { "cell_type": "code", "execution_count": 21, "id": "e918f729", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(recall, prec)\n", "plt.xlabel(\"recall\")\n", "plt.ylabel(\"precision\")\n", "plt.title(\"Precision vs. Recall\")\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "c55404a3", "metadata": {}, "source": [ "**Reading this plot:** this is the same information, just recall on the x-axis\n", "and precision on the y-axis directly against each other. The closer the curve\n", "hugs the top-right corner, the better the model — that corner represents\n", "perfect precision AND perfect recall simultaneously (impossible in practice,\n", "but the benchmark to compare models against)." ] }, { "cell_type": "markdown", "id": "6795b480", "metadata": {}, "source": [ "### 7.1 Picking a threshold for a target precision\n", "\n", "Say your goal is \"I want at least 80% precision, whatever recall that costs.\"\n", "You can search the threshold array for the first point where precision crosses 0.8:\n" ] }, { "cell_type": "code", "execution_count": 22, "id": "bfa77eb3", "metadata": {}, "outputs": [], "source": [ "thresh_for_80_prec = thresholds[(prec >= 0.8).argmax()]\n", "y_pred_80_prec = (y_scores >= thresh_for_80_prec)\n" ] }, { "cell_type": "code", "execution_count": 23, "id": "0b56438e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8001991370726851" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "precision_score(y_train8, y_pred_80_prec)\n" ] }, { "cell_type": "code", "execution_count": 24, "id": "1510e738", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.41206631345069217" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "recall_score(y_train8, y_pred_80_prec)\n" ] }, { "cell_type": "markdown", "id": "fd92dc6f", "metadata": {}, "source": [ "Notice precision is now pinned near 0.80 (as requested), but recall has\n", "dropped compared to the default threshold=0 predictions. That's the tradeoff\n", "made concrete — you traded recall to guarantee a higher precision." ] }, { "cell_type": "markdown", "id": "b365ae63", "metadata": {}, "source": [ "## 8. ROC Curve — a different lens on the same tradeoff\n", "\n", "ROC stands for \"Receiver Operating Characteristic\" (a name from old radar\n", "signal detection). Instead of precision vs. recall, it plots:\n", "\n", "* **TPR (True Positive Rate)** = recall — same thing, different name here\n", "* **FPR (False Positive Rate)** = `FP / (FP + TN)` — the fraction of actual\n", " negatives that get wrongly flagged as positive\n", "\n", "A model with **no skill at all** (random guessing) traces the diagonal line\n", "from (0,0) to (1,1). A perfect model would shoot straight up to (0,1) and\n", "across — catching every positive with zero false alarms. The more the curve\n", "bulges toward the top-left, the better.\n" ] }, { "cell_type": "code", "execution_count": 25, "id": "cd94672e", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHFCAYAAAAOmtghAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAa8tJREFUeJzt3Xd4U9UfBvA3o+mkLS10MQuyUUrL3rMsERQsS6CAowg/QQRkCAiiICAqyFKBgqwiCMoQqLI3LS0yZc8uWrp3kvP7ozRS2kILSW+Svp/nyWNyc2/yvdfS+/bcc8+RCSEEiIiIiMyEXOoCiIiIiPSJ4YaIiIjMCsMNERERmRWGGyIiIjIrDDdERERkVhhuiIiIyKww3BAREZFZYbghIiIis8JwQ0RERGaF4YbIyAUGBkImk+keSqUS7u7u6N+/P65du1bgNtnZ2Vi2bBmaN28OBwcHWFtbo06dOpg0aRLi4uIK3Ear1eKXX35Bp06dUK5cOVhYWMDFxQWvv/46duzYAa1W+9xaMzMz8cMPP6BVq1YoW7YsVCoVKlSoAD8/Pxw6dOiljoM52rt3L3x9feHh4QFLS0t4eHigXbt2mDt3br51MzMzsWTJErRt2xbOzs6wsLCAs7Mz2rVrhxUrViA5OTnP+k/+zCgUCpQtWxYNGjTABx98gJMnT5bULhJJQsbpF4iMW2BgIIYNG4bVq1ejdu3ayMjIwLFjx/Dll1+iTJkyuHLlCsqWLatbPy0tDd27d8fRo0fx/vvv4/XXX4e1tTVOnDiBBQsWwM7ODsHBwahVq5Zum4yMDPTu3Rv79u1D//798eabb8LNzQ0PHz7Enj17sHbtWgQFBaFXr16F1hkbG4uuXbvin3/+wfDhw9GtWzc4OTnhwYMH+P333/Hrr78iNDQUDRo0MOjxMhXLly/HyJEj0adPHwwcOBBOTk64d+8ejh8/jjNnziAkJES37sOHD9G1a1dcuHABQ4cORZcuXeDi4oK4uDjs378fa9aswRtvvIFffvlFt41MJkPfvn3xySefQAiBpKQkXLhwAWvXrsU///yDjz76CN9//70Uu05keIKIjNrq1asFAHHmzJk8y2fOnCkAiFWrVuVZ/v777wsAYtOmTfk+699//xUODg6iXr16Qq1W65aPHDlSABBr1qwpsIarV6+Kc+fOPbPObt26CaVSKf7+++8C3z99+rS4c+fOMz+jqNLS0vTyOVKqXLmyaNOmTYHvaTSaPK99fX2FhYWFOHToUIHrx8bGil9++SXPMgBi1KhR+dZVq9Vi+PDhAoBYunTpC1ZPZNwYboiMXGHhZteuXQKAmDNnjm5ZZGSkUCqVokuXLoV+3ldffSUAiC1btui2sbCweOY2zxMSEiIAiA8++KBI68+YMUMU9LdV7r7eunVLt6xKlSqiR48eYuvWrcLLy0tYWlqKTz/9VHh5eYlWrVrl+wy1Wi08PDzEm2++qVuWmZkpvvjiC1GrVi2hUqlEuXLlhL+/v4iJiSn+zuqJra2t6Nev33PXO336dKFB5VmetU1aWpooV66c8PT0LNZnEpkK9rkhMlG3bt0CANSsWVO37MCBA1Cr1ejdu3eh2+W+FxwcrNsmOzv7mds8z759+/J8tr6dPXsWEyZMwEcffYQ9e/agT58+GDZsGI4ePZqv39G+ffsQERGBYcOGAcjpS9SrVy/MnTsXAwcOxK5duzB37lwEBwejXbt2SE9PN0jNz9O8eXNs3boVn3/+Oc6dOweNRlPgern/n9544w29fbe1tTU6deqEW7du4f79+3r7XCJjwXBDZCI0Gg3UajVSUlKwd+9ezJ49G23atMlz0rt79y4AwNPTs9DPyX0vd92ibPM8+viMZ4mJicGff/6JYcOGoV27dmjcuDEGDRoElUqFwMDAPOsGBgbC1dUV3bp1AwBs3rxZ129o+vTp6NSpE0aMGIHt27fj0qVL+bYvKcuXL0ft2rUxc+ZMeHl5oUyZMujUqROWLFmC7Oxs3Xr37t0DAFSpUiXP9kIIqNVq3aOwcFSY3M+LiIh4yT0hMj4MN0QmolmzZrCwsECZMmXQtWtXlC1bFr///juUSuULfZ5MJtNzhYbz2muv5WmhAgBnZ2f07NkTa9as0d3JFR8fj99//x1DhgzRHZedO3fC0dERPXv2zBMGvLy84ObmhoMHDxb6vU8HiOI8nhc2qlevjnPnzuHQoUOYOXMmOnXqhDNnzmD06NFo3rw5MjIynrn977//DgsLC93DwcGhCEcy774RmSuGGyITsXbtWpw5cwb79+/HBx98gMuXL2PAgAF51qlcuTKA/y5ZFST3vUqVKhV5m+fRx2c8i7u7e4HLhw8fjgcPHugu3WzcuBGZmZnw9/fXrRMdHY2EhASoVKo8YcDCwgJRUVGIjY0t9HsPHTqUb5uiPjp27Pjc/ZLL5WjTpg2mT5+OP/74AxEREejXrx9CQ0OxatUqAP8d2zt37uTZtl27djhz5gzOnDmD119//bnf9bTcz/Pw8Cj2tkTG7sX+5COiElenTh00atQIANC+fXtoNBr8/PPP2LJlC/r27atbrlQqsX37dgQEBBT4Odu3bwcAdO7cWbeNhYXFM7d5ni5dumDKlCnYvn07unbt+tz1raysAOSM3WJpaalbXljQKKyVqUuXLvDw8MDq1avRpUsXrF69Gk2bNkXdunV165QrVw7Ozs7Ys2dPgZ9RpkyZQuv08fHBmTNnnrs/xf3cwtja2mLy5MkICgrChQsXAOT8f5oyZQr++OMP+Pr66tZ1dHTU/Tw4OzsX63vS09Px119/oXr16qhYsWKx6yQyehJ3aCai5yjsbqlHjx6JsmXLijp16uS5ddgQt4Jfv379pW8FP3PmjO5W8I0bNwoA4vTp03nWadOmTaF3SxXm008/FZaWluLw4cMCgFixYkWe99etWycAiJMnTz6z/pIWERFR4PLcY/PFF1/olvn6+gqVSiUOHz5c4DZDhw4Vtra2eZahCLeC//jjjy+xB0TGi+GGyMgVFm6EEGLevHkCQJ4xTlJSUkTbtm2FUqkUH374ofjzzz/F/v37xVdffSWcnJxExYoVxZUrV/J8Tnp6uujSpYuQyWRi4MCB4tdffxWHDx8Wv/32mxg5cqSwsrIS27dvf2adDx8+FD4+PkKlUomAgADx+++/i8OHD4ugoCDxzjvvCIVCIcLDw4UQQiQmJgonJyfx6quvim3btokdO3aIPn36CE9Pz2KHm3///VcAEBUrVhTW1tYiISEhz/tqtVp069ZNODk5iZkzZ4o///xT/PXXXyIwMFAMHTpU/Pbbb8/cL0MpW7as6Nu3r1i5cqU4ePCg2LNnj5g5c6awt7cXrq6uecJPTEyMaNiwoVCpVOL9998XW7duFUeOHBG7du0Sc+bMERUqVBDu7u55Ph+A6Nu3rzhx4oQ4fvy42Lt3r/jmm29EgwYNBADx8ccfl/QuE5UYhhsiI/escJOeni4qV64satSokaclJisrSyxZskQ0bdpU2NnZCUtLS1GrVi0xceJEERsbW+D3qNVqsWbNGtGhQwfh5OQklEqlKF++vOjWrZvYsGFDvoHlCpKeni4WLVokmjdvLuzt7YVSqRQeHh7irbfeErt27cqz7unTp0WLFi2Era2tqFChgpgxY4b4+eefix1uhBCiRYsWAoAYNGhQge9nZ2eLBQsWiAYNGggrKythZ2cnateuLT744ANx7dq15+6XIaxYsUK89dZbolq1asLGxkaoVCpRvXp1ERAQIO7du5dv/YyMDLF48WLRqlUr4ejoKJRKpXBychKtW7cWX3/9tYiLi8uzPgDdQy6XC3t7e/Hqq6+K999/X5w4caKkdpNIEpx+gYiIiMwK75YiIiIis8JwQ0RERGaF4YaIiIjMCsMNERERmRWGGyIiIjIrDDdERERkVkrd9AtarRYREREoU6aMSU0cSEREVJoJIZCcnAwPDw/I5c9umyl14SYiIkI3YSARERGZlnv37j13TrRSF25yJ7O7d+8e7O3tJa6GiIiIiiIpKQmVKlUq0qS0pS7c5F6Ksre3Z7ghIiIyMUXpUsIOxURERGRWGG6IiIjIrDDcEBERkVkpdX1uikqj0SA7O1vqMojysbCwgEKhkLoMIiKjxXDzFCEEoqKikJCQIHUpRIVydHSEm5sbx2oiIioAw81TcoONi4sLbGxsePIgoyKEQFpaGmJiYgAA7u7uEldERGR8GG6eoNFodMHG2dlZ6nKICmRtbQ0AiImJgYuLCy9RERE9hR2Kn5Dbx8bGxkbiSoieLfdnlP3CiIjyY7gpAC9FkbHjzygRUeEYboiIiMisSBpuDh8+jJ49e8LDwwMymQzbt29/7jaHDh2Cj48PrKysUK1aNSxfvtzwhVI+/v7+6N27t9RlGKWi/iwTEZFhSBpuUlNT0aBBA/zwww9FWv/WrVvo3r07WrdujbCwMEyZMgUfffQRtm7dauBKiYouMjIS3bp1k7oMIqJSS9K7pbp161ask8Dy5ctRuXJlfPfddwCAOnXqICQkBAsWLECfPn0MVKVpysrKgkqlkrqMUsnNzU3qEoiIik2rFdAKAQHk/FcAQuQ8z12ekqGGVojnfpZCLoO7g7XBay6MSd0KfuLECfj6+uZZ1qVLF6xcuRLZ2dmwsLDIt01mZiYyMzN1r5OSkgxepxTatWuH+vXrQ6VSYe3atahXrx4OHTqEhQsXYvXq1bh58yacnJzQs2dPzJs3D3Z2dgCAwMBAjB07FkFBQRg7dizu3buHVq1aYfXq1boxVDQaDSZMmIBVq1ZBoVBgxIgREE/9cGdmZmLChAnYtGkTkpKS0KhRI3z77bdo3LgxAODgwYNo37499uzZg0mTJuHKlSto3rw5Nm3ahNDQUIwbNw4PHjxAjx49sHLlymfesfbTTz9h1qxZiIuLQ5cuXdC6dWvMmjVLN/Civ78/EhIS8lwaGjt2LMLDw3Hw4EEAOePFzJ8/H8uXL0dkZCRq1qyJadOmoW/fvgCA+Ph4jB49Gvv27UNKSgoqVqyIKVOmYNiwYcjKysK4ceOwdetWxMfHw83NDR988AEmT54MIOey1LZt29C7d2/cvn0bnp6e2Lp1KxYvXoxTp06hRo0aWL58OZo3b17kfSKikqPVCsSnZSFbI6ARAlqtQHKGGtka7VMnfgHtE//NUGuQkJYFhVyOmw9TUMbKAhqtFhptzjYXHiTCw9Eaub8+BcR/zx+HByH+W577+mFyBpLS1XC0scC1mBQo5DLYWSohcjbMqQH/hRHx+PPwuNYH8elIzdLApYwltDkbQSv+2w+tyNk/fXIpY4nTUzvp9TOLw6TCTVRUFFxdXfMsc3V1hVqtRmxsbIEDms2ZMwczZ8586e9OTU0t9D2FQgErK6sirSuXy3XjlDxrXVtb22LXuGbNGowcORLHjh3T/WDL5XIsWrQIVatWxa1bt/Dhhx9i4sSJWLp0qW67tLQ0LFiwAL/88gvkcjneeecdjB8/HuvXrwcAfPPNN1i1ahVWrlyJunXr4ptvvsG2bdvQoUMH3WdMnDgRW7duxZo1a1ClShXMmzcPXbp0wfXr1+Hk5KRb7/PPP8cPP/wAGxsb+Pn5wc/PD5aWltiwYQNSUlLw5ptvYvHixfj0008L3Mdjx44hICAAX3/9Nd544w389ddfmDZtWrGP1WeffYbffvsNy5YtQ40aNXD48GG88847KF++PNq2bYtp06bh0qVL+PPPP1GuXDlcv34d6enpAIBFixbhjz/+wObNm1G5cmXcu3cP9+7de+b3TZ06FQsWLECNGjUwdepUDBgwANevX4dSqdTbPhGVJtkaLWKSM3WtDRptzgk7LiUTt2JTcedRGoQArkUn4/rDFLiWsQJk/wUR7eP//nM/AeXsLGEhlyEiMQNyGR4HAPMTk5z5/JWKyFKZt1eLNisDmrREWDjmnKMtLaS9X8mkwg2Q/xbY3JN4YbfGTp48GePGjdO9TkpKQqVKlYr9vbktHQXp3r07du3apXvt4uKCtLS0Atdt27atrvUAAKpWrYrY2Nh86z3dMlIUr7zyCubNm5dn2dixY3XPPT098cUXX2DkyJF5wk12djaWL1+O6tWrAwBGjx6NWbNm6d7/7rvvMHnyZN2lv+XLl2Pv3r2691NTU7Fs2TIEBgbqLjP+9NNPCA4OxsqVKzFhwgTdurNnz0bLli0BACNGjMDkyZNx48YNVKtWDQDQt29fHDhwoNBws3jxYnTr1g3jx48HANSsWRPHjx/Hzp07i3ycUlNTsXDhQuzfv1/XelKtWjUcPXoUK1asQNu2bXH37l00bNgQjRo1ApDz/ynX3bt3UaNGDbRq1QoymQxVqlR57neOHz8ePXr0AADMnDkT9erVw/Xr11G7dm297BORuchUaxCbkoXz9xORnq3GpYgkaAWwPewBnGxVyFBrcO9RerE/905cwb+TAeDhEyf9p4ONSimHQiaDXAakZmlQsaw1ZDJALpNBLpNBBkAmyzkHyWU5n+VgbYFKTja4+TAVTT2dIJfLoJDJIJMBEYkZqOtun7NN7raQ6V7jyc98YnlatgY2Fgq42FsiPUsDF3srqBRyyOU560H3eXm3l8sAyIBsjYCTjQpKheyJ+gE8Xkcuk8FCKYetSqHbl9z/yh+fX+UyGRTynMeTLly4kPOHqlyO06dPG8VYcSYVbtzc3BAVFZVnWUxMDJRKZaEjCltaWsLS0rIkypNc7on4SQcOHMBXX32FS5cuISkpCWq1GhkZGUhNTdW1DtnY2OiCDZAzpH/u8P6JiYmIjIzMcwlFqVSiUaNGugB248YNZGdn60ILkDO5Y5MmTXD58uU89bz22mu6566urrCxsdEFm9xlp0+fLnQf//33X7z55pt5ljVp0qRYQeDSpUvIyMhA586d8yzPyspCw4YNAQAjR45Enz59cPbsWfj6+qJ3795o0aIFgJzLXp07d0atWrXQtWtXvP766/kulz7tyf3ObWGMiYlB7dq19bJPRFLIyNYgPi0Lao2AWisQmZCOk7cewdpCgQsPEuFoY4HQO/Go7GQDjTbnEs+5ewlwtbeCUiGDVvtffw6tAK7HpDzz++JSs/Its7J4HD7kMt0JOz4tG672lnB3sEYdd3vYqhRwsLaAZ3nbxyHjv5O2Qi5DlkYLdwcrKOVy2KgUsLe2gK2lApZKjv79LEIIrFq1CqNHj0ZGRgY8PDxw69Yt1KtXT+rSTCvcNG/eHDt27MizbN++fWjUqFGB/W30KSWl8H90Tw9/nxsMCiKX522qu3379kvV9aSnL2XduXMH3bt3R0BAAL744gs4OTnh6NGjGDFiRJ6RbZ8+djKZrFgtR4W1ngkh8i178rtkMlmB363Vap/5XYW13uWSy+X5lj25v7mfv2vXLlSoUCHPerlBuFu3brhz5w527dqFv/76Cx07dsSoUaOwYMECeHt749atW/jzzz/x119/wc/PD506dcKWLVsKrfvp/X6yjqLsE1FJEELgYXIm7sWnIVOthUab81qjzembsediFBxtLLDzXCSyNIX/O33alajkPK/j04o+snYTz5zL2g0qOsDRRoWmnk5QKuRwsLZAZSebfK0IVDKSk5MxcuRIXfeFrl27Yu3atShfvrzEleWQNNykpKTg+vXrute3bt1CeHg4nJycULlyZUyePBkPHjzA2rVrAQABAQH44YcfMG7cOLz33ns4ceIEVq5ciY0bNxq81uL0gTHUusUVEhICtVqNb775RheqNm/eXKzPcHBwgLu7O06ePIk2bdoAANRqNUJDQ+Ht7Q0g53KYSqXC0aNHMXDgQAA5YSIkJCTPZTF9qF27dr6WnZCQkDyvy5cvjwsXLuRZFh4ergsYdevWhaWlJe7evYu2bdsW+l3ly5eHv78//P390bp1a0yYMAELFiwAANjb26Nfv37o168f+vbti65du+LRo0d5+hfpc5+IXoZao8X9+HQ8SstCtjrneWJ6NuLTshB8KRqPUrNeqj+GtYUCSrkMadka3SWRvj6VEJ2UAa9KjkjL0sCznI2upST38o5C9l9rS25rio1Kiboe9gwtRuzcuXPw8/PD1atXoVAo8OWXX2LChAn5/niXkqThJiQkBO3bt9e9zu0bM3ToUAQGBiIyMhJ3797Vve/p6Yndu3fj448/xpIlS+Dh4YFFixbxNvBCVK9eHWq1GosXL0bPnj1x7NixFxr0cMyYMZg7dy5q1KiBOnXqYOHChXnu4rG1tcXIkSMxYcIEXTCdN28e0tLSMGLECD3uEfC///0Pbdq0wcKFC9GzZ0/s378ff/75Z56Wjw4dOmD+/PlYu3YtmjdvjnXr1uHChQu6S05lypTB+PHj8fHHH0Or1aJVq1ZISkrC8ePHYWdnh6FDh2L69Onw8fFBvXr1kJmZiZ07d6JOnToAgG+//Rbu7u7w8vKCXC7Hr7/+Cjc3Nzg6Ohpsn4hyqTVaRCRkICVTrbvUcyMmBY9Ss5CcqcaFB4k4cu0hHG1UefqSvIjabmWgVMhw62EqvCo7ooylBa4/TEGPV91hrVKgfS0X1HS1489qKTNx4kRcvXoVFStWxKZNm/J0STAWkoabdu3aPbP5PTAwMN+ytm3b4uzZswasynx4eXlh4cKF+PrrrzF58mS0adMGc+bMwZAhQ4r1OZ988gkiIyPh7+8PuVyO4cOH480330RiYqJunblz50Kr1WLw4MFITk5Go0aNsHfvXpQtW1av+9SyZUssX74cM2fOxGeffYYuXbrg448/zjMQZJcuXTBt2jRMnDgRGRkZGD58OIYMGYLz58/r1vniiy/g4uKCOXPm4ObNm3B0dIS3tzemTJkCAFCpVJg8eTJu374Na2trtG7dGps2bQKQ07n866+/xrVr16BQKNC4cWPs3r37hf9qKco+kfkRQiAhLRsPUzLxMDkTGdkahN1NwOlbj+Bkq8LBqzHIyNbCVqWA5vHdQNmaol+uLCzYVCuf01ock5SJKs428HC0hkYr0LmuK+q426Omqx1sVCbVY4FK2KpVqzB58mR8++23hfZ3lZpMlLKL+0lJSXBwcEBiYiLs7e3zvJeRkYFbt27B09Mzz63dZNzee+89XLlyBUeOHJG6FL153j7xZ9U4ZWRrkJ6lQWRiBsLuxSMyIQPXY1JQvowlrkYn405cGqxVCiSmZ+NRAZ1ji8vdwQqKxx1pAaB8GUuUt7OESilHVWcbNKvmDBd7S9iolHApYwmlwnguG5DpCA0NRXBwMCZNmiRpHc86fz+N8ZxMzoIFC9C5c2fY2trizz//xJo1a/Lc2m6KzHGfzEVGtgZJGdl4EJ+O0DvxuBqdDEcbFUJuP0Jalgb/RifDxkKB1CzNS31PLdcysFbl9F3xrlIWr5S3g5VKgVfK26GMlVJ3C65cJoOzrQpy9kkhAxNC4IcffsD48eORlZWFevXqoWfPnlKXVSQMN2RyTp8+jXnz5iE5ORnVqlXDokWL8O6770pd1ksxx30yJRnZGiSlZyMiMQPBl6Jw4UESDl19WOTtnw42MlnOSLHly1iienlbONmqUNfdHmlZGpSzs0RttzLwLG+LsjYqWFnwdmMyPvHx8RgxYgS2bdsGAOjduzdatWolcVVFx3BDJqe4d3yZAnPcJ2ORpdbifnwa0rI0yNZoceJmHO7Hp+Pvy9GITip6h1uVUo4stRaVnWzg4WiFRlWckJyRjXoVHNC4qhMslTljpJSxsuCdPmTSTp06hf79++P27dtQqVRYsGABRo8ebVIdxxluiMhsRCdl4N6jNKw/dRf7Lka90KWi3OH3e7zqjk51XdCupgscbSxM6hc70YtatmwZPvroI6jValSrVg2bN2+Gj4+P1GUVG8NNAUpZH2syQaX5ZzQjW4OLEYl4lJqNy5FJiE7KwK3YVBy/EffcbSs45szr9iAhHb51XeFsp0KH2q7wquQIJ1sVW1yo1HNxcYFarcbbb7+Nn376CQ4ODlKX9EIYbp6QO8hbWlpansktiYxN7txlhh6ZWyr/3E/AlchkXI1OxuFrD+HuYF2sPjA1XOxwLz4No9u/gu6vusOznC1bXogK8eR0PH369MHhw4d1c+eZKoabJygUCjg6OuqmT7CxsTHp/7lkfoQQSEtLQ0xMDBwdHfNN/WFq7j1Kw/WHKUhKz8b1mBRsCb2PyMSMfOtdjS54+pPGVcsiKikDNV3KoH4FB3So7YIGlRwNXDWRedBqtZg3bx4WLVqEkJAQeHh4AABat24tcWUvj+HmKW5ubgCePT8UkdQcHR11P6umIiNbg93nI7HpzD2cvvWoSNvUdbeHhVKOCo5W6FjbFWWslKjjbv94Zmb+4UH0oh4+fIghQ4Zgz549AIC1a9dKPo6NPjHcPEUmk8Hd3R0uLi55JlskMhYWFhZG3WKTmqnGv9HJCL+bgD0XolC+jCV2nY985jZu9lao414G7o7WsJDL8EHb6vBw5KVhIkM4fPgwBgwYgIiICFhZWeGHH37A8OHDpS5LrxhuCqFQKIz6BEJkDDKyNVh97DaO34jFP/cTka3RIu05dyiVtbHQXUJ6u1El2Fny1xBRSdBoNJgzZw5mzJgBrVaLOnXqYPPmzahfv77Upekdf6sQ0TOpNVo8Ss3CxcgkbA29j8T0bFyKSELcc6YPKF/GEonp2ahe3g6DmlaGh6MVWtcoDwtOAUAkie+++w7Tpk0DkDNB9ZIlS3Qdic0Nww0R6aRkqnHuXgL2XozCpYgkhNyJL9J2VZxt0KmOKyo75cxnxJmiiYxPQEAAgoKCMGrUKAwdOlTqcgyK4YaolErKyMZPh28iNiUTO/+JRHKG+pnrW1sooNZq0a9xJTT1dIZWCFR2skE9DweolGyNITI2Go0G69evxzvvvAO5XA5bW1ucPHkScrn5/3tluCEqBYQQeJCQM/HjqVuPsOHU3Weu37CyI7I1WrR6pTxef80ddd3tOVEjkQmJiIjAwIEDcejQIURFRWHixIkAUCqCDcBwQ2SWhBAIv5eAuX9ewaki3Hbdr1ElVClng95eFeDuYMVLSkQmbO/evXjnnXcQGxsLOzs7VKpUSeqSShzDDZEZiEhIx1e7L+NSRBIepmQ+9xLTmw0roH1tF3Sv7wYlO/gSmQW1Wo1p06Zh7ty5AIAGDRpg8+bNqFmzpsSVlTyGGyITo9ZosS3sAfZficHZu/HIyNYiMb3wMZlsVApM6FILvb0qoKytqgQrJaKScv/+fQwYMABHjx4FAIwcORILFy6ElZWVxJVJg+GGyMglZ2Tj4L8P8eWuy4hKyj81wdMmdq2Fuu728K5SFvZW5jn3FBHlFRUVhVOnTsHe3h4//fQT/Pz8pC5JUgw3REYoS63FsoM38O1fV5+5XstXnNG5jit6sVWGqNQRQuj6xzVq1Ajr1q2Dj48PqlevLnFl0mO4IZJYtkaLnf9E4ObDVGwLe4D78ekFrmehkKFNjfJ4v0011KvgwJF9iUqx27dvw9/fH99++y0aNmwIAKW+teZJ/O1IJJHQO4/Q/8eTyNaIZ643uFkVTO1RB1YWnA6EiIDt27dj2LBhSEhIwAcffIBTp07xDsenMNwQlZBLEUlYd+oObj5MwcmbBd+e3ayaE5xsVXinaRU08XTinUxEpJOVlYWJEyfi+++/BwA0bdoUmzZtYrApAMMNkQFkZGuw92IU/r4cg0NXHxZ6N5OFQob+jStjes+6nHOJiAp18+ZN9OvXDyEhIQCATz75BF999RVUKva1KwjDDZGeXI1OxtoTt7Hu5LNH//VwsMKQFlXRobYLarqWKaHqiMhUXb58Gc2aNUNSUhKcnJywZs0avP7661KXZdQYbohegFqjxT8PEvEwORPbwx7gyLVYpGTmHzjPyVaFxlXLom1NF/jWc0U5O0sJqiUiU1arVi00a9YMqamp2LhxY6kccbi4GG6InkMIgStRyQi5E48d4RE4ffvZ0xm8/po76ldwwHutq0HB+ZiI6AVcv34dHh4esLGxgVwuR1BQEGxtbWFhwbGrioLhhugpuWHmt7P38dORW89d/xUXOyRnZOPdVtUwvJUnAw0RvZSNGzfi/fffR79+/fDzzz8DABwdHaUtysQw3BA9di06GRO2/IPwewkFvq+Uy9C7YQU426nQvX5O6wyDDBHpS3p6Oj766CNdoLl27RrS09NhbW0tcWWmh+GGSrUstRbf/30VSw7cKPD9sjYW6OVVAR93rgkHazYHE5FhXL58GX5+frhw4QJkMhk+++wzTJ8+HUolT9MvgkeNSp3LkUkIWBeKO3Fp+d5TKeXoUs8NE3xrobKzjQTVEVFps3btWowcORJpaWlwdXXFunXr0KlTJ6nLMmkMN1QqaLQCC/b9i3Un7yA5I/9dTT5VymKhXwNUcbaVoDoiKq3i4+Mxbtw4pKWloWPHjli3bh3c3NykLsvkMdyQ2doWdh+Bx+/gXCF9aAY3q4LXX3OHV2VHWCo5tQERlbyyZcti7dq1CA0NxZQpU6BQ8HeRPsiEEM+e2MbMJCUlwcHBAYmJibC3t5e6HNKzmw9TMGZTOM4/SCzwfbkMWPaOD3zrunLIciIqcUIIrFq1CuXKlUOvXr2kLsekFOf8zZYbMnlCCMzaeQlbQ+8jqYBLTt1fdUP7Wi7o8Zo7bFT8kSciaSQnJ2PkyJFYv349HB0dcfHiRXh4eEhdllnib3oyWRnZGoxafxZ/X4nJ915NVzt84lsLXerx2jURSe/cuXPw8/PD1atXoVAo8Omnn7JvjQEx3JDJSclU44sdlxAUci/fe6v9G6NNzfIcf4aIjIIQAitWrMDYsWORmZmJihUrYuPGjWjVqpXUpZk1hhsyGUIIjN4Yhl3/ROZ7769xbfGKi50EVRERFUytVmPQoEHYvHkzAKBHjx5Ys2YNnJ2dJa7M/DHckNETQuDbv65h0d/X8ixv+YozvvXzgou9lUSVEREVTqlUoly5clAqlZg7dy4+/vhjyOVyqcsqFXi3FBktrVZg3ak7mP77xTzL29Ysj2XveLNzMBEZHSEEUlNTYWeX05KckZGBixcvwsfHR+LKTB/vliKTFnL7ET7fcREXHiTlWe5TpSw+71kPr1Z0kKgyIqLCxcfHY8SIEUhISEBwcDAUCgWsrKwYbCTAcENGQQiBX0PvY+KWf/K9V8XZBiuHNsIrLmUkqIyI6PlOnz6Nfv364fbt27CwsMCZM2fQrFkzqcsqtRhuSFLXopPx4fqzuBaTku8937qumNvnNTjZqiSojIjo+YQQ+Pbbb/Hpp59CrVajWrVqCAoKQqNGjaQurVRjuCHJTNt+Ab+cvJNnWfXytlgzvAkqluWklURk3B49egR/f3/s2LEDANC3b1/8/PPPcHDgpXOpMdxQiTtz+xEG/HgSau1/fdn7N66Ecb414VKGdz4RkWkYOHAg9u7dC0tLS3z77bcICAjgtC5GguGGSszxG7EY+NOpPMuaVXPChnebQc5B94jIxMyfPx9RUVEIDAyEl5eX1OXQExhuyOCyNVq0/voAopIy8iz/tl8DvNmwokRVEREVz8OHD3HkyBG89dZbAIBXX30VZ8+e5dg1Rojhhgzq+PVYDPw5b2vNvL6vwa9RJYkqIiIqvsOHD2PAgAGIiYnBkSNHdHdCMdgYJ4YbMping02L6s5Y/25TXpMmIpOh0WgwZ84czJgxA1qtFrVr19YN0EfGi+GG9E4IgY7fHMLN2FTdsr8/aYvq5fkLgYhMR3R0NAYNGoS///4bADBkyBAsWbKE4cYEMNyQXmm1Au//EpIn2Gx4tymDDRGZlP3792PgwIGIjo6GjY0NlixZAn9/f6nLoiJiuCG9ycjWoPa0PbrXtd3KYPdHrXknFBGZnPPnzyM6Ohr16tXD5s2bUbduXalLomJguCG9uBuXhjbzD+heu5SxxM7/tWKwISKTIYTQ9Qn86KOPYGFhAX9/f9jYcFBRU8Nu3vTSpv9+IU+wafmKM05P7QSlgj9eRGQa9u3bhzZt2iA5ORkAIJPJ8OGHHzLYmCiefeiFabUCfZcdx9oT/02hMKxlVax/l5PFEZFpUKvVmDJlCrp06YKjR49i7ty5UpdEesDLUvRCLkYkoseio7rX1hYKhE3vDCsLhYRVEREV3f379zFgwAAcPZrzuywgIADTpk2TuCrSB8lbbpYuXQpPT09YWVnBx8cHR44ceeb669evR4MGDWBjYwN3d3cMGzYMcXFxJVQtAUDQmbt5gk0dd3sGGyIyKbt27YKXlxeOHj2KMmXKICgoCMuWLYOVFee3MweShpugoCCMHTsWU6dORVhYGFq3bo1u3brh7t27Ba5/9OhRDBkyBCNGjMDFixfx66+/4syZM3j33XdLuPLSKVOtQdVJu/Dp1vO6ZZs/aI4/x7RmsCEik7Fq1Sq8/vrriIuLg7e3N8LCwuDn5yd1WaRHMiGEeP5qhtG0aVN4e3tj2bJlumV16tRB7969MWfOnHzrL1iwAMuWLcONGzd0yxYvXox58+bh3r17RfrOpKQkODg4IDExEfb29i+/E6XEyZtx6P/jSd1rhVyGkKmdUNZWJWFVRETFFx0djYYNG6Jv376YP38+LC0tpS6JiqA452/JWm6ysrIQGhoKX1/fPMt9fX1x/PjxArdp0aIF7t+/j927d0MIgejoaGzZsgU9evQo9HsyMzORlJSU50FFl5ieDd9vD+UJNh+0qYYbX3VnsCEikxEeHq577urqigsXLmDRokUMNmZKsnATGxsLjUYDV1fXPMtdXV0RFRVV4DYtWrTA+vXr0a9fP6hUKri5ucHR0RGLFy8u9HvmzJkDBwcH3aNSJU7YWFQzfr+ABjP34Wp0im7ZH6NbYnL3OhJWRURUdFlZWRg7diwaNmyIjRs36pY7OTlJWBUZmuQdip+eRPHJQZSedunSJXz00UeYPn06QkNDsWfPHty6dQsBAQGFfv7kyZORmJioexT18lVpt+ufSKx54hZvG5UCZ6d1xmsVHaUrioioGG7evImWLVvi+++/BwBcvnxZ4oqopEh2K3i5cuWgUCjytdLExMTka83JNWfOHLRs2RITJkwAALz22muwtbVF69atMXv2bLi7u+fbxtLSks2OxdRvxQmcuvUIAKBSynH+c19YKtlhmIhMx5YtWzBixAgkJSWhbNmyWLNmDXr27Cl1WVRCJGu5UalU8PHxQXBwcJ7lwcHBaNGiRYHbpKWlQS7PW7JCkXPSlbBftFn5Zt+/umADAKendGSwISKTkZGRgVGjRuHtt99GUlISWrRogfDwcAabUkbSy1Ljxo3Dzz//jFWrVuHy5cv4+OOPcffuXd1lpsmTJ2PIkCG69Xv27InffvsNy5Ytw82bN3Hs2DF89NFHaNKkCTw8PKTaDbPxw/5rWLz/uu71/k/awtGGnYaJyHQcP34cS5cuBQB8+umnOHjwICpXrixxVVTSJB2huF+/foiLi8OsWbMQGRmJ+vXrY/fu3ahSpQoAIDIyMs+YN/7+/khOTsYPP/yATz75BI6OjujQoQO+/vprqXbBbHyz7988weafz31hb2UhYUVERMXXoUMHzJ49G97e3ujWrZvU5ZBEJB3nRgoc5ya/OX9exopDNwEATrYqHPikHRxsGGyIyPilp6djypQpGDt2rO4PYzJPxTl/c26pUu6LnZew8ugt3eu9Y9sw2BCRSbhy5Qr8/Pxw/vx5nDlzBkeOHCn0blsqXSS/FZykE3jsVp5gE/JZJ5QvwzvLiMj4rV27Fj4+Pjh//jxcXFzw+eefM9iQDltuSqmzd+Px+Y5LutfXv+wGpYJZl4iMW2pqKkaPHo3AwEAAOX1s1q1bV+BQIFR6MdyUQtkaLd5a+t8UFycnd2SwISKjd+fOHXTv3h2XLl2CXC7HjBkzMHXqVN2QIES5GG5KGY1WoMbUP3WvT0/pCBd7KwkrIiIqGldXV1hYWMDd3R0bNmxAu3btpC6JjBTDTSnz0cYw3fOPO9VksCEio5aSkgJra2soFApYWVnht99+g52dHVxcXKQujYwYr0WUIn+ci8Cu85EAgAaVHDGmUw2JKyIiKty5c+fg4+OD2bNn65ZVq1aNwYaei+GmlLgVm4rPtp0HAHhXdsRvIwue4oKISGpCCKxYsQJNmzbF1atXsWrVKqSmpkpdFpkQhptS4Nj1WLRfcBBJGWq42VshcHgTKOS8ZZKIjE9SUhIGDBiAgIAAZGZmonv37ggNDYWtra3UpZEJYbgxc/uvRGPQz6cAAFYWcqx/rymnVSAio3T27Fl4e3sjKCgISqUS8+fPx44dO1CuXDmpSyMTww7FZizk9iMMDwzRvd7wXjNUL28nYUVERAVLSkpChw4dkJiYiMqVKyMoKAjNmjWTuiwyUWy5MVOJadnou/yE7vVvH7aAd+WyElZERFQ4e3t7zJ8/H7169UJYWBiDDb0UTpxphoQQ6LPsOM7eTQAA7PxfK9Sv4CBtUURETzl9+jRkMhkaN24MIOd3FwBOo0AFKs75my03ZmjGHxd1webjTjUZbIjIqAghsHDhQrRs2RJvv/024uPjAeSEGgYb0gf2uTEzkYnpWHviDgCgQUUHjmVDREbl0aNH8Pf3x44dOwAAjRo1glzOv7NJv/gTZUa0WoHmc/YDAKwtFNjKsWyIyIgcP34cXl5e2LFjB1QqFZYsWYJff/0VDg5sXSb9YrgxIwuDr+qej+1Ug5NhEpFR0Gq1mDdvHtq0aYN79+7hlVdewcmTJ/Hhhx/yMhQZBM9+ZmL/lWj8cOA6AKCJpxM+aFtd4oqIiHLIZDIcO3YMGo0G/fv3R2hoKBo2bCh1WWTG2OfGDKRlqfOMZ7P+3aYSVkNElEMIoeskvHr1auzYsQNDhgxhaw0ZHFtuzMDUbRd0z38f1RIWvBxFRBLSarX48ssvMWzYMN3t3U5OThg6dCiDDZUIttyYuN/O3se2sAcAgLd9KqJBJUdpCyKiUi06OhqDBw9GcHAwAGDo0KFo3769xFVRacM/8U3YhQeJGLf5HACgjJUSX731qsQVEVFptn//fnh5eSE4OBjW1tZYtWoV2rVrJ3VZVAox3JiwD34J1T0/PaUTL0cRkSQ0Gg0+//xzdOrUCVFRUahbty5CQkIwbNgwXoYiSfCylImKT83Cg4R0AMCYjjVgrVJIXBERlVaDBw/Gxo0bAQDDhw/H4sWLYWNjI3FVVJrxT30T1f/Hk7rnH7bnbd9EJJ0RI0bA3t4ev/zyC1auXMlgQ5Jjy40J+j38Af6NTgYATOhSC5ZKttoQUclRq9W4ePEiGjRoAADo2LEjbt++jbJly0pcGVEOttyYoDGbwgEA9SvYY1T7V6QthohKlfv376NDhw5o3bo1rl+/rlvOYEPGhOHGxOT2swGApQN9JKyEiEqb3bt3w8vLC0eOHAGAPOGGyJgw3JiY3f9EAgDsLJWo7Mzr2kRkeNnZ2Zg4cSJ69OiBuLg4eHt74+zZs+jatavUpREViH1uTIhao8WXuy8DAKq72ElcDRGVBnfv3kX//v1x4sQJAMDo0aOxYMECWFpaSlwZUeEYbkzI7F2Xdc+ndq8jYSVEVFr8+OOPOHHiBBwcHLBy5Ur06dNH6pKInovhxkQIIRB4/DYAoElVJzTxdJK2ICIqFaZPn47Y2Fh8+umn8PT0lLocoiJhnxsTsTnknu75grcbSFgJEZmzW7duYeTIkcjOzgYAqFQqLF++nMGGTApbbkxATHIGPt16HgDwlncFdiQmIoPYunUrRowYgcTERLi4uGDmzJlSl0T0QthyYwLeWHxM93xGz3oSVkJE5igjIwOjR49G3759kZiYiObNm2PEiBFSl0X0whhujFxMUgaikjIAAKv9G8PB2kLiiojInFy/fh0tWrTAkiVLAAATJ07EoUOHULlyZYkrI3pxvCxl5HY+HtcGANrXdpGwEiIyN7t370b//v2RnJwMZ2dnrF27Ft27d5e6LKKXxnBjxDLVGszaeQkAMLR5FYmrISJzU716dWi1WrRu3RobNmxAxYoVpS6JSC8YbozYgr3/6p4PaMomYiJ6eQkJCXB0dAQA1KpVC0eOHMGrr74KpZKnAzIf7HNjxC5GJAEAGlZ2RG03e4mrISJTt27dOlSpUgWHDh3SLWvYsCGDDZkdhhsjdScuFcdvxAEAJnapLXE1RGTK0tLSMHz4cAwePBhJSUn48ccfpS6JyKAYbozUnN1XAAAKuQxNORoxEb2gixcvonHjxli9ejVkMhk+//xzrF27VuqyiAyKbZFGSKsV2HMxCgAwvGVVyOUyiSsiIlMjhEBgYCBGjRqF9PR0uLm5YcOGDWjfvr3UpREZHMONEdrxT4Tu+bjOtSSshIhM1YEDBzB8+HAAQOfOnbFu3Tq4uHA4CSodGG6M0MmbOX1tVEo5rFUKiashIlPUvn17DBo0CHXr1sWkSZMgl7MXApUeDDdGaPf5nEtSs97gVAtEVDRCCPzyyy/o2bMnypYtC5lMhl9++QUyGS9rU+nDKG9kkjKykZieMxtvy1fKSVwNEZmCpKQkDBw4EEOHDsWIESMghAAABhsqtdhyY2QOXIkBAFR2skElJ87+TUTPFhYWBj8/P1y/fh0KhQLNmzeHEILBhko1hhsjs+7kHQBAFWcGGyIqnBACS5cuxbhx45CVlYXKlStj06ZNaN68udSlEUmO4caIaLUCVyKTAQCta/CSFBEVLCEhAe+++y62bt0KAHjjjTewevVqODlxTCwigH1ujMr5B4lIzlQDAPwaVZK4GiIyVhqNBqdPn4aFhQW+/fZbbN++ncGG6AlsuTEi28MfAACaeDrB0UYlcTVEZEye7CTs7OyMX3/9FXK5HI0bN5a4MiLjw5YbI3Li8VxS1crZSlwJERmTR48eoXfv3li9erVuWdOmTRlsiArBcGMkMtUa3H2UBgDo5VVB4mqIyFicOHECDRs2xB9//IFPPvkESUlJUpdEZPQYbozE35djkJalAQBOlElE0Gq1mD9/Ptq0aYO7d++ievXq+Pvvv2Fvby91aURGj31ujMTvj/vbVHC05kSZRKVcbGwshg4dit27dwMA+vXrhx9//JHBhqiIJG+5Wbp0KTw9PWFlZQUfHx8cOXLkmetnZmZi6tSpqFKlCiwtLVG9enWsWrWqhKo1nL0XowEAPlXKSlwJEUkpJSUFPj4+2L17NywtLbFixQps3LiRwYaoGCRtuQkKCsLYsWOxdOlStGzZEitWrEC3bt1w6dIlVK5cucBt/Pz8EB0djZUrV+KVV15BTEwM1Gp1CVeuX5GJ6brnYzrVkLASIpKanZ0dhg4dis2bN2Pz5s147bXXpC6JyOTIRO79hRJo2rQpvL29sWzZMt2yOnXqoHfv3pgzZ06+9ffs2YP+/fvj5s2bLzymQ1JSEhwcHJCYmGg0fwn9fOQmZu+6jIplrXH00w5Sl0NEJSwmJgZpaWmoWrUqAECtViMjIwN2dnbSFkZkRIpz/pbsslRWVhZCQ0Ph6+ubZ7mvry+OHz9e4DZ//PEHGjVqhHnz5qFChQqoWbMmxo8fj/T09ALXB3IuYyUlJeV5GJvlh24CAGq6lpG4EiIqaQcOHECDBg3Qp08fZGZmAgCUSiWDDdFLkCzcxMbGQqPRwNXVNc9yV1dXREVFFbjNzZs3cfToUVy4cAHbtm3Dd999hy1btmDUqFGFfs+cOXPg4OCge1SqZFwj/2q1AvFpWQCAd1t5SlwNEZUUjUaDmTNnolOnToiKikJGRgZiYmKkLovILEjeofjpmWufNZutVquFTCbD+vXr0aRJE3Tv3h0LFy5EYGBgoa03kydPRmJiou5x7949ve/Dy7gWkwKNNufKYBPeAk5UKkRGRsLX1xeff/45tFothg0bhtOnTxvdH19EpkqyDsXlypWDQqHI10oTExOTrzUnl7u7OypUqAAHBwfdsjp16kAIgfv376NGjfydcS0tLWFpaanf4vXor8s5d0nV87CHUiF51iQiAwsODsY777yDmJgY2NraYtmyZRg8eLDUZRGZFcnOpiqVCj4+PggODs6zPDg4GC1atChwm5YtWyIiIgIpKSm6ZVevXoVcLkfFihUNWq+h5IabKs42EldCRIYmhMD06dMRExODV199FSEhIQw2RAYgaVPBuHHj8PPPP2PVqlW4fPkyPv74Y9y9excBAQEAci4pDRkyRLf+wIED4ezsjGHDhuHSpUs4fPgwJkyYgOHDh8Pa2lqq3Xgp/0YlAwAqO3E+KSJzJ5PJsGHDBowZMwanTp1C7dq1pS6JyCxJOs5Nv379EBcXh1mzZiEyMhL169fH7t27UaVKFQA516Xv3r2rW9/Ozg7BwcH43//+h0aNGsHZ2Rl+fn6YPXu2VLvwUoQQuikXOtR2kbgaIjKEP//8E+fOncOkSZMAAJ6envjuu++kLYrIzEk6zo0UjGmcm5ikDDT56m8AwKVZXWCj4mwYROYiOzsbn332GebNmwcAOHjwINq2bStxVUSmqzjnb55NJXTl8SUpAAw2RGbk7t276N+/P06cOAEAGDVqFJo2bSpxVUSlB8+oErrzKA0A0LpGOYkrISJ9+eOPP+Dv74/4+Hg4ODhg5cqV6NOnj9RlEZUqvPdYQjvPRQAAKjnxTikic/DZZ5+hV69eiI+PR+PGjXH27FkGGyIJMNxI6NStRwCACo6meacXEeVVq1YtAMDYsWNx9OhRVKtWTeKKiEonXpaSSEa2Rvecl6WITFd8fDzKli0LABg8eDDq1asHb29viasiKt3YciORO3FpuuevVXSUrhAieiGZmZn43//+h1dffRUPHz7ULWewIZIew41E/rmfIHUJRPSCrl+/jhYtWuCHH37AgwcPsGvXLqlLIqInMNxI5PrDnCkkarmWkbgSIiqOzZs3w9vbG2fPnoWzszN27twJf39/qcsioicw3Egkd9qFt7wrSFwJERVFeno6AgIC0K9fPyQnJ6NVq1YIDw9Hjx49pC6NiJ7CcCORg//mXKOv6yHtKMlEVDSzZs3CihUrIJPJMGXKFBw4cMBkJ+wlMncMNxJ48k6pqs6cMJPIFEyaNAnNmzfHnj178OWXX0Kp5M2mRMaK4UYCR6/F6p5zAD8i45SWloZly5Yhd/o9BwcHHDt2DL6+vhJXRkTPwz89JHA5MknqEojoGS5dugQ/Pz9cvHgRWq0Wo0aNAgDIZDKJKyOiomDLjQRikjMBAJ3quEhcCRE9LTAwEI0bN8bFixfh5uaGOnXqSF0SERUTw40EztzOmXahbS2GGyJjkZKSgqFDh2LYsGFIS0tDp06dEB4ejg4dOkhdGhEVk17DzZkzZ/T5cWYrIiEdAODhYCVxJUQEAOfPn0fjxo2xdu1ayOVyzJ49G3v37oWrq6vUpRHRCyh2uElJSUF6enqeZeHh4ejZsyeaNWumt8LMlVYrkJShBgBUcWZnYiJjkJiYiGvXrsHDwwMHDhzA1KlTIZezYZvIVBX5X+/9+/fRsmVLODg4wMHBAePGjUNaWhqGDBmCxo0bw9LSEkePHjVkrWbhdlyq7nllJ94GTiSV3LugAKBVq1bYtGkTwsPD0aZNGwmrIiJ9KHK4mTRpElJSUvD999+jZcuW+P7779G6dWsolUpcvXoVW7ZsQfPmzQ1Zq1kIuR2ve65S8i9DIimEhYXB29sbly5d0i3r27cvypcvL2FVRKQvRT67HjhwAEuXLsXo0aOxceNGCCHw9ttvY9WqVfD09DRkjWbl9OPOxJU5vg1RiRNCYOnSpWjWrBnCw8PxySefSF0SERlAkce5iYqKQvXq1QEAbm5usLa2Rq9evQxWmLk6ezen5aaPN4dtJypJiYmJePfdd7FlyxYAQM+ePbF69WqJqyIiQyjWdRGFQvHfhnI5rKx4t09x3XyY0+eGc0oRlZyQkBA0bNgQW7ZsgYWFBRYuXIjff/8dzs7OUpdGRAZQ5JYbIQQ6duyom08lPT0dPXv2hEqlyrPe2bNn9VuhGUnP+m9OqcZVy0pYCVHpceLECbRt2xbZ2dmoWrUqgoKC0KRJE6nLIiIDKnK4mTFjRp7XvCRVfHce/XenlIO1hYSVEJUejRs3RrNmzVC+fHmsXLkSjo6OUpdERAb2wuGGiu9KZDIAoKqzDeeoITKgs2fPol69erC0tIRSqcSuXbtgZ2fHf3dEpUSx+tycOnUKU6dOxcSJE7Fv3z5D1WS2cse4KWures6aRPQitFotFixYgKZNm2LixIm65WXKlGGwISpFitxys23bNrz99tuwsrKCUqnEN998g2+++QZjx441YHnm5Vp0CgCgPeeUItK72NhY+Pv7Y9euXQCA6OhoaDSaPDdCEFHpUOSWm6+++gr+/v5ISEhAQkICZs6cidmzZxuyNrOz63wkAODVig4SV0JkXo4ePQovLy/s2rULlpaWWL58OTZu3MhgQ1RKFTnc/Pvvv5g4caLubqkJEyYgISEBsbGxBivOnKg1WqgUOYe7oqO1xNUQmQetVos5c+agXbt2ePDgAWrWrIlTp07hgw8+4GUoolKsyOEmJSUlz10GlpaWsLa2RlJSkiHqMjsXI5KQpdHCykKO6uXtpC6HyCxERERg7ty50Gg0GDRoEEJCQtCgQQOpyyIiiRW5zw0A7N27Fw4O/11S0Wq1+Pvvv3HhwgXdsjfeeEN/1ZmR+/E5M6lbWyggl/MvSiJ9qFixIgIDAxEfH49hw4axtYaIABQz3AwdOjTfsg8++ED3XCaTQaPR5FuH/rtTqhLnlCJ6YRqNBl999RWaNGmCLl26AADefPNNiasiImNT5HCj1WoNWYfZS0rPBsDB+4heVFRUFAYNGoT9+/ejXLlyuHr1KsqW5UjfRJRfkfvcDB8+HMnJyYasxaxtDrkHAGhQ0VHaQohM0F9//YUGDRpg//79sLW1xcKFCxlsiKhQRQ43a9asQXp6uiFrMWt2VjmNZBXK8k4poqJSq9WYNm0afH19ERMTg1dffRUhISEYPHiw1KURkREr1sSZ9GKEELj3KCcYcsJMoqJJS0tDt27dcPjwYQDA+++/j++++w7W1vwDgYierVjTL/BOhBdzK/a/CTMrO9lKWAmR6bCxsYGnpyfs7OywceNGrFixgsGGiIqkWHdL1axZ87kB59GjRy9VkDnKvVMKAFTKYuVJolIlOzsbaWlpuiEnlixZgs8++wyvvPKKxJURkSkpVriZOXNmnnFuqGgeJmcCANrXKi9xJUTG6969e+jfvz8cHBywc+dOyOVy2NraMtgQUbEVK9z0798fLi6c9LG44lKzAHA2cKLC7NixA/7+/nj06BHs7e1x9epV1K5dW+qyiMhEFfkaCfvbvLjEx2PcOFoz3BA9KSsrC5988gneeOMNPHr0CI0aNUJYWBiDDRG9FN4tVQISUjmAH9HTbt++jX79+uH06dMAgLFjx2Lu3LmwtLSUuDIiMnUcobgEnLoVBwBwtGG4IQJy/ljq27cvQkND4ejoiMDAQPTq1UvqsojITPDWnRIQlZQBAJwwk+gxmUyG5cuXo02bNggPD2ewISK9YrgpAWWsclpsXilvJ3ElRNK5ceMGtmzZonvdqFEjHDx4EFWqVJGwKiIyRww3Bpap1uhuBa/uwgH8qHT69ddf4e3tjUGDBiEsLEy3nDcqEJEhMNwY2LXoFN3zcrbsKEmlS0ZGBj788EP4+fkhKSkJTZo0QfnyHO+JiAyL4cbAcqdecLZVsc8NlSpXr15Fs2bNsGzZMshkMkyZMgUHDhxAxYoVpS6NiMxcsQbxo+K7Gp0MgLOBU+myYcMGvP/++0hNTUX58uWxbt06+Pr6Sl0WEZUSDDcGlpKpBgAo2GpDpcjt27eRmpqKdu3aYf369fDw8JC6JCIqRRhuDCwmKaczcT0Pe4krITIsrVYLuTznSvekSZPg4eGBwYMHQ6FQSFwZEZU27HNjYBGJ6QAAO0sO4Efma82aNWjRogXS0tIAAHK5HP7+/gw2RCQJhhsDuxGTc7eUmz3vlCLzk5qaiqFDh8Lf3x+nTp3CihUrpC6JiIiXpQzN3cEaSRnJcLG3kroUIr06f/48/Pz8cOXKFcjlcsyaNQsfffSR1GURETHcGNq/j++W8nDk3VJkHoQQWLlyJf73v/8hIyMDHh4e2LhxI9q0aSN1aUREAHhZyqC0WgGVIucQO3JGcDITc+fOxXvvvYeMjAx069YN4eHhDDZEZFQkDzdLly6Fp6cnrKys4OPjgyNHjhRpu2PHjkGpVMLLy8uwBb6ER2lZyNLkzKbOcW7IXAwePBhubm74+uuvsXPnTo44TERGR9JwExQUhLFjx2Lq1KkICwtD69at0a1bN9y9e/eZ2yUmJmLIkCHo2LFjCVX6YqISc2YDL2OphIVC8hxJ9EKEEDh27JjudcWKFXHt2jVMnDhRd+s3EZExkfQ308KFCzFixAi8++67qFOnDr777jtUqlQJy5Yte+Z2H3zwAQYOHIjmzZuXUKUvJvJxuMltvSEyNYmJifDz80OrVq3w+++/65bb2XGGeyIyXpKFm6ysLISGhuYbkt3X1xfHjx8vdLvVq1fjxo0bmDFjhqFLfGn/RiUBAJpVc5a4EqLiCwkJgbe3N7Zs2QILCwtERkZKXRIRUZFIdrdUbGwsNBoNXF1d8yx3dXVFVFRUgdtcu3YNkyZNwpEjR6BUFq30zMxMZGZm6l4nJSW9eNHFZKnMGcAsIiG9xL6T6GUJIbBo0SJMmDAB2dnZqFq1KoKCgtCkSROpSyMiKhLJL5jLZHnnXBJC5FsGABqNBgMHDsTMmTNRs2bNIn/+nDlz4ODgoHtUqlTppWsuqtjUnFDVxNOpxL6T6GXEx8fjrbfewtixY5GdnY233noLYWFhDDZEZFIkCzflypWDQqHI10oTExOTrzUHAJKTkxESEoLRo0dDqVRCqVRi1qxZOHfuHJRKJfbv31/g90yePBmJiYm6x7179wyyPwU5ei0WAOBsqyqx7yR6GYcPH8b27duhUqmwePFibNmyBY6OjlKXRURULJJdllKpVPDx8UFwcDDefPNN3fLg4GD06tUr3/r29vY4f/58nmVLly7F/v37sWXLFnh6ehb4PZaWlrC0lGbqg3uPcubZKctwQyaiV69emD17Nrp27QofHx+pyyEieiGSjlA8btw4DB48GI0aNULz5s3x448/4u7duwgICACQ0+ry4MEDrF27FnK5HPXr18+zvYuLC6ysrPItNxZJGWoAQLXyvLOEjFNcXBw++eQTzJkzB+7u7gCAqVOnSlwVEdHLkTTc9OvXD3FxcZg1axYiIyNRv3597N69G1WqVAEAREZGPnfMG1PgxnmlyAgdO3YM/fv3x/379xETE4Pdu3dLXRIRkV7IhBBC6iJKUlJSEhwcHJCYmAh7e3uDfY9WK1BtSs7J4szUTihfhrOCk3HQarWYN28ePvvsM2g0GtSsWRObN29GgwYNpC6NiKhQxTl/c+JMA0nKyNY9L2PFw0zG4eHDhxgyZAj27NkDABg0aBCWLVuGMmXKSFwZEZH+8KxrIA+Tc24Dt7dSwspCIXE1RMCFCxfQpUsXREREwNraGj/88AOGDRtW4NALRESmjOHGQB48HriPl6PIWFStWhX29vZwcHDA5s2bjbYjPhHRy2K4MZDYlCwAgLZU9WgiYxMXF4eyZctCLpfDzs4Ou3fvhouLC2xtbaUujYjIYCQfodhcZao1AAA7S+ZHksbff/+NevXqYeHChbplnp6eDDZEZPYYbgwk+vGM4PUrGO6OLKKCaDQaTJ8+HZ07d0Z0dDQ2bNgAtVotdVlERCWG4cZATt16BADwcLCWuBIqTSIiItCxY0d88cUXEELgvffew7Fjx4o80SwRkTngbzwDseQdUlTC9u7di3feeQexsbGws7PDjz/+iAEDBkhdFhFRiWO4MZBstRYAUKEsW27I8CIjI9GrVy9kZmbCy8sLQUFBqFmzptRlERFJguHGQJIzcwbxs7eykLgSKg3c3d3x9ddf4+rVq/jmm29gZcUpP4io9GK4MZCrUSkAgLK2DDdkGLt27UKFChXg5eUFABgzZoy0BRERGQl2KDaQLE3OZSkbFfMj6VdWVhbGjx+P119/HX5+fkhOTpa6JCIio8Izr4Eo5TKotQKONmy5If25ffs2+vfvj1OnTgEAevToAZVKJXFVRETGheHGALLUWqgfD03MlhvSl+3bt2PYsGFISEiAo6MjAgMD0atXL6nLIiIyOrwsZQBpWf8NmGaj4i3h9HKys7MxZswYvPnmm0hISECzZs0QHh7OYENEVAiGGwPIfHwbOABYKHiI6eXI5XJcunQJADB+/HgcPnwYVapUkbgqIiLjxWsmBpCZnduZmK029OK0Wi3kcjkUCgXWrVuH0NBQdO/eXeqyiIiMHpsVDCAxPWeMGzWnBKcXkJGRgQ8//BAjR47ULXN1dWWwISIqIrbcGEDG4xnBs564PEVUFNeuXYOfnx/Cw8MBAKNGjcJrr70mbVFERCaGLTcGEPl4RnDPcrYSV0KmZOPGjfD29kZ4eDjKly+PPXv2MNgQEb0AhhsDSEjLAgBkZGskroRMQXp6Ot577z0MHDgQKSkpaNeuHcLDw9GlSxepSyMiMkm8LGUA6Vk5ocbFnvP70LMJIdC9e3ccPHgQMpkM06ZNw/Tp06FQsDM6EdGLYrgxgNx+xE4cnZieQyaTYfz48fj333+xbt06dOjQQeqSiIhMHsONAaQ8nhG8YlkbiSshY5SamorLly+jUaNGAHKmULh27RpsbdlHi4hIH9jnxgAS0nLCDeeVoqdduHABjRs3hq+vL+7cuaNbzmBDRKQ/DDcGEJeS06HY0YYTGlIOIQRWrlyJJk2a4PLly7C2tkZ0dLTUZRERmSWGGwN49PhuqXJ2DDcEJCcnY/DgwXj33XeRnp6Orl27Ijw8HE2aNJG6NCIis8RwYwDJGTkTZzpY87JUaRceHo5GjRph/fr1UCgUmDt3Lnbt2oXy5ctLXRoRkdlih2IDSH88K7itJQ9vabdy5UpcvXoVFStWxKZNm9CyZUupSyIiMns8+xpA+uPB+6yUHKuktJs/fz4sLCwwdepUODs7S10OEVGpwMtSBhCdlAkAUCl5eEub0NBQjBgxAhrN44BrZYWFCxcy2BARlSCeffVMiP9mAre1ZMtNaSGEwOLFi9GiRQusWrUK33//vdQlERGVWrwspWcpmWrdc2dbSwkroZISHx+PESNGYNu2bQCA3r17Y9iwYRJXRURUerHlRs9y55UCACsLHl5zd/r0aXh7e2Pbtm1QqVRYtGgRfvvtN5QtW1bq0oiISi223OhZ8uOWG1uVAjKZTOJqyJDWrl2LESNGQK1Wo1q1ati8eTN8fHykLouIqNRj04KepWXmtNykPtGCQ+bJy8sLSqUSfn5+OHv2LIMNEZGRYMuNnmWqc0KNm72VxJWQIcTExMDFxQUA8Nprr+Hs2bOoXbs2W+mIiIwIW2707GFyzm3gHJ3YvGi1Wnz99deoWrUqTp06pVtep04dBhsiIiPDcKNncnnOie5mbIrElZC+PHz4ED169MCkSZOQnp6OLVu2SF0SERE9Ay9L6VnG49GJm3g6SVwJ6cPhw4cxYMAAREREwMrKCj/88AOGDx8udVlERPQMbLnRs7THHYmtLTiAnynTaDSYPXs22rdvj4iICNSpUwdnzpzBiBEjeBmKiMjIMdzoWXJGNgDA3op9bkzZ1q1bMW3aNGi1WgwdOhRnzpxB/fr1pS6LiIiKgJel9Cw5I2ecGzsrHlpT9vbbb2P79u3o0qULhg4dKnU5RERUDGy50bPcy1K2lgw3pkSj0eDbb79FcnIyAEAmk2HDhg0MNkREJojhRs+y1FoAgIWCh9ZUREREoGPHjhg3bhxGjhwpdTlERPSSeAbWs2xNTrhRKdjp1BTs3bsXXl5eOHToEOzs7NC9e3epSyIiopfEcKNn5x8kAgBUSh5aY6ZWqzF58mR07doVDx8+RIMGDRAaGoqBAwdKXRoREb0knoH1LHfahaR0tcSVUGEePHiAdu3aYe7cuQCADz/8ECdPnkTNmjUlroyIiPSBvV71LPRuPADgFRc7iSuhwigUCly/fh329vb4+eef8fbbb0tdEhER6RHDjZ5VcLRGQlo2OM6bcdFoNFAocgZWdHNzw2+//QZXV1dUr15d4sqIiEjfeFlKzxLTcwbxc+Ws4Ebj9u3baNmyJYKCgnTLWrRowWBDRGSmGG707H58OgB2KDYW27dvR8OGDXHq1ClMnDgRWVlZUpdEREQGxjOwnjna5Ey7YKXk3FJSysrKwtixY/Hmm28iISEBTZo0waFDh6BSqaQujYiIDIzhRs9yB/GztWS4kcrNmzfRsmVLfP/99wCATz75BEeOHEHVqlWlLYyIiEoEOxTrWW644WUpacTExMDb2xuJiYlwcnJCYGAgevbsKXVZRERUghhu9Chbo4VaKwAAlrwsJQkXFxeMGDECJ0+exKZNm1CpUiWpSyIiohImefPC0qVL4enpCSsrK/j4+ODIkSOFrvvbb7+hc+fOKF++POzt7dG8eXPs3bu3BKt9tvRsje45L0uVnGvXruHu3bu613PnzsXBgwcZbIiISilJw01QUBDGjh2LqVOnIiwsDK1bt0a3bt3ynKiedPjwYXTu3Bm7d+9GaGgo2rdvj549eyIsLKyEKy9YxuNwI5MBKk6cWSI2btwIb29vDBgwANnZObfhW1hYwMLCQuLKiIhIKjIhhJDqy5s2bQpvb28sW7ZMt6xOnTro3bs35syZU6TPqFevHvr164fp06cXaf2kpCQ4ODggMTER9vb2L1R3YW7HpqLdgoOwspDjyhfd9PrZlFd6ejrGjBmDn376CQDQtm1b/Pbbb3BycpK4MiIiMoTinL8la17IyspCaGgofH198yz39fXF8ePHi/QZWq0WycnJRnNCy50RPCNbK3El5u3KlSto0qQJfvrpJ8hkMkybNg1//fWX0fwcEBGRtCTrUBwbGwuNRgNXV9c8y11dXREVFVWkz/jmm2+QmpoKPz+/QtfJzMxEZmam7nVSUtKLFVwEmY/vlHLj6MQGs3btWowcORJpaWlwdXXFunXr0KlTJ6nLIiIiIyJ5xxDZU5MwCSHyLSvIxo0b8fnnnyMoKAguLi6Frjdnzhw4ODjoHobsZJqpzulzw9vADSMrKwvffPMN0tLS0LFjR4SHhzPYEBFRPpKdhcuVKweFQpGvlSYmJiZfa87TgoKCMGLECGzevPm5J7fJkycjMTFR97h3795L116YR6k5HVpzQw7pl0qlwubNm/Hll19i7969cHNzk7okIiIyQpKFG5VKBR8fHwQHB+dZHhwcjBYtWhS63caNG+Hv748NGzagR48ez/0eS0tL2Nvb53kYSu4NUulZDDf6IITAypUrMW/ePN2yWrVqYcqUKboZvomIiJ4m6SB+48aNw+DBg9GoUSM0b94cP/74I+7evYuAgAAAOa0uDx48wNq1awHkBJshQ4bg+++/R7NmzXStPtbW1nBwcJBsP3JlPu5IXMutjMSVmL7k5GSMHDkS69evh1wuR6dOneDt7S11WUREZAIkDTf9+vVDXFwcZs2ahcjISNSvXx+7d+9GlSpVAACRkZF5xrxZsWIF1Go1Ro0ahVGjRumWDx06FIGBgSVdfj734tMAcHTil3Xu3Dn4+fnh6tWrUCgUmD17Nry8vKQui4iITISk49xIwZDj3Kw/dQdTt12Ah4MVjk/uqNfPLg2EEPjxxx8xZswYZGZmomLFiti4cSNatWoldWlERCSx4py/ObeUHuVelvKpyvFWXsTw4cN1LXCvv/46AgMD4ezsLG1RRERkcnjPsh7diUsFAFjyVvAX0qxZMyiVSixYsAB//PEHgw0REb0QttzoURmrnPmMIhPTJa7ENAghEB0drbul+/3330e7du1Qq1YtiSsjIiJTxiYGPcode7Cyk420hZiA+Ph49OnTB82bN0dCQgKAnAEdGWyIiOhlMdzokUab0zfb2oINYs9y6tQpeHt7Y9u2bXjw4AGOHTsmdUlERGRGGG70KDfcKHhUCySEwMKFC9GqVSvcvn0b1apVw/Hjx4s0GCMREVFRsYlBj3LDjVz+/LmxSpu4uDj4+/tj586dAIC+ffvi559/NorBF4mIyLywjUGPNI+HDFIy3OQzadIk7Ny5E5aWlli6dCk2b97MYENERAbBlhs90l2WKsKs5qXN3LlzcevWLSxYsICjDRMRkUGx5UaPHiZnAgAUch7Whw8f4ttvv0XuANjOzs7466+/GGyIiMjg2HKjRxnZObOBp2WrJa5EWocPH8aAAQMQEREBBwcHDB8+XOqSiIioFGETgx6VtVUBAGQonZelNBoNZs+ejfbt2yMiIgK1a9dG48aNpS6LiIhKGbbc6JH2cZ+bcnYqiSspedHR0XjnnXfw119/AQCGDBmCJUuWwM7OTuLKiIiotGG40aPH2QbyUtah+ODBg+jfvz+io6NhY2ODJUuWwN/fX+qyiIiolGK40aPcW8FL253garUaMTExqFevHjZv3oy6detKXRIREZViDDd6pNWNUGz+6UatVkOpzPnx6dSpE7Zt24bOnTvDxobzahERkbTYoViPtKJ0jFC8d+9e1KlTBzdu3NAt69WrF4MNEREZBYYbPdJoc/5rrn1u1Go1pkyZgq5du+L69euYNWuW1CURERHlw8tSepTbcmOOIxTfv38fAwYMwNGjRwEAAQEBWLhwocRVERER5cdwo0e54cbcss2uXbswdOhQxMXFoUyZMvj555/h5+cndVlEREQFYrjRo/P3EwGYV4finTt3omfPngAAb29vBAUF4ZVXXpG4KiIiosIx3OhRhbLWiEvNQnKG+Uy/4OvriyZNmqBp06aYP38+LC0tpS6JiIjomRhu9Ci3vcbD0VrSOl7WgQMH0KpVK1hYWEClUuHQoUOwsrKSuiwiIqIi4d1SepStyelzY6EwzctSWVlZGDt2LDp06IAZM2boljPYEBGRKWHLjR5ptLnhxvQy482bN9GvXz+EhIQAALKzsyGEgMzcekcTEZHZY7jRo5uxKQAApYl1KN6yZQtGjBiBpKQkODk5ITAwUNeJmIiIyNSYXhODEbNSKgD814Jj7DIyMjBq1Ci8/fbbSEpKQosWLRAWFsZgQ0REJo3hRo/srS0AALaWptEgdu/ePaxZswYA8Omnn+LgwYOoXLmyxFURERG9HNM4C5sI3QjFJnJZqkaNGli1ahXKlCmDbt26SV0OERGRXrDlRo+MfYTi9PR0BAQE4PDhw7plfn5+DDZERGRW2HKjR7ldbYxx4swrV67Az88P58+fx65du3Dt2jXe4k1ERGaJLTd6pH2cbowt3KxduxY+Pj44f/48XFxcsGrVKgYbIiIyWww3evRfnxuJC3ksNTUVw4YNw9ChQ5GWloYOHTogPDwcnTt3lro0IiIig+FlKT3KvSxlDAPfPXr0CK1bt8alS5cgl8sxY8YMTJ06FQqFQurSiIiIDIrhRo9yW26M4bJU2bJlUa9ePcTHx2PDhg1o166d1CURERGVCIYbPfqvz40035+SkgKNRgMHBwfIZDL89NNPyMzMhIuLizQFERERScBIeoeYBynvljp37hx8fHwwYsQIiMctSA4ODgw2RERU6jDc6JHuslQJNt0IIbBixQo0bdoUV69excmTJxEZGVli309ERGRsGG70KFOtBVByl6WSkpIwYMAABAQEIDMzEz169EB4eDg8PDxKpgAiIiIjxHBjADIYPt2cPXsW3t7eCAoKglKpxPz58/HHH3+gXLlyBv9uIiIiY8YOxQZg6Lml1Go1/Pz8cOPGDVSuXBlBQUFo1qyZQb+TiIjIVLDlxgAM3Z9YqVQiMDAQffr0QVhYGIMNERHRE9hyoye5dygBMMhFqdOnT+Pu3bvo27cvAKBVq1Zo1aqVAb6JiIjItLHlRk+eyDZ6vRVcCIFvv/0WrVq1wtChQ3Hp0iW9fTYREZE5YsuNnmifbLnRU7Z59OgR/P39sWPHDgDAG2+8wTuhiIiInoMtN3ryRMONXu6WOn78OLy8vLBjxw6oVCosWbIEv/76KxwdHV/6s4mIiMwZw42eiLzp5qUsWLAAbdq0wb179/DKK6/g5MmT+PDDD41iQk4iIiJjx3CjJ+KJtpuXvRM8ISEBGo0G/fv3R2hoKBo2bPiS1REREZUe7HOjJ0+23LxIC4tarYZSmfO/4/PPP4ePjw969+7N1hoiIqJiYsuNnuQJN8XYTqvV4ssvv0SrVq2QmZkJIGccmzfffJPBhoiI6AUw3OhJ3stSRQsl0dHR6Nq1Kz777DOcOnUKv/76q6HKIyIiKjUYbvREm+ey1PPX379/P7y8vBAcHAxra2usWrUKgwYNMlyBREREpQTDjZ6IPLdLFU6j0eDzzz9Hp06dEBUVhbp16yIkJATDhg3jZSgiIiI9YLjRkzx3gj8jo4wbNw4zZ86EEALDhw/HmTNnULduXYPXR0REVFow3OhJUadfGDNmDCpUqIBffvkFK1euhI2NTQlUR0REVHrwVnA9KWziTLVajQMHDqBz584AgGrVquHGjRuwtLQs4QqJiIhKB7bc6ElB49zcv38fHTp0QJcuXbBv3z7d+ww2REREhiN5uFm6dCk8PT1hZWUFHx8fHDly5JnrHzp0CD4+PrCyskK1atWwfPnyEqr02Z6efWH37t3w8vLCkSNHYGdnh9TUVKlKIyIiKlUkDTdBQUEYO3Yspk6dirCwMLRu3RrdunXD3bt3C1z/1q1b6N69O1q3bo2wsDBMmTIFH330EbZu3VrCleeXe1lKaNT49NOJ6NGjB+Li4uDt7Y2zZ8/izTfflLhCIiKi0kEminoPswE0bdoU3t7eWLZsmW5ZnTp10Lt3b8yZMyff+p9++in++OMPXL58WbcsICAA586dw4kTJ4r0nUlJSXBwcEBiYiLs7e1fficee5iciYYTN+DhH18jK+JfAMD//vc/zJ8/n5ehiIiIXlJxzt+StdxkZWUhNDQUvr6+eZb7+vri+PHjBW5z4sSJfOt36dIFISEhyM7OLnCbzMxMJCUl5XkYgoBAxr0LyIr4Fw4ODti6dSsWLVrEYENERFTCJAs3sbGx0Gg0cHV1zbPc1dUVUVFRBW4TFRVV4PpqtRqxsbEFbjNnzhw4ODjoHpUqVdLPDhSgXMNOKN/eH2FhYXjrrbcM9j1ERERUOMk7FD89Kq8Q4pkj9Ra0fkHLc02ePBmJiYm6x717916y4oK5lLHClS+6IWb/anh6ehrkO4iIiOj5JBvnply5clAoFPlaaWJiYvK1zuRyc3MrcH2lUglnZ+cCt7G0tOSlISIiolJEspYblUoFHx8fBAcH51keHByMFi1aFLhN8+bN862/b98+NGrUCBYWFgarlYiIiEyHpJelxo0bh59//hmrVq3C5cuX8fHHH+Pu3bsICAgAkHNJaciQIbr1AwICcOfOHYwbNw6XL1/GqlWrsHLlSowfP16qXSAiIiIjI+n0C/369UNcXBxmzZqFyMhI1K9fH7t370aVKlUAAJGRkXnGvPH09MTu3bvx8ccfY8mSJfDw8MCiRYvQp08fqXaBiIiIjIyk49xIwVDj3BAREZHhmMQ4N0RERESGwHBDREREZoXhhoiIiMwKww0RERGZFYYbIiIiMisMN0RERGRWGG6IiIjIrDDcEBERkVlhuCEiIiKzIun0C1LIHZA5KSlJ4kqIiIioqHLP20WZWKHUhZvk5GQAQKVKlSSuhIiIiIorOTkZDg4Oz1yn1M0tpdVqERERgTJlykAmk+n1s5OSklCpUiXcu3eP81YZEI9zyeBxLhk8ziWHx7pkGOo4CyGQnJwMDw8PyOXP7lVT6lpu5HI5KlasaNDvsLe35z+cEsDjXDJ4nEsGj3PJ4bEuGYY4zs9rscnFDsVERERkVhhuiIiIyKww3OiRpaUlZsyYAUtLS6lLMWs8ziWDx7lk8DiXHB7rkmEMx7nUdSgmIiIi88aWGyIiIjIrDDdERERkVhhuiIiIyKww3BAREZFZYbgppqVLl8LT0xNWVlbw8fHBkSNHnrn+oUOH4OPjAysrK1SrVg3Lly8voUpNW3GO82+//YbOnTujfPnysLe3R/PmzbF3794SrNZ0FffnOdexY8egVCrh5eVl2ALNRHGPc2ZmJqZOnYoqVarA0tIS1atXx6pVq0qoWtNV3OO8fv16NGjQADY2NnB3d8ewYcMQFxdXQtWapsOHD6Nnz57w8PCATCbD9u3bn7uNJOdBQUW2adMmYWFhIX766Sdx6dIlMWbMGGFrayvu3LlT4Po3b94UNjY2YsyYMeLSpUvip59+EhYWFmLLli0lXLlpKe5xHjNmjPj666/F6dOnxdWrV8XkyZOFhYWFOHv2bAlXblqKe5xzJSQkiGrVqglfX1/RoEGDkinWhL3IcX7jjTdE06ZNRXBwsLh165Y4deqUOHbsWAlWbXqKe5yPHDki5HK5+P7778XNmzfFkSNHRL169UTv3r1LuHLTsnv3bjF16lSxdetWAUBs27btmetLdR5kuCmGJk2aiICAgDzLateuLSZNmlTg+hMnThS1a9fOs+yDDz4QzZo1M1iN5qC4x7kgdevWFTNnztR3aWblRY9zv379xGeffSZmzJjBcFMExT3Of/75p3BwcBBxcXElUZ7ZKO5xnj9/vqhWrVqeZYsWLRIVK1Y0WI3mpijhRqrzIC9LFVFWVhZCQ0Ph6+ubZ7mvry+OHz9e4DYnTpzIt36XLl0QEhKC7Oxsg9Vqyl7kOD9Nq9UiOTkZTk5OhijRLLzocV69ejVu3LiBGTNmGLpEs/Aix/mPP/5Ao0aNMG/ePFSoUAE1a9bE+PHjkZ6eXhIlm6QXOc4tWrTA/fv3sXv3bgghEB0djS1btqBHjx4lUXKpIdV5sNRNnPmiYmNjodFo4Orqmme5q6sroqKiCtwmKiqqwPXVajViY2Ph7u5usHpN1Ysc56d98803SE1NhZ+fnyFKNAsvcpyvXbuGSZMm4ciRI1Aq+aujKF7kON+8eRNHjx6FlZUVtm3bhtjYWHz44Yd49OgR+90U4kWOc4sWLbB+/Xr069cPGRkZUKvVeOONN7B48eKSKLnUkOo8yJabYpLJZHleCyHyLXve+gUtp7yKe5xzbdy4EZ9//jmCgoLg4uJiqPLMRlGPs0ajwcCBAzFz5kzUrFmzpMozG8X5edZqtZDJZFi/fj2aNGmC7t27Y+HChQgMDGTrzXMU5zhfunQJH330EaZPn47Q0FDs2bMHt27dQkBAQEmUWqpIcR7kn19FVK5cOSgUinx/BcTExORLpbnc3NwKXF+pVMLZ2dlgtZqyFznOuYKCgjBixAj8+uuv6NSpkyHLNHnFPc7JyckICQlBWFgYRo8eDSDnJCyEgFKpxL59+9ChQ4cSqd2UvMjPs7u7OypUqAAHBwfdsjp16kAIgfv376NGjRoGrdkUvchxnjNnDlq2bIkJEyYAAF577TXY2tqidevWmD17NlvW9USq8yBbbopIpVLBx8cHwcHBeZYHBwejRYsWBW7TvHnzfOvv27cPjRo1goWFhcFqNWUvcpyBnBYbf39/bNiwgdfMi6C4x9ne3h7nz59HeHi47hEQEIBatWohPDwcTZs2LanSTcqL/Dy3bNkSERERSElJ0S27evUq5HI5KlasaNB6TdWLHOe0tDTI5XlPgQqFAsB/LQv08iQ7Dxq0u7KZyb3VcOXKleLSpUti7NixwtbWVty+fVsIIcSkSZPE4MGDdevn3gL38ccfi0uXLomVK1fyVvAiKO5x3rBhg1AqlWLJkiUiMjJS90hISJBqF0xCcY/z03i3VNEU9zgnJyeLihUrir59+4qLFy+KQ4cOiRo1aoh3331Xql0wCcU9zqtXrxZKpVIsXbpU3LhxQxw9elQ0atRINGnSRKpdMAnJyckiLCxMhIWFCQBi4cKFIiwsTHfLvbGcBxluimnJkiWiSpUqQqVSCW9vb3Ho0CHde0OHDhVt27bNs/7BgwdFw4YNhUqlElWrVhXLli0r4YpNU3GOc9u2bQWAfI+hQ4eWfOEmprg/z09iuCm64h7ny5cvi06dOglra2tRsWJFMW7cOJGWllbCVZue4h7nRYsWibp16wpra2vh7u4uBg0aJO7fv1/CVZuWAwcOPPP3rbGcB2VCsP2NiIiIzAf73BAREZFZYbghIiIis8JwQ0RERGaF4YaIiIjMCsMNERERmRWGGyIiIjIrDDdERERkVhhuiIiIyKww3BCR0fP394dMJsv3uH79ep73LCwsUK1aNYwfPx6pqakAgNu3b+fZxsHBAc2aNcOOHTsk3isiMhSGGyIyCV27dkVkZGSeh6enZ573bt68idmzZ2Pp0qUYP358nu3/+usvREZG4tSpU2jSpAn69OmDCxcuSLErRGRgDDdEZBIsLS3h5uaW55E7i3Pue5UqVcLAgQMxaNAgbN++Pc/2zs7OcHNzQ+3atfHll18iOzsbBw4ckGBPiMjQGG6IyOxYW1sjOzu7wPeys7Px008/AQAsLCxKsiwiKiFKqQsgIiqKnTt3ws7OTve6W7du+PXXX/Otd/r0aWzYsAEdO3bMs7xFixaQy+VIT0+HVqtF1apV4efnZ/C6iajkMdwQkUlo3749li1bpntta2ure54bfNRqNbKzs9GrVy8sXrw4z/ZBQUGoXbs2rl69irFjx2L58uVwcnIqsfqJqOQw3BCRSbC1tcUrr7xS4Hu5wcfCwgIeHh4FXm6qVKkSatSogRo1asDOzg59+vTBpUuX4OLiYujSiaiEsc8NEZm83OBTpUqVIvWjadu2LerXr48vv/yyBKojopLGcENEpdInn3yCFStW4MGDB1KXQkR6xnBDRKXS66+/jqpVq7L1hsgMyYQQQuoiiIiIiPSFLTdERERkVhhuiIiIyKww3BAREZFZYbghIiIis8JwQ0RERGaF4YaIiIjMCsMNERERmRWGGyIiIjIrDDdERERkVhhuiIiIyKww3BAREZFZYbghIiIis/J/zB+9x6r4Qo0AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fpr, tpr, thresholds = roc_curve(y_train8, y_scores)\n", "\n", "plt.plot(fpr, tpr)\n", "plt.plot([0, 1], [0, 1], \"k--\", label=\"random guessing\")\n", "plt.xlabel(\"FPR\")\n", "plt.ylabel(\"TPR\")\n", "plt.legend()\n", "plt.title(\"ROC Curve — SGD\")\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "681d7314", "metadata": {}, "source": [ "## 9. ROC AUC — the whole curve as one number\n", "\n", "AUC = \"Area Under the Curve\". It's literally the area under the ROC curve,\n", "ranging from 0.5 (random guessing — no better than a coin flip) to 1.0\n", "(perfect classifier, no overlap between positive and negative score\n", "distributions at all).\n", "\n", "**Rule of thumb for reading AUC:**\n", "* 0.5 → useless, no better than random\n", "* 0.7–0.8 → acceptable\n", "* 0.8–0.9 → good\n", "* 0.9+ → excellent (common for MNIST since digits are visually distinct)\n" ] }, { "cell_type": "code", "execution_count": 26, "id": "ff7fc59c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9152748921182394" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "roc_auc_score(y_train8, y_scores)\n" ] }, { "cell_type": "markdown", "id": "e8bb5633", "metadata": {}, "source": [ "## 10. Random Forest version — same workflow, different model\n", "\n", "Random Forest is a non-linear ensemble of decision trees. It generally\n", "outperforms a linear model like SGD on raw pixel data. The one mechanical\n", "difference: Random Forest has no `decision_function` (it's not drawing a\n", "single linear boundary) — instead it gives **class probabilities** via\n", "`predict_proba`.\n" ] }, { "cell_type": "code", "execution_count": 27, "id": "109ce298", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([False, False, True])" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rf = RandomForestClassifier(random_state=42)\n", "rf.fit(X_train, y_train8)\n", "rf.predict(X_train[-3:])\n" ] }, { "cell_type": "code", "execution_count": 28, "id": "499be9f8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rf.score(X_train, y_train8)\n" ] }, { "cell_type": "code", "execution_count": 29, "id": "4f1a980c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.97966667, 0.98158333, 0.98241667, 0.97958333, 0.98316667])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cross_val_score(rf, X_train, y_train8, cv=5, scoring=\"accuracy\")\n" ] }, { "cell_type": "code", "execution_count": 30, "id": "1c87b746", "metadata": {}, "outputs": [], "source": [ "y_pred_rf = cross_val_predict(rf, X_train, y_train8, cv=5)\n" ] }, { "cell_type": "code", "execution_count": 31, "id": "f25bf5ba", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9870210135970334" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "precision_score(y_train8, y_pred_rf)\n" ] }, { "cell_type": "code", "execution_count": 32, "id": "59f8d7d4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.818834387284225" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "recall_score(y_train8, y_pred_rf)\n" ] }, { "cell_type": "code", "execution_count": 33, "id": "2455cb2c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8950957496496964" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f1_score(y_train8, y_pred_rf)\n" ] }, { "cell_type": "markdown", "id": "03b2cd66", "metadata": {}, "source": [ "**`predict_proba` instead of `decision_function`:** it returns, for every\n", "sample, a pair of probabilities `[P(not 8), P(is 8)]` that sum to 1. We take\n", "column index 1 — the probability of being an 8 — and use that exactly like we\n", "used `y_scores` for SGD above." ] }, { "cell_type": "code", "execution_count": 34, "id": "a64ad282", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(60000, 2)" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_probas_rf = cross_val_predict(rf, X_train, y_train8, cv=5, method=\"predict_proba\")\n", "y_probas_rf.shape\n" ] }, { "cell_type": "code", "execution_count": 35, "id": "e92e4b97", "metadata": {}, "outputs": [], "source": [ "y_scores_rf = y_probas_rf[:, 1]\n" ] }, { "cell_type": "code", "execution_count": 36, "id": "3d5e0b46", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHFCAYAAAAOmtghAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQoNJREFUeJzt3Xl8FPX9x/H3bnY3F0m4khAgBJBDDhEJBQlSVDQKitVqwWIFr/5EtCjxpAiIUhHvE1C0oBU0ntRWVFARkEMFg1qDqIAcEkACJCEh1+b7+yPswpIEkhCyu5PX8/HYh9nZ78x8Zpqy73znO9+xGWOMAAAALMLu7wIAAADqEuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGOMLcuXNls9m8L4fDodatW+vaa6/Vr7/+6m332Wef+bQLCQlRbGyshg4dqjVr1tRon99++62uvfZatWvXTmFhYWrUqJF69eqlhx9+WHv37q3rQwxqR55zm82m6OhopaSk6LXXXvNbTb/88otsNpvmzp3rtxqO1rZt2wrnyvM6cOCAv8urYOXKlbrvvvu0f/9+f5cCi3D4uwAgEM2ZM0ennnqqDh48qGXLlmnatGlaunSpvvvuO0VGRnrbPfjggzrnnHNUUlKijIwMTZkyRQMHDtS6devUsWPH4+5n9uzZGjNmjDp37qw777xTXbt2VUlJidasWaNZs2Zp1apVevfdd0/moQadK664QrfffruMMdq8ebMefPBBjRgxQsYYjRgxwt/lBYz+/fvr0UcfrbA8IiLCD9Uc28qVKzVlyhRdc801aty4sb/LgQUQboBKdO/eXb1795YknXPOOXK73XrggQe0YMECXXXVVd52HTt21JlnnilJGjBggBo3bqxRo0bp1Vdf1ZQpU465j1WrVummm27S+eefrwULFig0NNT72fnnn6/bb79dH374YZ0cz8GDBxUWFiabzVYn2/On+Ph47znv16+f+vfvr7Zt2+r5558n3ByhcePG3vNUl4wxKiwsVHh4eJ1vG6grXJYCqsHzJbFly5ZjtvMEol27dh13mw8++KBsNpteeOEFn2Dj4XK5dMkll3jf22w23XfffRXatW3bVtdcc433vefS2qJFi3TdddcpNjZWERERSk9Pl81m0yeffFJhGzNnzpTNZtO3337rXbZmzRpdcsklatq0qcLCwnTGGWfojTfeOO5x1bekpCTFxsZWOOfp6elKTU1VQkKCwsPD1aVLF91zzz3Kz8/3aXfNNdeoUaNG+vnnnzVkyBA1atRIiYmJuv3221VUVOTTdseOHRo2bJiioqIUExOj4cOHa+fOnZXW9d5776lfv36KiIhQVFSUzj//fK1atcqnzX333ec973/6058UExOjpk2bKi0tTaWlpdqwYYMuvPBCRUVFqW3btnr44Yfr4IyV27t3r8aMGaNWrVrJ5XKpffv2mjBhQoVjttlsuuWWWzRr1ix16dJFoaGhevnllyVJP/30k0aMGKG4uDiFhoaqS5cueu6553zWLysr09SpU9W5c2eFh4ercePG6tGjh5566invObjzzjslSe3atfNePvvss8/q7FjR8NBzA1TDzz//LEmKjY09ZrvNmzdLkjp16nTMdm63W59++qmSk5OVmJhYN0Ue5brrrtNFF12kf/3rX8rPz9fFF1+suLg4zZkzR4MGDfJpO3fuXPXq1Us9evSQJC1ZskQXXnih+vbtq1mzZikmJkavv/66hg8froKCAp8w5W85OTnau3dvhV6Kn376SUOGDNFtt92myMhI/fDDD5o+fbq+/PJLffrppz5tS0pKdMkll+j666/X7bffrmXLlumBBx5QTEyMJk2aJKm89+u8887Tjh07NG3aNHXq1Envv/++hg8fXqGm+fPn66qrrlJqaqpee+01FRUV6eGHH9bZZ5+tTz75RGeddZZP+2HDhukvf/mLbrzxRi1evFgPP/ywSkpK9PHHH2vMmDG64447NH/+fN19993q0KGD/vjHPx73vBhjVFpa6rPMbrfLbrersLBQ55xzjjZu3KgpU6aoR48eWr58uaZNm6Z169bp/fff91lvwYIFWr58uSZNmqQWLVooLi5OmZmZSklJUZs2bfTYY4+pRYsW+uijjzR27Fjt2bNHkydPliQ9/PDDuu+++3Tvvffq97//vUpKSvTDDz94x9fccMMN2rt3r5555hm98847SkhIkCR17dr1uMcIVMkA8JozZ46RZFavXm1KSkpMXl6e+e9//2tiY2NNVFSU2blzpzHGmCVLlhhJJj093ZSUlJiCggKzYsUK07lzZ9O1a1ezb9++Y+5n586dRpK58sorq12bJDN58uQKy5OSksyoUaMqHMPIkSMrtE1LSzPh4eFm//793mWZmZlGknnmmWe8y0499VRzxhlnmJKSEp/1L774YpOQkGDcbne1665LksyYMWNMSUmJKS4uNj/++KO55JJLTFRUlFmzZk2V65WVlZmSkhKzdOlSI8l888033s9GjRplJJk33njDZ50hQ4aYzp07e9/PnDnTSDL//ve/fdr99a9/NZLMnDlzjDHGuN1u07JlS3Paaaf5nKe8vDwTFxdnUlJSvMsmT55sJJnHHnvMZ5s9e/Y0ksw777zjXVZSUmJiY2PNH//4x+Oep6SkJCOpwmvChAnGGGNmzZpV6TFPnz7dSDKLFi3yLpNkYmJizN69e33aXnDBBaZ169YmJyfHZ/ktt9xiwsLCvO0vvvhi07Nnz2PW+8gjjxhJZvPmzcc9NqA6uCwFVOLMM8+U0+lUVFSULr74YrVo0UIffPCB4uPjfdoNHz5cTqdTERER6t+/v3Jzc/X+++8HxKDIyy+/vMKy6667TgcPHlR6erp32Zw5cxQaGuodr/Lzzz/rhx9+8I4tKi0t9b6GDBmirKwsbdiwocr9ut1un3Vq8jLGHPe4ZsyYIafTKZfLpU6dOumDDz7Qa6+9puTkZJ92mzZt0ogRI9SiRQuFhITI6XRq4MCBkqT169f7tLXZbBo6dKjPsh49evhchlyyZImioqJ8LhVKqjDOZ8OGDdqxY4euvvpq2e2H/4lt1KiRLr/8cq1evVoFBQU+61x88cU+77t06SKbzabBgwd7lzkcDnXo0OG4l0Y9zjrrLH311Vc+rzFjxkiSPv30U0VGRuqKK67wWcfTI3f0pctzzz1XTZo08b4vLCzUJ598ossuu0wREREVfkcKCwu1evVqSVKfPn30zTffaMyYMfroo4+Um5tbrfqBE0G4ASrxyiuv6KuvvlJGRoZ27Nihb7/9Vv3796/Qbvr06frqq6+0dOlSTZgwQbt27dKll15aYdzC0Zo3b66IiAjvZayTwdO9f6Ru3brpd7/7nebMmSOpPIi8+uqr+sMf/qCmTZtKOjxe6I477pDT6fR5eb4c9+zZU+V+Bw0aVGG96r6WLl163OMaNmyYvvrqK61cuVLPP/+8oqKidOWVV+qnn37ytjlw4IAGDBigL774QlOnTtVnn32mr776Su+8846k8ktMR4qIiFBYWJjPstDQUBUWFnrfZ2dnVwi3ktSiRQuf99nZ2ZIqP/8tW7ZUWVmZ9u3b57Pcc+49XC5XpTW5XC6fmo4lJiZGvXv39nm1bNnSW2OLFi0qDDCPi4uTw+HwHoPH0ceSnZ2t0tJSPfPMMxX+NxwyZIikw78j48eP16OPPqrVq1dr8ODBatasmQYNGlTjKROAmmDMDVCJLl26eAcHH0v79u297X7/+98rPDxc9957r5555hndcccdVa4XEhKiQYMG6YMPPtD27dvVunXr4+4rNDS00tB09BeRR1V3Rl177bUaM2aM1q9fr02bNikrK0vXXnut9/PmzZtLKv9SqmpsR+fOnaus8/nnn1deXl6Vnx/LsbbrERsb6z3n/fr1U5cuXTRw4ECNGzdO//3vfyWV90zs2LFDn332mbe3RtIJzaPSrFkzffnllxWWHz2guFmzZpKkrKysCm137Nghu93u0wviD82aNdMXX3whY4zP78nu3btVWlrq/R3wOPp3qUmTJgoJCdHVV1+tm2++udJ9tGvXTlJ5j1NaWprS0tK0f/9+ffzxx/r73/+uCy64QNu2bQvIW9MR/Ag3QB266667NHfuXD300EO68cYbFRUVVWXb8ePHa+HChfrrX/+qf//733K5XD6fl5SU6MMPP/ReLmnbtq3P3UxS+Zd4TSdl+/Of/6y0tDTNnTtXmzZtUqtWrZSamur9vHPnzurYsaO++eYbPfjggzXatmf9+jRgwACNHDlSL7/8slatWqV+/fp5v4yPvgvt+eefr/V+zjnnHL3xxht67733fC5NzZ8/36dd586d1apVK82fP1933HGHt5b8/Hy9/fbb3juo/GnQoEF64403tGDBAl122WXe5a+88or382OJiIjQOeeco4yMDPXo0aPC725VGjdurCuuuEK//vqrbrvtNv3yyy/q2rWr93+no3vUgNoi3AB1yOl06sEHH9SwYcP01FNP6d57762ybb9+/TRz5kyNGTNGycnJuummm9StWzfvhIAvvPCCunfv7g03V199tSZOnKhJkyZp4MCByszM1LPPPquYmJga1di4cWNddtllmjt3rvbv36877rjDZ2yIVB4CBg8erAsuuEDXXHONWrVqpb1792r9+vX6+uuv9eabb9b85JxEDzzwgNLT0zVx4kR9/PHHSklJUZMmTTR69GhNnjxZTqdT8+bN0zfffFPrfYwcOVJPPPGERo4cqX/84x/q2LGjFi5cqI8++sinnd1u18MPP6yrrrpKF198sW688UYVFRXpkUce0f79+/XQQw+d6OGesJEjR+q5557TqFGj9Msvv+i0007T559/rgcffFBDhgzReeedd9xtPPXUUzrrrLM0YMAA3XTTTWrbtq3y8vL0888/6z//+Y/3jrShQ4d6542KjY3Vli1b9OSTTyopKck70eVpp53m3eaoUaPkdDrVuXPnY/5xAByTv0c0A4HEc6fRV199dcx2nrul3nzzzUo/79u3r2nSpInPXUlVWbdunRk1apRp06aNcblcJjIy0pxxxhlm0qRJZvfu3d52RUVF5q677jKJiYkmPDzcDBw40Kxbt67Ku6WOdQyLFi3y3kHz448/Vtrmm2++McOGDTNxcXHG6XSaFi1amHPPPdfMmjXruMd0skgyN998c6Wf3XnnnUaSWbp0qTHGmJUrV5p+/fqZiIgIExsba2644Qbz9ddf+9zZZEz53VKRkZEVtue5k+lI27dvN5dffrlp1KiRiYqKMpdffrlZuXJlhW0aY8yCBQtM3759TVhYmImMjDSDBg0yK1asqHQfv/32m8/yqmoaOHCg6datW5XnxyMpKclcdNFFx2yTnZ1tRo8ebRISEozD4TBJSUlm/PjxprCw0Kfdsc755s2bzXXXXWdatWplnE6niY2NNSkpKWbq1KneNo899phJSUkxzZs3Ny6Xy7Rp08Zcf/315pdffvHZ1vjx403Lli2N3W43ksySJUuOe5xAVWzGVOP2BAAAgCDB3VIAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSGtwkfmVlZdqxY4eioqKqnJ4eAAAEFmOM8vLy1LJlywoTjx6twYWbHTt2KDEx0d9lAACAWti2bdtxn8fX4MKNZzrvbdu2KTo62s/VAACA6sjNzVViYmK1HsvR4MKN51JUdHQ04QYAgCBTnSElDCgGAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACW4tdws2zZMg0dOlQtW7aUzWbTggULjrvO0qVLlZycrLCwMLVv316zZs06+YUCAICg4ddwk5+fr9NPP13PPvtstdpv3rxZQ4YM0YABA5SRkaG///3vGjt2rN5+++2TXCkAAAgWfn1w5uDBgzV48OBqt581a5batGmjJ598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JOrQgOI8em4AAIAVRLhCJEkHiwk3AADAAsIPhZuCYrefK6mIcAMAAGrM23NTQrgBAAAWEO4sH1BMzw0AALCECC5LAQAAK2FAMQAAsBTPgOJ8em4AAIAVRLjKx9wcJNwAAAArODzmplTGGD9X44twAwAAasxzWarMSEWlZX6uxhfhBgAA1FiEM8T7c6DdMUW4AQAANeYIsSvMWR4j8osC644pwg0AAKiVyEODivMD7HZwwg0AAKiVyNBD4YaeGwAAYAWecHOgiDE3AADAAhqFHrodnJ4bAABgBZ6J/A4QbgAAgBU0YswNAACwksjQwHy+FOEGAADUiueyFD03AADAErgsBQAALMXzfKnCEp4tBQAALCDUUR4jikoZcwMAACwg1EnPDQAAsJBA7blx1HbFH3/8UZ999pl2796tsjLfxDZp0qQTLgwAAAS2sADtualVuJk9e7ZuuukmNW/eXC1atJDNZvN+ZrPZCDcAADQAluq5mTp1qv7xj3/o7rvvrut6AABAkDgcbgKr56ZWY2727dunP/3pT3VdCwAACCKHL0sFVs9NrcLNn/70Jy1atKiuawEAAEEkUHtuanVZqkOHDpo4caJWr16t0047TU6n0+fzsWPHVntbM2bM0COPPKKsrCx169ZNTz75pAYMGFBl+6KiIt1///169dVXtXPnTrVu3VoTJkzQddddV5tDAQAAtWSpAcUvvPCCGjVqpKVLl2rp0qU+n9lstmqHm/T0dN12222aMWOG+vfvr+eff16DBw9WZmam2rRpU+k6w4YN065du/TSSy+pQ4cO2r17t0pLA2vaZwAAGoJAHVBsM8YYf+28b9++6tWrl2bOnOld1qVLF1166aWaNm1ahfYffvihrrzySm3atElNmzat1T5zc3MVExOjnJwcRUdH17p2AAAauh37DyrloU/lCrHrx38MPqn7qsn39wlP4meMUW3yUXFxsdauXavU1FSf5ampqVq5cmWl67z33nvq3bu3Hn74YbVq1UqdOnXSHXfcoYMHD1a5n6KiIuXm5vq8AADAifNclip2l8ld5re+kgpqHW5eeeUVnXbaaQoPD1d4eLh69Oihf/3rX9Vef8+ePXK73YqPj/dZHh8fr507d1a6zqZNm/T555/rf//7n9599109+eSTeuutt3TzzTdXuZ9p06YpJibG+0pMTKx2jQAAoGrhh8KN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d99p3bp13tfo0aPVuXNnrVu3Tn379q2v0gEAwFEO99z4P9z4redGktLS0nT11Verd+/e6tevn1544QVt3bpVo0ePllR+SenXX3/VK6+8Irvdru7du/usHxcXp7CwsArLAQBA/Tp8t1QDDzfDhw9Xdna27r//fmVlZal79+5auHChkpKSJElZWVnHnfMGAAD43+HLUv4fc2Mzxvj/IRD1KDc3VzExMcrJyVF0dLS/ywEAwBLueftbvf7VNt1+fif9bVDHOt9+Tb6//X63FAAACH7eMTcNeZ4bAABgHYF0KzjhBgAAnDBuBQcAAJZCzw0AALCUMM/jFxhzAwAArMDTc1PEZSkAAGAFnnBzkHADAACswDOguIgxNwAAwApCmecGAABYSaiDnhsAAGAhzFAMAAAsxdNzwzw3AADAErgVHAAAWMrhy1L03AAAAAvwXJYqLi2TMcavtRBuAADACfP03EhSkZ97bwg3AADghHl6biT/PxmccAMAAE6YM8SuELtNEj03AADAIrxPBqfnBgAAWIHnEQz03AAAAEug5wYAAFiKd64bP89STLgBAAB1wuV5eKafny9FuAEAAHWCnhsAAGApofTcAAAAK3Ed8QgGfyLcAACAOuGZxM9dxrOlAACABYTYysNNGQ/OBAAAVmD39tz4uQ7/7h4AAFiFp+fGTc8NAACwgpCQQ+HGz103hBsAAFAnDvfc+LcOwg0AAKgTnrulyrhbCgAAWIGdMTcAAMBKQg6lCua5AQAAlsBlKQAAYClclgIAAJZCzw0AALAUem4AAIClhPD4BQAAYCUOb7hhhmIAAGABPDgTAABYiufxC2WMuQEAAFZwuOeGcAMAACwghLulAACAlRzquJGfsw3hBgAA1A3PZSlDzw0AALCCQ1elGFAMAACswe69W8rPdfh39wAAwCrs9NwAAAAr8fTcMKAYAABYgo1J/AAAgJUcvizl5zr8u3sAAGAVdnpuAACAlRyexI9wAwAALMA75oanggMAACvgshQAALAUBhQDAABLOTzPDT03AADAAni2FAAAsBSeLQUAACzFfihV0HMDAAAsgbulDpkxY4batWunsLAwJScna/ny5VW2feedd3T++ecrNjZW0dHR6tevnz766KN6rBYAAFTFM8+N28/XpfwabtLT03XbbbdpwoQJysjI0IABAzR48GBt3bq10vbLli3T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k+644w4dPHiwPkoOSrU5zykpKdq+fbsWLlwoY4x27dqlt956SxdddFF9lNxg+Ot7sME9OLO29uzZI7fbrfj4eJ/l8fHx2rlzZ6Xr7Ny5s9L2paWl2rNnjxISEk5avcGqNuf5aI899pjy8/M1bNiwk1GiJdTmPP/000+65557tHz5cjkc/NNRHbU5z5s2bdLnn3+usLAwvfvuu9qzZ4/GjBmjvXv3Mu6mCrU5zykpKZo3b56GDx+uwsJClZaW6pJLLtEzzzxTHyU3GP76HqTnpoZsNpvPe2NMhWXHa1/Zcviq6Xn2eO2113TfffcpPT1dcXFxJ6s8y6jueXa73RoxYoSmTJmiTp061Vd5llGT3+eysjLZbDbNmzdPffr00ZAhQ/T4449r7ty59N4cR03Oc2ZmpsaOHatJkyZp7dq1+vDDD7V582aNHj26PkptUPzxPcifX9XUvHlzhYSEVPgrYPfu3RVSqUeLFi0qbe9wONSsWbOTVmswq8159khPT9f111+vN998U+edd97JLDPo1fQ85+Xlac2aNcrIyNAtt9wiqfxL2Bgjh8OhRYsW6dxzz62X2oNJbX6fExIS1KpVK8XExHiXdenSRcYYbd++XR07djypNQej2pznadOmqX///rrzzjslST169FBkZKQGDBigqVOn0rNeR/z1PUjPTTW5XC4lJydr8eLFPssXL16slJSUStfp169fhfaLFi1S79695XQ6T1qtwaw251kq77G55pprNH/+fK6ZV0NNz3N0dLS+++47rVu3zvsaPXq0OnfurHXr1qlv3771VXpQqc3vc//+/bVjxw4dOHDAu+zHH3+U3W5X69atT2q9wao257mgoEB2u+9XYEhIiKTDPQs4cX77Hjypw5UtxnOr4UsvvWQyMzPNbbfdZiIjI80vv/xijDHmnnvuMVdffbW3vecWuHHjxpnMzEzz0ksvcSt4NdT0PM+fP984HA7z3HPPmaysLO9r//79/jqEoFDT83w07paqnpqe57y8PNO6dWtzxRVXmO+//94sXbrUdOzY0dxwww3+OoSgUNPzPGfOHONwOMyMGTPMxo0bzeeff2569+5t+vTp469DCAp5eXkmIyPDZGRkGEnm8ccfNxkZGd5b7gPle5BwU0PPPfecSUpKMi6Xy/Tq1cssXbrU+9moUaPMwIEDfdp/9tln5owzzjAul8u0bdvWzJw5s54rDk41Oc8DBw40kiq8Ro0aVf+FB5ma/j4fiXBTfTU9z+vXrzfnnXeeCQ8PN61btzZpaWmmoKCgnqsOPjU9z08//bTp2rWrCQ8PNwkJCeaqq64y27dvr+eqg8uSJUuO+e9toHwP2oyh/w0AAFgHY24AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4ANGj33Xefevbs6X1/zTXX6NJLL/VbPQBOHOEGAABYCuEGQMAqLi72dwkAghDhBkDAOPvss3XLLbcoLS1NzZs31/nnn6/MzEwNGTJEjRo1Unx8vK6++mrt2bPHu05ZWZmmT5+uDh06KDQ0VG3atNE//vEP7+d33323OnXqpIiICLVv314TJ05USUmJPw4PQD0h3AAIKC+//LIcDodWrFihhx56SAMHDlTPnj21Zs0affjhh9q1a5eGDRvmbT9+/HhNnz5dEydOVGZmpubPn6/4+Hjv51FRUZo7d64yMzP11FNPafbs2XriiSf8cWgA6gkPzgQQMM4++2zl5OQoIyNDkjRp0iR98cUX+uijj7xttm/frsTERG3YsEEJCQmKjY3Vs88+qxtuuKFa+3jkkUeUnp6uNWvWSCofULxgwQKtW7dOUvmA4v3792vBggV1emwA6o/D3wUAwJF69+7t/Xnt2rVasmSJGjVqVKHdxo0btX//fhUVFWnQoEFVbu+tt97Sk08+qZ9//lkHDhxQaWmpoqOjT0rtAAID4QZAQImMjPT+XFZWpqFDh2r69OkV2iUkJGjTpk3H3Nbq1at15ZVXasqUKbrgggsUExOj119/XY899lid1w0gcBBuAASsXr166e2331bbtm3lcFT856pjx44KDw/XJ598UullqRUrVigpKUkTJkzwLtuyZctJrRmA/zGgGEDAuvnmm7V37179+c9/1pdffqlNmzZp0aJFuu666+R2uxUWFqa7775bd911l1555RVt3LhRq1ev1ksvvSRJ6tChg7Zu3arXX39dGzdu1NNPP613333Xz0cF4GQj3AAIWC1bttSKFSvkdrt1wQUXqHv37rr11lsVExMju738n6+JEyfq9ttv16RJk9SlSxcNHz5cu3fvliT94Q9/0Lhx43TLLbeoZ8+eWrlypSZOnOjPQwJQD7hbCgAAWAo9NwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFL+H/IzUhlk99TfAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "prec_rf, recall_rf, thresholds_rf = precision_recall_curve(y_train8, y_scores_rf)\n", "\n", "plt.plot(recall_rf, prec_rf)\n", "plt.xlabel(\"recall\")\n", "plt.ylabel(\"precision\")\n", "plt.title(\"PR Curve — Random Forest\")\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 37, "id": "dd8decae", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHFCAYAAAAOmtghAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAOaNJREFUeJzt3Xl4VNX9x/HPJDOZhEDCJllYQkAQFAUJBQlSBTQYEMGiYLGyiJXUtogUFaQVoShu8LgR0CKgvwKiolQtRVKlEAQUMGhbqKiAbIkYkCRAyHp+f4QZGBIgwZlccvN+Pc88ZM6ce+/3HqL3w7nLOIwxRgAAADYRZHUBAAAA/kS4AQAAtkK4AQAAtkK4AQAAtkK4AQAAtkK4AQAAtkK4AQAAtkK4AQAAtkK4AQAAtkK4Qa2zcOFCORwO78vpdComJkZ33HGHvv766wqXKSoq0pw5c9S9e3dFRkYqLCxM7du318SJE3Xo0KEKlyktLdX//d//6YYbblDjxo3lcrnUpEkT3XzzzXr//fdVWlp63loLCgr00ksv6dprr1WDBg0UEhKipk2basiQIVqzZs1PGge7eeyxx3z+Xl0ul1q0aKFf//rXysrKsqyukSNHqmXLlpZt/0xn/v6f/powYYLV5VXoiSee0PLly60uAzWI0+oCAKssWLBA7dq104kTJ/TJJ5/o8ccf1+rVq/W///1PDRo08PY7fvy4+vXrp3Xr1unee+/Vn/70J4WFhWnDhg169tlntXjxYqWlpemyyy7zLnPixAkNGjRIq1at0h133KE5c+YoOjpaP/zwg1auXKnbb79dS5cu1cCBA89aX3Z2tm666SZ9+eWXuvvuu/Xggw+qYcOG2r9/v/72t7+pT58+2rJlizp27BjQcappVq5cqcjISB09elSrVq3SzJkztX79em3dulUul8vq8i4ant//08XGxlpUzbk98cQTuu222zRo0CCrS0FNYYBaZsGCBUaS2bRpk0/71KlTjSQzf/58n/Z7773XSDJvvPFGuXV99dVXJjIy0lxxxRWmuLjY2/6b3/zGSDKvvfZahTXs2LHDfPHFF+esMzk52TidTvPRRx9V+Plnn31mvvvuu3Ouo7KOHz/ul/VYacqUKUaS+eGHH3zaR40aZSSZjz/+2JK6RowYYeLi4izZdkXO9vvvL8eOHfP7OsPDw82IESP8vl7YF6elgJO6dOkiSfr++++9bVlZWZo/f7769u2roUOHllumbdu2evjhh/Xf//7XO22elZWlefPmqW/fvho+fHiF22rTpo2uuuqqs9ayZcsW/eMf/9Do0aPVu3fvCvv87Gc/U4sWLSSdOiVzJs8piN27d3vbWrZsqZtvvlnvvPOOrr76aoWGhmrq1Km6+uqr1bNnz3LrKCkpUdOmTfWLX/zC21ZYWKjp06erXbt2crvduuSSSzRq1Cj98MMPZ90nq1T09/rDDz/ovvvu0+WXX666deuqSZMm6t27t9LT032W3b17txwOh5599lnNmjVL8fHxqlu3rrp3766NGzeW29bChQt12WWXye12q3379nr99dcrrOnw4cO677771LRpU4WEhKhVq1aaPHmyCgoKfPo5HA797ne/04IFC3TZZZcpLCxMXbp00caNG2WM0TPPPOOtqXfv3vrmm29+6nB5vffee+revbvq1KmjevXq6cYbb9SGDRt8+nh+7z7//HPddtttatCggVq3bi1JMsYoNTVVnTp1UlhYmBo0aKDbbrtNO3fu9FlHRkaGbr75ZjVp0kRut1uxsbHq37+/9u3b5x2DY8eO6bXXXvOePrv++uv9tp+wJ05LASft2rVLUllg8Vi9erWKi4vPOR0+aNAgPfLII0pLS9PgwYO1evVqFRUV/aQp9FWrVnnXHQiff/65tm/frj/+8Y+Kj49XeHi4YmNjdf/99+vrr79WmzZtfGo5cOCARo0aJansWqKBAwcqPT1dDz30kBITE/Xdd99pypQpuv7667V582aFhYUFpO4LUdHf6+HDhyVJU6ZMUXR0tI4ePap3331X119/vT766KNyB8/Zs2erXbt2eu655yRJf/rTn9SvXz/t2rVLkZGRksqCzahRozRw4EDNnDlTOTk5euyxx1RQUKCgoFP/jjxx4oR69eqlb7/9VlOnTtVVV12l9PR0zZgxQ1u3btXf//53n21/8MEHysjI0JNPPimHw6GHH35Y/fv314gRI7Rz50699NJLysnJ0fjx4zV48GBt3bq1wqB7ppKSEhUXF/u0OZ1lh4TFixfrzjvvVFJSkpYsWaKCggI9/fTT3vG59tprfZb7xS9+oTvuuEMpKSk6duyYJGnMmDFauHChxo4dq6eeekqHDx/WtGnTlJiYqC+++EJRUVE6duyYbrzxRsXHx2v27NmK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0brnnnvUvn17Pffcc2revLnmzJlzzuXGjBmjYcOGqXv37tVUKQAAqCksCzeFhYXasmWLkpKSfNqTkpK0fv36sy63YMECffvtt5oyZUqgSwQAADWQ06oNZ2dnq6SkRFFRUT7tUVFRysrKqnCZr7/+WhMnTlR6erqczsqVXlBQoIKCAu/73NzcCy8aAABc9Cy/oNjhcPi8N8aUa5OkkpISDRs2TFOnTlXbtm0rvf4ZM2YoMjLS+2revPlPrhkAAFy8LAs3jRs3VnBwcLlZmoMHD5abzZGkvLw8bd68Wb/73e/kdDrldDo1bdo0ffHFF3I6nfr4448r3M6kSZOUk5Pjfe3duzcg+wMAAC4Olp2WCgkJUUJCgtLS0nTrrbd629PS0jRw4MBy/SMiIvTvf//bpy01NVUff/yx3n77bcXHx1e4HbfbLbfb7d/iAQDARcuycCNJ48eP11133aUuXbqoe/fueuWVV7Rnzx6lpKRIKpt12b9/v15//XUFBQWpQ4cOPss3adJEoaGh5doBAEDtZWm4GTp0qA4dOqRp06YpMzNTHTp00IoVKxQXFydJyszMPO8zbwAAAE7nMMYYq4uoTrm5uYqMjFROTo4iIiL8tt7sowXqMv2fkqTdT/b323oBAEDVjt+W3y0FAADgT4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK4QbAABgK5aHm9TUVMXHxys0NFQJCQlKT08/a9933nlHN954oy655BJFRESoe/fu+vDDD6uxWgAAcLGzNNwsXbpU48aN0+TJk5WRkaGePXsqOTlZ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z3bu3Knp06crNTVVEyZM8Fn+n//8pzIzM/Xpp5+qa9euGjx4sP7zn/9YsSsAAoxwA6BGcLvdio6O9nl5vsXZ81nz5s01bNgw3XnnnVq+fLnP8o0aNVJ0dLTatWunxx9/XEVFRVq9erUFewIg0Ag3AGwnLCxMRUVFFX5WVFSkv/zlL5Ikl8tVnWUBqCZOqwsAgMr44IMPVLduXe/75ORkvfXWW+X6ffbZZ1q8eLH69Onj056YmKigoCDl5+ertLRULVu21JAhQwJeN4DqR7gBUCP06tVLc+bM8b4PDw/3/uwJPsXFxSoqKtLAgQP14osv+iy/dOlStWvXTjt27NC4ceM0d+5cNWzYsNrqB1B9CDcAaoTw8HBdeumlFX7mCT4ul0uxsbEVnm5q3ry52rRpozZt2qhu3boaPHiwtm3bpiZNmgS6dADVjGtuANR4nuATFxdXqetorrvuOnXo0EGPP/54NVQHoLoRbgDUSn/4wx/08ssva//+/VaXAsDPCDcAaqWbb75ZLVu2ZPYGsCGHMcZYXQQAAIC/MHMDAABshXADAABshXADAABshXADAABshXADAABshXADAABshXADAABshXADAABshXADAABshXADAABshXADAABshXADAABs5f8BQMsR6WexcFAAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fpr_rf, tpr_rf, thresholds_rf = roc_curve(y_train8, y_scores_rf)\n", "\n", "plt.plot(fpr_rf, tpr_rf)\n", "plt.xlabel(\"FPR\")\n", "plt.ylabel(\"TPR\")\n", "plt.title(\"ROC Curve — Random Forest\")\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 38, "id": "f055f9b4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9969179908862156" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "roc_auc_score(y_train8, y_scores_rf)\n" ] }, { "cell_type": "markdown", "id": "c9ae1fb9", "metadata": {}, "source": [ "### 10.1 Bonus — compare both models on one ROC plot\n", "\n", "Plotting both curves together makes the comparison immediate: whichever\n", "curve bulges further toward the top-left corner is the better classifier." ] }, { "cell_type": "code", "execution_count": 39, "id": "53bbf731", "metadata": {}, "outputs": [ { "data": { "image/png": "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6NFyjvzBIiMBa2uloyAiIrJMKiGEUOrgLVq0QLNmzTBv3jx9WXBwMHr06IEpU6aU6DUaNmyI6OhojB8/vkT109LS4OLigtTUVDg7O5cp7iIlJwNeXvK+cqeUiIjILJXm91uxlpvs7GwcPnwYERERBuURERHYs2dPiV5Dq9UiPT0d7u7upgixdAokNFydmIiISDmKLeJ38+ZN5OXlwUvX2vEfLy8vJCUlleg1Pv/8c9y9exe9e/cutk5WVhaysrL0j9PS0soWcCn06wdcuWLywxAREVERFB9QrFKpDB4LIQqVFWX16tX46KOPEBMTA09Pz2LrTZkyBS4uLvrNz8/vkWN+mNBQkx+CiIiIiqFYcuPh4QFra+tCrTTJycmFWnPuFxMTg4EDB+L7779Hhw4dHlh3zJgxSE1N1W+XL19+5NgfSKXCunWmPQQREREVT7HkxtbWFiEhIYiLizMoj4uLQ3h4eLH7rV69Gv369cOqVavQpUuXhx5Ho9HA2dnZYDMJDiImIiKqEBS9cOaIESPwyiuvIDQ0FGFhYViwYAESEhIwZMgQALLV5erVq1ixYgUAmdj06dMHX375JVq2bKlv9bG3t4eLi4ti74OIiIgqDkXH3ERHR2PmzJmYNGkSmjZtip07d2Ljxo0ICAgAACQmJhqseTN//nzk5ubijTfegI+Pj357++23lXoLheQJFSpQOERERBZH0XVulGCydW6SkgAfH+TBCoF+eShmHUIiIiIqg0qxzo25srICBxQTEREpiMmNkakANGumdBRERESWi8kNERERmRUmN0YmAJw4oXQURERElovJjZFptcCiRUpHQUREZLmY3JjAfzPZiYiISAFMbozM2goYPlzpKIiIiCwXkxsiIiIyK0xuiIiIyKwwuTGyPC2wZInSURAREVkuJjcmcPq00hEQERFZLiY3RqZSAb16KR0FERGR5WJyY2RWKqB5c6WjICIislxMboiIiMisMLkxMgHg8mWloyAiIrJcTG6MTKsFfvlF6SiIiIgsF5MbE6hWTekIiIiILBeTGyOztgKee07pKIiIiCwXkxsiIiIyK0xuiIiIyKwwuTGyPC2webPSURAREVkuJjcmcPas0hEQERFZLiY3RqZSAc8+q3QURERElovJjZFZqQBfX6WjICIislxqpQMgIqLKQ6vVIjs7W+kwyEzZ2trCyurR212Y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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(fpr, tpr, \"b:\", label=\"SGD\")\n", "plt.plot(fpr_rf, tpr_rf, \"r-\", label=\"Random Forest\")\n", "plt.xlabel(\"FPR\")\n", "plt.ylabel(\"TPR\")\n", "plt.legend()\n", "plt.title(\"ROC Comparison — SGD vs Random Forest\")\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "8296dd6a", "metadata": {}, "source": [ "**Why Random Forest usually wins here:** SGD is a *linear* model — it can\n", "only draw one straight decision boundary through 784-dimensional pixel space.\n", "Random Forest is an ensemble of trees that can carve out far more complex,\n", "non-linear regions, so it captures the messier patterns in handwriting better." ] }, { "cell_type": "markdown", "id": "979ee2e4", "metadata": {}, "source": [ "## 11. Multiclass Classification — all 10 digits at once\n", "\n", "So far we've only asked yes/no questions (\"is it an 8?\"). Now we classify the\n", "actual digit (0–9) — a **multiclass** problem.\n", "\n", "`SVC` (Support Vector Classifier) doesn't natively choose between 10 classes\n", "directly the simple way a binary classifier does. Under the hood scikit-learn\n", "uses one of two strategies automatically:\n", "\n", "* **OvO (One-vs-One):** train a separate binary classifier for every *pair*\n", " of classes, then let them vote. Number of classifiers needed = `n*(n-1)/2`.\n", " For 10 digits: `10*9/2 = 45` classifiers.\n", "* **OvR / OvA (One-vs-Rest / One-vs-All):** train one classifier per class,\n", " each asking \"is it this class, or anything else?\" Only `n` classifiers needed\n", " (10 for digits) — cheaper, and the default strategy for most linear models.\n", "\n", "`SVC` defaults to OvO internally; we also explicitly wrap it in `OneVsRestClassifier`\n", "below to force the OvR strategy and compare.\n" ] }, { "cell_type": "code", "execution_count": 40, "id": "63d72ae2", "metadata": {}, "outputs": [], "source": [ "# OvO -> n*(n-1)/2\n", "# OvR / OvA -> n\n" ] }, { "cell_type": "code", "execution_count": 41, "id": "6243ce21", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
SVC()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "SVC()" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "svc = SVC()\n", "svc.fit(X_train[:1000], y_train[:1000]) # subset used — SVC is slow to train on full data\n" ] }, { "cell_type": "code", "execution_count": 42, "id": "620a30c3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['5'], dtype=object)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "svc.predict([X_train[0]])\n" ] }, { "cell_type": "code", "execution_count": 43, "id": "30a1864a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1.75828215, 2.74956232, 6.13809559, 8.2853702 , -0.28728967,\n", " 9.30119996, 0.74228825, 3.79256174, 7.20847395, 4.85762716]])" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "svc.decision_function([X_train[0]])\n" ] }, { "cell_type": "markdown", "id": "2defa346", "metadata": {}, "source": [ "For multiclass, `decision_function` returns one score **per class** (10\n", "numbers here) instead of a single number — the predicted class is just\n", "whichever score is highest." ] }, { "cell_type": "code", "execution_count": 44, "id": "0dba2df1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], dtype=object)" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "svc.classes_\n" ] }, { "cell_type": "code", "execution_count": 45, "id": "7ab1cf49", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['5'], dtype='" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "y_pred = cross_val_predict(svc, X_train[:1000], y_train[:1000], cv=3)\n", "ConfusionMatrixDisplay.from_predictions(y_train[:1000], y_pred)\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "d5a65cd3", "metadata": {}, "source": [ "Raw counts can be misleading if some digits appear more often than others.\n", "Normalizing by row (`normalize=\"true\"`) converts each row into a percentage\n", "of that digit's total occurrences — easier to compare error rates fairly\n", "across digits." ] }, { "cell_type": "code", "execution_count": 47, "id": "3adad56a", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ConfusionMatrixDisplay.from_predictions(\n", " y_train[:1000], y_pred, normalize=\"true\", values_format=\".0%\"\n", ")\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "6fcac31e", "metadata": {}, "source": [ "We can also zero out the diagonal's visual weight by weighting only the\n", "*errors*, making misclassification patterns jump out more clearly (e.g. which\n", "digits get confused with which)." ] }, { "cell_type": "code", "execution_count": 48, "id": "a3c9e037", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "weights = (y_pred != y_train[:1000])\n", "ConfusionMatrixDisplay.from_predictions(\n", " y_train[:1000], y_pred, sample_weight=weights, normalize=\"true\", values_format=\".0%\"\n", ")\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "87ace0db", "metadata": {}, "source": [ "## 12. Multilabel Classification — predicting more than one yes/no at once\n", "\n", "Multilabel means each sample can belong to **multiple independent\n", "categories simultaneously** (not mutually exclusive, unlike multiclass).\n", "\n", "Here we manufacture two independent binary labels per digit:\n", "* Is it **greater than 5**?\n", "* Is it **even**?\n", "\n", "A digit can be both, neither, or just one — e.g. \"8\" is both >5 and even.\n" ] }, { "cell_type": "code", "execution_count": 49, "id": "b9d3cc20", "metadata": {}, "outputs": [], "source": [ "y_train_above_5 = (y_train > '5')\n", "y_train_even = (y_train.astype(int) % 2 == 0)\n", "y_train_ml = np.c_[y_train_above_5, y_train_even]\n" ] }, { "cell_type": "code", "execution_count": 50, "id": "10c7ebfa", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[False, False]])" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "knn = KNeighborsClassifier()\n", "knn.fit(X_train, y_train_ml)\n", "knn.predict([X_train[0]])\n" ] }, { "cell_type": "code", "execution_count": 51, "id": "3b8f69b0", "metadata": {}, "outputs": [], "source": [ "y_pred = cross_val_predict(knn, X_train, y_train_ml, cv=3)\n" ] }, { "cell_type": "markdown", "id": "bd3f2a16", "metadata": {}, "source": [ "### F1 with `average=\"macro\"`\n", "\n", "With multiple labels, F1 needs to be computed per-label first, then combined\n", "into one number. `average=\"macro\"` computes F1 for each label separately and\n", "takes the plain average — every label counts equally regardless of how common\n", "it is. (The alternative, `average=\"weighted\"`, would weight by how many\n", "samples belong to each label — useful if your labels are imbalanced.)\n" ] }, { "cell_type": "code", "execution_count": 52, "id": "80e3e5b0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9781811708153896" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f1_score(y_train_ml, y_pred, average=\"macro\")\n", "# alternative: average=\"weighted\"\n" ] }, { "cell_type": "markdown", "id": "647f50eb", "metadata": {}, "source": [ "### 12.1 ClassifierChain — modeling label dependence\n", "\n", "`KNeighborsClassifier` treats the two labels as independent. `ClassifierChain`\n", "instead predicts labels in sequence, feeding each predicted label as an *extra\n", "input feature* to the next classifier in the chain — useful when labels are\n", "correlated (e.g. knowing a digit is >5 narrows down whether it's even, since\n", "6 and 8 are both >5 and even).\n" ] }, { "cell_type": "code", "execution_count": 53, "id": "2c752398", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0., 0.]])" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chain_svc = ClassifierChain(SVC(), cv=3)\n", "chain_svc.fit(X_train[:2000], y_train_ml[:2000])\n", "chain_svc.predict([X_train[0]])\n" ] }, { "cell_type": "markdown", "id": "6916530f", "metadata": {}, "source": [ "## 13. Multioutput Classification — predicting a whole image\n", "\n", "Multioutput pushes this idea further: instead of predicting a handful of\n", "labels, we predict **784 pixel values at once** — effectively, the model's\n", "\"label\" for one image is another entire image.\n", "\n", "Here we build an image-denoising task: add random noise to digit images, then\n", "train KNN to map a noisy image back to its clean original.\n" ] }, { "cell_type": "code", "execution_count": 54, "id": "61f48ba3", "metadata": {}, "outputs": [], "source": [ "np.random.seed(40)\n", "image_noise = np.random.randint(0, 100, X_train.shape)\n", "X_train_noisy = X_train + image_noise\n", "\n", "image_noise = np.random.randint(0, 100, X_test.shape)\n", "X_test_noisy = X_test + image_noise\n", "\n", "y_train_mc = X_train # the \"label\" for a noisy image is the original clean image\n", "y_test_mc = X_test\n" ] }, { "cell_type": "code", "execution_count": 55, "id": "070af281", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGZCAYAAABmNy2oAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAADppJREFUeJzt3H2s1/P/x/Hnp3O6cEonMRzJmD9sbORgjdNSuWZlKFN/kLnIVc12DK25aP44iQjhD6o/XFuTjVloiiGVXORibJpYNpmMrCLl8/vj+/P8OT++9Pqozkfdbn/x7vP4vN+jup/359S7Uq1WqwEAEdGtqy8AgPohCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCtSlt956K8aMGRMtLS3Ro0eP2H///WP06NGxZMmSbX6PW2+9NSqVSk3nX7x4cVQqlVi8eHFN+201bNiwGDZs2A49B5QQBerOfffdF21tbbFmzZqYPn16LFy4MO6888746quvYsiQITFr1qxtep9LL720KCK/19raGkuWLInW1taa9vBvVfHsI+rJG2+8EUOHDo0zzzwz5s+fH42NjfljW7ZsiXPOOSdeeOGFeO2116Ktre1P32Pjxo3R1NS0sy75H/ntLmFH35HAtnKnQF3p6OiISqUSDz74YKcgREQ0NjbGAw88EJVKJaZNmxYR//cR0TvvvBOjR4+OvfbaKw499NBOP/Z7P//8c7S3t8f+++8fTU1NMXTo0FixYkUcfPDBMX78+Hzdn318NH78+OjTp0989tlnceaZZ0afPn1i4MCB0d7eHj///HOn80ydOjUGDx4c/fv3j759+0Zra2vMnj07fA1GvWv8+5fAzrF169ZYtGhRHHvssXHggQf+6WsGDhwYxxxzTLzyyiuxdevWPH7uuefGBRdcEFdccUVs2LDhv57j4osvjqeeeiquv/76GDFiRHz88cdxzjnnxPr167fpGn/55ZcYNWpUXHLJJdHe3h6vvfZa3HbbbdHc3Bw333xzvm716tUxYcKEOOiggyLiP98jmThxYnz11VedXgf1RhSoG99++21s3LgxDjnkkL983SGHHBLLli2LdevW5bGLLroopk6d+pe7jz/+OJ544om44YYboqOjIyIiTjnllNhvv/1i7Nix23SNmzdvjqlTp8aYMWMiIuKkk06Kt99+Ox5//PFOv9nPnTs3//nXX3+NYcOGRbVajXvuuSduuummmr8BDjuaj4/41/ntI5jf/8Z63nnn/e3u1VdfjYiI888/v9Px0aNH/+Gjqv+mUqnEyJEjOx078sgj44svvuh07JVXXomTTz45mpubo6GhIbp37x4333xzrFu3Lr755pttOhd0BVGgbuyzzz7R1NQUn3/++V++bvXq1dHU1BT9+/fPYy0tLX/7/r/dWey3336djjc2Nsbee++9TdfY1NQUvXr16nSsZ8+e8dNPP+W/L1u2LE499dSIiHjooYfijTfeiOXLl8eUKVMiImLTpk3bdC7oCj4+om40NDTE8OHDY8GCBbFmzZo//b7CmjVrYsWKFXHGGWdEQ0NDHt+Wj2N++41/7dq1MWDAgDy+ZcuWTh9F/VNPPvlkdO/ePZ5//vlOAXn22We32zlgR3GnQF2ZPHlyVKvVuOqqqzp9IzniP9+IvvLKK6NarcbkyZOL33vo0KEREfHUU091Oj5v3rzYsmVL7Rf9/1QqlWhsbOwUrU2bNsUjjzyy3c4BO4o7BepKW1tbzJw5M6699toYMmRIXHPNNXHQQQfFl19+Gffff38sXbo0Zs6cGSeccELxex9xxBExduzYmDFjRjQ0NMSIESPio48+ihkzZkRzc3N067Z9vkY666yz4q677opx48bF5ZdfHuvWrYs777wzevbsuV3eH3YkUaDuTJw4MY477riYMWNGtLe3x7p166J///4xZMiQeP311+P444+v+b3nzp0bLS0tMXv27Lj77rtj0KBB8fTTT8fpp58e/fr12y7XP2LEiJgzZ07cfvvtMXLkyBgwYEBcdtllse+++8Yll1yyXc4BO4q/0cxu780334y2trZ47LHHYty4cV19OdClRIHdyssvvxxLliyJY445JvbYY494//33Y9q0adHc3BwrV678w58sgt2Nj4/YrfTt2zdeeumlmDlzZvz444+xzz77xBlnnBEdHR2CAOFOAYDf8UdSAUiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGA1NjVFwB/Z+vWrcWbH374YQdcyfYxa9asmnYbN24s3nz66afFm/vvv794c9111xVvnnjiieJNRESvXr2KNzfeeGPx5pZbbine7ArcKQCQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIHkg3i7myy+/LN5s3ry5ePPmm28Wb15//fXiTUTE999/X7yZN29eTefa1QwcOLB4M3HixOLN/Pnzizd77rln8SYi4qijjirenHjiiTWda3fkTgGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAKlSrVarXX0R/NG7775b027EiBHFmx9++KGmc7FzNTQ0FG/mzJlTvOndu3fxphYHHHBATbu99tqreHPYYYfVdK7dkTsFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgeUpqnfruu+9q2g0ePLh4s2rVqprOtaup5b9dLU/sXLRoUfEmIqJHjx7FG0/ApZQ7BQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoApMauvgD+XP/+/Wva3XHHHcWb5557rnhz9NFHF28mTZpUvKnVoEGDijcLFy4s3vTu3bt48+GHHxZvIiLuvffemnZQwp0CAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQBSpVqtVrv6Iuha69evL97sueeexZsJEyYUbyIiHn744eLNo48+WrwZN25c8QZ2Ne4UAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQGrv6Auh6ffv23SnnaW5u3inniajtIXoXXHBB8aZbN19XsWvxMxqAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiVarVa7eqLYPewYcOGmnYjR44s3ixevLh4s2DBguLNqaeeWryBeuZOAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIAyQPxqHurVq0q3rS2thZv+vXrV7wZPnx48ebYY48t3kREXH311cWbSqVS07nYfblTACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBA8kA8dknz588v3lx88cXFm/Xr1xdvatXR0VG8ufDCC4s3LS0txRt2He4UAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQPBAP/tcHH3xQvGlvby/eLFy4sHhTqyuuuKJ4M2XKlOLNgAEDijfUJ3cKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIHogH/8D3339fvHnuuedqOtf48eOLN7X88j7ppJOKNy+//HLxhvrkTgGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiekgr/Ej179ize/PLLL8Wb7t27F29efPHF4s2wYcOKN+x47hQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJAau/oCoF6sXLmyeDNv3rzizfLly4s3EbU93K4Whx9+ePFm6NChO+BK6AruFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkDwQj7r36aefFm/uu+++4s0zzzxTvPn666+LNztTY2P5L/GWlpbiTbduvr7cVfg/CUASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGA5IF41KSWB8E9/vjjNZ1r1qxZxZvVq1fXdK56dtxxxxVvpkyZUrwZNWpU8YZdhzsFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkD8Tbxaxdu7Z489FHHxVvrrnmmuLNJ598Urypd4MHDy7eXH/99TWd6+yzzy7edOvm6z7K+BkDQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkT0ndCb777rvizYQJE2o613vvvVe8WbVqVU3nqmdtbW3Fm/b29uLNaaedVrzZY489ijews7hTACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBA2q0fiLd06dLizfTp04s3y5cvL96sWbOmeFPvmpqaatpNmjSpeDNlypTiTe/evYs3sKtxpwBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgLRbPxBv/vz5O2WzMx1++OHFm5EjRxZvGhoaijfXXXdd8SYiol+/fjXtgHLuFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkCrVarXa1RcBQH1wpwBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBA+h9ZUaVlufxeuwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(X_train[0].reshape(28, 28), cmap=\"binary\")\n", "plt.title(\"Original\")\n", "plt.axis(\"off\")\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 56, "id": "3b39ade7", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGZCAYAAABmNy2oAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGiFJREFUeJzt3Xts1fX9x/HXKb3SKz290NbRAgU6ChQKCFiRbpPAFuPchWy4sLnM+QcyjcbMbJiYuSVOtmx/bGzGmam7GKchYjYXiIFNZsDIHblDuZQWoVB6oaX3fn9//LJ3wpzreX9EHMvz8d/gPM9poeXlcfo2FkVRJAAAJCV93B8AAOC/B6MAADCMAgDAMAoAAMMoAAAMowAAMIwCAMAwCgAAwygAAAyjgBvO888/r1gspvT0dJ0+ffp9P19fX69p06a5n7e+vl719fXX4CMEblzJH/cHAITq6+vTY489pt///vfX5Pl+9atfXZPnAW5kvFPADWvp0qV68cUXtXfv3mvyfFOnTtXUqVOvyXMBNypGATes7373u4rH43r00Uf/4+N6e3v1ve99T+PHj1dqaqrKysp0//33q729/arH/bu/ffTrX/9aNTU1ysrKUnZ2tqqqqvT9739fknTq1CklJyfrySeffN9rbtmyRbFYTK+88sqH+hyB641RwA0rOztbjz32mDZu3KjNmzf/28dEUaS77rpLP/3pT7VixQq9/vrrevjhh/XCCy/o05/+tPr6+j7w+V966SWtXLlSixYt0quvvqr169froYceUnd3tySpoqJCd955p55++mkNDQ1d1f7yl79UaWmpvvCFL1y7Txi4HiLgBvPcc89FkqLt27dHfX190YQJE6I5c+ZEw8PDURRF0aJFi6Lq6uooiqJow4YNkaRozZo1Vz3Hn/70p0hS9Mwzz9iPLVq0KFq0aJH971WrVkV5eXn/8WP529/+FkmKXn31Vfux5ubmKDk5OfrBD37wIT9T4PrjnQJuaKmpqfrRj36kHTt26OWXX37fz//zHcQ999xz1Y8vW7ZMmZmZ2rRp0wc+980336z29nYtX75cr732mi5evPi+x9TX16umpkZr1661H3v66acVi8V03333BX5WwMeHUcAN76tf/apqa2u1evVqDQwMXPVzra2tSk5OVmFh4VU/HovFNHbsWLW2tn7g865YsUK//e1vdfr0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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(X_train_noisy[0].reshape(28, 28), cmap=\"binary\")\n", "plt.title(\"Noisy\")\n", "plt.axis(\"off\")\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 57, "id": "0281d301", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
KNeighborsClassifier()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "KNeighborsClassifier()" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "knn = KNeighborsClassifier()\n", "knn.fit(X_train_noisy, y_train_mc)\n" ] }, { "cell_type": "code", "execution_count": 58, "id": "5152848f", "metadata": {}, "outputs": [], "source": [ "pred = knn.predict([X_test_noisy[0]])\n" ] }, { "cell_type": "code", "execution_count": 59, "id": "353fafc6", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGZCAYAAABmNy2oAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAFltJREFUeJzt3X2wl3P++PHXkTpJSDcnOtU5YtEg2SFr3W0sunOzWGw2NQyWtdRkWbtu4itEaybNDmZ3asc9oUUIKcaum82wGTct7axFqLa0JTLqvH9/7LfXz9EJn750Ko/HTH+cz7le1/X+XGed51yfrq6tKqWUAICI2KS5FwDA+kMUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUNjB//OMfo6qqKv+0bt06ttlmm+jbt29ceeWVMX/+/OZeYiPDhg2L+vr6dX7cqqqqGDVq1Ffa9qmnnorq6ur417/+9c0uqkKjRo2KqqqqRq/V19fHsGHDKtrPRx99FKNGjYonnnji61vc/3riiSeiqqqq0b6HDBkSRx111Nd+LNaNTZt7AaydiRMnxs477xyffvppzJ8/P/785z/HmDFjYuzYsXHnnXfGD3/4w+ZeYkREXHTRRXHOOec09zLWqJQSw4cPj1NPPTXq6uqaezlfavLkybHllltWNPPRRx/FpZdeGhERP/jBD76BVTU2atSo2HnnnWP69Olx0EEHfePH4+slChuoXXfdNfbcc8/8+phjjokRI0bEfvvtF0cffXS88cYb0blz52Zc4X9tv/32zb2ELzR16tR44YUX4rbbbvva9vnpp59GVVVVbLrp1/+f1x577PG17/Prtv3220e/fv3iqquuEoUNkI+PNiLdu3eP3/72t7F06dK48cYbG33v+eefjyOOOCLat28frVu3jj322CPuuuuuRtus+mhqxowZccYZZ0THjh2jQ4cOcfTRR8e7777baNuGhoa4+uqrY+edd47q6uqoqamJk046Kd55551G2zX18dGkSZNi7733jq222iratGkTPXr0iJNPPrnRNkuWLIlzzz03tttuu2jVqlXU1tbG8OHDY9myZattd+qpp0aHDh2ibdu20a9fv3j99de/8jm7/vrrY6+99oqddtqp0ev19fUxaNCgmDx5cvTq1Stat24dPXr0iOuuu67Rdqs+Prn55ptj5MiRUVtbG9XV1TFnzpyIiJg2bVocfPDBseWWW0abNm1i3333jccff3y1dTz44IPRu3fvqK6uju222y7Gjh3b5Hqb+vho8eLFMXLkyOjRo0f+LAYMGBCzZ8+ON998Mzp16hQREZdeeml+7PjZfbzxxhsxePDgqKmpierq6ujZs2f87ne/W+3Ys2fPjn79+kWbNm2iY8eO8bOf/SyWLl3a5DqHDBkS06ZNi3/84x9Nfp/1WGGDMnHixBIRZebMmU1+/8MPPywtWrQoBx98cL42ffr00qpVq7L//vuXO++8s0ydOrUMGzasRESZOHHiavvu0aNH+cUvflEeeeSR8oc//KFsvfXWpW/fvo2Oc9ppp5WIKGeddVaZOnVqueGGG0qnTp1Kt27dyoIFC3K7oUOHlrq6uvz66aefLlVVVeWEE04oDz30UJk+fXqZOHFiGTJkSG6zbNmy0rt379KxY8dy7bXXlmnTppVx48aVrbbaqhx00EGloaGhlFJKQ0ND6du3b6muri6jR48ujz76aLnkkktKjx49SkSUSy655AvP5SeffFI222yzct555632vbq6ulJbW1u6d+9eJkyYUB566KFy4oknlogo11xzTW43Y8aMEhGltra2HHvsseX+++8vU6ZMKQsXLiw333xzqaqqKkcddVS59957ywMPPFAGDRpUWrRoUaZNm5b7mDZtWmnRokXZb7/9yr333lsmTZpU9tprr9K9e/fy+f9E6+rqytChQ/PrJUuWlF122aVsvvnm5bLLLiuPPPJIueeee8o555xTpk+fXpYvX16mTp1aIqKccsop5ZlnninPPPNMmTNnTimllFdeeaVstdVWZbfddis33XRTefTRR8vIkSPLJptsUkaNGpXHef/990tNTU2pra0tEydOzPOxao0zZsxotM558+aViCjXXXfdF/4MWP+Iwgbmy6JQSimdO3cuPXv2zK933nnnsscee5RPP/200XaDBg0q2267bVm5cmWjfZ955pmNtrv66qtLRJT33nuvlFLKa6+91uR2zz33XImI8utf/zpf+3wUxo4dWyKiLF68eI3rv/LKK8smm2yy2nu8++67S0SUhx56qJRSysMPP1wioowbN67RdqNHj/5KUVi13jvuuGO179XV1ZWqqqryt7/9rdHrhxxySNlyyy3LsmXLSin/PwoHHHBAo+2WLVtW2rdvXw4//PBGr69cubLsvvvupU+fPvna3nvvXbp06VI+/vjjfG3JkiWlffv2XxqFyy67rEREeeyxx9b4PhcsWLDG83HYYYeVrl27lv/85z+NXj/rrLNK69aty6JFi0oppZx//vlrPB9NRaGUUmpra8vxxx+/xnWxfvLx0UaofOb/ImPOnDkxe/bsOPHEEyMiYsWKFflnwIAB8d5778Xf//73RvNHHHFEo6979eoVEZF358yYMSMiYrWPMfr06RM9e/Zs8uORVfbaa6+IiDjuuOPirrvuirlz5662zZQpU2LXXXeN3r17N1rvYYcd1uhOl1XrWPXeVhk8ePAaj/9Zqz4Sq6mpafL7u+yyS+y+++6r7XvJkiXxwgsvNHr9mGOOafT1008/HYsWLYqhQ4c2eg8NDQ3Rr1+/mDlzZixbtiyWLVsWM2fOjKOPPjpat26d81tssUUcfvjhX/oeHn744dhxxx3X6saC5cuXx+OPPx4/+tGPok2bNqv9b2P58uXx7LPPRsR/z/Wazsea1NTUNPnzZf0mChuZZcuWxcKFC6NLly4RETFv3ryIiDj33HOjZcuWjf6ceeaZERHx73//u9E+OnTo0Ojr6urqiIj4+OOPIyJi4cKFERGx7bbbrnb8Ll265PebcsABB8Sf/vSnWLFiRZx00knRtWvX2HXXXeP222/PbebNmxcvvfTSauvdYostopSS6124cGFsuummq613m222+ZKzFI3ez2d/GX/Zfla99vn3+Plzseq8H3vssau9jzFjxkQpJRYtWhQffPBBNDQ0fOGxvsiCBQuia9euX7pdUxYuXBgrVqyI8ePHr7bGAQMGREQ0OteVrrF169Z5jtlwuPtoI/Pggw/GypUr89bDjh07RkTEBRdcEEcffXSTM5//S9Yvs+qX8HvvvbfaL6R33303j7kmRx55ZBx55JHxySefxLPPPhtXXnllDB48OOrr62OfffaJjh07xmabbRYTJkxocn7V/jt06BArVqyIhQsXNgrD+++//5Xex6r9LFq0qMnvN7WfVa99PkSf//cEq/Y9fvz4+N73vtfk/jt37px3Kn3Rsb5Ip06dVvvL/a9q6623jhYtWsSQIUPi5z//eZPbbLfddhHx3/db6RoXLVrULP9Ghf8bUdiIvPXWW3HuuefGVlttFaeffnpE/PcX/ne+852YNWtWXHHFFV/LcVbdZnjLLbfkx0ERETNnzozXXnstfvOb33yl/VRXV8eBBx4Y7dq1i0ceeSRefPHF2GeffWLQoEFxxRVXRIcOHfKXUlP69u0bV199ddx6661x9tln5+tf9fbSnj17RkSs8Q6ZV155JWbNmtXoI5Pbbrsttthii/jud7/7hfved999o127dvHqq6/GWWedtcbtWrVqFX369Il77703rrnmmrxqWbp0aTzwwANf+h769+8fF1988Rf+m4DPX+mt0qZNm+jbt2+8+OKL0atXr2jVqtUaj7PqXDd1PpqyYsWKePvtt/OKgw2HKGygXn755fz8d/78+fHUU0/FxIkTo0WLFjF58uS8DTEi4sYbb4z+/fvHYYcdFsOGDYva2tpYtGhRvPbaa/HCCy/EpEmTKjr2TjvtFKeddlqMHz8+Ntlkk+jfv3+8+eabcdFFF0W3bt1ixIgRa5y9+OKL45133omDDz44unbtGosXL45x48ZFy5Yt48ADD4yIiOHDh8c999wTBxxwQIwYMSJ69eoVDQ0N8dZbb8Wjjz4aI0eOjL333jsOPfTQOOCAA+K8886LZcuWxZ577hl/+ctf4uabb/5K76Nr167Ro0ePePbZZxtFZZUuXbrEEUccEaNGjYptt902brnllnjsscdizJgx0aZNmy/cd9u2bWP8+PExdOjQWLRoURx77LFRU1MTCxYsiFmzZsWCBQvi+uuvj4iI//mf/4l+/frFIYccEiNHjoyVK1fGmDFjYvPNN1/jVcwqw4cPjzvvvDOOPPLI+NWvfhV9+vSJjz/+OJ588skYNGhQ9O3bN7bYYouoq6uL++67Lw4++OBo3759dOzYMerr62PcuHGx3377xf777x9nnHFG1NfXx9KlS2POnDnxwAMPxPTp0/M4EyZMiIEDB8bll18enTt3jltvvTVmz57d5Lpeeuml+Oijj6Jv375f5UfB+qSZ/6KbCq26Q2jVn1atWpWamppy4IEHliuuuKLMnz+/yblZs2aV4447rtTU1JSWLVuWbbbZphx00EHlhhtuWG3fn7/rZ9UdNp+9w2TlypVlzJgxZccddywtW7YsHTt2LD/96U/L22+/3Wj283cfTZkypfTv37/U1tbm2gcMGFCeeuqpRnMffvhhufDCC8tOO+1UWrVqlbdNjhgxorz//vu53eLFi8vJJ59c2rVrV9q0aVMOOeSQMnv27K9091EppVx00UVl6623LsuXL2/0el1dXRk4cGC5++67yy677FJatWpV6uvry7XXXtvkuZk0aVKT+3/yySfLwIEDS/v27UvLli1LbW1tGThw4Grb33///aVXr16lVatWpXv37uWqq64ql1xyyZfefVRKKR988EE555xzSvfu3UvLli1LTU1NGThwYJk9e3ZuM23atLLHHnuU6urqEhGN9vHPf/6znHzyyaW2tra0bNmydOrUqXz/+98vl19+eaPjvPrqq+WQQw4prVu3Lu3bty+nnHJKue+++5q8++iiiy4qHTt2XO28sv6rKuUzt6rAt8y7774b2223Xdx0001x/PHH5+v19fWx6667xpQpU5pxdRumlStXxg477BCDBw+O0aNHN/dyqJC7j/hW69KlSwwfPjxGjx4dDQ0Nzb2cjcItt9wSH374Yfzyl79s7qWwFvydAt96F154YbRp0ybmzp0b3bp1a+7lbPAaGhri1ltvjXbt2jX3UlgLPj4CIPn4CIAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFANKmzb0Amt+8efMqnmnbtm3FM5tvvnnFM8C65UoBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABInpK6Djz33HMVzyxfvnytjvWDH/xgreYqVVVVVfFMKWWdHauurq7imfr6+opnnnjiiYpn1vZn9JOf/KTimfPPP7/imauuuqrimdNPP73iGdZPrhQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJCqyto+pYz10ooVKyqe+eCDDyqemThxYsUzzz//fMUzEWv3QLy10bp164pnWrRoUfHMaaedVvFMRMQdd9xR8cy4ceMqnlmb8/DJJ59UPNPQ0FDxDN88VwoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEgeiAc0sjYPIFybGQ/EWz+5UgAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQNq0uRcAfHOWLl26To5z//33r5Pj8M1zpQBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRPSYWN2GWXXbZOjjNo0KB1chy+ea4UAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQPBAPNhB//etfK54ZO3ZsxTMXXHBBxTNsPFwpAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgeSAebCAmT55c8cwOO+xQ8czpp59e8QwbD1cKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIHogH69hNN920VnNXXXVVxTNjx46teKaurq7iGTYerhQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJCqSimluRcB3yaDBw9eZ8e67bbb1tmx2Di4UgAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFANKmzb0A2JBdfPHFFc/cfvvta3WsOXPmrNUcVMKVAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAUlUppTT3ImB98PLLL1c8s9tuu1U8M27cuIpnIiLOPvvstZqDSrhSACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBA8kA8+F8//vGPK565++67K55Zvnx5xTMREdXV1Ws1B5VwpQBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgLRpcy8AvgmTJk2qeGZtHm73+9//vuIZD7ZjfeZKAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIAyQPxWO+tWLGi4pnJkyd/AytZ3QknnLBOjgPriisFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgeUoq673XX3+94pnbb7+94pkJEyZUPNO2bduKZ2B95koBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgDJA/FYZz799NO1mrv88su/5pU0rXfv3uvkOLA+c6UAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYBUVUopzb0Ivh3mzp27VnPdunWreObQQw+teGbq1KkVz8DGxpUCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQDSps29APgmnHvuuc29BNgguVIAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQBSVSmlNPci+HaYO3fuWs1169at4pmGhoa1OhZ827lSACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBA8kA8AJIrBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAOn/AdI3r1t7adomAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(pred.reshape(28, 28), cmap=\"binary\")\n", "plt.title(\"Denoised (predicted)\")\n", "plt.axis(\"off\")\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "da233043", "metadata": {}, "source": [ "## 14. Summary\n", "\n", "| Concept | One-line takeaway |\n", "|---|---|\n", "| Accuracy | Misleading on imbalanced classes — always check against a Dummy baseline |\n", "| Precision | Of predicted positives, how many were right — \"don't cry wolf\" |\n", "| Recall | Of actual positives, how many were caught — \"don't miss any\" |\n", "| F1 | Harmonic mean of precision & recall — one number, punishes imbalance between them |\n", "| Decision threshold | The cutoff that turns a continuous score into yes/no — moving it trades precision for recall |\n", "| PR curve | Visualizes the precision/recall tradeoff across every threshold |\n", "| ROC curve / AUC | TPR vs FPR across every threshold; AUC condenses it to one number (0.5=random, 1.0=perfect) |\n", "| k-fold CV | Trains/tests k times on rotating splits so every sample gets evaluated fairly, without leaking test data into training |\n", "| Multiclass (OvO/OvR) | Splitting an N-class problem into many binary problems |\n", "| Multilabel | Multiple independent yes/no labels per sample |\n", "| Multioutput | Predicting a whole structured output (e.g. an image) rather than a label |\n" ] } ], "metadata": { "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.9" } }, "nbformat": 4, "nbformat_minor": 5 }