diff --git a/files/dl/apprentissage/cours/kmeans/kmeans_mnist.ipynb b/files/dl/apprentissage/cours/kmeans/kmeans_mnist.ipynb new file mode 100644 index 00000000..e07042cb --- /dev/null +++ b/files/dl/apprentissage/cours/kmeans/kmeans_mnist.ipynb @@ -0,0 +1,71 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import datasets\n", + "from sklearn.cluster import KMeans\n", + "import matplotlib.pyplot as plt\n", + "\n", + "digits = datasets.load_digits()\n", + "kmeans = KMeans(n_clusters=10, random_state=0).fit(digits.data)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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+X/96le/iu4PHToUd/jUpz4VZ7SS9GfXxz/+8bjDq6++GmcsW7YsznjwwQej+4997GNxh6nkzQYAAFDC2AAAAEoYGwAAQAljAwAAKGFsAAAAJYwNAACghLEBAACUMDYAAIASxgYAAFDC2AAAAEoYGwAAQAljAwAAKGFsAAAAJYwNAACghLEBAACUaEzlh23atCm6X716ddxh165dccaRI0fijG9+85vR/eLFi+MO7WZ8fDy63759e9yht7c3znjzzTfjjGPHjkX3jUb+6JiYmIgzurq64oyplH4N7tu3L+6wZ8+eOOPQoUNxxmc+85nofsaMGXGHdnP27Nnoftu2bXGH973vfXFGf39/nHH8+PHovru7O+7QbDbjjM7OzjhjqgwMDET31113Xdzh1KlTccbmzZvjjBtvvDG6n4yvv6nkzQYAAFDC2AAAAEoYGwAAQAljAwAAKGFsAAAAJYwNAACghLEBAACUMDYAAIASxgYAAFDC2AAAAEoYGwAAQAljAwAAKGFsAAAAJYwNAACghLEBAACUMDYAAIASjUv9g52dnfGHzZs3L7qfM2dO3GHnzp1xxtDQUJzx3ve+N87g8nR3d0f3hw4dijs8+eSTcUZfX1+ccdddd0X369atiztcuHAhzujq6oozptL58+ej++3bt8cd9u3bF2fcd999ccbatWuj+/T7uR3Nnj07up+Mn31btmyJM0ZGRuKM9evXR/c333xz3KHdNJvN6P6Pf/xj3GHGjBlxxk033RRntNrPrpQ3GwAAQAljAwAAKGFsAAAAJYwNAACghLEBAACUMDYAAIASxgYAAFDC2AAAAEoYGwAAQAljAwAAKGFsAAAAJYwNAACghLEBAACUMDYAAIASxgYAAFDC2AAAAEp0NpvN5pUuAQAA/O/xZgMAAChhbAAAACWMDQAAoISxAQAAlDA2AACAEsYGAABQwtgAAABKGBsAAEAJYwMAAChhbAAAACWMDQAAoISxAQAAlDA2AACAEsYGAABQwtgAAABKGBsAAEAJYwMAAChhbAAAACWMDQAAoISxAQAAlDA2AACAEsYGAABQwtgAAABKGBsAAEAJYwMAAChhbAAAACWMDQAAoISxAQAAlDA2AACAEsYGAABQwtgAAABKGBsAAEAJYwMAACjRuNIFLseePXvijC9+8YtxxrJly+KMxx9/PLr/8Ic/HHdg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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(2, 5, figsize=(10, 4))\n", + "for i, c in enumerate(kmeans.cluster_centers_):\n", + " axes[i // 5 , i % 5].imshow(c.reshape(8, 8), cmap=plt.cm.binary)\n", + " axes[i // 5, i % 5].axis('off')\n", + "# for c in range(10):\n", + "# axes[1, c].imshow(digits.data[kmeans.labels_ == c][0].reshape(8, 8), cmap=plt.cm.binary)\n", + "# axes[1, c].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.9.2" + }, + "vscode": { + "interpreter": { + "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}