Skip to content

Commit

Permalink
Add kmeans_mnist.ipynb
Browse files Browse the repository at this point in the history
  • Loading branch information
fortierq committed Nov 28, 2023
1 parent 8774faa commit 208742c
Showing 1 changed file with 71 additions and 0 deletions.
71 changes: 71 additions & 0 deletions files/dl/apprentissage/cours/kmeans/kmeans_mnist.ipynb
Original file line number Diff line number Diff line change
@@ -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": [
"<Figure size 1000x400 with 10 Axes>"
]
},
"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
}

0 comments on commit 208742c

Please sign in to comment.