Technologische_Grundlagen/digit_recognition/digit_recognition_DT.ipynb

254 lines
56 KiB
Plaintext
Raw Normal View History

2024-09-27 07:00:19 +00:00
{
"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",
"### show training data\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": "8355cc2f-3128-43a3-8122-1517d11b911a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[5 6 1 6 5 7 1 5 3 7 4 1 2 5 4 9 8 2 6 6 0 5 4 9 7 4 8 7 5 6 5 3 8 9 9 6 1\n",
" 1 0 6 8 4 8 8 8 1 2 7 1 2 0 1 8 8 9 6 4 6 7 0 4 1 0 5 4 1 7 2 0 6 7 9 1 5\n",
" 5 4 0 6 6 2 5 4 1 1 0 9 5 6 5 0 5 1 5 1 3 0 2 5 8 0 1 9 1 1 7 0 6 4 9 8 7\n",
" 3 7 4 4 2 7 3 6 2 6 1 9 7 4 8 5 5 1 3 9 4 3 7 8 0 5 8 9 5 5 0 0 5 0 6 1 8\n",
" 8 4 0 4 5 0 1 7 6 9 7 9 5 7 5 6 9 5 0 6 9 6 7 6 2 0 3 3 8 4 9 7 1 2 9 5 5\n",
" 7 0 9 1 4 6 1 4 0 5 4 9 6 7 1 6 8 1 7 0 7 0 1 5 7 1 6 1 5 1 6 6 7 3 2 7 3\n",
" 6 4 2 5 1 2 4 6 4 8 1 2 2 5 6 2 4 8 5 6 3 1 6 8 2 8 3 9 7 1 5 7 3 4 8 4 5\n",
" 1 5 4 3 9 0 1 9 5 4 1 4 3 2 2 4 5 7 6 2 0 9 2 6 4 6 8 4 4 5 8 0 4 1 1 3 4\n",
" 8 3 3 5 6 3 3 6 7 0 8 3 4 2 8 5 1 0 8 4 7 1 6 3 6 2 7 0 5 8 2 0 0 0 1 3 0\n",
" 7 8 8 5 1 0 6 8 2 0 0 5 9 7 5 4 5 7 6 3 5 3 9 3 5 5 3]\n"
]
}
],
"source": [
"from sklearn.tree import DecisionTreeClassifier\n",
"# gini a criterion to minimize the probability of misclassification\n",
"clf_dt = DecisionTreeClassifier(criterion = 'gini')\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, shuffle=True)\n",
"\n",
"\n",
"clf_dt.fit(X_train, y_train)\n",
"predicted = clf_dt.predict(X_test)\n",
"print(predicted)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "a4c53a12-f834-426d-8217-ea98962fda64",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.8805555555555555"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.metrics import accuracy_score\n",
"\n",
"accuracy_score(y_test , predicted)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "e2b99748-73e4-4e6a-bd3f-4a095eec4c12",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxsAAADQCAYAAABvGXwjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAWnklEQVR4nO3dfZBWZf0/8M/CIsjjCoIYJiSh0KhsxhiOBos4kAjh0zCOmkBqWtaID8k42QRqSGqJY5jTmCz4UJkWTJKYNSyGomKmo2M5WG6MmoTI+ojy4PX7w99u3SwPC56Le5fv6zWzf3Ducz7nuu49n/vaN2fveytSSikAAAAK1q7cAwAAAPZOwgYAAJCFsAEAAGQhbAAAAFkIGwAAQBbCBgAAkIWwAQAAZCFsAAAAWQgbAABAFrsUNmpra6OioqLpq7KyMg466KCYOnVqvPrqq7nGWGLAgAExZcqUpn/X1dVFRUVF1NXV7VKdxx57LGbMmBENDQ3NHqupqYmamppPNM4iNc5xW1+PP/54uYe3U/X19VFRURG1tbW7dXxbm78+Ka/ly5fHuHHjYr/99ot99903Bg0aFNdcc025h7VTn7RPGrWV+euT8njnnXfiiiuuiDFjxkTv3r2joqIiZsyYUe5htVgRffLkk0/G2LFjo1u3btG1a9cYNWpUPProo8UNsmB6pbzaymvq1lrTmlK5OyeeN29eDB48ODZs2BCPPPJIXHfddbFs2bJ47rnnokuXLrtTcrcdddRRsWLFivjc5z63S8c99thjMXPmzJgyZUpUVVWVPHbrrbcWOMLizJo1K0aNGlWy7fDDDy/TaPa8tjZ/fbLn3XPPPfHVr341Jk2aFAsWLIiuXbvGP/7xj3jttdfKPbQ9oi3OX5/sWevWrYuf/exnMXTo0Dj55JPj9ttvL/eQ9qiVK1fGiBEj4uijj44777wzUkpx/fXXx+jRo2Pp0qVxzDHHlHuI26VX9ry2+JpapKLmv1th4/DDD49hw4ZFRMSoUaNiy5Ytcc0118TChQvjrLPO2uYx77//fnTu3Hl3TrdD3bt3j+HDhxdac1ebZ08ZNGhQ4XP9X5s2bWr6X5PWKPf8i6ZP9qxXX301vv71r8cFF1xQsmhtHVA/qdbaJ3tq/kXTJ3tW//79Y/369VFRURFvvPFGtrDRWvvke9/7XlRVVcWSJUuarqETTjghDjnkkLj88stb9R0OvbJnWVOKm38h79lovOD+9a9/RUTElClTomvXrvHcc8/FmDFjolu3bjF69OiIiNi4cWNce+21MXjw4OjYsWP07t07pk6dGmvXri2puWnTprjiiiuib9++0blz5zjuuOPiySefbHbu7d3Ke+KJJ2LChAnRq1ev6NSpUwwcODCmTZsWEREzZsyI73znOxER8ZnPfKbp1mRjjW3dynvzzTfjm9/8ZvTr1y/22WefOOSQQ+K73/1ufPjhhyX7VVRUxLe+9a248847Y8iQIdG5c+cYOnRoPPDAA7v8vObU+Lzdeeedcdlll0W/fv2iY8eO8dJLL0VExB//+McYPXp0dO/ePTp37hzHHnts/OlPfyqp8dJLL8XUqVNj0KBB0blz5+jXr19MmDAhnnvuuXJMqdXTJ/+Vo09uv/32eO+992L69Om7XWNrbalPcsy/HPTJf+Xok8bxFakt9cmjjz4aNTU1JT+Ad+vWLUaMGBGPPfZY/Pvf/y70fDnplf+yprTuNaWQsNH4JPXu3btp28aNG+MrX/lKHH/88bFo0aKYOXNmfPTRRzFx4sSYPXt2nHnmmbF48eKYPXt2PPzww1FTUxMbNmxoOv7888+PG2+8Mc4555xYtGhRnHbaaXHqqafG+vXrdzqehx56KL70pS/F6tWr48c//nE8+OCDcdVVV8WaNWsiIuK8886Lb3/72xER8Zvf/CZWrFgRK1asiKOOOmqb9T744IMYNWpULFiwIC699NJYvHhxnH322XH99dfHqaee2mz/xYsXx09+8pO4+uqr4/7774+ePXvGKaecEv/85z9L9quoqNil30+86KKLorKyMrp37x5jx46N5cuXt/jY7bnyyitj9erVcdttt8Xvfve76NOnT9x1110xZsyY6N69e8yfPz/uvffe6NmzZ4wdO7bkon/ttdeiV69eMXv27FiyZEnMnTs3Kisr44tf/GK8+OKLOz13a5j/nqRPShXdJ4888kj07Nkz/v73v0d1dXVUVlZGnz594sILL4y33357p8fvSFvok5zz35P0Salc60kObaFPNm7cGB07dmy2vXFbW/rPMr1SyprSiteUtAvmzZuXIiI9/vjjadOmTemdd95JDzzwQOrdu3fq1q1bev3111NKKU2ePDlFRLrjjjtKjv/FL36RIiLdf//9JdtXrlyZIiLdeuutKaWU/va3v6WISJdccknJfnfffXeKiDR58uSmbUuXLk0RkZYuXdq0beDAgWngwIFpw4YN253LDTfckCIivfzyy80eGzlyZBo5cmTTv2+77bYUEenee+8t2e+HP/xhioj0hz/8oWlbRKQDDjggvf32203bXn/99dSuXbt03XXXlRzfvn37dPzxx293jI2efvrpdPHFF6ff/va36ZFHHkl33HFHGjJkSGrfvn1asmTJTo/flsbnbcSIESXb33vvvdSzZ880YcKEku1btmxJQ4cOTUcfffR2a27evDlt3LgxDRo0qOR79/LLL6eISPPmzSvZv5zzz0mflKdPDjvssNSpU6fUrVu3NGvWrLR06dJ0/fXXp3333Tcde+yx6aOPPtppja21pT7JMf+c9El5+uR/rV27NkVE+v73v79Lx22tLfVJdXV1OvTQQ9OWLVuatm3atCkdcsghKSLSPffcs9Mae5pesaa09TVlt8LG1l9HHHFEWr58edN+jRf8W2+9VXL8WWedlaqqqtLGjRvTpk2bSr769u2bJk2alFJK6dZbb00RkZ566qmS4zdt2pQqKyt3eMG/+OKLKSLSrFmzdjiXXbngJ02alLp06dLsiV2zZk2KiDR9+vSmbRGRzjjjjGY1+/btmy688MIdjmlXrF+/Ph100EHpyCOP3K3jG5+3m2++uWT7ww8/nCIi3Xfffc2+R9OnT08VFRXp3XffTSl9/P34wQ9+kIYMGZI6dOhQck18+ctfbqq5vQv+k/ik889Jn5SnTwYNGpQiotnCMmfOnBQR6eGHH97lmm2pT3LMPyd9Uv71pOiw0Rb65Oc//3mKiPSNb3wjvfLKK2n16tXp3HPPTe3bt08RkX75y1/u9vOQi16xprT1NWW33o2yYMGCGDJkSFRWVsYBBxwQBx54YLN9OnfuHN27dy/ZtmbNmmhoaIh99tlnm3XfeOONiPj40zIiIvr27VvyeGVlZfTq1WuHY2v8/cODDjqoZZNpgXXr1kXfvn2b/Z5rnz59orKysmm8jbY1xo4dO5bcqvykqqqqYvz48XHbbbfFhg0bYt99992tOlt/7xpvd55++unbPebNN9+MLl26xKWXXhpz586N6dOnx8iRI2O//faLdu3axXnnnVfoXLelqPnnpE8+tqf6pFevXrFq1aoYO3ZsyfYTTzwxpk2bFk8//XSccMIJu1W7LfRJzvnnpE8+Vs71pChtoU++9rWvxdq1a+Paa6+Nn/70pxERccwxx8Tll18eP/zhD6Nfv36FnatoeuVj1pS2t6bsVtgYMmRI0ycibM+23oC2//77R69evWLJkiXbPKZbt24R8d8L5vXXXy9p/M2bNze7uLbW+LuLr7zyyg732xW9evWKJ554IlJKJfP6z3/+E5s3b47999+/sHPtipRSRGz7uW6prY9tnMstt9yy3U+aOOCAAyIi4q677opzzjknZs2aVfL4G2+80ewj7XIoYv456ZOP7ak+OfLII7f5d1car5N27Xb/LWptoU9yzj8nffKxcq8nRWgLfRIRMX369Jg2bVqsWrUqunXrFv37948LLrggunTpEl/4whcKPVeR9MrHrCltb03Zo6vP+PHjY926dbFly5YYNmxYs6/DDjssIqLpjSt33313yfH33ntvbN68eYfnOPTQQ2PgwIFxxx13NPu
"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": 7,
"id": "1d010c44-2967-44fa-996f-c1fd733d17f1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Confusion Matrix:\n",
"[[36 0 0 0 0 1 0 0 0 0]\n",
" [ 0 37 1 1 0 0 0 0 2 1]\n",
" [ 0 0 21 0 0 0 0 0 2 0]\n",
" [ 0 0 4 26 0 2 1 0 1 1]\n",
" [ 0 1 0 0 31 0 1 0 0 0]\n",
" [ 0 0 0 0 2 43 0 1 0 0]\n",
" [ 1 1 0 0 4 0 40 0 0 0]\n",
" [ 0 0 0 0 1 1 0 34 1 0]\n",
" [ 0 3 0 0 0 1 0 0 27 2]\n",
" [ 0 2 0 1 1 2 0 0 0 22]]\n"
]
},
{
"data": {
"image/png": "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
"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, cmap=\"summer\")\n",
"disp.figure_.suptitle(\"Confusion Matrix\")\n",
"\n",
"print(f\"Confusion Matrix:\\n{disp.confusion_matrix}\")\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "8608e6eb-6dd0-4947-9ee6-dc77f35cecc7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Classification report for classifier DecisionTreeClassifier():\n",
" precision recall f1-score support\n",
"\n",
" 0 0.97 0.97 0.97 37\n",
" 1 0.84 0.88 0.86 42\n",
" 2 0.81 0.91 0.86 23\n",
" 3 0.93 0.74 0.83 35\n",
" 4 0.79 0.94 0.86 33\n",
" 5 0.86 0.93 0.90 46\n",
" 6 0.95 0.87 0.91 46\n",
" 7 0.97 0.92 0.94 37\n",
" 8 0.82 0.82 0.82 33\n",
" 9 0.85 0.79 0.81 28\n",
"\n",
" accuracy 0.88 360\n",
" macro avg 0.88 0.88 0.88 360\n",
"weighted avg 0.89 0.88 0.88 360\n",
"\n",
"\n"
]
}
],
"source": [
"print(\n",
" f\"Classification report for classifier {clf_dt}:\\n\"\n",
" f\"{metrics.classification_report(y_test, predicted)}\\n\"\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "42fdd6a5-af00-4155-bc42-44e037d13c2d",
"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
}