Skip to content

Instantly share code, notes, and snippets.

@omairaasim
Created March 20, 2022 16:02
Show Gist options
  • Save omairaasim/4f312e3c572fca500216e6a24409e355 to your computer and use it in GitHub Desktop.
Save omairaasim/4f312e3c572fca500216e6a24409e355 to your computer and use it in GitHub Desktop.
K Means Clustering with scikit-learn
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# K-Means Clustering with scikit-learn?\n",
"The k-means clustering problem is solved using either Lloyd’s or Elkan’s algorithm. The k-means algorithm is very fast (one of the fastest clustering algorithms available), but it falls in local minima. That’s why it can be useful to restart it several times."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Importing libraries and creating dataset:-"
]
},
{
"cell_type": "code",
"execution_count": 2,
"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": [
"import matplotlib.pyplot as plt\n",
"from sklearn.cluster import KMeans\n",
"from sklearn.datasets import make_blobs\n",
"\n",
"# create dataset\n",
"X, y = make_blobs(n_samples=150, n_features=2,centers=3, cluster_std=0.5,shuffle=True, random_state=0)\n",
"\n",
"# plot\n",
"plt.scatter(X[:, 0], X[:, 1],c='white', marker='o',edgecolor='black', s=50)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## kmeans clustering usind sklearn:-"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"km = KMeans(n_clusters=3, init='random', n_init=10, max_iter=300, tol=1e-04, random_state=0)\n",
"y_km = km.fit_predict(X)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plotting clusters:-"
]
},
{
"cell_type": "code",
"execution_count": 4,
"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": [
"# plot the 3 clusters\n",
"plt.scatter(X[y_km == 0, 0], X[y_km == 0, 1],s=50, c='lightgreen',marker='s', edgecolor='black',label='cluster 1')\n",
"\n",
"plt.scatter(X[y_km == 1, 0], X[y_km == 1, 1],s=50, c='orange',marker='o', edgecolor='black',label='cluster 2')\n",
"\n",
"plt.scatter(X[y_km == 2, 0], X[y_km == 2, 1],s=50, c='lightblue',marker='v', edgecolor='black',label='cluster 3')\n",
"\n",
"# plot the centroids\n",
"plt.scatter(km.cluster_centers_[:, 0], km.cluster_centers_[:, 1],s=250, marker='*',c='red', edgecolor='black',label='centroids')\n",
"\n",
"plt.legend(scatterpoints=1)\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculating distortion:-"
]
},
{
"cell_type": "code",
"execution_count": 5,
"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": [
"# calculate distortion for a range of number of cluster\n",
"distortions = []\n",
"for i in range(1, 11):\n",
" km = KMeans(n_clusters=i, init='random',n_init=10, max_iter=300,tol=1e-04, random_state=0)\n",
" km.fit(X)\n",
" distortions.append(km.inertia_)\n",
"\n",
"# plot\n",
"plt.plot(range(1, 11), distortions, marker='o')\n",
"plt.xlabel('Number of clusters')\n",
"plt.ylabel('Distortion')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"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.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment