example.ipynb 47.7 KB
Newer Older
chenzk's avatar
v1.0  
chenzk committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "1ddgCM_qEHZa",
    "outputId": "d8ad88e7-59b9-4097-cbd7-70668b9fec88"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: kmeans-pytorch in /usr/local/lib/python3.6/dist-packages (0.1)\n"
     ]
    }
   ],
   "source": [
    "!pip install kmeans-pytorch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "R8_IiKZZEU9i"
   },
   "outputs": [],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from kmeans_pytorch import kmeans, kmeans_predict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "iyoljrh1FCxJ"
   },
   "outputs": [],
   "source": [
    "# set random seed\n",
    "np.random.seed(123)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "tcnoTA16FHbJ"
   },
   "outputs": [],
   "source": [
    "# data\n",
    "data_size, dims, num_clusters = 1000, 2, 3\n",
    "x = np.random.randn(data_size, dims) / 6\n",
    "x = torch.from_numpy(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "Ar-lcW3OFTXI"
   },
   "outputs": [],
   "source": [
    "# set device\n",
    "if torch.cuda.is_available():\n",
    "    device = torch.device('cuda:0')\n",
    "else:\n",
    "    device = torch.device('cpu')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 71
    },
    "colab_type": "code",
    "id": "KsM9zQZ5FYKp",
    "outputId": "c37d7629-560f-4191-bbee-2f5523d2cda2"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[running kmeans]: 7it [00:00, 200.48it/s, center_shift=0.000068, iteration=7, tol=0.000100]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "running k-means on cuda:0..\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "# k-means\n",
    "cluster_ids_x, cluster_centers = kmeans(\n",
    "    X=x, num_clusters=num_clusters, distance='euclidean', device=device\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 797
    },
    "colab_type": "code",
    "id": "IdzkYHBEFdja",
    "outputId": "3bd48cc3-487c-40f7-826a-c8fccecfce89"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([2, 0, 2, 0, 1, 0, 1, 0, 1, 1, 2, 2, 0, 1, 0, 0, 0, 1, 2, 2, 0, 2, 1, 1,\n",
      "        2, 0, 1, 2, 2, 1, 2, 0, 1, 1, 2, 1, 1, 2, 0, 0, 1, 1, 0, 0, 1, 1, 2, 2,\n",
      "        0, 1, 0, 2, 1, 0, 0, 2, 2, 1, 0, 1, 0, 2, 1, 1, 1, 0, 2, 1, 2, 1, 2, 1,\n",
      "        1, 2, 2, 1, 0, 2, 1, 1, 1, 2, 1, 1, 1, 0, 2, 2, 1, 2, 2, 1, 0, 0, 2, 1,\n",
      "        1, 0, 0, 0, 1, 1, 1, 0, 2, 1, 0, 2, 1, 2, 0, 0, 1, 0, 2, 2, 2, 1, 1, 1,\n",
      "        1, 0, 1, 0, 2, 1, 0, 1, 1, 2, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 2,\n",
      "        2, 2, 1, 2, 1, 2, 1, 2, 2, 2, 1, 1, 2, 1, 0, 2, 0, 0, 1, 0, 2, 2, 0, 0,\n",
      "        2, 1, 0, 1, 0, 2, 2, 0, 0, 0, 2, 0, 2, 2, 2, 1, 1, 0, 1, 2, 2, 0, 1, 0,\n",
      "        2, 2, 1, 1, 0, 0, 2, 2, 1, 0, 2, 0, 2, 1, 2, 1, 1, 0, 2, 0, 0, 2, 2, 2,\n",
      "        0, 1, 0, 1, 1, 2, 1, 2, 1, 0, 0, 2, 2, 2, 2, 0, 1, 1, 1, 2, 1, 0, 2, 0,\n",
      "        0, 2, 2, 1, 1, 0, 0, 2, 1, 1, 1, 2, 1, 0, 0, 1, 1, 2, 2, 1, 0, 0, 2, 1,\n",
      "        1, 0, 1, 2, 1, 2, 0, 2, 2, 0, 2, 1, 0, 1, 1, 1, 2, 0, 1, 2, 2, 1, 1, 1,\n",
      "        0, 1, 0, 1, 2, 0, 2, 1, 2, 1, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 0, 2, 1,\n",
      "        0, 0, 2, 0, 2, 0, 1, 2, 1, 2, 0, 0, 2, 1, 1, 1, 1, 0, 2, 0, 2, 2, 1, 0,\n",
      "        1, 2, 2, 1, 1, 1, 2, 2, 0, 0, 1, 2, 1, 1, 0, 1, 2, 1, 2, 0, 0, 2, 0, 1,\n",
      "        1, 1, 2, 2, 1, 2, 0, 2, 0, 0, 2, 0, 2, 1, 2, 1, 1, 2, 2, 0, 1, 0, 0, 0,\n",
      "        0, 1, 0, 2, 2, 1, 0, 2, 0, 0, 2, 2, 2, 0, 1, 2, 0, 2, 2, 1, 2, 1, 2, 1,\n",
      "        0, 0, 0, 2, 0, 2, 2, 2, 0, 1, 1, 0, 2, 2, 0, 2, 2, 1, 0, 0, 2, 2, 0, 0,\n",
      "        1, 0, 1, 2, 0, 2, 0, 1, 0, 0, 0, 1, 2, 2, 1, 1, 2, 1, 1, 1, 0, 0, 2, 0,\n",
      "        0, 0, 2, 1, 1, 1, 2, 2, 2, 2, 0, 0, 1, 2, 0, 0, 1, 2, 1, 0, 1, 0, 2, 2,\n",
      "        0, 0, 0, 0, 2, 1, 0, 2, 1, 1, 2, 1, 0, 2, 0, 2, 0, 2, 1, 1, 2, 1, 0, 0,\n",
      "        0, 1, 2, 1, 1, 0, 2, 0, 2, 1, 2, 1, 1, 2, 0, 1, 0, 0, 2, 0, 2, 2, 2, 1,\n",
      "        1, 2, 1, 1, 2, 1, 1, 1, 1, 0, 0, 2, 1, 1, 2, 1, 1, 2, 0, 0, 2, 1, 2, 1,\n",
      "        1, 1, 1, 1, 0, 0, 2, 2, 1, 0, 1, 2, 2, 0, 1, 0, 2, 0, 2, 2, 2, 0, 1, 2,\n",
      "        2, 0, 1, 2, 1, 1, 2, 1, 2, 1, 0, 2, 0, 2, 1, 0, 2, 0, 1, 2, 1, 2, 1, 0,\n",
      "        1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 2, 0, 0, 2, 1, 0, 1, 1, 1, 0, 0,\n",
      "        2, 1, 0, 2, 1, 1, 0, 2, 1, 2, 0, 2, 2, 1, 1, 0, 0, 2, 0, 2, 1, 1, 0, 1,\n",
      "        1, 0, 2, 2, 2, 1, 0, 0, 2, 1, 1, 1, 2, 1, 0, 1, 1, 1, 2, 2, 1, 1, 2, 1,\n",
      "        0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 1, 0, 0, 2,\n",
      "        1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 0,\n",
      "        2, 2, 0, 2, 2, 1, 1, 1, 1, 0, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 0, 2,\n",
      "        2, 0, 2, 2, 0, 2, 1, 0, 0, 2, 0, 0, 1, 0, 2, 2, 0, 1, 2, 0, 0, 1, 1, 2,\n",
      "        2, 2, 0, 1, 2, 0, 0, 1, 2, 2, 0, 1, 0, 0, 2, 2, 0, 2, 1, 0, 1, 1, 2, 1,\n",
      "        0, 2, 1, 1, 0, 1, 1, 0, 2, 2, 2, 2, 1, 0, 0, 0, 2, 1, 2, 2, 0, 0, 0, 2,\n",
      "        1, 2, 1, 0, 2, 0, 0, 1, 1, 2, 2, 1, 2, 1, 2, 0, 0, 2, 1, 0, 1, 0, 0, 2,\n",
      "        2, 2, 2, 0, 1, 2, 2, 2, 2, 2, 1, 0, 0, 1, 1, 0, 2, 0, 2, 0, 2, 0, 0, 1,\n",
      "        0, 0, 0, 2, 0, 2, 1, 2, 0, 1, 0, 2, 0, 0, 0, 1, 0, 1, 1, 1, 0, 2, 2, 0,\n",
      "        1, 2, 0, 1, 1, 2, 2, 1, 2, 1, 0, 1, 0, 2, 1, 1, 2, 1, 1, 2, 2, 0, 1, 0,\n",
      "        2, 2, 0, 2, 2, 2, 1, 1, 0, 1, 2, 0, 2, 1, 0, 2, 1, 0, 1, 0, 2, 2, 2, 2,\n",
      "        2, 2, 1, 1, 2, 2, 2, 1, 2, 2, 1, 0, 0, 1, 1, 2, 1, 0, 1, 1, 1, 0, 2, 2,\n",
      "        2, 2, 1, 2, 0, 1, 2, 0, 1, 1, 1, 1, 2, 2, 0, 0, 2, 1, 1, 1, 0, 2, 0, 2,\n",
      "        2, 2, 0, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 0])\n",
      "tensor([[-0.1075, -0.1522],\n",
      "        [ 0.1544, -0.0137],\n",
      "        [-0.0833,  0.1454]])\n"
     ]
    }
   ],
   "source": [
    "# cluster IDs and cluster centers\n",
    "print(cluster_ids_x)\n",
    "print(cluster_centers)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "32XHxknWFayP"
   },
   "outputs": [],
   "source": [
    "# more data\n",
    "y = np.random.randn(5, dims) / 6\n",
    "y = torch.from_numpy(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "gQB3jVTKFfsN",
    "outputId": "1f2f634a-4a32-4b05-ca7f-231165e974ea"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "predicting on cuda:0..\n"
     ]
    }
   ],
   "source": [
    "# predict cluster ids for y\n",
    "cluster_ids_y = kmeans_predict(\n",
    "    y, cluster_centers, 'euclidean', device=device\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "CGoD8s6_FiDp",
    "outputId": "7137fa6a-f5a8-4096-f5d2-fc74d45eaf2f"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([1, 2, 0, 1, 2])\n"
     ]
    }
   ],
   "source": [
    "print(cluster_ids_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 481
    },
    "colab_type": "code",
    "id": "5V0vxpaUEnFd",
    "outputId": "a97b6261-034e-493a-d8a6-cf955ab5e8fd"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n3nbasQMx03S5mc0ClgKDiJQiud7B64BvVPA9iYiIiKSm5QI4d19mZmOI9U6PJ2Z6rgZuAy5z9zvr\nqP60ZFsydUiex4gUIWOAXYGDiAByKfA74GfJ+qwiIiIiTWXu3tFtkISZLRg2bNiwBQsWdHRTRERE\npEBbWxsLFy7qEE+RAAANcklEQVRcWC4lWLO01DNwIiIiItI+BXAiIiIiGaMATkRERCRjFMCJiIiI\nZIwCOBEREZGMUQAnIiIikjEK4EREREQyRgGciIiISMYogBMRERHJGAVwIiIiIhmjAE5EREQkYxTA\niYiIiGSMAjgRERGRjFEAJyIiIpIxCuBEREREMkYBnIiIiEjGKIATERERyRgFcCIiIiIZowBORERE\nJGMUwImIiIhkjAI4ERERkYxRACciIiKSMQrgRERERDJGAZyIiIhIxiiAExEREckYBXAiIiIiGaMA\nTkRERCRjFMCJiIiIZIwCOBEREZGMUQAnIiIikjEK4EREREQypuUCODM72sy+bmY3mdkiM/Pk1VZn\nvT3N7Mtm9piZrTaz5WY23cw+UkHZjybnLk/KPmZmXzKzHvW0SURERKQWm3V0A4q4FhiYZoVm1ge4\nHXgv8CowDegHHA4camaXu/sXS5S9CpgMvAXcBaxKyl0CHGNmR7n762m2V0RERKScVgzg/gD8E5iV\nvJalUOeFRPD2BHC4u78EYGbvAaYDXzCz6e7+5/xCZnYcEbytAg5191nJ/iFEMHcw8L9A0eBPRERE\npBFabgjV3U9394vc/TZ3/1e99ZnZFsCnkrefygVvybUeJnrSAP6zSPHzku3FueAtKfcScE7y9lwz\nS7XHUERERKSclgvgGuBooCcw393vKXL82mR7gJkNze00s2HA2IJz3uHuM4EXgV7JNURERESaoisE\ncPsk24eKHXT354FXkreji5R7xd3nlqj7oYJzRURERBquKwRwI5Pt/DLnLCg4t9JyLxYpJyIiItJQ\nrTiJIW39k+3qMuesSrYDUihXlpktKHN42OLFi2lrqytjioiIiDTA4sWLAbbu6HZAigGcmV0KHFtD\n0TOT58kEWL9+PQsXLlzY0e2Qhts22S7p0FZIo+k+dx26113DMFqk8yvNRgwFRtVQrl+KbShmZbLt\nW0EbVqRQrix3L9m9luudK3eOdA66112D7nPXoXvdNbQzitZUqQVw7j4JmJRWfSmal2yHlzkn94Gb\n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\ngg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot\n",
    "plt.figure(figsize=(4, 3), dpi=160)\n",
    "plt.scatter(x[:, 0], x[:, 1], c=cluster_ids_x, cmap='cool')\n",
    "plt.scatter(y[:, 0], y[:, 1], c=cluster_ids_y, cmap='cool', marker='X')\n",
    "plt.scatter(\n",
    "    cluster_centers[:, 0], cluster_centers[:, 1],\n",
    "    c='white',\n",
    "    alpha=0.6,\n",
    "    edgecolors='black',\n",
    "    linewidths=2\n",
    ")\n",
    "plt.axis([-1, 1, -1, 1])\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "BHkQ-zw9EnsN"
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "collapsed_sections": [],
   "name": "example.ipynb",
   "provenance": []
  },
  "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.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}