{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "aef3329c-6907-4393-bcb5-2741e7ec2b82",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from sklearn.datasets import load_iris\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay, accuracy_score\n",
    "import matplotlib.pyplot as plt\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "c23c6484-dfaa-4aa1-a0a9-195febe22e6b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the IRIS dataset\n",
    "iris = load_iris()\n",
    "X = iris.data\n",
    "y = iris.target\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "6d2f448b-a51c-470c-8548-35263158e5d5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Split the dataset into training and testing sets\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "3880f1d8-44c9-48f1-aaaf-bd6f16ff32a8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-2 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\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",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-2 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 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-container-id-2 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-container-id-2 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-container-id-2 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-container-id-2 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-container-id-2 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 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-container-id-2 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-container-id-2 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 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-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 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-container-id-2 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-2 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-container-id-2 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-container-id-2 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-container-id-2 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-container-id-2 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-2 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-container-id-2 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-container-id-2 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-container-id-2 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-2 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-container-id-2 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-2 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 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-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\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",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\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",
       "  color: var(--sklearn-color-background);\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",
       "  color: var(--sklearn-color-background);\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-container-id-2 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-background);\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-container-id-2 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\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-container-id-2 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-container-id-2 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>DecisionTreeClassifier(random_state=42)</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\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;DecisionTreeClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.tree.DecisionTreeClassifier.html\">?<span>Documentation for DecisionTreeClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier(random_state=42)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "DecisionTreeClassifier(random_state=42)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Train a decision tree classifier\n",
    "clf = DecisionTreeClassifier(random_state=42)\n",
    "clf.fit(X_train, y_train)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "8033d0fd-eddf-4d4b-9604-138fe50d6780",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Make predictions on the test set\n",
    "y_pred = clf.predict(X_test)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "139f625f-d2a2-4146-9de3-8d4f1e165118",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Generate the confusion matrix\n",
    "cm = confusion_matrix(y_test, y_pred)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "a9d038b0-ad0c-4eae-8af5-f189a02f0469",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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EhMT0bx5c9jb22Pu3Lmws7PD999/j8jISPz7778YPXq02vafffYZgoODsWzZMqSnpyMqKgphYWFISEiAsbFxiXEqlUr06NEDK1aswIcffgjgWQJjZGSEXr16aRzHk5ycjA8//FD1g/ro0aMYOnQo/vnnH0RHRwMANm/ejB49esDGxkbVXF0w+Rw7diyaNWuGRYsWwcjICPb29khNTVXbplq1ali3bh1at26NqKgozJw5E48fP0bPnj3h5uaGRYsWFfnexo8fj6CgIAwePFjVXZPf1bB27VpERESgXbt2+OGHH5CZmYkZM2agdevW2LNnjyrZyde9e3eEh4fjo48+QkZGRonntSiBgYFwcnLC77//riq7cOECmjdvDjc3N3z99ddwdHTEzp07MWzYMNy5cwcxMTEAgIcPH6JFixZITk5GVFQUmjZtikePHuH333/HzZs3UbduXY3HHDFiBL777jtMmTIF/v7+yMjIwLlz53D37t1iY9Xld0pbmj4r33//Pd577z107doVq1evhqmpKRYvXoz27dtj586dCA0NLdP51WTXrl0AgG7dupU79uTkZNSpUwfh4eGwtbXFzZs3sXDhQgQGBuLChQuq81ia69SpUyfk5uZixowZcHNzw507d3D48GE8ePBA47Hzu1vfeOMNeHl54auvvgIAODk54ebNm4W2L+u50nRdSAf03dRDZZOamioAiPDw8FJtn5CQIACIQYMGqZUfO3ZMABCfffaZqqxVq1YCgDh27JjatvXq1RPt27dXKwMgBg8erFYWExMjNH2k8rtbkpKShBBCbNy4UQAQ8fHxxcYOQMTExKheh4eHC7lcLq5du6a2XceOHYWFhYV48OCBEOK/ZuhOnTqpbbdhwwYBQBw5cqTY4+bHe+LECVVd586dE0IIERgYKCIjI4UQJXfx5ObmiuzsbDFp0iRhZ2cn8vLyVOuK2jf/eC1btixyXcHm9enTpwsAYvPmzaJPnz7C3Ny8VF0smrprcnNzhbOzs/D19RW5ubmq8ocPHwp7e3vRvHlzVVn+9Y6Oji7xWEUdr6CmTZsKc3Nz1ev27duLGjVqFOqiGzJkiFAoFOLevXtCCCEmTZokAIjdu3cXG0PBz1SDBg1Et27dit2n4Oe6or5TxdHUPVTUZyUjI0PY2tqKsLAwtfLc3FzRqFEjERQUpCor7fnV5KOPPhIA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cejQITx+/BheXl7YtWsXHBwccOTIEQQEBFREjERERFRKUp49VK5nD/n6+mL16tW6joWIiIgM1D///IOoqChs374dT548gbe3N5YvX67TBo1yJS25ubnYvHkzEhISIJPJ4OPjg65du8LEhM9fJCIi0icj2bNF2zrK4v79+wgODkabNm2wfft22Nvb4/Lly6hSpYp2gRRQ5izj3Llz6Nq1K1JTU1GnTh0AwF9//YXq1atj69at8PX11WmAREREVHr6eMrz9OnT4erqipUrV6rKPDw8tIpBkzKPaRkwYADq16+P69ev49SpUzh16hRSUlLQsGFDfPDBBzoPkIiIiPQjPT1dbcnMzNS43datW9GkSRP07NkT9vb28Pf3x9KlS3UeT5mTlj///BOxsbGoWrWqqqxq1aqYOnUq4uPjdRkbERERlYOunjvk6uoKGxsb1RIbG6vxeFeuXMHChQtRu3Zt7Ny5Ex999BGGDRuGb7/9Vqfvq8zdQ3Xq1MG///6L+vXrq5XfunULtWrV0llgREREVHa67B5KSUmBUqlUlcvlco3b5+XloUmTJpg2bRoAwN/fH+fPn8fChQvx3nvvaRXL80rV0vJ809C0adMwbNgwbNy4EdevX8f169exceNGDB8+HNOnT9dZYERERFR2+QNxtV0AQKlUqi1FJS1OTk6oV6+eWpmPj4/qocq6UqqWlipVqqhlbUIIvPXWW6oyIQQAICwsDLm5uToNkIiIiCq34OBgJCYmqpX99ddfcHd31+lxSpW07Nu3T6cHJSIiooqhj9lDn3zyCZo3b45p06bhrbfewvHjx7FkyRIsWbJEqzgKKlXS0qpVK50elIiIiCqGPm7jHxgYiM2bN2Ps2LGYNGkSPD09MXv2bERERGgZibpy3w3u8ePHuHbtGrKystTKGzZsqHVQREREZFi6dOmCLl26VOgxypy03L59G3379sX27ds1rueYFiIiIv0xkslgpGX3kLb7V5Qy36dl+PDhuH//Po4ePQpzc3Ps2LEDq1evRu3atbF169aKiJGIiIhKSdt7tBS8V0tlUuaWlr179+J///sfAgMDYWRkBHd3d7z22mtQKpWIjY1F586dKyJOIiIiesmVuaUlIyMD9vb2AABbW1vcvn0bwLMnP586dUq30REREVGZ5M8e0napjMp1R9zExER4eHjAz88PixcvhoeHBxYt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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Display the confusion matrix\n",
    "disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=iris.target_names)\n",
    "disp.plot(cmap=plt.cm.Blues)\n",
    "plt.title('Confusion Matrix for Decision Tree Classifier')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "baffcaf6-4f7c-4a14-990c-f46fcf169b34",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy: 1.0\n"
     ]
    }
   ],
   "source": [
    "accuracy = accuracy_score(y_test, y_pred)\n",
    "print(f\"Accuracy: {accuracy}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "8c2be2a6-cb63-42f2-ac7a-2483164dbb59",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Use random forest\n",
    "from sklearn.ensemble import RandomForestClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "72e5258d-8e3e-4512-806c-326ee7b8b54b",
   "metadata": {},
   "outputs": [],
   "source": [
    "rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "a13022bb-a9fa-4e94-81a7-51cc13148d22",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-3 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\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",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-3 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 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-container-id-3 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-container-id-3 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-container-id-3 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-container-id-3 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-container-id-3 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-3 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-container-id-3 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-container-id-3 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 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-container-id-3 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 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-container-id-3 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-3 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-container-id-3 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-container-id-3 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-container-id-3 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-container-id-3 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-3 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-container-id-3 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-container-id-3 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-container-id-3 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-3 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-container-id-3 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-3 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 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-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\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",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\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",
       "  color: var(--sklearn-color-background);\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",
       "  color: var(--sklearn-color-background);\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-container-id-3 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-background);\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-container-id-3 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\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-container-id-3 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-container-id-3 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-3\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(random_state=42)</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\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" checked><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;RandomForestClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier(random_state=42)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "RandomForestClassifier(random_state=42)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf_classifier.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "ff320392-f33e-4ff3-9fc8-29285a8704ec",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy: 1.0\n"
     ]
    }
   ],
   "source": [
    "y_pred = rf_classifier.predict(X_test)\n",
    "# 评估分类模型（例如使用accuracy_score）\n",
    "accuracy = accuracy_score(y_test, y_pred)\n",
    "print(f\"Accuracy: {accuracy}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "708b6ada-2ef9-4cc2-9d1f-292f95bf7b2a",
   "metadata": {},
   "source": [
    "SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "69fb2af2-0eff-4006-b81d-ac9e9009b999",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import svm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "501800d4-9e2d-4105-940c-1daa5f113b80",
   "metadata": {},
   "outputs": [],
   "source": [
    "svm_clf = svm.SVC()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "a6367060-36c2-492c-bd91-714a53f2f91f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-4 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\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",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-4 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 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-container-id-4 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-container-id-4 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-container-id-4 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-container-id-4 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-container-id-4 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 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-container-id-4 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-container-id-4 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 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-container-id-4 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 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-container-id-4 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-4 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-container-id-4 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-container-id-4 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-container-id-4 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-container-id-4 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-4 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-container-id-4 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-container-id-4 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-container-id-4 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-4 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-container-id-4 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-4 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 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-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\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",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\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",
       "  color: var(--sklearn-color-background);\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",
       "  color: var(--sklearn-color-background);\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-container-id-4 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-background);\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-container-id-4 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\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-container-id-4 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-container-id-4 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-4\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>SVC()</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\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" checked><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;SVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>SVC()</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "SVC()"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svm_clf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "a9610dab-b213-4344-a12e-2f52199c973f",
   "metadata": {},
   "outputs": [],
   "source": [
    "svm_y_pred = clf.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "6a52949c-dddf-4d52-8823-13cca4155a9e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy: 1.0\n"
     ]
    }
   ],
   "source": [
    "accuracy = accuracy_score(y_test, svm_y_pred)\n",
    "print(f\"Accuracy: {accuracy}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "595de1c6-f2a7-4508-a55d-bee3ad1d5d7b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "svm_cm = confusion_matrix(y_test, svm_y_pred)\n",
    "svm_disp = ConfusionMatrixDisplay(confusion_matrix=svm_cm, display_labels=iris.target_names)\n",
    "svm_disp.plot(cmap=plt.cm.Blues)\n",
    "plt.title('Confusion Matrix for SVM Classifier')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "024cf1a3-7134-4e39-8108-a1f85924e4e7",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:base] *",
   "language": "python",
   "name": "conda-base-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
