Skip to content

Instantly share code, notes, and snippets.

@tam17aki
Created March 17, 2023 14:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tam17aki/1ae51d906892cc6c6e2a8991f80ab606 to your computer and use it in GitHub Desktop.
Save tam17aki/1ae51d906892cc6c6e2a8991f80ab606 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "14381e00",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from sklearn.datasets import make_circles"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "c62a6331",
"metadata": {},
"outputs": [],
"source": [
"import kernel_kmeans as kkm"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "00505014",
"metadata": {},
"outputs": [],
"source": [
"n_clusters = 2\n",
"n_samples = 500\n",
"max_iter = 100\n",
"random_state = 1"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "671f1759",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"X, y = make_circles(\n",
" n_samples=n_samples, factor=0.1, noise=0.05, random_state=random_state\n",
")\n",
"for i in range(n_clusters):\n",
" ind = y == i\n",
" plt.scatter(X[ind, 0], X[ind, 1], label=f\"cluster {i}\")\n",
"plt.title(\"Original Data\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "f4c580af",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Converged at iteration 5\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"km = kkm.KernelKMeans(\n",
" n_clusters=n_clusters,\n",
" max_iter=max_iter,\n",
" gamma=\"scale\",\n",
" random_state=random_state,\n",
" verbose=1,\n",
")\n",
"pred = km.fit_predict(X)\n",
"for i in range(n_clusters):\n",
" ind = pred == i\n",
" plt.scatter(X[ind, 0], X[ind, 1], label=f\"cluster {i}\")\n",
"plt.title(\"Kernel k-means\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b3015623",
"metadata": {},
"outputs": [],
"source": []
}
],
"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.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment