Technologische_Grundlagen/digit_recognition/digit_recognition_SVM.ipynb

212 lines
59 KiB
Plaintext
Raw Permalink 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",
"_, 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": "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
"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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
"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
}