{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "view-in-github",
    "jupyter": {
     "source_hidden": true
    },
    "tags": []
   },
   "source": [
    "<a href=\"https://colab.research.google.com/drive/1_-DJiIhyYnmAaIO1y2j7YON3er97GDio\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "gIT7vmg-1lnu"
   },
   "source": [
    "# Unsupervised Learning\n",
    "\n",
    "In many applications, observations need to be divided into similar groups based on observed features. For example, retailers may want to divide potential customers into groups, in order to target a marketing campaign at the customers who are most likely to respond positively. This practice is known as _market segmentation_.\n",
    "\n",
    "The general problem of grouping observations based on observed features is known as _clustering_ in machine learning. Like the classification problems of Chapter 6, clustering is about dividing observations into categories based on features. Unlike classification, we do not have ground truth labels that specify what the categories should be; they have to be inferred from the data. In other words, with classification, the training data contains both features $X$ and labels $y$; with clustering, the training data only contains features $X$.\n",
    "\n",
    "For this reason, clustering is an example of an _unsupervised learning_ problem, in contrast to the _supervised learning_ problems of the previous chapters. This terminology comes from the following analogy to human learning.  Imagine a child that is trying to learn the difference between shapes and has several examples of each shape in front of him.\n",
    "\n",
    "![](https://github.com/dlsun/pods/blob/master/07-Unsupervised-Learning/shape_sorter.jpg?raw=1)\n",
    "\n",
    "On the one hand, the child may be _supervised_ by an adult who gives the child feedback on each answer: \"Yes, that is a circle....No, that was a square....No, that was actually a circle....\"  This process is analogous to classification, where the labels in the training data can be used to provide \"feedback\" on how well the model is doing. Regression and classification are both examples of _supervised learning_ because labels are available in the training data.\n",
    "\n",
    "On the other hand, the child may be _unsupervised_ and completely left to his own devices. Eventually, he may figure out that there is something similar about all of the circles that distinguish them from the squares. But he won't know that they are called \"circles\", nor will he know whether he is right or not. This is the fundamental challenge of unsupervised learning. Clustering is an example of _unsupervised learning_ because labels are not available in the training data.\n",
    "\n",
    "We will practice clustering on a dataset containing measurements of 150 iris flowers, collected by the statistician R. A. Fisher."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 206
    },
    "id": "cQ24UxaQ1lny",
    "outputId": "d0b28b75-d026-4b59-e4ad-8db0b211ffd4"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>SepalLength</th>\n",
       "      <th>SepalWidth</th>\n",
       "      <th>PetalLength</th>\n",
       "      <th>PetalWidth</th>\n",
       "      <th>Name</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   SepalLength  SepalWidth  PetalLength  PetalWidth         Name\n",
       "0          5.1         3.5          1.4         0.2  Iris-setosa\n",
       "1          4.9         3.0          1.4         0.2  Iris-setosa\n",
       "2          4.7         3.2          1.3         0.2  Iris-setosa\n",
       "3          4.6         3.1          1.5         0.2  Iris-setosa\n",
       "4          5.0         3.6          1.4         0.2  Iris-setosa"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "data_dir = \"https://dlsun.github.io/pods/data/\"\n",
    "df_iris = pd.read_csv(data_dir + \"iris.csv\")\n",
    "df_iris.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 209
    },
    "id": "xEVf7Frrq02Q",
    "outputId": "7c695181-b458-4bec-b59d-bb7d13747c9b"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Iris-setosa        50\n",
       "Iris-versicolor    50\n",
       "Iris-virginica     50\n",
       "Name: Name, dtype: int64"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_iris.Name.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "-RrIp1_e1ln4"
   },
   "source": [
    "Let's focus on just two of the variables, the petal length and width, so that we can easily visualize the data. Based on the scatterplot below, how many clusters are there in this data set? Can you devise an algorithm that would automatically identify those clusters?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 466
    },
    "id": "nwnlgfeh1ln5",
    "outputId": "17ccd44b-3699-4589-e5df-44390e809dd0"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='PetalLength', ylabel='PetalWidth'>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X_train = df_iris[[\"PetalLength\", \"PetalWidth\"]]\n",
    "X_train.plot.scatter(x=\"PetalLength\", y=\"PetalWidth\",\n",
    "                     c=\"black\", marker=\"x\", alpha=.5, figsize = (12,7))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8xnkQALwq02S"
   },
   "source": [
    "`Iris` is a rare dataset that can be used for clusering that does come with `ground truth` - ideally, we want to clusters to break our data into the three Iris flower species.  We can see what this looks like below\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 522
    },
    "id": "8kHaVDOzq02S",
    "outputId": "12737139-68a6-46c1-c5d6-7cb5a212a7f4"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "colors = np.array(df_iris['Name'].map({\"Iris-setosa\": \"blue\",\n",
    "                              \"Iris-virginica\":\"green\",\n",
    "                              \"Iris-versicolor\":\"red\"}))\n",
    "\n",
    "f1 = plt.figure(figsize=(7,6))\n",
    "\n",
    "plt.scatter(x = X_train[\"PetalLength\"],\n",
    "            y= X_train[\"PetalWidth\"],\n",
    "            marker=\"x\", alpha=.9, c = colors,\n",
    "            s = 80)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ovyRxHuO1ln-"
   },
   "source": [
    "# $K$-Means Clustering"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8wjeNsD21loB"
   },
   "source": [
    "$K$-means is an algorithm for finding clusters in data. The idea behind $k$-means is simple: each cluster has a \"center\" point called the **centroid**, and each observation is associated with the cluster of its nearest centroid. The challenge is finding those centroids. The $k$-means algorithm starts with a random guess for the centroids and iteratively improves them.\n",
    "\n",
    "The steps are as follows:\n",
    "\n",
    "1. Initialize $k$ centroids at random.\n",
    "2. Assign each point to the cluster of its nearest centroid.\n",
    "3. (After reassignment, each centroid may no longer be at the center of its cluster.) Recompute each centroid based on the points assigned to its cluster.\n",
    "4. Repeat steps 2 and 3 until no points change clusters.\n",
    "\n",
    "# Implementing K-Means from Scratch\n",
    "\n",
    "First, we will implement the $k$-means algorithm from scratch. First, let's sample 3 points at random from the iris data to serve as the initial centroids."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 575
    },
    "id": "-IhlAYDk1loC",
    "outputId": "50f3cd41-49f3-4b9d-b24a-fe41b4dec76e"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PetalLength</th>\n",
       "      <th>PetalWidth</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>r</th>\n",
       "      <td>6.1</td>\n",
       "      <td>2.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>4.9</td>\n",
       "      <td>1.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>g</th>\n",
       "      <td>4.0</td>\n",
       "      <td>1.2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PetalLength  PetalWidth\n",
       "r          6.1         2.3\n",
       "b          4.9         1.8\n",
       "g          4.0         1.2"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "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": [
    "# Initialize 3 centroids at random from the data.\n",
    "centroids = X_train.sample(3)\n",
    "\n",
    "# Call the three clusters \"red\", \"blue\", \"green\" for convenience.\n",
    "centroids.index = [\"r\", \"b\", \"g\"]\n",
    "\n",
    "# Plot these centroids.\n",
    "ax = X_train.plot.scatter(x=\"PetalLength\", y=\"PetalWidth\",\n",
    "                          c=\"black\", marker=\"x\", alpha=.5)\n",
    "centroids.plot.scatter(x=\"PetalLength\", y=\"PetalWidth\",\n",
    "                       c=centroids.index, s = 100, ax=ax)\n",
    "\n",
    "centroids"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "eUMVbJrS1loI"
   },
   "source": [
    "Now we assign each point to the cluster of its nearest centroid.\n",
    "\n",
    "First, let's run through a simple example. Then we will generalize it.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 147
    },
    "id": "1gsOzjvwq02T",
    "outputId": "22db0748-fd42-4d20-95fe-b78acc1afe9d"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PetalLength    4.4\n",
       "PetalWidth     1.2\n",
       "Name: 90, dtype: float64"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tmp = X_train.iloc[90]\n",
    "\n",
    "tmp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 178
    },
    "id": "EZSjAunXq02T",
    "outputId": "0fea4cad-c7e1-4ef4-8024-544f5e69d6ab"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "r    4.10\n",
       "b    0.61\n",
       "g    0.16\n",
       "dtype: float64"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "((tmp - centroids)**2).sum(axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 522
    },
    "id": "ZQegd5DUq02U",
    "outputId": "76b4ebc8-8deb-4143-fbcf-9556fa9040a0"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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Q0RERFylYkNERERcpWJDREREXKViQ0RERFylYkNERERcpWJDREREXKViQ0RERFylYkNERERcpWJDREREXKViQ0RERFylYkNERERcpWJDREREXKViQ0RERFylYkNERERcpWJDREREXKViQ0RERFylYkNERERcpWJDREREXKViQ0RERFylYkNERERcpWJDREREXKViQ0RERFylYkNERERcpWJDREREXKViQ0RERFylYkNERERcpWJDREREXKViQ0RERFylYkNERERcpWJDREREXKViQ0RERFylYkNERERcpWJDREREXKViI4W8Xi/W2oht1lq8Xu8A90hERCT5VGykiNfrpa6ujuXLl/cqOKy1LF++nLq6OhUcIiKS8VRspEhhYSFnnHEG69at61ZwBAuNdevWccYZZ1BYWJjajoqIiDg0KNUdyFXGGKZNmwbAunXrAJg2bVq3QmPatGkYY1LZTREREcdUbKRQz4IjWHSo0BARkWyi2ygpFl5wBKnQEBGRbKJiI8WCczTCRZo0KiIikql0GyWFek4GDZ+zAbrCISIi2UHFRopEKjT6mjSqgkNERDKZio0UaWtri7jqpGfBUVRUxOjRo1PZVREREUdMquYGlJSU2Obm5pQcO114vV4KCwsjXrmw1tLW1qZCQ0REMoIxZoO1tiRSm65spFC0QsIYo0JDRESyglajiIiIiKtUbKQxBbWJiEg2iKvYMMZMN8ZsNMZsNsb8OEL7JGPMh8aYv3V+VSe/q7lFQW0iIpItYs7ZMMbkA/cDU4BtwAvGmD9ba1/r8dY11tqvudDHnBQe1AZdS2AV1CYiIpkmngmi44HN1tpWAGPMYuAbQM9iQ5JIQW0iIpIt4ik2PgO8FfZ6G3B6hPeVGmNeArYDc621ryahfzlNQW0iIpIN4pmzEekTreesxReBUdbaU4H7gD9G3JExc4wxzcaY5p07dybU0VyloDYREcl08RQb24Djw16PJHD1IsRau8dau6/z+6VAgTFmeM8dWWsfttaWWGtLRowY4aDbuUNBbSIikuniuY3yAnCSMWY08DYwE7g4/A3GmGOAd6211hgznkAR849kdzbXKKhNRESyQcxiw1rbYYz5PrAcyAdqrbWvGmOu7Gx/CJgBXGWM6QD2AzOt/vR2REFtIiKSLeJ6XHnnrZGlPX72UNj3vwJ+ldyu5TYFtYmISLZQ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\n",
      "text/plain": [
       "<Figure size 648x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "f2 = plt.figure(figsize = (9,6))\n",
    "\n",
    "### plot all points\n",
    "plt.scatter(x= X_train[\"PetalLength\"],\n",
    "            y= X_train[\"PetalWidth\"],\n",
    "            c=\"black\", marker=\"x\", s= 80, alpha=.5)\n",
    "\n",
    "### plot colored centroids\n",
    "plt.scatter(x=centroids[\"PetalLength\"],\n",
    "            y=centroids[\"PetalWidth\"],\n",
    "            c=centroids.index, s = 100)\n",
    "\n",
    "### plot the point we selected\n",
    "\n",
    "plt.scatter(x = tmp[\"PetalLength\"],\n",
    "            y = tmp[\"PetalWidth\"],\n",
    "            c = \"cyan\", marker = \"s\", s=200 )\n",
    "\n",
    "## plot distances to centroids\n",
    "\n",
    "for (p, clr) in zip(centroids.iloc, centroids.index):\n",
    "  x = np.array([tmp[\"PetalLength\"], p[\"PetalLength\"]])\n",
    "  y = np.array([tmp[\"PetalWidth\"], p[\"PetalWidth\"]])\n",
    "  plt.plot(x,y, color = clr,\n",
    "          linestyle = \"--\",\n",
    "          linewidth = 3)\n",
    "\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 36
    },
    "id": "J4MtsHos1loJ",
    "outputId": "7e75bcca-876b-4649-eba2-14c3a130b577"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'g'"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Finds the nearest centroid to a given observation.\n",
    "def get_nearest_centroid(obs):\n",
    "    dists = np.sqrt(((obs - centroids) ** 2).sum(axis=1))\n",
    "    return dists.idxmin()\n",
    "\n",
    "get_nearest_centroid(X_train.loc[90])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 466
    },
    "id": "33vamCDa1loN",
    "outputId": "d6eaf027-a345-4f90-9fbe-540eb91d41da"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='PetalLength', ylabel='PetalWidth'>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "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": [
    "# Apply the function to the entire data set.\n",
    "clusters = X_train.apply(get_nearest_centroid, axis=1)\n",
    "\n",
    "# Plot the cluster assignments.\n",
    "ax = X_train.plot.scatter(x=\"PetalLength\", y=\"PetalWidth\",\n",
    "                          c=clusters, marker=\"x\", alpha=.5)\n",
    "centroids.plot.scatter(x=\"PetalLength\", y=\"PetalWidth\",\n",
    "                       c=centroids.index, s = 100, ax=ax)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "7GTX3HBb1loS"
   },
   "source": [
    "Notice that some of the centroids are not at the center of their clusters. We can fix that by redefining the centroid to be the mean of the points in its cluster."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 143
    },
    "id": "nub9Ke5Yq02V",
    "outputId": "e087dce0-1239-4d7e-dec3-f429ebd1d65c"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PetalLength</th>\n",
       "      <th>PetalWidth</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>4.931111</td>\n",
       "      <td>1.7200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>g</th>\n",
       "      <td>2.405000</td>\n",
       "      <td>0.6075</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>r</th>\n",
       "      <td>5.980000</td>\n",
       "      <td>2.1520</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PetalLength  PetalWidth\n",
       "b     4.931111      1.7200\n",
       "g     2.405000      0.6075\n",
       "r     5.980000      2.1520"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.groupby(clusters).mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 575
    },
    "id": "ZZ8zXdpA1loT",
    "outputId": "8beb9ed9-6f27-4959-ecb9-b8a83bb70193"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PetalLength</th>\n",
       "      <th>PetalWidth</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>4.931111</td>\n",
       "      <td>1.7200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>g</th>\n",
       "      <td>2.405000</td>\n",
       "      <td>0.6075</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>r</th>\n",
       "      <td>5.980000</td>\n",
       "      <td>2.1520</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PetalLength  PetalWidth\n",
       "b     4.931111      1.7200\n",
       "g     2.405000      0.6075\n",
       "r     5.980000      2.1520"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "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 the mean length and width for each cluster.\n",
    "\n",
    "old_centroids = centroids.copy()\n",
    "\n",
    "centroids = X_train.groupby(clusters).mean()\n",
    "\n",
    "# Let's plot the new centroids.\n",
    "ax = X_train.plot.scatter(x=\"PetalLength\", y=\"PetalWidth\",\n",
    "                          c=clusters, marker=\"x\", alpha=.5)\n",
    "old_centroids.plot.scatter(x=\"PetalLength\", y = \"PetalWidth\",\n",
    "                           c = old_centroids.index, s =100, marker = \"s\", ax=ax)\n",
    "centroids.plot.scatter(x=\"PetalLength\", y=\"PetalWidth\",\n",
    "                       c=centroids.index, s = 100, ax=ax)\n",
    "\n",
    "centroids"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "53wheguP1loW"
   },
   "source": [
    "Now, there may be some points that are no longer assigned to their closest centroid, so we have to go back and re-assign clusters. But that may cause the centroids to no longer be at the center of their cluster, so we have to recalculate the centroids. And so on. This process continues until the cluster assignments stop changing."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 898
    },
    "id": "-6pANF0j1loY",
    "outputId": "c360a1f8-1ee5-46df-db4e-f6603e4fb290"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='PetalLength', ylabel='PetalWidth'>"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "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": [
    "\n",
    "old_clusters = clusters.copy()\n",
    "\n",
    "# Assign points to their nearest centroid.\n",
    "clusters = X_train.apply(get_nearest_centroid, axis=1)\n",
    "\n",
    "# Recalculate the centroids based on the clusters.\n",
    "centroids = X_train.groupby(clusters).mean()\n",
    "\n",
    "# Plot the current cluster assignments and the centroids.\n",
    "ax = X_train.plot.scatter(x=\"PetalLength\", y=\"PetalWidth\",\n",
    "                          c=clusters, marker=\"x\", alpha=.5)\n",
    "centroids.plot.scatter(x=\"PetalLength\", y=\"PetalWidth\",\n",
    "                       c=centroids.index, s=100, ax=ax)\n",
    "\n",
    "\n",
    "\n",
    "# Plot the current cluster assignments and the centroids.\n",
    "ax2 = X_train.plot.scatter(x=\"PetalLength\", y=\"PetalWidth\",\n",
    "                          c=old_clusters, marker=\"x\", alpha=.5)\n",
    "centroids.plot.scatter(x=\"PetalLength\", y=\"PetalWidth\",\n",
    "                       c=centroids.index, s=100, ax=ax2)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "tsC4v8ZR1lob"
   },
   "source": [
    "We can run the code in the above cell over and over until the clusters stop changing. This is the final cluster assignment.\n",
    "\n",
    "It is not so easy to visualize the clusters when there are more than 2 features. But we can wrap the same algorithm inside a loop that continues until the cluster assignments do not change from one step to the next. One of the exercises below walks you through such an implementation.\n",
    "\n",
    "# K-Means in _scikit-learn_\n",
    "\n",
    "We rarely need to implement the $k$-means algorithm from scratch because it is available in _scikit-learn_. The API for _scikit-learn_'s $k$-means model is similar to the API for supervised learning models, like $k$-nearest neighbors, except that the `.fit()` method only takes in `X`, not `X` and `y`. This makes sense because in unsupervised learning, there are no ground truth labels `y`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 74
    },
    "id": "S5zTk9MI1lod",
    "outputId": "dfb72f62-47a4-476c-ae56-64c10f864824"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-2 {color: black;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KMeans(init=&#x27;random&#x27;, n_clusters=3, n_init=1, random_state=100)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KMeans</label><div class=\"sk-toggleable__content\"><pre>KMeans(init=&#x27;random&#x27;, n_clusters=3, n_init=1, random_state=100)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "KMeans(init='random', n_clusters=3, n_init=1, random_state=100)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "\n",
    "model = KMeans(n_clusters=3, init= 'random', n_init=1, random_state = 100)\n",
    "model.fit(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "Xywvpg_y1lol",
    "outputId": "420cd7d7-824f-4057-eef5-9282c907690a"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([[4.26923077, 1.34230769],\n",
       "        [1.464     , 0.244     ],\n",
       "        [5.59583333, 2.0375    ]]),\n",
       " array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "        1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2,\n",
       "        2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2,\n",
       "        2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], dtype=int32))"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Extract the centroids and the clusters.\n",
    "centroids = model.cluster_centers_\n",
    "clusters = model.labels_\n",
    "\n",
    "centroids, clusters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 466
    },
    "id": "qtWZ0V7v1loq",
    "outputId": "615dd92a-333b-4782-88e8-b8c77fe61cb9"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: xlabel='PetalLength', ylabel='PetalWidth'>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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QX5+vqwtPz8fvXv3Rq9eve56jKOjI3r37i17ERFEIHLggPh59mzg22/FIyobG5Hom5bW9PHbtomRl+HDRQ7L55+Lxz6FhabzNubqVZE87OoKvPiiqPx9772mKujtSQVMSRHJw+7uwMsvi3MPGmQqxnnypMgxCgoSVdYXLAAcHUWAc/Nm269LRBajVbOlzC08PBwH7vhL8/DhwwgPDzdTj4i6MXd3kUx8/LgIAgCRgwOIEY/6FbfvZvVqEdC88ooIUlxdRb7NoUPAokVNHxsSIkZJhgwx5djMmQPExgIPPND2mVIAEB4ugpfRo8U9AiIH5+RJYMoUcd34ePGzjY0pB6eoCBgxou3XJSKLYdbZUpWVlUhPTwcAhISE4LPPPsO0adPQt29fDBw4EKtWrUJOTg42bdoEQEwFHz16NJYsWYJFixbh2LFjWLZsGfbv39/iqeCcLUVERNT9dJvZUufOnUNISAhCQkIAACtXrkRISAj++N/n+Hl5ecjKyjLuP3jwYOzfvx+HDx9GUFAQPv30U3z99ddc44aIiIiMLGadm67CkRsiIqLup9uM3BARERF1NAY3REREZFUY3BAREZFVYXBDREREVoXBDREREVkVBjdERERkVRjcEBERkVVhcENERERWhcENERERWRUGN0RERGRVGNwQERGRVWFwQ0RERFaFwQ0RERFZFQY3REREZFUY3BAREZFVYXBDREREVoXBDREREVkVBjdERERkVRjcEBERkVVhcENERERWhcENERERWRUGN0RERGRVGNwQERGRVWFwQ0RERFaFwQ0RERFZFQY3REREZFUY3BAREZFVYXBDREREVoXBDREREVkVBjdERERkVRjcEBERkVVhcENERERWhcENERERWRUGN0RERGRVGNwQERGRVWFwQ0RERFaFwQ0RERFZFQY3REREZFUY3BAREZFVYXBDREREVoXBDREREVkVBjdERERkVRjcEBERkVVhcENERERWhcENERERWRUGNz1UXh7www+ATmdqu3ABOHnSfH0iIiLqCHbm7gB1PZ0O+PZbQKUC1Gpgzhzg0iVgzx5AkgBfX2DoUHP3koiIqG04ctMD2dkBs2cD9vbAtWvAhx8Cu3eLwGbCBGDIEHP3kIiIqO0Y3PRQQ4YA8+bJ28aPB2bOBBQK8/SJiIioIzC46cHKy+XvVSpArzdPX4iIiDoK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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Map the cluster numbers to colors.\n",
    "clusters = pd.Series(clusters).map({\n",
    "    0: \"r\",\n",
    "    1: \"b\",\n",
    "    2: \"g\"\n",
    "})\n",
    "\n",
    "# Plot the data\n",
    "X_train.plot.scatter(x=\"PetalLength\", y=\"PetalWidth\",\n",
    "                     c=clusters, marker=\"x\", alpha=.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "FiaAIkib1lou"
   },
   "source": [
    "We can call `model.predict()` to get the cluster assignment for a new observation. This will simply assign the new observation to the nearest cluster without recalculating the centroids. (If this observation had been in the training data, then assigning the new observation to a cluster would require recalculating the centroid, which would in turn require reassigning observations to clusters, and so on.)\n",
    "\n",
    "For example, consider a flower whose petal has a length of 5.0 and a width of 0.5. It's obvious which cluster this point should be assigned to. Let's check that this is indeed the case, by calling `.predict()` on our fitted model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "7LtOvWDW1lov"
   },
   "outputs": [],
   "source": [
    "model.predict([[5.0, 0.5]])"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "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.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}