{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# K-Means Clustering Example"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's make some fake data that includes people clustered by income and age, randomly:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from numpy import random, array\n",
    "\n",
    "#Create fake income/age clusters for N people in k clusters\n",
    "def createClusteredData(N, k):\n",
    "    random.seed(10)\n",
    "    pointsPerCluster = float(N)/k\n",
    "    X = []\n",
    "    for i in range (k):\n",
    "        incomeCentroid = random.uniform(20000.0, 200000.0)\n",
    "        ageCentroid = random.uniform(20.0, 70.0)\n",
    "        for j in range(int(pointsPerCluster)):\n",
    "            X.append([random.normal(incomeCentroid, 10000.0), random.normal(ageCentroid, 2.0)])\n",
    "    X = array(X)\n",
    "    return X"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We'll use k-means to rediscover these clusters in unsupervised learning:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
      " 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3\n",
      " 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 0 4 4 4 4 4 0 0 4 4 4]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Frank\\anaconda3\\Lib\\site-packages\\sklearn\\cluster\\_kmeans.py:1429: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "image/png": "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8EpEREREXoPhlYiIiIi8BsMrEREREXkNhlciIiIi8hoMr0RERETkNRheiYiIiMhrMLwSERERkddgeCUiIiIir8HwSkREREReg+GViIiIiLwGwysREREReQ2GVyIiIiLyGgyvREREROQ1GF6JiIiIyGswvBIRERGR12B4JSIiIiKvwfBKRERERF6D4ZWIiIiIvAbDKxERERF5DYZXIiIiIvIaDK9ERERE5DUYXomIiIjIazC8EhEREZHXYHglIiIiIq/B8EpEREREXoPhlYiIiIi8BsMrEREREXkNhlciIiIi8hoMr0RERETkNRheiYiIiMhrMLwSERERkddgeCUiIiIir8HwSkREREReg+GViIiIiLwGwysREREReQ2GVyIiIiLyGgyvREREROQ1GF6JiIiIyGswvBIRERGR12B4JSIiIiKvwfBKRERERF6D4ZWIiIiIvAbDKxERERF5DYZXIiIiIvIaDK9ERERE5DUYXomIiIjIazC8EhEREZHXYHglIiIiIq/B8EpEREREXoPhlYiIiIi8BsMrEREREXkNhlciIiIi8hoMr0RERETkNRheiYiIiMhrMLwSERERkddgeCUiIiIir8HwSkREREReg+GViIiIiLxGmcLrnDlzIISw+YqMjLSel1Jizpw5iI6Ohr+/PwYMGID4+PhKL5qIiIiIaqcyj7y2a9cOycnJ1q9Dhw5Zzy1YsAALFy7EokWLsGvXLkRGRmLo0KHIzs6u1KKJiIiIqHYqc3jVarWIjIy0ftWvXx+AZdT17bffxvPPP49x48ahffv2+PLLL5GXl4fvvvuu0gsnIiIiotqnzOH1xIkTiI6ORmxsLCZMmIDTp08DABISEpCSkoJhw4ZZ2+p0OvTv3x9bt251eD2DwQC9Xm/zRURERERkT5nCa8+ePfHVV19h9erV+Pjjj5GSkoLevXsjLS0NKSkpAICIiAib10RERFjP2TNv3jyEhIRYvxo1alSOt0FEREREtUGZwuvIkSNx6623okOHDhgyZAh+//13AMCXX35pbSOEsHmNlLLEseJmz56NrKws61diYmJZSiIiIiKiWqRCS2UFBgaiQ4cOOHHihHXVgWtHWVNTU0uMxhan0+kQHBxs80VEREREZE+FwqvBYMCRI0cQFRWF2NhYREZGYu3atdbzhYWF2LhxI3r37l3hQomIiIiItGVp/NRT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",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "from sklearn.cluster import KMeans\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.preprocessing import scale\n",
    "from numpy import random\n",
    "\n",
    "data = createClusteredData(100, 5)\n",
    "\n",
    "model = KMeans(n_clusters=5)\n",
    "\n",
    "# Note I'm scaling the data to normalize it! Important for good results.\n",
    "model = model.fit(scale(data))\n",
    "\n",
    "# We can look at the clusters each data point was assigned to\n",
    "print(model.labels_)\n",
    "\n",
    "# And we'll visualize it:\n",
    "plt.figure(figsize=(8, 6))\n",
    "plt.scatter(x=data[:,0], y=data[:,1], c=model.labels_.astype(float))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Activity"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Things to play with: what happens if you don't scale the data? What happens if you choose different values of K? In the real world, you won't know the \"right\" value of K to start with - you'll need to converge on it yourself."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:base] *",
   "language": "python",
   "name": "conda-base-py"
  },
  "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.12.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}