{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "c8186900",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import required libraries\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.datasets import load_digits\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.pipeline import make_pipeline\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.metrics import accuracy_score, classification_report, ConfusionMatrixDisplay"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7c8d7c79",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dataset shape: (1797, 64)\n",
      "Digit classes: [0 1 2 3 4 5 6 7 8 9]\n"
     ]
    }
   ],
   "source": [
    "# Load the handwritten digits dataset\n",
    "digits = load_digits()\n",
    "X = digits.data\n",
    "y = digits.target\n",
    "\n",
    "print(\"Dataset shape:\", X.shape)\n",
    "print(\"Digit classes:\", np.unique(y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "5b887d54",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAAHHCAYAAABJK4BRAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAJf5JREFUeJzt3Ql0XVUZL/AdjICgNmFwYJBQQNQiDbYOKNJUkUEUUrGAODQ4gDN1QEFUWkFsUWxQZFkQTR0QLNrUAVCqBFScGFJFQZQSFAdESKKoIMJ9a5/3kpeO0JCP5Nzz+63VVTi997vn3twv5/zPsHdDrVarJQAAACDEJjFlAQAAAMEbAAAAgjnjDQAAAIEEbwAAAAgkeAMAAEAgwRsAAAACCd4AAAAQSPAGAACAQIJ3sNNPPz1997vfHdOan/rUp9K3vvWtMa0JjxQ9AXoCbCfAvlPVNNRqtdp4r8REc84556QHHnggvfnNb37YtR772Memjo6OdNZZZ6WxssMOO6T99tsvdXV1Paw6P/zhD9M111yTGhsb08yZM9OUKVPGbB2pL1XpidwP3//+99N///vfdNJJJ6WGhoYxW0fqSxV64ve//336+c9/nm6//fa00047FduJ5ubmMVtH6ksVeuLOO+9MV155ZbrlllvS1ltvnZ7znOekpz/96WO2jtSXKvTESBdddFG68cYb07Rp09JBBx00JjXrjTPe6zmj3NnZmerVvffemw455JB06KGHpt/97nfpF7/4RdEkJ5544nivGhNUvffEF7/4xbTbbrulY445Jn3uc59LH/rQh9L9998/3qvFBFbPPfG3v/0ttbW1FYHiwgsvTH/4wx/SwoUL0+TJk9N555033qvHBFXPPZEdf/zxRdD+6le/mv70pz+lr3/96+mZz3xmeuUrX5nuueee8V49JqB674mR8kHaV73qVcX+0/Lly8d7dSasxvFeAR558+fPLy5/z2f39thjj2LZy172snT44Yen6dOnp8MOO8yPhUrZcccd06WXXpp22WWXdOSRRxYHpKCqcvDOZ7nzNmLPPfccXp4PTL3pTW9Kz3rWs9Jee+01rusIj7SXvvSlacGCBelRj3rU8LIcwo866qhi3+mEE07wQ6GS/vOf/6TXve51xUGoCy64YLxXZ0ITvEfp85//fPrzn//8fz/Exsb0hCc8obgMb+edd17n4/MV/TnsXn/99cWlHfmM8xZbbLHW4/JZtnypa37cJptskvbee+/03Oc+90HXJ1/6lP+89rWvLS4JXJ/77rsvffazn00HH3zwcOjOZs+eXZzNOPPMMwVvKtUTWV5PGGtl7YknP/nJ6cc//nHaaqutVlueg/e5556bvv3tbwveVKon1redePnLX178/Zvf/OZBXwvqrSdGXg2Sw/fHPvYxwftBuNT8YVyunS8tyn/uuOOOdP7556enPvWp6eyzz17rsfn+jhxsc3PdfPPN6b3vfW9xeVK+R2ikm266qVh+9NFHpxtuuCH96le/SgcccEDx3ByYN+QHP/hBcXnHmjXX9Mtf/jL19/cXDbimF7zgBeknP/lJcX8rVKUnIEpZeyLfu7pm6B66vzUz9gFV64n1ueKKK4q/X/jCF47q+VD2nrjsssuKdV28eHFxHzoPIg+uxuqmTJlS23333Tf6Y1m4cGFt0003rf3pT38aXrblllvWttlmm9qyZcuGl91+++21HXfcsbbPPvsML7v33ntru+66a23q1Km1gYGB4eU33nhjbfPNN6+deuqpw8u233772pw5c1Z77e9///u1k046qbZq1aoNruNFF12UB9OrnX/++Wv924knnlj8280337zR7536Vs89saYjjjii6IP77rtvo98v1VGlnsgeeOCB2syZM2sNDQ213t7ejX4+9a8KPXHPPffUTjnllNrJJ59ce81rXlN7ylOeUrzG/fffv9Hvm/pX7z3R399f22GHHYpeyO64445i/+nYY4/d6PdcFS41fxjyyH35crx8hOp///tfcU9cPlt83XXXpe222274cflSkPb29uH/z5eRvPOd7ywuzcg1nva0pxXTg+URZJctW5YmTZo0/Njdd9+9OEKVB7TJoyyvz4te9KLiz4P597//Xfy92WabrfVvm2+++WqPgSr0BESql5449dRT0+WXX57e+ta3pqlTp46qBpS9J/JlvvnMZF7fgYGBNDg4OLz+Q/tQUJWeyNuDvJ5VGUBuLAjeo5TvdcvD7++///7FJSH5/orcLFlunJFG3ku95rJ8X1BulNxc2VVXXVU0T/7lPjTT22233VZc8pEvD3n0ox+dHo7HPOYxw5e2rGloVM513SsC9doTEKVeeiLf1/3hD384HXjggWnRokVjWptqKXtP5HCdD0INWbFiRXEJb779Io+R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gjcAAAAEErwBAAAgkOANAAAAgQRvAAAACCR4AwAAgOANAAAA5eSMNwAAAAQSvAEAACCQ4A0AAACBBG8AAAAIJHgDAABAIMEbAAAAAgneAAAAEKgxTQCrVq0Kq33CCSeE1F2wYEGKcs0114TVnj59elhtymFgYCCk7vLly1OUQw89NKx2W1tbWO2urq6w2lXT29sbVru1tbVUdbN58+aVst/6+vpC6nZ3d4fUrar+/v6QuosXL05ltHTp0rDaxx57bFhtqrtPlk2aNCmstv2b0XHGGwAAAAIJ3gAAABBI8AYAAIBAgjcAAAAEErwBAAAgkOANAAAAgQRvAAAACCR4AwAAQCDBGwAAAAIJ3gAAABBI8AYAAIBAgjcAAAAEErwBAAAgkOANAAAAgQRvAAAACCR4AwAAQCDBGwAAAAIJ3gAAABBI8AYAAIBAgjcAAAAEErwBAAAgkOANAAAAgRpqtVot8gUAAACgypzxBgAAgECCNwAAAAQSvAEAACCQ4A0AAACBBG8AAAAIJHgDAABAIMEbAAAAAgneAAAAEEjwBgAAgECCNwAAAAQSvAEAACCQ4A0AAACBBG8AAAAIJHgDAABAIMEbAAAAAgneAAAAEEjwBgAAgECCNwAAAAQSvAEAACCQ4A0AAACBBG8AAAAIJHgDAABAIMEbAAAAAgneAAAAEEjwBgAAgECCNwAAAAQSvAEAACCQ4B2su7s79fb2jmnNiy++OF199dVjWhMeKXoC9ATYToB9p6ppqNVqtfFeiYnmsssuS/lj2X///R92rcc+9rGpo6MjnXXWWWms7LDDDmm//fZLXV1do3r+T3/603TbbbettXyzzTZLL3/5y8dgDak39d4TI910003p97//fXryk5+c9txzz/SoRz1qTNaR+lLPPfGf//wnfec739ng+h544IEPcw2pN/XcE2tuI2655Za06aabpqc+9alp++23H7N1pL5UpSeuv/76oieamprSc57znCJPsG6N61leae9617vS//73v3TjjTemevSJT3wiXXLJJemggw5abfnjH/94wZtK9kR2ww03pKOPPrrYeEyfPj3985//TIODg+kLX/hCetaznjXeq8cEU889kYP3BRdcsNbyu+66K11++eVp7733FrypVE9k+X3lbUQOGbkH7rnnnuJExiGHHJLOPffc1NzcPN6ryART7z3R19eXjjjiiOL95cD9hz/8odhO5P2ml73sZeO9ehOS4F1R2267bbrooovGezVgQvjjH/+Y9t133zRr1qx05ZVXFmcyst/+9rfpb3/723ivHjyittpqq3VuH0477bQieM+ZM8dPhMrJAeMvf/lLETKGznL/6Ec/Sm1tbWnSpEnpvPPOG+9VhEfM/fffX5ysyycpfvOb3xQ9kc/uv+1tb0uHHXZYcZvt05/+dD+RNQjeo/SDH/ygOKpTfIiNjekJT3hCcVZs8803X+9zVq1aVXw586Udra2t631cPmKUj6husskmadq0aUVIfjC5bv4zY8aMh/R4GGtl7onjjz8+bbnllukzn/lMevSjHz28fPfddy/+QNV6Yl3yWYzcJ0cdddRGPxfK3BP33ntv+uUvf1mE75GXlu+zzz5pl112ST//+c/9gKlUT1xxxRVF7UWLFg33RENDQ1qwYEE655xz0sKFC8fk9r96I3iP0ne/+9108803D1+Wl798d999d1qyZMk6L6943/veVzwnn0n42c9+lp773Oemb3zjG6tdmnTnnXem17/+9el73/tecanrAw88kK677rr0nve8J51yyikbXJ+vfe1raf78+cXZiHz09cHcd999xWPzkartttuuaNzc8FC1nvjXv/5VvO7b3/724gjuVVddVfTFbrvtJnRTyZ5Y305WHvvgDW94Q3rc4x63Uc+FsvdEvmc1H4TNV0Hls3o5YGQDAwPpz3/+c2pvb/dDplI9kbcH2ZonJ/JtqzlXXHrppRv9WVRCHlyN1U2ZMqW2++67b9THcv/999fe8Y531Jqammp33nnn8PItt9yytssuu9TOOOOM4WXXX399rbm5uXbYYYcNL3vggQdqe++9d23HHXes3XTTTcPLV6xYUdtkk01q55577vCy7bffvjZnzpzVXv/CCy8s6uXaDyY/bosttiheb+bMmbVJkybVtttuu1p3d7evApXriauuuioPMFmbNWtWbdttt61NmzatNmPGjNqmm25a23///Vdbd6hCT6zL6173uqJPfvazn230c6mGeu+Ja6+9tnh/L33pS2vnnXde7eyzz661trYW24u//OUvG/W+qYZ67okLLrig2CZ86UtfWuvf8rrmfxscHNyo914FgvfDaJS777679qMf/ai2bNmy2tKlS2unn3568UX73ve+t9qXb9dddy0aYaQPfvCD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",
      "text/plain": [
       "<Figure size 1000x500 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Display some sample handwritten digit images\n",
    "fig, axes = plt.subplots(2, 5, figsize=(10, 5))\n",
    "for ax, image, label in zip(axes.ravel(), digits.images, y):\n",
    "    ax.imshow(image, cmap=\"gray\")\n",
    "    ax.set_title(f\"Label: {label}\")\n",
    "    ax.axis(\"off\")\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "58658fc5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Split the data into training and testing sets\n",
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "    X, y, test_size=0.2, random_state=42, stratify=y\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "921a3a44",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>.sk-global {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "}\n",
       "\n",
       ".sk-global.light {\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: black;\n",
       "  --sklearn-color-background: white;\n",
       "  --sklearn-color-border-box: black;\n",
       "  --sklearn-color-icon: #696969;\n",
       "}\n",
       "\n",
       ".sk-global.dark {\n",
       "  --sklearn-color-text-on-default-background: white;\n",
       "  --sklearn-color-background: #111;\n",
       "  --sklearn-color-border-box: white;\n",
       "  --sklearn-color-icon: #878787;\n",
       "}\n",
       "\n",
       ".sk-global {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       ".sk-global pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       ".sk-global input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip-path: inset(100%);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       ".sk-global div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       ".sk-global div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       ".sk-global div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       ".sk-global div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       ".sk-global div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       ".sk-global div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       ".sk-global div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       ".sk-global div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       ".sk-global div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       ".sk-global div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       ".sk-global div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       ".sk-global label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: center;\n",
       "  justify-content: center;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       ".sk-global label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       ".sk-global label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       ".sk-global label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       ".sk-global div.sk-toggleable__content {\n",
       "  display: none;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       ".sk-global div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       ".sk-global div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       ".sk-global div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       ".sk-global input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  overflow: visible;\n",
       "}\n",
       "\n",
       ".sk-global input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       ".sk-global div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       ".sk-global div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       ".sk-global div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       ".sk-global div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       ".sk-global div.sk-label label.sk-toggleable__label,\n",
       ".sk-global div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       ".sk-global div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       ".sk-global div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       ".sk-global div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       ".sk-global div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       ".sk-global div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       ".sk-global div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       ".sk-global div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       ".sk-global div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-3) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  border: var(--sklearn-color-fitted-level-0) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-0);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  border: var(--sklearn-color-fitted-level-0) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-0);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       ".sk-global a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       ".sk-global a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       ".sk-global a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       ".sk-global a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-top-container.sk-global {\n",
       "  /* pydata-sphinx-theme hides overflow, so scrolling is disabled.\n",
       "   We need to set it to !important and add tabindex=\"0\" in the HTML\n",
       "   to allow keyboard-only users to navigate the display. */\n",
       "  overflow-x: scroll !important;\n",
       "  max-width: 100%;\n",
       "}\n",
       "\n",
       ".estimator-table {\n",
       "    font-family: monospace;\n",
       "}\n",
       "\n",
       ".estimator-table summary {\n",
       "    padding: .5rem;\n",
       "    cursor: pointer;\n",
       "}\n",
       "\n",
       ".estimator-table summary::marker {\n",
       "    font-size: 0.7rem;\n",
       "}\n",
       "\n",
       ".estimator-table details[open] {\n",
       "    padding-left: 0.1rem;\n",
       "    padding-right: 0.1rem;\n",
       "    padding-bottom: 0.3rem;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table {\n",
       "    margin-left: auto !important;\n",
       "    margin-right: auto !important;\n",
       "    margin-top: 0;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(odd) {\n",
       "    background-color: #fff;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(even) {\n",
       "    background-color: #f6f6f6;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:hover td {\n",
       "    background-color: #e0e0e0;\n",
       "}\n",
       "\n",
       ".estimator-table table :is(td, th) {\n",
       "    border: 1px solid rgba(106, 105, 104, 0.232);\n",
       "}\n",
       "\n",
       "/*\n",
       "    `table td`is set in notebook with right text-align.\n",
       "    We need to overwrite it.\n",
       "*/\n",
       ".estimator-table table td.param {\n",
       "    text-align: left;\n",
       "    position: relative;\n",
       "    padding: 0;\n",
       "}\n",
       "\n",
       ".user-set td {\n",
       "    color:rgb(255, 94, 0);\n",
       "    text-align: left !important;\n",
       "}\n",
       "\n",
       ".user-set td.value {\n",
       "    color:rgb(255, 94, 0);\n",
       "    background-color: transparent;\n",
       "}\n",
       "\n",
       ".default td, .estimator-table th {\n",
       "    color: black;\n",
       "    text-align: left !important;\n",
       "}\n",
       "\n",
       ".user-set td i,\n",
       ".default td i {\n",
       "    color: black;\n",
       "}\n",
       "\n",
       "td.fitted-att-type {\n",
       "    white-space: preserve nowrap;\n",
       "}\n",
       "\n",
       "/*\n",
       "    Styles for parameter documentation links\n",
       "    We need styling for visited so jupyter doesn't overwrite it\n",
       "*/\n",
       "a.param-doc-link,\n",
       "a.param-doc-link:link,\n",
       "a.param-doc-link:visited {\n",
       "    text-decoration: underline dashed;\n",
       "    text-underline-offset: .3em;\n",
       "    color: inherit;\n",
       "    display: block;\n",
       "    padding: .5em;\n",
       "}\n",
       "\n",
       "@supports(anchor-name: --doc-link) {\n",
       "    a.param-doc-link,\n",
       "    a.param-doc-link:link,\n",
       "    a.param-doc-link:visited {\n",
       "    anchor-name: --doc-link;\n",
       "    }\n",
       "}\n",
       "\n",
       "/* \"hack\" to make the entire area of the cell containing the link clickable */\n",
       "a.param-doc-link::before {\n",
       "    position: absolute;\n",
       "    content: \"\";\n",
       "    inset: 0;\n",
       "}\n",
       "\n",
       ".param-doc-description {\n",
       "    display: none;\n",
       "    position: absolute;\n",
       "    z-index: 9999;\n",
       "    left: 0;\n",
       "    padding: .5ex;\n",
       "    margin-left: 1.5em;\n",
       "    color: var(--sklearn-color-text);\n",
       "    box-shadow: .3em .3em .4em #999;\n",
       "    width: max-content;\n",
       "    text-align: left;\n",
       "    max-height: 10em;\n",
       "    overflow-y: auto;\n",
       "\n",
       "    /* unfitted */\n",
       "    background: var(--sklearn-color-unfitted-level-0);\n",
       "    border: thin solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       "@supports(position-area: center right) {\n",
       "    .param-doc-description {\n",
       "    position-area: center right;\n",
       "    position: fixed;\n",
       "    margin-left: 0;\n",
       "    }\n",
       "}\n",
       "\n",
       "/* Fitted state for parameter tooltips */\n",
       ".fitted .param-doc-description {\n",
       "    /* fitted */\n",
       "    background: var(--sklearn-color-fitted-level-0);\n",
       "    border: thin solid var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".param-doc-link:hover .param-doc-description {\n",
       "    display: block;\n",
       "}\n",
       "\n",
       ".copy-paste-icon {\n",
       "    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNy4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjUgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTIwOCAwTDMzMi4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlMNDQ4IDMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTkyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4ek00OCAxMjhsODAgMCAwIDY0LTY0IDAgMCAyNTYgMTkyIDAgMC0zMiA2NCAwIDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHoiLz48L3N2Zz4=);\n",
       "    background-repeat: no-repeat;\n",
       "    background-size: 14px 14px;\n",
       "    background-position: 0;\n",
       "    display: inline-block;\n",
       "    width: 14px;\n",
       "    height: 14px;\n",
       "    cursor: pointer;\n",
       "}\n",
       "\n",
       ".features {\n",
       "  font-family: monospace;\n",
       "  cursor: pointer;\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: .20em;\n",
       "  margin-bottom: 0.5em;\n",
       "  font-size: inherit; /* Needed for jupyter */\n",
       "}\n",
       "\n",
       ".features.fitted {\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       ".features summary {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  margin-bottom: 0;\n",
       "  text-align: center;\n",
       "  align-items: center;\n",
       "  justify-content: center;\n",
       "  gap: 0.5em;\n",
       "  padding: .25em;\n",
       "}\n",
       "\n",
       ".features details[open] > summary {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "  border-radius: .20em 0 0 0;\n",
       "}\n",
       "\n",
       ".features.fitted details[open] > summary {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "  border-radius: .20em 0 0 0;\n",
       "}\n",
       "\n",
       ".features details > summary .arrow::before {\n",
       "  content: \"▸\";\n",
       "  color: grey;\n",
       "}\n",
       "\n",
       ".features details[open] > summary .arrow::before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       ".features details:hover > summary {\n",
       "  margin: 0;\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       ".features.fitted details:hover > summary {\n",
       "  margin: 0;\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       ".features .features-container {\n",
       "  max-width: 15em;\n",
       "  max-height: 10em;\n",
       "  overflow: auto;\n",
       "  scrollbar-width: thin;\n",
       "  padding: .25em 0.1rem;\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "  border-radius: 0 0 .5em .5em;\n",
       "}\n",
       "\n",
       ".features.fitted .features-container {\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       ".features .image-container {\n",
       "  block-size: 1em;\n",
       "  inline-size: 1em;\n",
       "  padding: 0;\n",
       "  margin: 0%;\n",
       "  display: flex;\n",
       "  justify-content: center;\n",
       "  align-items: center;\n",
       "}\n",
       "\n",
       ".features .copy-paste-icon {\n",
       "  background-size: 1em 1em;\n",
       "  width: 1em;\n",
       "  height: 1em;\n",
       "  filter: grayscale(100%) opacity(60%);\n",
       "}\n",
       "\n",
       ".features .features-container table {\n",
       "  width: 100%;\n",
       "  margin: 0.01em;\n",
       "}\n",
       "\n",
       ".features .features-container table tr:nth-child(odd) {\n",
       "  background-color: #fff;\n",
       "}\n",
       "\n",
       ".features .features-container table tr:nth-child(even) {\n",
       "  background-color: #f6f6f6;\n",
       "}\n",
       "\n",
       ".features .features-container table tr:hover {\n",
       "  background-color: #e0e0e0;\n",
       "}\n",
       "\n",
       ".features .features-container table {\n",
       "  table-layout: inherit;\n",
       "}\n",
       "\n",
       ".features .features-container table td {\n",
       "  text-align: left;\n",
       "  padding: 0 0.5em;\n",
       "  border: 1px solid rgba(106, 105, 104, 0.232);\n",
       "  white-space: nowrap;\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       ".total_features {\n",
       "  display: flex;\n",
       "  justify-content: center;\n",
       "  margin-top: 0.5em;\n",
       "}\n",
       "</style><body><div id=\"sk-container-id-1\" tabindex=\"0\" class=\"sk-top-container sk-global\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[(&#x27;standardscaler&#x27;, StandardScaler()), (&#x27;svc&#x27;, SVC(C=10))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually sk-global\" id=\"sk-estimator-id-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>Pipeline</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
       "        <div class=\"estimator-table\">\n",
       "            <details>\n",
       "                <summary>Parameters</summary>\n",
       "                <table class=\"parameters-table\">\n",
       "                  <tbody>\n",
       "                    \n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('steps',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-steps;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.pipeline.Pipeline.html#:~:text=steps,-list%20of%20tuples\">\n",
       "            steps\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-steps;\">\n",
       "            steps: list of tuples<br><br>List of (name of step, estimator) tuples that are to be chained in<br>sequential order. To be compatible with the scikit-learn API, all steps<br>must define `fit`. All non-last steps must also define `transform`. See<br>:ref:`Combining Estimators &lt;combining_estimators&gt;` for more details.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">[(&#x27;standardscaler&#x27;, ...), (&#x27;svc&#x27;, ...)]</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('transform_input',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-transform_input;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.pipeline.Pipeline.html#:~:text=transform_input,-list%20of%20str%2C%20default%3DNone\">\n",
       "            transform_input\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-transform_input;\">\n",
       "            transform_input: list of str, default=None<br><br>The names of the :term:`metadata` parameters that should be transformed by the<br>pipeline before passing it to the step consuming it.<br><br>This enables transforming some input arguments to ``fit`` (other than ``X``)<br>to be transformed by the steps of the pipeline up to the step which requires<br>them. Requirement is defined via :ref:`metadata routing &lt;metadata_routing&gt;`.<br>For instance, this can be used to pass a validation set through the pipeline.<br><br>You can only set this if metadata routing is enabled, which you<br>can enable using ``sklearn.set_config(enable_metadata_routing=True)``.<br><br>.. versionadded:: 1.6</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('memory',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-memory;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.pipeline.Pipeline.html#:~:text=memory,-str%20or%20object%20with%20the%20joblib.Memory%20interface%2C%20default%3DNone\">\n",
       "            memory\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-memory;\">\n",
       "            memory: str or object with the joblib.Memory interface, default=None<br><br>Used to cache the fitted transformers of the pipeline. The last step<br>will never be cached, even if it is a transformer. By default, no<br>caching is performed. If a string is given, it is the path to the<br>caching directory. Enabling caching triggers a clone of the transformers<br>before fitting. Therefore, the transformer instance given to the<br>pipeline cannot be inspected directly. Use the attribute ``named_steps``<br>or ``steps`` to inspect estimators within the pipeline. Caching the<br>transformers is advantageous when fitting is time consuming. See<br>:ref:`sphx_glr_auto_examples_neighbors_plot_caching_nearest_neighbors.py`<br>for an example on how to enable caching.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('verbose',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-verbose;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.pipeline.Pipeline.html#:~:text=verbose,-bool%2C%20default%3DFalse\">\n",
       "            verbose\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-verbose;\">\n",
       "            verbose: bool, default=False<br><br>If True, the time elapsed while fitting each step will be printed as it<br>is completed.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">False</td>\n",
       "        </tr>\n",
       "    \n",
       "                  </tbody>\n",
       "                </table>\n",
       "            </details>\n",
       "        </div>\n",
       "    \n",
       "        <div class=\"estimator-table\">\n",
       "            <details>\n",
       "                <summary>Fitted attributes</summary>\n",
       "                <table class=\"parameters-table\">\n",
       "                    <tbody>\n",
       "                        <tr>\n",
       "                        <th>Name</th>\n",
       "                        <th>Type</th>\n",
       "                        <th>Value</th>\n",
       "                        </tr>\n",
       "                        \n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-classes_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.pipeline.Pipeline.html#:~:text=classes_,-ndarray%20of%20shape%20%28n_classes%2C%29\">\n",
       "            classes_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-classes_;\">\n",
       "            classes_: ndarray of shape (n_classes,)<br><br>The classes labels. Only exist if the last step of the pipeline is a<br>classifier.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[int32](10,)</td>\n",
       "           <td>[0,1,2,...,7,8,9]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-n_features_in_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.pipeline.Pipeline.html#:~:text=n_features_in_,-int\">\n",
       "            n_features_in_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-n_features_in_;\">\n",
       "            n_features_in_: int<br><br>Number of features seen during :term:`fit`. Only defined if the<br>underlying first estimator in `steps` exposes such an attribute<br>when fit.<br><br>.. versionadded:: 0.24</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">int</td>\n",
       "           <td>64</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "                    </tbody>\n",
       "                </table>\n",
       "            </details>\n",
       "        </div>\n",
       "    </div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually sk-global\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"standardscaler__\">\n",
       "        <div class=\"estimator-table\">\n",
       "            <details>\n",
       "                <summary>Parameters</summary>\n",
       "                <table class=\"parameters-table\">\n",
       "                  <tbody>\n",
       "                    \n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('copy',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-copy;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.preprocessing.StandardScaler.html#:~:text=copy,-bool%2C%20default%3DTrue\">\n",
       "            copy\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-copy;\">\n",
       "            copy: bool, default=True<br><br>If False, try to avoid a copy and do inplace scaling instead.<br>This is not guaranteed to always work inplace; e.g. if the data is<br>not a NumPy array or scipy.sparse CSR matrix, a copy may still be<br>returned.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">True</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('with_mean',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-with_mean;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.preprocessing.StandardScaler.html#:~:text=with_mean,-bool%2C%20default%3DTrue\">\n",
       "            with_mean\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-with_mean;\">\n",
       "            with_mean: bool, default=True<br><br>If True, center the data before scaling.<br>This does not work (and will raise an exception) when attempted on<br>sparse matrices, because centering them entails building a dense<br>matrix which in common use cases is likely to be too large to fit in<br>memory.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">True</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('with_std',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-with_std;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.preprocessing.StandardScaler.html#:~:text=with_std,-bool%2C%20default%3DTrue\">\n",
       "            with_std\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-with_std;\">\n",
       "            with_std: bool, default=True<br><br>If True, scale the data to unit variance (or equivalently,<br>unit standard deviation).</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">True</td>\n",
       "        </tr>\n",
       "    \n",
       "                  </tbody>\n",
       "                </table>\n",
       "            </details>\n",
       "        </div>\n",
       "    \n",
       "        <div class=\"estimator-table\">\n",
       "            <details>\n",
       "                <summary>Fitted attributes</summary>\n",
       "                <table class=\"parameters-table\">\n",
       "                    <tbody>\n",
       "                        <tr>\n",
       "                        <th>Name</th>\n",
       "                        <th>Type</th>\n",
       "                        <th>Value</th>\n",
       "                        </tr>\n",
       "                        \n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-mean_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.preprocessing.StandardScaler.html#:~:text=mean_,-ndarray%20of%20shape%20%28n_features%2C%29%20or%20None\">\n",
       "            mean_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-mean_;\">\n",
       "            mean_: ndarray of shape (n_features,) or None<br><br>The mean value for each feature in the training set.<br>Equal to ``None`` when ``with_mean=False`` and ``with_std=False``.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[float64](64,)</td>\n",
       "           <td>[0.  ,0.3 ,5.16,...,6.84,2.06,0.33]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-n_features_in_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.preprocessing.StandardScaler.html#:~:text=n_features_in_,-int\">\n",
       "            n_features_in_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-n_features_in_;\">\n",
       "            n_features_in_: int<br><br>Number of features seen during :term:`fit`.<br><br>.. versionadded:: 0.24</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">int</td>\n",
       "           <td>64</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-n_samples_seen_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.preprocessing.StandardScaler.html#:~:text=n_samples_seen_,-int%20or%20ndarray%20of%20shape%20%28n_features%2C%29\">\n",
       "            n_samples_seen_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-n_samples_seen_;\">\n",
       "            n_samples_seen_: int or ndarray of shape (n_features,)<br><br>The number of samples processed by the estimator for each feature.<br>If there are no missing samples, the ``n_samples_seen`` will be an<br>integer, otherwise it will be an array of dtype int. If<br>`sample_weights` are used it will be a float (if no missing data)<br>or an array of dtype float that sums the weights seen so far.<br>Will be reset on new calls to fit, but increments across<br>``partial_fit`` calls.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">float64</td>\n",
       "           <td>1437</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-scale_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.preprocessing.StandardScaler.html#:~:text=scale_,-ndarray%20of%20shape%20%28n_features%2C%29%20or%20None\">\n",
       "            scale_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-scale_;\">\n",
       "            scale_: ndarray of shape (n_features,) or None<br><br>Per feature relative scaling of the data to achieve zero mean and unit<br>variance. Generally this is calculated using `np.sqrt(var_)`. If a<br>variance is zero, we can&#x27;t achieve unit variance, and the data is left<br>as-is, giving a scaling factor of 1. `scale_` is equal to `None`<br>when `with_std=False`.<br><br>.. versionadded:: 0.17<br>   *scale_*</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[float64](64,)</td>\n",
       "           <td>[1.  ,0.92,4.71,...,5.9 ,4.09,1.73]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-var_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.preprocessing.StandardScaler.html#:~:text=var_,-ndarray%20of%20shape%20%28n_features%2C%29%20or%20None\">\n",
       "            var_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-var_;\">\n",
       "            var_: ndarray of shape (n_features,) or None<br><br>The variance for each feature in the training set. Used to compute<br>`scale_`. Equal to ``None`` when ``with_mean=False`` and<br>``with_std=False``.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[float64](64,)</td>\n",
       "           <td>[ 0.  , 0.85,22.23,...,34.79,16.7 , 2.98]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "                    </tbody>\n",
       "                </table>\n",
       "            </details>\n",
       "        </div>\n",
       "    </div></div></div>\n",
       "        <div class=\"features fitted\">\n",
       "          <details>\n",
       "            <summary>\n",
       "              <div class=\"arrow\"></div>\n",
       "              <div>64 features</div>\n",
       "              <div class=\"image-container\" title=\"Copy all output features\">\n",
       "                <i class=\"copy-paste-icon\"\n",
       "                  onclick=\"\n",
       "                  event.stopPropagation();\n",
       "                  event.preventDefault();\n",
       "                  copyFeatureNamesToClipboard(this);\n",
       "                  \"\n",
       "                >\n",
       "                </i>\n",
       "              </div>\n",
       "            </summary>\n",
       "            <div class=\"features-container\">\n",
       "                <table class=\"features-table\">\n",
       "                  <tbody>\n",
       "                    \n",
       "        <tr>\n",
       "          <td>x0</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x1</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x2</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x3</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x4</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x5</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x6</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x7</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x8</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x9</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x10</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x11</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x12</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x13</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x14</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x15</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x16</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x17</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x18</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x19</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x20</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x21</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x22</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x23</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x24</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x25</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x26</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x27</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x28</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x29</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x30</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x31</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x32</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x33</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x34</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x35</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x36</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x37</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x38</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x39</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x40</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x41</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x42</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x43</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x44</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x45</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x46</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x47</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x48</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x49</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x50</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x51</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x52</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x53</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x54</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x55</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x56</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x57</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x58</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x59</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x60</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x61</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x62</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "        <tr>\n",
       "          <td>x63</td>\n",
       "        </tr>\n",
       "\n",
       "    \n",
       "                  </tbody>\n",
       "                </table>\n",
       "            </div>\n",
       "          </details>\n",
       "        </div>\n",
       "    <div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually sk-global\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SVC</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"svc__\">\n",
       "        <div class=\"estimator-table\">\n",
       "            <details>\n",
       "                <summary>Parameters</summary>\n",
       "                <table class=\"parameters-table\">\n",
       "                  <tbody>\n",
       "                    \n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('C',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-C;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=C,-float%2C%20default%3D1.0\">\n",
       "            C\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-C;\">\n",
       "            C: float, default=1.0<br><br>Regularization parameter. The strength of the regularization is<br>inversely proportional to C. Must be strictly positive. The penalty<br>is a squared l2 penalty. For an intuitive visualization of the effects<br>of scaling the regularization parameter C, see<br>:ref:`sphx_glr_auto_examples_svm_plot_svm_scale_c.py`.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">10</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('kernel',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-kernel;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=kernel,-%7B%27linear%27%2C%20%27poly%27%2C%20%27rbf%27%2C%20%27sigmoid%27%2C%20%27precomputed%27%7D%20or%20callable%2C%20%20%20%20%20%20%20%20%20%20default%3D%27rbf%27\">\n",
       "            kernel\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-kernel;\">\n",
       "            kernel: {&#x27;linear&#x27;, &#x27;poly&#x27;, &#x27;rbf&#x27;, &#x27;sigmoid&#x27;, &#x27;precomputed&#x27;} or callable,          default=&#x27;rbf&#x27;<br><br>Specifies the kernel type to be used in the algorithm. If<br>none is given, &#x27;rbf&#x27; will be used. If a callable is given it is used to<br>pre-compute the kernel matrix from data matrices; that matrix should be<br>an array of shape ``(n_samples, n_samples)``. For an intuitive<br>visualization of different kernel types see<br>:ref:`sphx_glr_auto_examples_svm_plot_svm_kernels.py`.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">&#x27;rbf&#x27;</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('degree',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-degree;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=degree,-int%2C%20default%3D3\">\n",
       "            degree\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-degree;\">\n",
       "            degree: int, default=3<br><br>Degree of the polynomial kernel function (&#x27;poly&#x27;).<br>Must be non-negative. Ignored by all other kernels.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">3</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('gamma',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-gamma;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=gamma,-%7B%27scale%27%2C%20%27auto%27%7D%20or%20float%2C%20default%3D%27scale%27\">\n",
       "            gamma\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-gamma;\">\n",
       "            gamma: {&#x27;scale&#x27;, &#x27;auto&#x27;} or float, default=&#x27;scale&#x27;<br><br>Kernel coefficient for &#x27;rbf&#x27;, &#x27;poly&#x27; and &#x27;sigmoid&#x27;.<br><br>- if ``gamma=&#x27;scale&#x27;`` (default) is passed then it uses<br>  1 / (n_features * X.var()) as value of gamma,<br>- if &#x27;auto&#x27;, uses 1 / n_features<br>- if float, must be non-negative.<br><br>.. versionchanged:: 0.22<br>   The default value of ``gamma`` changed from &#x27;auto&#x27; to &#x27;scale&#x27;.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">&#x27;scale&#x27;</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('coef0',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-coef0;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=coef0,-float%2C%20default%3D0.0\">\n",
       "            coef0\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-coef0;\">\n",
       "            coef0: float, default=0.0<br><br>Independent term in kernel function.<br>It is only significant in &#x27;poly&#x27; and &#x27;sigmoid&#x27;.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">0.0</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('shrinking',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-shrinking;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=shrinking,-bool%2C%20default%3DTrue\">\n",
       "            shrinking\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-shrinking;\">\n",
       "            shrinking: bool, default=True<br><br>Whether to use the shrinking heuristic.<br>See the :ref:`User Guide &lt;shrinking_svm&gt;`.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">True</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('probability',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-probability;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=probability,-bool%2C%20default%3DFalse\">\n",
       "            probability\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-probability;\">\n",
       "            probability: bool, default=False<br><br>Whether to enable probability estimates. This must be enabled prior<br>to calling `fit`, will slow down that method as it internally uses<br>5-fold cross-validation, and `predict_proba` may be inconsistent with<br>`predict`. Read more in the :ref:`User Guide &lt;scores_probabilities&gt;`.<br><br>..deprecated:: 1.9<br>  The `probability` parameter is deprecated and will be removed in 1.11.<br>  Use `CalibratedClassifierCV(SVC(), ensemble=False)` instead of<br>  `SVC(probability=True)`.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">&#x27;deprecated&#x27;</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('tol',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-tol;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=tol,-float%2C%20default%3D1e-3\">\n",
       "            tol\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-tol;\">\n",
       "            tol: float, default=1e-3<br><br>Tolerance for stopping criterion.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">0.001</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('cache_size',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-cache_size;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=cache_size,-float%2C%20default%3D200\">\n",
       "            cache_size\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-cache_size;\">\n",
       "            cache_size: float, default=200<br><br>Specify the size of the kernel cache (in MB).</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">200</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('class_weight',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-class_weight;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=class_weight,-dict%20or%20%27balanced%27%2C%20default%3DNone\">\n",
       "            class_weight\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-class_weight;\">\n",
       "            class_weight: dict or &#x27;balanced&#x27;, default=None<br><br>Set the parameter C of class i to class_weight[i]*C for<br>SVC. If not given, all classes are supposed to have<br>weight one.<br>The &quot;balanced&quot; mode uses the values of y to automatically adjust<br>weights inversely proportional to class frequencies in the input data<br>as ``n_samples / (n_classes * np.bincount(y))``.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('verbose',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-verbose;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=verbose,-bool%2C%20default%3DFalse\">\n",
       "            verbose\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-verbose;\">\n",
       "            verbose: bool, default=False<br><br>Enable verbose output. Note that this setting takes advantage of a<br>per-process runtime setting in libsvm that, if enabled, may not work<br>properly in a multithreaded context.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">False</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('max_iter',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-max_iter;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=max_iter,-int%2C%20default%3D-1\">\n",
       "            max_iter\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-max_iter;\">\n",
       "            max_iter: int, default=-1<br><br>Hard limit on iterations within solver, or -1 for no limit.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">-1</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('decision_function_shape',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-decision_function_shape;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=decision_function_shape,-%7B%27ovo%27%2C%20%27ovr%27%7D%2C%20default%3D%27ovr%27\">\n",
       "            decision_function_shape\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-decision_function_shape;\">\n",
       "            decision_function_shape: {&#x27;ovo&#x27;, &#x27;ovr&#x27;}, default=&#x27;ovr&#x27;<br><br>Whether to return a one-vs-rest (&#x27;ovr&#x27;) decision function of shape<br>(n_samples, n_classes) as all other classifiers, or the original<br>one-vs-one (&#x27;ovo&#x27;) decision function of libsvm which has shape<br>(n_samples, n_classes * (n_classes - 1) / 2). However, note that<br>internally, one-vs-one (&#x27;ovo&#x27;) is always used as a multi-class strategy<br>to train models; an ovr matrix is only constructed from the ovo matrix.<br>The parameter is ignored for binary classification.<br><br>.. versionchanged:: 0.19<br>    decision_function_shape is &#x27;ovr&#x27; by default.<br><br>.. versionadded:: 0.17<br>   *decision_function_shape=&#x27;ovr&#x27;* is recommended.<br><br>.. versionchanged:: 0.17<br>   Deprecated *decision_function_shape=&#x27;ovo&#x27; and None*.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">&#x27;ovr&#x27;</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('break_ties',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-break_ties;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=break_ties,-bool%2C%20default%3DFalse\">\n",
       "            break_ties\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-break_ties;\">\n",
       "            break_ties: bool, default=False<br><br>If true, ``decision_function_shape=&#x27;ovr&#x27;``, and number of classes &gt; 2,<br>:term:`predict` will break ties according to the confidence values of<br>:term:`decision_function`; otherwise the first class among the tied<br>classes is returned. Please note that breaking ties comes at a<br>relatively high computational cost compared to a simple predict. See<br>:ref:`sphx_glr_auto_examples_svm_plot_svm_tie_breaking.py` for an<br>example of its usage with ``decision_function_shape=&#x27;ovr&#x27;``.<br><br>.. versionadded:: 0.22</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">False</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('random_state',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-random_state;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=random_state,-int%2C%20RandomState%20instance%20or%20None%2C%20default%3DNone\">\n",
       "            random_state\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-random_state;\">\n",
       "            random_state: int, RandomState instance or None, default=None<br><br>Controls the pseudo random number generation for shuffling the data for<br>probability estimates. Ignored when `probability` is False.<br>Pass an int for reproducible output across multiple function calls.<br>See :term:`Glossary &lt;random_state&gt;`.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "                  </tbody>\n",
       "                </table>\n",
       "            </details>\n",
       "        </div>\n",
       "    \n",
       "        <div class=\"estimator-table\">\n",
       "            <details>\n",
       "                <summary>Fitted attributes</summary>\n",
       "                <table class=\"parameters-table\">\n",
       "                    <tbody>\n",
       "                        <tr>\n",
       "                        <th>Name</th>\n",
       "                        <th>Type</th>\n",
       "                        <th>Value</th>\n",
       "                        </tr>\n",
       "                        \n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-class_weight_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=class_weight_,-ndarray%20of%20shape%20%28n_classes%2C%29\">\n",
       "            class_weight_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-class_weight_;\">\n",
       "            class_weight_: ndarray of shape (n_classes,)<br><br>Multipliers of parameter C for each class.<br>Computed based on the ``class_weight`` parameter.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[float64](10,)</td>\n",
       "           <td>[1.,1.,1.,...,1.,1.,1.]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-classes_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=classes_,-ndarray%20of%20shape%20%28n_classes%2C%29\">\n",
       "            classes_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-classes_;\">\n",
       "            classes_: ndarray of shape (n_classes,)<br><br>The classes labels.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[int32](10,)</td>\n",
       "           <td>[0,1,2,...,7,8,9]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-dual_coef_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=dual_coef_,-ndarray%20or%20sparse%20array/matrix%20of%20shape%20%28n_classes%20-1%2C%20n_SV%29\">\n",
       "            dual_coef_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-dual_coef_;\">\n",
       "            dual_coef_: ndarray or sparse array/matrix of shape (n_classes -1, n_SV)<br><br>Dual coefficients of the support vector in the decision<br>function (see :ref:`sgd_mathematical_formulation`), multiplied by<br>their targets.<br>For multiclass, coefficient for all 1-vs-1 classifiers.<br>The layout of the coefficients in the multiclass case is somewhat<br>non-trivial. See the :ref:`multi-class section of the User Guide<br>&lt;svm_multi_class&gt;` for details.<br>If `X` is sparse, these will also be sparse.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[float64](9, 714)</td>\n",
       "           <td>[[ 0.31, 0.15, 0.42,...,-0.  ,-0.92,-0.  ],\n",
       " [ 0.06, 0.21, 0.77,...,-0.  ,-0.  ,-0.65],\n",
       " [ 0.26, 0.14, 0.94,...,-0.  ,-0.26,-0.71],\n",
       " ...,\n",
       " [ 0.33, 0.08, 0.31,...,-0.  ,-0.27,-0.48],\n",
       " [ 0.23, 0.  , 0.51,...,-0.  ,-0.12,-0.25],\n",
       " [ 0.66, 0.  , 1.13,...,-0.  ,-1.04,-0.51]]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-fit_status_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=fit_status_,-int\">\n",
       "            fit_status_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-fit_status_;\">\n",
       "            fit_status_: int<br><br>0 if correctly fitted, 1 otherwise (will raise warning)</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">int</td>\n",
       "           <td>0</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-intercept_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=intercept_,-ndarray%20of%20shape%20%28n_classes%20%2A%20%28n_classes%20-%201%29%20/%202%2C%29\">\n",
       "            intercept_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-intercept_;\">\n",
       "            intercept_: ndarray of shape (n_classes * (n_classes - 1) / 2,)<br><br>Constants in decision function.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[float64](45,)</td>\n",
       "           <td>[-0.56,-0.7 ,-0.55,..., 0.27, 0.23,-0.18]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-n_features_in_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=n_features_in_,-int\">\n",
       "            n_features_in_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-n_features_in_;\">\n",
       "            n_features_in_: int<br><br>Number of features seen during :term:`fit`.<br><br>.. versionadded:: 0.24</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">int</td>\n",
       "           <td>64</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-n_iter_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=n_iter_,-ndarray%20of%20shape%20%28n_classes%20%2A%20%28n_classes%20-%201%29%20//%202%2C%29\">\n",
       "            n_iter_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-n_iter_;\">\n",
       "            n_iter_: ndarray of shape (n_classes * (n_classes - 1) // 2,)<br><br>Number of iterations run by the optimization routine to fit the model.<br>The shape of this attribute depends on the number of models optimized<br>which in turn depends on the number of classes.<br><br>.. versionadded:: 1.1</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[int32](45,)</td>\n",
       "           <td>[125,122,106,...,189,224,254]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-n_support_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=n_support_,-ndarray%20of%20shape%20%28n_classes%2C%29%2C%20dtype%3Dint32\">\n",
       "            n_support_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-n_support_;\">\n",
       "            n_support_: ndarray of shape (n_classes,), dtype=int32<br><br>Number of support vectors for each class.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[int32](10,)</td>\n",
       "           <td>[35,80,73,...,75,88,86]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-probA_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=probA_,-ndarray%20of%20shape%20%28n_classes%20%2A%20%28n_classes%20-%201%29%20/%202%29\">\n",
       "            probA_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-probA_;\">\n",
       "            probA_: ndarray of shape (n_classes * (n_classes - 1) / 2)<br><br>If `probability=True`, it corresponds to the parameters learned in<br>Platt scaling to produce probability estimates from decision values.<br>If `probability=False`, it&#x27;s an empty array. Platt scaling uses the<br>logistic function</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[float64](0,)</td>\n",
       "           <td>[]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-probB_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=probB_,-ndarray%20of%20shape%20%28n_classes%20%2A%20%28n_classes%20-%201%29%20/%202%29\">\n",
       "            probB_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-probB_;\">\n",
       "            probB_: ndarray of shape (n_classes * (n_classes - 1) / 2)<br><br>If `probability=True`, it corresponds to the parameters learned in<br>Platt scaling. Platt scaling uses the logistic function<br>``1 / (1 + exp(decision_value * probA_ + probB_))``<br>where ``probA_`` and ``probB_`` are learned from the dataset [2]_. For<br>more information on the multiclass case and training procedure see<br>section 8 of [1]_.<br><br>.. deprecated:: 1.9<br>    The attributes `probA_` and `probB_` are deprecated in version 1.9 and will<br>    be removed in 1.11.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[float64](0,)</td>\n",
       "           <td>[]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-shape_fit_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=shape_fit_,-tuple%20of%20int%20of%20shape%20%28n_dimensions_of_X%2C%29\">\n",
       "            shape_fit_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-shape_fit_;\">\n",
       "            shape_fit_: tuple of int of shape (n_dimensions_of_X,)<br><br>Array dimensions of training vector ``X``.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">tuple</td>\n",
       "           <td>(1437, 64)</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-support_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=support_,-ndarray%20of%20shape%20%28n_SV%29\">\n",
       "            support_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-support_;\">\n",
       "            support_: ndarray of shape (n_SV)<br><br>Indices of support vectors.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[int32](714,)</td>\n",
       "           <td>[   1,  27,  46,...,1428,1434,1436]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "\n",
       "       <tr class=\"default\">\n",
       "           <td class=\"param\">\n",
       "        <a class=\"param-doc-link\"\n",
       "            style=\"anchor-name: --doc-link-support_vectors_;\"\n",
       "            rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.9/modules/generated/sklearn.svm.SVC.html#:~:text=support_vectors_,-ndarray%20or%20sparse%20array/matrix%20of%20shape%20%28n_SV%2C%20n_features%29\">\n",
       "            support_vectors_\n",
       "            <span class=\"param-doc-description\"\n",
       "            style=\"position-anchor: --doc-link-support_vectors_;\">\n",
       "            support_vectors_: ndarray or sparse array/matrix of shape (n_SV, n_features)<br><br>Support vectors. An empty array if kernel is precomputed.<br>If `X` is sparse, these will also be sparse.</span>\n",
       "        </a>\n",
       "    </td>\n",
       "           <td class=\"fitted-att-type\">ndarray[float64](714, 64)</td>\n",
       "           <td>[[ 0.  ,-0.33,-0.67,...,-0.99,-0.5 ,-0.19],\n",
       " [ 0.  ,-0.33, 1.03,..., 0.54,-0.5 ,-0.19],\n",
       " [ 0.  ,-0.33, 0.81,..., 1.38,-0.02,-0.19],\n",
       " ...,\n",
       " [ 0.  ,-0.33, 0.39,..., 0.2 ,-0.5 ,-0.19],\n",
       " [ 0.  ,-0.33,-0.88,...,-0.65,-0.5 ,-0.19],\n",
       " [ 0.  ,-0.33,-0.46,..., 1.55, 3.41, 1.55]]</td>\n",
       "\n",
       "\n",
       "       </tr>\n",
       "    \n",
       "                    </tbody>\n",
       "                </table>\n",
       "            </details>\n",
       "        </div>\n",
       "    </div></div></div></div></div></div></div><script>/*  Authors: The scikit-learn developers\n",
       " SPDX-License-Identifier: BSD-3-Clause\n",
       "*/\n",
       "\n",
       "function copyToClipboard(text, element) {\n",
       "    // Get the parameter prefix from the closest toggleable content\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
       "\n",
       "    const originalStyle = element.style;\n",
       "    const computedStyle = window.getComputedStyle(element);\n",
       "    const originalWidth = computedStyle.width;\n",
       "    const originalHTML = element.innerHTML.replace('Copied!', '');\n",
       "\n",
       "    navigator.clipboard.writeText(fullParamName)\n",
       "        .then(() => {\n",
       "            element.style.width = originalWidth;\n",
       "            element.style.color = 'green';\n",
       "            element.innerHTML = \"Copied!\";\n",
       "\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        })\n",
       "        .catch(err => {\n",
       "            console.error('Failed to copy:', err);\n",
       "            element.style.color = 'red';\n",
       "            element.innerHTML = \"Failed!\";\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        });\n",
       "    return false;\n",
       "}\n",
       "\n",
       "document.querySelectorAll('.copy-paste-icon').forEach(function(element) {\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "\n",
       "    const parent = element.parentElement;\n",
       "    if (!parent || !parent.nextElementSibling) {\n",
       "        console.warn('Expected copy-paste icon is missing from the DOM structure');\n",
       "        return;\n",
       "    }\n",
       "\n",
       "    const paramName = element.parentElement.nextElementSibling\n",
       "        .textContent.trim().split(' ')[0];\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
       "\n",
       "    element.setAttribute('title', fullParamName);\n",
       "});\n",
       "\n",
       "/**\n",
       " * Copy the list of feature names formatted as a Python list.\n",
       " *\n",
       " * @param {HTMLElement} element - The copy button inside a `.features` block; its siblings\n",
       " *   contain a `details` element and a table containing feature named.\n",
       " * @returns {boolean} Always returns `false` so callers can prevent the default click behavior.\n",
       " */\n",
       "function copyFeatureNamesToClipboard(element) {\n",
       "    var detailsElem = element.closest('.features').querySelector('details');\n",
       "    var wasOpen = detailsElem.open;\n",
       "    detailsElem.open = true;\n",
       "    var content = element.closest('.features').querySelector('tbody')\n",
       "                  .innerText.trim();\n",
       "    if (!wasOpen) detailsElem.open = false;\n",
       "    const rows = content.split('\\n').map(row => `    \"${row}\"`);\n",
       "    const formattedText = `[\\n${rows.join(',\\n')},\\n]`;\n",
       "    const originalHTML = element.innerHTML.replace('âœ”', '');\n",
       "    const originalStyle = element.style;\n",
       "    const copyMark = document.createElement('span');\n",
       "    copyMark.innerHTML = 'âœ”';\n",
       "    copyMark.style.color = 'blue';\n",
       "    copyMark.style.fontSize = '1em';\n",
       "\n",
       "    navigator.clipboard.writeText(formattedText)\n",
       "        .then(() => {\n",
       "            element.style.display = 'none';\n",
       "            element.parentElement.appendChild(copyMark);\n",
       "\n",
       "            setTimeout(() => {\n",
       "                copyMark.remove();\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 1000);\n",
       "        })\n",
       "        .catch(err => {\n",
       "            console.error('Failed to copy:', err);\n",
       "            element.style.color = 'orange';\n",
       "            element.innerHTML = \"Failed!\";\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 1000);\n",
       "        });\n",
       "    return false;\n",
       "}\n",
       "/**\n",
       " * Adapted from Skrub\n",
       " * https://github.com/skrub-data/skrub/blob/403466d1d5d4dc76a7ef569b3f8228db59a31dc3/skrub/_reporting/_data/templates/report.js#L789\n",
       " * @returns \"light\" or \"dark\"\n",
       " */\n",
       "function detectTheme(element) {\n",
       "    const body = document.querySelector('body');\n",
       "\n",
       "    // Check VSCode theme\n",
       "    const themeKindAttr = body.getAttribute('data-vscode-theme-kind');\n",
       "    const themeNameAttr = body.getAttribute('data-vscode-theme-name');\n",
       "\n",
       "    if (themeKindAttr && themeNameAttr) {\n",
       "        const themeKind = themeKindAttr.toLowerCase();\n",
       "        const themeName = themeNameAttr.toLowerCase();\n",
       "\n",
       "        if (themeKind.includes(\"dark\") || themeName.includes(\"dark\")) {\n",
       "            return \"dark\";\n",
       "        }\n",
       "        if (themeKind.includes(\"light\") || themeName.includes(\"light\")) {\n",
       "            return \"light\";\n",
       "        }\n",
       "    }\n",
       "\n",
       "    // Check Jupyter theme\n",
       "    if (body.getAttribute('data-jp-theme-light') === 'false') {\n",
       "        return 'dark';\n",
       "    } else if (body.getAttribute('data-jp-theme-light') === 'true') {\n",
       "        return 'light';\n",
       "    }\n",
       "\n",
       "    // Guess based on a parent element's color\n",
       "    const color = window.getComputedStyle(element.parentNode, null).getPropertyValue('color');\n",
       "    const match = color.match(/^rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)\\s*$/i);\n",
       "    if (match) {\n",
       "        const [r, g, b] = [\n",
       "            parseFloat(match[1]),\n",
       "            parseFloat(match[2]),\n",
       "            parseFloat(match[3])\n",
       "        ];\n",
       "\n",
       "        // https://en.wikipedia.org/wiki/HSL_and_HSV#Lightness\n",
       "        const luma = 0.299 * r + 0.587 * g + 0.114 * b;\n",
       "\n",
       "        if (luma > 180) {\n",
       "            // If the text is very bright we have a dark theme\n",
       "            return 'dark';\n",
       "        }\n",
       "        if (luma < 75) {\n",
       "            // If the text is very dark we have a light theme\n",
       "            return 'light';\n",
       "        }\n",
       "        // Otherwise fall back to the next heuristic.\n",
       "    }\n",
       "\n",
       "    // Fallback to system preference\n",
       "    return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n",
       "}\n",
       "\n",
       "\n",
       "function forceTheme(elementId) {\n",
       "    const estimatorElement = document.querySelector(`#${elementId}`);\n",
       "    if (estimatorElement === null) {\n",
       "        console.error(`Element with id ${elementId} not found.`);\n",
       "    } else {\n",
       "        const theme = detectTheme(estimatorElement);\n",
       "        estimatorElement.classList.add(theme);\n",
       "    }\n",
       "}\n",
       "\n",
       "forceTheme('sk-container-id-1');</script></body>"
      ],
      "text/plain": [
       "Pipeline(steps=[('standardscaler', StandardScaler()), ('svc', SVC(C=10))])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Scale the features and train the SVM classifier\n",
    "svm_model = make_pipeline(\n",
    "    StandardScaler(),\n",
    "    SVC(kernel=\"rbf\", C=10, gamma=\"scale\")\n",
    ")\n",
    "svm_model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "de46c8a1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy: 0.9806\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      1.00      1.00        36\n",
      "           1       0.97      0.97      0.97        36\n",
      "           2       1.00      1.00      1.00        35\n",
      "           3       1.00      1.00      1.00        37\n",
      "           4       0.95      0.97      0.96        36\n",
      "           5       0.97      1.00      0.99        37\n",
      "           6       0.97      1.00      0.99        36\n",
      "           7       0.95      0.97      0.96        36\n",
      "           8       1.00      0.94      0.97        35\n",
      "           9       1.00      0.94      0.97        36\n",
      "\n",
      "    accuracy                           0.98       360\n",
      "   macro avg       0.98      0.98      0.98       360\n",
      "weighted avg       0.98      0.98      0.98       360\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Predict digit classes and evaluate model accuracy\n",
    "y_pred = svm_model.predict(X_test)\n",
    "print(\"Accuracy:\", round(accuracy_score(y_test, y_pred), 4))\n",
    "print(classification_report(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "5eb98aa3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Display the confusion matrix\n",
    "ConfusionMatrixDisplay.from_predictions(y_test, y_pred, cmap=\"Blues\")\n",
    "plt.title(\"SVM Confusion Matrix\")\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "0f29583e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUgAAAFzCAYAAABcqZBdAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAET5JREFUeJzt3QmMXWX5wOFvmsq+1IIsCgEBEdlaA4RNoWytBKqyakDKQEEWUUpAA3EBQgATCKjECKjYghoEhAmQICI0iAIGhQYQREBKAQVRCxWEsh3zfvnf+c/Stx1L27lz+zxJ0865y5zetr+ec75zztfVNE1TABhk1OBFAAgkwELYggRICCRAQiABEgIJkBBIgIRAAiQEEiAhkAAJgWREu/LKK8thhx023KtBhxJIqn/84x/lkEMOKYceemh59dVXF/tT+eEPf1iOOOKIZfapPvjgg+X6669fYu932223lYMPPrgceeSRS+w9GblGD/cK0D5bYjfccEN5++23y7777luOOuqoxXqfBx54oL7PSPTPf/6zTJkypf5nseqqqw736tAGbEFS/eAHPyiTJ08uu+++e/n+97+/XH4qxx13XNlwww3Lxz72seFeFdqELUjKb3/72/Loo4+Wb3/722Xu3LnlM5/5TPnjH/9Yttpqq0GfzltvvVV3ae+8887y73//u3zkIx8pRx99dFl33XXLN7/5zfKLX/yivP7663U3teXyyy8vY8eOLeeee2556aWXygUXXNDvPW+66aYyY8aM8qMf/aisvvrq/ZaFrq6ussYaa5SPfvSjdfd9zTXXXOif2l//+tfypS99qUycOLF8/vOfH9Kf8FVXXVVuvPHG8oc//KGccsop/lZQCSR1i/FDH/pQ2XvvvWsA119//bpFefHFFw/aBZ00aVL5y1/+Uk488cSyww47lMcff7x8/OMfr8Fs/fzcc8+Vz372s72vW3nllevPd911V3n++ecHfeKPPfZY+fnPf14uvfTS3kB++MMf7n2Pd955pzzzzDPlu9/9bl2n2I2PYGbmzZtX32/ttdce0p9uvPcXv/jFcsYZZ5RtttnG3wj+X9wwl+XXyy+/3KyyyirNRRdd1Lvs61//erPWWms1r7/+er/nHnLIIfW5Tz75ZL/l8+bNa1599dX66y984QvNqquuusDvNWnSpGbcuHGDll9wwQVx0+bmxRdfXOi6zp07t1l99dWbc845p3fZqaee2qy44oqD1ufaa69t7r///mZR3nnnnWavvfZqttxyy2b+/Pl1WXy95pprLvK1dD5bkMu5n/zkJ/GfZOnu7u53LO68886rgy2trbiXX3657lpPnTq1bLLJJv3eo7XVt6T9/ve/Lz09PWX27Nll/vz5dT1HjRpVR64XJtan7y7+wnznO98pM2fOrIcZVlhhhSW05nQKgVzOxe51jNgee+yx/Zavttpq9bFWIGO3Oka445jjsnDhhReWr3zlK+Vzn/tc2W233cqYMWNqHO+77766C70kPPHEE3W3Onavd9pppyXynnQWgVyOxYBEHM+LEEaA+tpjjz1qOJ588smy6aablhVXXLEufzfnSMZ7vPHGG4OWx8BNX6+99lr5xje+UQd/4lhoX8cff3xZUmbNmlW/VxwD7bvF+dBDD5X//Oc/ddn2229fTj/99CX2PRlZBHI5FvHZbLPNyjHHHLPAx2M3O078jp8333zz8t73vrcOtCzM6NGj66DKgsQpNDGIE4/H1mDfXem+/vWvf9VwDRwwiV3rGChaUnbeeedy7bXXDlr+5z//ubzyyit16zkGrFiODfdBUIZHDKqsscYazUknnZQ+5+ijj27WW2+95s033+w3mPK9732v3/NuvPHG5oUXXqi/vvDCC+tzWl/3dfPNN9fHrrrqqt5l1113XbPFFlv0G6SJgZN11lmn2XvvvXu/90svvdTsu+++zfrrr18HexY2SPPcc881Bx10UHPZZZct1mdjkIYWJ4ovp372s5/VY3mf+MQn0ufEFTVxWs7NN99cvz7ttNPquYynnnpqPS0oHo8t0NgSbZ3KE8cM45zIHXfcsRxwwAF1NzW2CMN+++1Xr5uOAaEJEybU04Ti0r7Yle4rznuMcyJjyzJO94lTi8aPH18Hj9ZZZ51F/t5ap/ncf//97/JTYnnXFZUc7pVg2YvBjqeffrpGqxW3geJ44y233FIjGIFqid3PeH2cEB6DNhtvvHG/18Xu8e9+97saxtidHvg9Hn744fLUU0/V3fYIYOzSxu7zJz/5yX4jyXFsMiIXg0MR3Dj38Ve/+lVZaaWVeq92ieOFMdgSMW6JE9hvvfXWeuw0Ti7/X8VhhDhhPtaH5ZtAAiTsYgMkBBIgIZAACYEESAgkQEIgWaKXLsZ9HPv6zW9+U+644462X09YEKf5dJDrrruu38nWccOJuOntBhtssEy+f1yyGHffiSkLWuJE9Ph64OWEi9K6JDGuCV8W6/lutM7jjPtPxgnwdA7XYneQmHTrAx/4QO+daeJE8Nha2n///cuPf/zjhd5kdmmJm+guzt13zjzzzHoi+r333lvaWZw0H1cUxd2Odt1117rFTOcQyA4Tcey7JfnTn/60HH744eXkk0+ul+8ta1/96ldLJ4vpGeIqobXWWmu4V4WlQCA7XFz7/LWvfa3OtxLi9mVxi7O4/C8u64tLAv/2t7+VAw88sO6Wh9j1jOfErcm23nrrstFGGw1637hCNZ4Tr43d+IGXG7bEFlW8z5577jnosbgUMd4jLiXcdttty3rrrVeXx+WNL774YnnzzTd7Yx/rOvDSvyW5njFNxD333FMvTYxLFIcirlGP/3TiZruf+tSnhvQaRpje21Yw4sUfZ9zFZqBtt9229443l1xySX3enXfe2Wy//fbNHnvsUadXiLvmxBQLJ5xwQrPCCis0O+ywQ7PnnnvWKRaOOOKI5rXXXut9v7///e/NzjvvXB+L12+99dZ1moapU6fW9+or7ryz3Xbb9VsW73XiiSfW77PNNts0EydObDbYYIO6LMQ6rL322s3YsWPr7yd+TJkypff1S2M9Y4qG+Fzi8xmKuPPQuuuu25xyyin16/j1rrvuOqTXMnIIZIcHcvbs2TUku+yyS79A7rPPPs3TTz9dl8UcM2+//XZzzDHHNCuvvHJz11139b7+T3/6Uw3VySef3C96EYTHHnusd9nZZ5/dbLrppkMKZHd3d7PSSis1v/zlL3uXxfe/4oorer/efffdmx133HGBv8+lsZ733HNP/exuueWWZigOPPDA5oMf/GDvXDwC2ZkEsoNE+Hbaaae6NRQ/YiKu+EccE13dfffd/QJ56aWX9nvtnDlzmlGjRjVf/vKXB71vbHVF0GLrLEIUrz///PP7PSe2QDfccMNFBvKpp55qurq66n0cFyYL5NJaz//FjBkz6nvfdtttvcsEsjM5BtlhYgrTq6++uh5PjLlmTjjhhDpI8/73v7/f8+JejH3FscjWnb7jFJj/+8+z9/ZhMaIcU7zGfNkhpiIYeCfxOH4Xx+MWJm6TFu8bo9uLY1mtZ2bOnDl1zu24h2VMk0tnE8gOH8XOvO997xt0D8cQp9XE/RUHOuigg+p9GFtzyqyyyiqDnrOgZQNFwELEe3Esq/XMTJ8+vZ7aM/BzjlkXYzqIWLbFFlvUQSNGPoFcTrVGrFtaI7dTpkwZdIfvvuIO463R8F122aXfYwsK1kBxJ/Lw6KOPLnQLbOD6Lev1zET8Pv3pT9cb8g4Md4y8x9Z73LxXIDvEcO/js/RHsftqHYN85pln+i2PQZIY5Y0ffUeCW1oDOm+88UYdcY4R27feeqv38Xvvvbce/1vUMcj4PltttVWzySabNPPmzev33Oeff7731/H7iLlqBlpa6/nss8/W47ZPPPFEszgcg+xMtiCp4phezOMSV4XE+YJTp06tsxDG+YExBUFMgzpz5szynve8p1xxxRVl8uTJZeLEiXXmvxdeeKFebx3zz8Q5jIv6Ptdcc02dZ2bcuHF1Pu6YOTCmYL399tvrFAoh3jvW55xzzqlbbTFlbJwHubTWM86BjCuRLrnkknLSSSf5W0ElkB0kjr/FVKYLE/PLxPMWdBwu5oiJ+WJiKtS77767PPLII/Xk6xiUiMi07LPPPvXk65gSNq6ZjulZY8AkrtqJMC3qUsMtt9yyvndc/hiDNrHLGwMnMSFY3+ulI4q//vWv63XOsb6tE8WXxnrG9erxucTnszgixK0T3ekcblYBkHC7M4CEQAIkBBIgIZAACYEESAgkQEIgAd7tieLZtbGMTHE9cTv61re+VdpVdjdyRp7WHaAWxRYkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgMTp7gHdvzJgxbfsxTp8+vbSj7u7u4V4F6GULEiAhkAAJgQRICCRAQiABEgIJkBBIgIRAAiQEEiAhkAAJgQRICCRAQiABEgIJkBBIgIRAAiQEEiAhkAAJgQRICCRAQiABEgIJkBBIgIRAAiQEEiAhkAAJgQRICCRAQiABEgIJkBBIgIRAAiQEEiAhkAAJgQRICCRAQiABEl1N0zRDemJX11CeRh89PT1t+3nMnj27tKNp06YN9yqMOOPHjy/tatasWaUdDTF7tiABMnaxARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgMbp0gAkTJpR2NH78+NKuuru7h3sVRpyzzjqrtKNp06aVdjVmzJgyktmCBEgIJEBCIAESAgmQEEiAhEACJAQSICGQAAmBBEgIJEBCIAESAgmQEEiAhEACJAQSICGQAAmBBEgIJEBCIAESAgmQEEiAhEACJAQSICGQAAmBBEgIJEBCIAESAgmQEEiAhEACJAQSICGQAAmBBEgIJEBCIAESAgmQEEiAxOjSAbq7u4d7FUacnp6e0o7GjBlT2tW4ceNKOzrqqKOGexU6li1IgIRAAiQEEiAhkAAJgQRICCRAQiABEgIJkBBIgIRAAiQEEiAhkAAJgQRICCRAQiABEgIJkBBIgIRAAiQEEiAhkAAJgQRICCRAQiABEgIJkBBIgIRAAiQEEiAhkAAJgQRICCRAQiABEgIJkBBIgIRAAiQEEiAhkAAJgQRICCRAYnTpAD09PaUdbbzxxqVdzZo1q7Sjdv7M2nXdpk+fPtyr0LFsQQIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQKKraZpmSE/s6hrK0+Bd6enpadtPcPbs2aUdTZs2bbhXYcQZYvZsQQJk7GIDJAQSICGQAAmBBEgIJEBCIAESAgmQEEiAhEACJAQSICGQAAmBBEgIJEBCIAESAgmQEEiAhEACJAQSICGQAAmBBEgIJEBCIAESAgmQEEiAhEACJAQSICGQAAmBBEgIJEBCIAESAgmQEEiAhEACJAQSICGQAAmBBEgIJEBidPYAnW3ChAmlHY0fP760q+7u7uFeBZYxW5AACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZAQSICEQAIkBBIgIZAACYEESAgkQEIgARICCZDoapqmyR4EWJ7ZggRICCRAQiABEgIJkBBIgIRAAiQEEiAhkAAJgQQoC/Zfgxbe1o9qUs0AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Display one random digit prediction\n",
    "index = np.random.randint(len(X_test))\n",
    "\n",
    "plt.figure(figsize=(4, 4))\n",
    "plt.imshow(X_test[index].reshape(8, 8), cmap=\"gray\")\n",
    "plt.title(f\"Actual: {y_test[index]}\\nPredicted: {y_pred[index]}\")\n",
    "plt.axis(\"off\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.11.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
