Technologische_Grundlagen/digit_recognition/digit_recognition_SVM.ipynb

212 lines
59 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "48214590-414c-4dd0-9d1f-9446c1d751a0",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "f0738b63-6ea5-4bb0-81e3-101ff9d67a63",
"metadata": {},
"outputs": [],
"source": [
"from sklearn import datasets, metrics, svm\n",
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "8a26a325-096c-45fd-b0ef-cb0166a4833d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 1000x300 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"### load dataset \n",
"\n",
"digits = datasets.load_digits()\n",
"\n",
"_, axes = plt.subplots(nrows=1, ncols=4, figsize=(10,3))\n",
"for ax, image, label in zip(axes, digits.images, digits.target):\n",
" ax.set_axis_off()\n",
" ax.imshow(image, cmap=plt.cm.gray_r, interpolation=\"nearest\")\n",
" ax.set_title(\"Training: %i\" % label)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "801d9ae4-94d0-4ed0-b920-ba9e81f0f843",
"metadata": {},
"outputs": [],
"source": [
"### flatten images \n",
"n_samples = len(digits.images)\n",
"data = digits.images.reshape((n_samples, -1))\n",
"clf = svm.SVC(gamma=0.001)\n",
"X_train, X_test, y_train, y_test = train_test_split(data, digits.target, test_size=0.5, shuffle=False)\n",
"\n",
"### learn the digits on the train subset\n",
"clf.fit(X_train, y_train)\n",
"predicted = clf.predict(X_test)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "adae34b1-517b-4c04-a52a-eb30fc5fa9e1",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxsAAADQCAYAAABvGXwjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAXQUlEQVR4nO3de2zV9f3H8VexpbVQWloolZq1o4KF6KjOIV7WlstwKl2LGLNshraKkQ3YymVzZC5WNFARFxaGc5fYjovbmF3aCAF3sa2bVCXGNhCJ4mxhMkFuRVGwLXx+f/Dr0UMLvfB597Td85HwB9/zPa/z/Zyed8959Xt6GuaccwIAAAAAzwaF+gAAAAAADEyUDQAAAAAmKBsAAAAATFA2AAAAAJigbAAAAAAwQdkAAAAAYIKyAQAAAMAEZQMAAACACcoGAAAAABPdKhtlZWUKCwsL/AsPD9eVV16pwsJCHThwwOoYg6SmpqqgoCDw/+rqaoWFham6urpbOTt27FBxcbGampraXZadna3s7OxLOk7f3nzzTeXl5Wn06NGKjo5Wenq6li9frk8//TTUh9apxsZGhYWFqaysrMcZ/Wn9zEno9KfHyfmYE+YkFH73u98pLCxMQ4cODfWhdImPOfmi/rB+ZiV0Xn/9dd12222KiYnR0KFDNWXKFL3yyiuhPqwu8TErvtYf3pMbLy0tVXp6uk6dOqWXX35ZK1euVE1NjXbt2qUhQ4b0JLLHrr/+etXW1mrChAndut6OHTv06KOPqqCgQHFxcUGXPf300x6P8NK99dZbuvnmm3X11VdrzZo1GjFihF5++WUtX75cb7zxhiorK0N9iKb66/qZk97VXx8nvvTX9TMnoXPgwAEtXbpUo0eP1okTJ0J9OL2uv62fWeldO3fuVGZmpiZNmqQNGzbIOadVq1Zp2rRpqqqq0k033RTqQzTlc/09KhvXXHONbrjhBknSlClTdObMGT322GOqqKjQd7/73Q6v8+mnnyo6OronN3dRw4YN0+TJk71mdnd4rD333HM6ffq0ysvLlZaWJkmaOnWqPvjgA/3mN7/R8ePHNXz48Eu+nZaWlsBPTfqS3lq/b8xJ72JOmJNL9b8wJ180b948ZWZmKj4+Xs8//7zX7L46J19kuX4LzErv+tnPfqa4uDht3749cB9Onz5dY8aM0dKlS72d4eirs+Jz/V5+Z6PtAbdv3z5JUkFBgYYOHapdu3ZpxowZiomJ0bRp0yRJzc3Nevzxx5Wenq7IyEiNHDlShYWFOnz4cFBmS0uLfvzjHyspKUnR0dG69dZb9frrr7e77QudynvttdeUk5OjhIQERUVFKS0tTUVFRZKk4uJi/ehHP5IkffnLXw6cmmzL6OhU3rFjx/T9739fycnJGjx4sMaMGaOf/vSn+uyzz4L2CwsL04IFC7RhwwaNHz9e0dHRmjhxorZs2dLt+7VNRESEJCk2NjZoe1xcnAYNGqTBgwd3O7PtftuwYYOWLFmi5ORkRUZG6t1335Uk/f3vf9e0adM0bNgwRUdH65ZbbtE//vGPoIx3331XhYWFGjt2rKKjo5WcnKycnBzt2rWrhyvtmMX6Q4E5+RxzwpxcCHPyOYs5abNx40bV1NR4+Wlyf5qTNj7XHyrMyucsZuWVV15RdnZ2UFmLiYlRZmamduzYoQ8++KDbmf1pVnyu30vZaLuTRo4cGdjW3Nysb33rW5o6daoqKyv16KOP6uzZs8rNzVVJSYm+853vaOvWrSopKdHf/vY3ZWdn69SpU4HrP/DAA1q9erXmzJmjyspKzZ49W3fddZeOHz/e6fG8+OKL+vrXv679+/fr5z//ubZt26aHH35Yhw4dkiTNnTtXCxculCT95S9/UW1trWpra3X99dd3mHf69GlNmTJF69ev1+LFi7V161bde++9WrVqle666652+2/dulW//OUvtXz5cpWXlys+Pl6zZs3Se++9F7RfWFhYl96fmJ+fr7i4OH3ve9/Te++9p48//lhbtmzRr3/9a82fP/+STp8uW7ZM+/fv1zPPPKMXXnhBiYmJ2rhxo2bMmKFhw4bp97//vTZv3qz4+HjddtttQQ/6//73v0pISFBJSYm2b9+udevWKTw8XDfeeKPefvvtTm+7L6y/NzEnwZgT5qQjzEkw33MiSR9++KGKiopUUlKiK6+8skvX6Yr+MCeS3fp7G7MSzPesNDc3KzIyst32tm2X8uK+P8yK1/W7bigtLXWS3KuvvupaWlrcxx9/7LZs2eJGjhzpYmJi3MGDB51zzuXn5ztJ7tlnnw26/h/+8AcnyZWXlwdt37lzp5Pknn76aeecc3v27HGS3KJFi4L227Rpk5Pk8vPzA9uqqqqcJFdVVRXYlpaW5tLS0typU6cuuJYnn3zSSXINDQ3tLsvKynJZWVmB/z/zzDNOktu8eXPQfk888YST5P76178Gtklyo0aNch999FFg28GDB92gQYPcypUrg65/2WWXualTp17wGL9oz549Lj093UkK/PvBD37gzp4926Xrn6/tfsvMzAza/sknn7j4+HiXk5MTtP3MmTNu4sSJbtKkSRfMbG1tdc3NzW7s2LFBX7uGhgYnyZWWlgbtH8r1W2JOmBPmpHPMSejmZPbs2e7mm28OPC7y8/PdkCFDunTdjvS3OfG9fmvMSmhmJSMjw40bN86dOXMmsK2lpcWNGTPGSXLPPfdcpxnn60+z4nP9PTqzMXnyZEVERCgmJkYzZ85UUlKStm3bplGjRgXtN3v27KD/b9myRXFxccrJyVFra2vgX0ZGhpKSkgKn0qqqqiSp3XsQ77nnnk7f0/bOO+/o3//+t+6//35FRUX1ZHntvPTSSxoyZIjuvvvuoO1tn8xw/imuKVOmKCYmJvD/UaNGKTExMXCqs01ra2u763aksbExcFry+eefV01NjVatWqWysjLNnTu3h6s65/yv0Y4dO3Ts2DHl5+cHfY3Onj2rb37zm9q5c6c++eSTwPGvWLFCEyZM0ODBgxUeHq7Bgwdr79692rNnT6e33RfWb4k5OYc5YU4uhjk5p7fmpLy8XC+88IJ++9vfKiwsrIer6Fh/mBPL9VtjVs7prVlZuHCh3nnnHS1YsEAHDhzQf/7zH82bNy+QN2hQz98c1B9mxef6e/TbKOvXr9f48eMVHh6uUaNG6Yorrmi3T3R0tIYNGxa07dChQ2pqarrge4ePHDkiSTp69KgkKSkpKfhgw8OVkJBw0WNre/+hz1OjR48eVVJSUrtvTImJiQoPDw8cb5uOjjEyMjLoVGV3/OQnP9FHH32kurq6wFshMjMzNWLECN13332aM2eOsrKyepR9/teu7XTn+cP9RceOHdOQIUO0ePFirVu3Tg899JCysrI0fPhwDRo0SHPnzu3xWjtiuX5LzMk5zAlzcjHMyTm9MScnT57U/PnztXDhQo0ePTrw8aPNzc2SpKamJkVERPT4LXd9fU6s12+NWTmnt55T7rvvPh0+fFiPP/64fvWrX0mSbrrpJi1dulRPPPGEkpOTe5Qr9f1Zkfyuv0dlY/z48YFPRLiQjn5iMGLECCUkJGj79u0dXqetkbY9YA4ePBi0mNbW1nYPrvO1vXfx/fffv+h+3ZGQkKDXXntNzrmgdX344YdqbW3ViBEjvN1WR+rq6jRhwoR23wC/9rWvSZJ2797d4xcR53+d2taydu3aC37SRNtPUTZu3Kg5c+ZoxYoVQZcfOXKk3UfaXQrL9VtiTs5hTpiTi2FOzumNOTly5IgOHTqkp556Sk899VS7y4cPH67c3FxVVFT0KL+vz4n1+q0xK+f01nOKJD300EMqKirS3r17FRMTo5SUFD344IMaMmSIvvrVr/Y4t6/PShtf6+/Vz9maOXOm/vjHP+rMmTO68cYbL7hf2y+ubNq0KWgxmzdvVmtr60VvY9y4cUpLS9Ozzz6rxYsXd/jLLdLnv+DSlRY4bdo0bd68WRUVFZo1a1Zg+/r16wOXWxo9erR2796tkydPBv3hodraWkl+f5Jwyy23KC4uTm+99ZYWLFhw0X3DwsLa3b9bt27VgQMHdNVVV3k7pt5cf1/AnPQMc8KcdIQ5+VxSUlLgrTJfVFJSopqaGm3bts3rC7i+Nie9vf6+glm5NJGRkbrmmmskSfv379ef/vQnPfDAA7r88su93UZfm5Uv8rH+Xi0b3/72t7Vp0ybdcccd+uEPf6hJkyYpIiJC77//vqqqqpSbm6tZs2Zp/Pjxuvfee7VmzRpFRERo+vTp2r17t1avXt3u9GBH1q1bp5ycHE2ePFmLFi3Sl770Je3fv18vvviiNm3aJEm69tprJUm/+MUvlJ+fr4iICF199dVB7/drM2fOHK1bt075+flqbGzUtddeq3/9619asWKF7rjjDk2fPr1H90d4eLiysrI6fe9cUVGR8vLy9I1vfEOLFi3SiBEj9Oqrr2rlypWaMGGCbr/99sC+ZWVlKiwsVGlpadBf++yqoUOHau3atcrPz9exY8d09913KzExUYcPH1Z9fb0OHz4cOJ02c+ZMlZWVKT09XV/5ylf0xhtv6Mknn+zyixqL9Q8EzEkw5oQ56QhzEqwrj5OoqKgOP4WmrKxMl112WbvLBtqcdHf9AwWzEqyr31N3796t8vJy3XDDDYqMjFR9fb1KSko0duxYPfbYY0H7DrRZ6e76O9XlXyV3n38iws6dOy+638U+2aGlpcWtXr3aTZw40UVFRbmhQ4e69PR09+CDD7q9e/cG9vvss8/ckiVLXGJioouKinKTJ092tbW1LiUlpdNPRHDOudraWnf77be72NhYFxkZ6dLS0tp9wsKyZcvc6NGj3aBBg4Iyzv9EBOecO3r0qJs3b5674oorXHh4uEtJSXHLli1zp0+fDtpPkps/f367dZ9/3G37nn87F/LSSy+5GTNmuKSkJHf55Ze7cePGuSVLlrgjR44E7bd27VonyW3fvv2ieW3325///OcOL6+pqXF33nmni4+PdxERES45OdndeeedQfsfP37c3X///S4xMdFFR0e7W2+91f3zn/9sd/9d6BMRLNbfFzAnzAlz0jnmJHRzcr4L3ccDdU7O118+jYpZ6d1Zefvtt11mZqaLj493gwcPdldddZV7+OGH3cmTJ9vtOxBnpTvr70zY/98wBoh77rlHDQ0N2rlzZ6gPBeizmBOgc8wJ0DXMysX1rb+NjkvinFN1dbU2btwY6kMB+izmBOgccwJ0DbPSOc5sAAAAADDR879IAgAAAAAXQdkAAAAAYIKyAQAAAMAEZQMAAACACcoGAAAAABMD7qNvm5qavGf25K9Bdqaurs57pmSz/urqau+ZGRkZ3jPRdWVlZd4zi4uLvWfu27fPe6YkVVRUeM/Mzc31nomBx+L7aV5envdMSVqzZo33TIvnU4SexWsPi+cUi+c+SSZ/fd5i/aF67cWZDQAAAAAmKBsAAAAATFA2AAAAAJigbAAAAAAwQdkAAAAAYIKyAQAAAMAEZQMAAACACcoGAAAAABOUDQAAAAAmKBsAAAAATFA2AAAAAJigbAAAAAAwQdkAAAAAYIKyAQAAAMAEZQMAAACACcoGAAAAABOUDQAAAAAmKBsAAAAATFA2AAAAAJgID+WNNzU1ec/Mzs72nllfX+89Mysry3umJNXU1HjPrKio8J6ZkZHhPXOgamxs9J5ZWFjoPbM/aWhoCPUh4H9UUVGR98zU1FTvmZKUl5dnkouBx+KxYvE6weL5VJIKCgq8Z9bV1XnPDNVrL85sAAAAADBB2QAAAABggrIBAAAAwARlAwAAAIAJygYAAAAAE5QNAAAAACYoGwAAAABMUDYAAAAAmKBsAAAAADBB2QAAAABggrIBAAAAwARlAwAAAIAJygYAAAAAE5QNAAAAACYoGwAAAABMUDYAAAAAmKBsAAAAADBB2QAAAABggrIBAAAAwARlAwAAAICJ8FDe+Jo1a7xn1tfXe8+sqqryntnY2Og9U5Jqamq8Z1533XXeMxFasbGx3jNPnDjhPdPiOCUpLy/PJBcDS395jmpoaPCeKUlxcXEmuRh4mpqavGempqZ6z6yoqPCeKUmVlZXeMzMyMrxnhgpnNgAAAACYoGwAAAAAMEHZAAAAAGCCsgEAAADABGUDAAAAgAnKBgAAAAATlA0AAAAAJigbAAAAAExQNgAAAACYoGwAAAAAMEHZAAAAAGCCsgEAAADABGUDAAAAgAnKBgAAAAATlA0AAAAAJigbAAAAAExQNgAAAACYoGwAAAAAMEHZAAAAAGCCsgEAAADARHgob/y6667znhkbG+s9c82aNd4zGxsbvWdKUkpKivfM3Nxc75noutTUVO+ZFo/pwsJC75lWKioqvGcWFRV5z0TXVVdXe88sLi72nvnII494z7T4HiFJlZWV3jN5PhmYLJ5TysrKvGdavfayeO2ZnZ3tPTNUOLMBAAAAwARlAwAAAIAJygYAAAAAE5QNAAAAACYoGwAAAABMUDYAAAAAmKBsAAAAADBB2QAAAABggrIBAAAAwARlAwAAAIAJygYAAAAAE5QNAAAAACYoGwAAAABMUDYAAAAAmKBsAAAAADBB2QAAAABggrIBAAAAwARlAwAAAIAJygYAAAAAE5QNAAAAACbCnHMu1AfhU2Njo/fMgoIC75k1NTXeMyVp4sSJ3jPr6uq8ZyK0UlNTvWdmZ2f3i0xJKiws9J755ptves/MyMjwnjlQ5eXlec+0+N5nkVlRUeE9U7KZE4tjzc3N9Z4JdIfFc5XFa0+LzK7gzAYAAAAAE5QNAAAAACYoGwAAAABMUDYAAAAAmKBsAAAAADBB2QAAAABggrIBAAAAwARlAwAAAIAJygYAAAAAE5QNAAAAACYoGwAAAABMUDYAAAAAmKBsAAAAADBB2QAAAABggrIBAAAAwARlAwAAAIAJygYAAAAAE5QNAAAAACYoGwAAAABMUDYAAAAAmKBsAAAAADARHuoD8C01NdV7ZlNTk/dMK/X19d4zy8rKvGcWFBR4zxyoLB5/+/bt855ZVFTkPTMjI8N7piQVFhZ6z6yurvaeabX+ULN4TFdWVnrPTElJ8Z6Zl5fnPbOmpsZ7phWL+xTdU1xc7D0zLi7Oe6bFc4qVuro675nDhw/3nhkqnNkAAAAAYIKyAQAAAMAEZQMAAACACcoGAAAAABOUDQAAAAAmKBsAAAAATFA2AAAAAJigbAAAAAAwQdkAAAAAYIKyAQAAAMAEZQMAAACACcoGAAAAABOUDQAAAAAmKBsAAAAATFA2AAAAAJigbAAAAAAwQdkAAAAAYIKyAQAAAMAEZQMAAACACcoGAAAAABPhoT6A/qC+vj7UhxBSTU1NoT6E/2lxcXHeM/Pz871nFhcXe8+0Ehsb6z0zOzvbe+ZA1V8e042Njd4zU1NTvWfW1NR4z5Rs7tOMjAzvmeieoqIi75l5eXneM+vq6rxnFhQUeM+UpBMnTnjPTElJ8Z4ZKpzZAAAAAGCCsgEAAADABGUDAAAAgAnKBgAAAAATlA0AAAAAJigbAAAAAExQNgAAAACYoGwAAAAAMEHZAAAAAGCCsgEAAADABGUDAAAAgAnKBgAAAAATlA0AAAAAJigbAAAAAExQNgAAAACYoGwAAAAAMEHZAAAAAGCCsgEAAADABGUDAAAAgAnKBgAAAAATYc45F+qD6Ovy8vK8ZzY2NnrPlKS4uDjvmRUVFd4zLY4TXVdXV+c902JO9u3b5z1TkkpLS71nFhQUeM/EwFNWVuY9s7Cw0HumJDU0NHjPTE1N9Z6JgSkjI8N7Zn19vfdMSXrkkUe8ZxYXF3vPDBXObAAAAAAwQdkAAAAAYIKyAQAAAMAEZQMAAACACcoGAAAAABOUDQAAAAAmKBsAAAAATFA2AAAAAJigbAAAAAAwQdkAAAAAYIKyAQAAAMAEZQMAAACACcoGAAAAABOUDQAAAAAmKBsAAAAATFA2AAAAAJigbAAAAAAwQdkAAAAAYIKyAQAAAMAEZQMAAACAiTDnnAv1QQAAAAAYeDizAQAAAMAEZQMAAACACcoGAAAAABOUDQAAAAAmKBsAAAAATFA2AAAAAJigbAAAAAAwQdkAAAAAYIKyAQAAAMDE/wEyJdLFo5jizgAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 1000x300 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"_, axes = plt.subplots(nrows=1, ncols=4, figsize=(10,3))\n",
"for ax, image, prediction, t in zip(axes, X_test, predicted, y_test):\n",
" ax.set_axis_off()\n",
" image = image.reshape(8,8)\n",
" ax.imshow(image, cmap=plt.cm.gray_r, interpolation=\"nearest\")\n",
" ax.set_title(f\"Prediction: {prediction}, real: {t}\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "8f022c19-cdb7-4730-b297-fc58dd49e002",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Confusion Matrix:\n",
"[[87 0 0 0 1 0 0 0 0 0]\n",
" [ 0 88 1 0 0 0 0 0 1 1]\n",
" [ 0 0 85 1 0 0 0 0 0 0]\n",
" [ 0 0 0 79 0 3 0 4 5 0]\n",
" [ 0 0 0 0 88 0 0 0 0 4]\n",
" [ 0 0 0 0 0 88 1 0 0 2]\n",
" [ 0 1 0 0 0 0 90 0 0 0]\n",
" [ 0 0 0 0 0 1 0 88 0 0]\n",
" [ 0 0 0 0 0 0 0 0 88 0]\n",
" [ 0 0 0 1 0 1 0 0 0 90]]\n"
]
},
{
"data": {
"image/png": "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IT09HWPGjIGXlxccHBywZ88eNGrUCPb29nB1dUVsbCzeeecduLi4ICoqCgqFAqmpqSgoKMCUKVMwbNgwzJo1C2PGjMGHH36Iq1ev4t///rdeP2/Tpk2hVCqxcuVK9O/fH4cOHUJCQkKV5WxtbfH2229jxYoVsLW1xVtvvYVu3bppCvtHH32Efv36QSaTYdCgQbCyssLp06dx5swZLFiwQP8Pgoj0wlHrRH+RSCT46aef0KNHD4wePRrBwcEYMmQIrl69qhllPnjwYHz00UeYPn06OnfujMzMTEycOPGJ2509ezbee+89fPTRR2jZsiUGDx6M3NxcAPfPP69YsQKff/45fH19MWDAAADA2LFj8cUXX2D9+vVo27YtwsPDsX79es3lavXq1cP333+Pc+fOoWPHjpg1axYWL16s18/boUMHLF26FIsXL0abNm3w9ddfIz4+vspyjo6OmD59OoYNG4bQ0FA4ODhg69atmvdffPFF/PDDD0hKSkKXLl3QrVs3LF26FI0bN9YrDxFVj0SoiZNtREREJAq2yImIiMwYCzkREZEZYyEnIiIyYyzkREREZoyFnIiIyIyxkBMREZkxFnIiIiIzxkJORERkxljIiYiIzBgLORERkRljISciIjJj/w81+hfmMUzTKQAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"### confusion matrix\n",
"\n",
"disp = metrics.ConfusionMatrixDisplay.from_predictions(y_test, predicted)\n",
"disp.figure_.suptitle(\"Confusion Matrix\")\n",
"print(f\"Confusion Matrix:\\n{disp.confusion_matrix}\")\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "42fdd6a5-af00-4155-bc42-44e037d13c2d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Classification report for classifier SVC(gamma=0.001):\n",
" precision recall f1-score support\n",
"\n",
" 0 1.00 0.99 0.99 88\n",
" 1 0.99 0.97 0.98 91\n",
" 2 0.99 0.99 0.99 86\n",
" 3 0.98 0.87 0.92 91\n",
" 4 0.99 0.96 0.97 92\n",
" 5 0.95 0.97 0.96 91\n",
" 6 0.99 0.99 0.99 91\n",
" 7 0.96 0.99 0.97 89\n",
" 8 0.94 1.00 0.97 88\n",
" 9 0.93 0.98 0.95 92\n",
"\n",
" accuracy 0.97 899\n",
" macro avg 0.97 0.97 0.97 899\n",
"weighted avg 0.97 0.97 0.97 899\n",
"\n",
"\n"
]
}
],
"source": [
"print(\n",
" f\"Classification report for classifier {clf}:\\n\"\n",
" f\"{metrics.classification_report(y_test, predicted)}\\n\"\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "81db6464-90b6-4fed-92bd-bcbb935eac4e",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}