Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Daethyra/520c4a5289faf8b73c17a41201ce2dce to your computer and use it in GitHub Desktop.
Save Daethyra/520c4a5289faf8b73c17a41201ce2dce to your computer and use it in GitHub Desktop.
Clustering: Supervised Similarity w/ chocolates
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"collapsed_sections": [
"9EjQt_o9Xf_L",
"MJtuP9w5jJHq"
],
"gpuType": "T4",
"name": "clustering-supervised-similarity-with-chocolates.ipynb",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/Daethyra/520c4a5289faf8b73c17a41201ce2dce/copy-of-clustering-supervised-similarity-with-chocolates.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9EjQt_o9Xf_L"
},
"source": [
"#### Copyright 2018 Google LLC."
]
},
{
"cell_type": "code",
"metadata": {
"id": "oXzTW-CnXf_Q"
},
"source": [
"#@title\n",
"# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
"# you may not use this file except in compliance with the License.\n",
"# You may obtain a copy of the License at\n",
"#\n",
"# https://www.apache.org/licenses/LICENSE-2.0\n",
"#\n",
"# Unless required by applicable law or agreed to in writing, software\n",
"# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
"# See the License for the specific language governing permissions and\n",
"# limitations under the License."
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "9NkysjxvKAli"
},
"source": [
"# Supervised Similarity Measure\n",
"We'll cluster chocolates in the [Chocolate Bar Ratings](https://www.kaggle.com/rtatman/chocolate-bar-ratings) dataset using k-means with a supervised similarity measure. The dataset has ratings\n",
"of chocolate bars along with their cocoa percentage, bean type, bean origin,\n",
"maker name, and maker country. You will:\n",
"\n",
"* Load and clean the data.\n",
"* Process the data.\n",
"* Generate embeddings by training a DNN.\n",
"* Cluster the chocolates using k-means.\n",
"* Check the clustering result using quality metrics.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2X92CHu-KDOi"
},
"source": [
"# 1. Load and clean data\n",
"Run the section below to load and clean the dataset. You do not need to understand the code. The code displays data for the first few chocolates."
]
},
{
"cell_type": "code",
"metadata": {
"cellView": "form",
"id": "Sq-yxIzRO4R2",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 382
},
"outputId": "a5686d99-f8b8-4a18-8192-916056a94a47"
},
"source": [
"#@title Run to load and clean the dataset\n",
"%reset -f\n",
"from __future__ import print_function\n",
"\n",
"import math\n",
"import numpy as np\n",
"import numpy.linalg as nla\n",
"import pandas as pd\n",
"import re\n",
"import six\n",
"from os.path import join\n",
"from matplotlib import pyplot as plt\n",
"\n",
"import tensorflow.compat.v1 as tf\n",
"tf.disable_v2_behavior()\n",
"\n",
"\n",
"# Set the output display to have one digit for decimal places and limit it to\n",
"# printing 15 rows.\n",
"pd.options.display.float_format = '{:.2f}'.format\n",
"pd.options.display.max_rows = 15\n",
"\n",
"choc_data = pd.read_csv(\"https://download.mlcc.google.com/mledu-datasets/flavors_of_cacao.csv\", sep=\",\", encoding='latin-1')\n",
"\n",
"# We can rename the columns.\n",
"choc_data.columns = ['maker', 'specific_origin', 'reference_number', 'review_date', 'cocoa_percent', 'maker_location', 'rating', 'bean_type', 'broad_origin']\n",
"\n",
"# choc_data.dtypes\n",
"\n",
"# Replace empty/null values with \"Blend\"\n",
"choc_data['bean_type'] = choc_data['bean_type'].fillna('Blend')\n",
"\n",
"#@title Cast bean_type to string to remove leading 'u'\n",
"choc_data['bean_type'] = choc_data['bean_type'].astype(str)\n",
"choc_data['cocoa_percent'] = choc_data['cocoa_percent'].str.strip('%')\n",
"choc_data['cocoa_percent'] = pd.to_numeric(choc_data['cocoa_percent'])\n",
"\n",
"#@title Correct spelling mistakes, and replace city with country name\n",
"choc_data['maker_location'] = choc_data['maker_location']\\\n",
".str.replace('Amsterdam', 'Holland')\\\n",
".str.replace('U.K.', 'England')\\\n",
".str.replace('Niacragua', 'Nicaragua')\\\n",
".str.replace('Domincan Republic', 'Dominican Republic')\n",
"\n",
"# Adding this so that Holland and Netherlands map to the same country.\n",
"choc_data['maker_location'] = choc_data['maker_location']\\\n",
".str.replace('Holland', 'Netherlands')\n",
"\n",
"def cleanup_spelling_abbrev(text):\n",
" replacements = [\n",
" ['-', ', '], ['/ ', ', '], ['/', ', '], ['\\(', ', '], [' and', ', '], [' &', ', '], ['\\)', ''],\n",
" ['Dom Rep|DR|Domin Rep|Dominican Rep,|Domincan Republic', 'Dominican Republic'],\n",
" ['Mad,|Mad$', 'Madagascar, '],\n",
" ['PNG', 'Papua New Guinea, '],\n",
" ['Guat,|Guat$', 'Guatemala, '],\n",
" ['Ven,|Ven$|Venez,|Venez$', 'Venezuela, '],\n",
" ['Ecu,|Ecu$|Ecuad,|Ecuad$', 'Ecuador, '],\n",
" ['Nic,|Nic$', 'Nicaragua, '],\n",
" ['Cost Rica', 'Costa Rica'],\n",
" ['Mex,|Mex$', 'Mexico, '],\n",
" ['Jam,|Jam$', 'Jamaica, '],\n",
" ['Haw,|Haw$', 'Hawaii, '],\n",
" ['Gre,|Gre$', 'Grenada, '],\n",
" ['Tri,|Tri$', 'Trinidad, '],\n",
" ['C Am', 'Central America'],\n",
" ['S America', 'South America'],\n",
" [', $', ''], [', ', ', '], [', ,', ', '], ['\\xa0', ' '],[',\\s+', ','],\n",
" [' Bali', ',Bali']\n",
" ]\n",
" for i, j in replacements:\n",
" text = re.sub(i, j, text)\n",
" return text\n",
"\n",
"choc_data['specific_origin'] = choc_data['specific_origin'].str.replace('.', '').apply(cleanup_spelling_abbrev)\n",
"\n",
"#@title Cast specific_origin to string\n",
"choc_data['specific_origin'] = choc_data['specific_origin'].astype(str)\n",
"\n",
"#@title Replace null-valued fields with the same value as for specific_origin\n",
"choc_data['broad_origin'] = choc_data['broad_origin'].fillna(choc_data['specific_origin'])\n",
"\n",
"#@title Clean up spelling mistakes and deal with abbreviations\n",
"choc_data['broad_origin'] = choc_data['broad_origin'].str.replace('.', '').apply(cleanup_spelling_abbrev)\n",
"\n",
"# Change 'Trinitario, Criollo' to \"Criollo, Trinitario\"\n",
"# Check with choc_data['bean_type'].unique()\n",
"choc_data.loc[choc_data['bean_type'].isin(['Trinitario, Criollo']),'bean_type'] = \"Criollo, Trinitario\"\n",
"# Confirm with choc_data[choc_data['bean_type'].isin(['Trinitario, Criollo'])]\n",
"\n",
"# Fix chocolate maker names\n",
"choc_data.loc[choc_data['maker']=='Shattel','maker'] = 'Shattell'\n",
"choc_data['maker'] = choc_data['maker'].str.replace(u'Na\\xef\\xbf\\xbdve','Naive')\n",
"\n",
"choc_data.head()"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"WARNING:tensorflow:From /usr/local/lib/python3.10/dist-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"non-resource variables are not supported in the long term\n",
"<ipython-input-2-920e2ff08054>:41: FutureWarning: The default value of regex will change from True to False in a future version.\n",
" .str.replace('U.K.', 'England')\\\n",
"<ipython-input-2-920e2ff08054>:74: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
" choc_data['specific_origin'] = choc_data['specific_origin'].str.replace('.', '').apply(cleanup_spelling_abbrev)\n",
"<ipython-input-2-920e2ff08054>:83: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
" choc_data['broad_origin'] = choc_data['broad_origin'].str.replace('.', '').apply(cleanup_spelling_abbrev)\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
" maker specific_origin reference_number review_date cocoa_percent \\\n",
"0 A. Morin Agua Grande 1876 2016 63.00 \n",
"1 A. Morin Kpime 1676 2015 70.00 \n",
"2 A. Morin Atsane 1676 2015 70.00 \n",
"3 A. Morin Akata 1680 2015 70.00 \n",
"4 A. Morin Quilla 1704 2015 70.00 \n",
"\n",
" maker_location rating bean_type broad_origin \n",
"0 France 3.75 Blend Sao Tome \n",
"1 France 2.75 Blend Togo \n",
"2 France 3.00 Blend Togo \n",
"3 France 3.50 Blend Togo \n",
"4 France 3.50 Blend Peru "
],
"text/html": [
"\n",
" <div id=\"df-fa360949-bede-4c14-9eef-7b8df98105cf\" class=\"colab-df-container\">\n",
" <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>maker</th>\n",
" <th>specific_origin</th>\n",
" <th>reference_number</th>\n",
" <th>review_date</th>\n",
" <th>cocoa_percent</th>\n",
" <th>maker_location</th>\n",
" <th>rating</th>\n",
" <th>bean_type</th>\n",
" <th>broad_origin</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>A. Morin</td>\n",
" <td>Agua Grande</td>\n",
" <td>1876</td>\n",
" <td>2016</td>\n",
" <td>63.00</td>\n",
" <td>France</td>\n",
" <td>3.75</td>\n",
" <td>Blend</td>\n",
" <td>Sao Tome</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>A. Morin</td>\n",
" <td>Kpime</td>\n",
" <td>1676</td>\n",
" <td>2015</td>\n",
" <td>70.00</td>\n",
" <td>France</td>\n",
" <td>2.75</td>\n",
" <td>Blend</td>\n",
" <td>Togo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>A. Morin</td>\n",
" <td>Atsane</td>\n",
" <td>1676</td>\n",
" <td>2015</td>\n",
" <td>70.00</td>\n",
" <td>France</td>\n",
" <td>3.00</td>\n",
" <td>Blend</td>\n",
" <td>Togo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>A. Morin</td>\n",
" <td>Akata</td>\n",
" <td>1680</td>\n",
" <td>2015</td>\n",
" <td>70.00</td>\n",
" <td>France</td>\n",
" <td>3.50</td>\n",
" <td>Blend</td>\n",
" <td>Togo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>A. Morin</td>\n",
" <td>Quilla</td>\n",
" <td>1704</td>\n",
" <td>2015</td>\n",
" <td>70.00</td>\n",
" <td>France</td>\n",
" <td>3.50</td>\n",
" <td>Blend</td>\n",
" <td>Peru</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-fa360949-bede-4c14-9eef-7b8df98105cf')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-fa360949-bede-4c14-9eef-7b8df98105cf button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-fa360949-bede-4c14-9eef-7b8df98105cf');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-6b988013-daf3-40ac-8f20-12db23a48b9e\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-6b988013-daf3-40ac-8f20-12db23a48b9e')\"\n",
" title=\"Suggest charts.\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-6b988013-daf3-40ac-8f20-12db23a48b9e button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 2
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Gtw73LZKeDux"
},
"source": [
"# 2. Process Data\n",
"Because you're using a DNN, you do not need to manually process the data. The DNN transforms the data for us. However, if possible, you should remove features that could distort the similarity calculation. Here, the features `review_date` and `reference_number` are not correlated with similarity. That is, chocolates that are reviewed closer together in time are not more or less similar than chocolates reviewed further apart. Remove these two features by running the following code."
]
},
{
"cell_type": "code",
"metadata": {
"id": "BQKj_NVSecDx",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"outputId": "437404ab-36ca-4613-b551-1f9e22f45081"
},
"source": [
"choc_data.drop(columns=['review_date','reference_number'],inplace=True)\n",
"choc_data.head()"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" maker specific_origin cocoa_percent maker_location rating bean_type \\\n",
"0 A. Morin Agua Grande 63.00 France 3.75 Blend \n",
"1 A. Morin Kpime 70.00 France 2.75 Blend \n",
"2 A. Morin Atsane 70.00 France 3.00 Blend \n",
"3 A. Morin Akata 70.00 France 3.50 Blend \n",
"4 A. Morin Quilla 70.00 France 3.50 Blend \n",
"\n",
" broad_origin \n",
"0 Sao Tome \n",
"1 Togo \n",
"2 Togo \n",
"3 Togo \n",
"4 Peru "
],
"text/html": [
"\n",
" <div id=\"df-57feeb39-0f64-4b19-8d29-49c2a15234f0\" class=\"colab-df-container\">\n",
" <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>maker</th>\n",
" <th>specific_origin</th>\n",
" <th>cocoa_percent</th>\n",
" <th>maker_location</th>\n",
" <th>rating</th>\n",
" <th>bean_type</th>\n",
" <th>broad_origin</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>A. Morin</td>\n",
" <td>Agua Grande</td>\n",
" <td>63.00</td>\n",
" <td>France</td>\n",
" <td>3.75</td>\n",
" <td>Blend</td>\n",
" <td>Sao Tome</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>A. Morin</td>\n",
" <td>Kpime</td>\n",
" <td>70.00</td>\n",
" <td>France</td>\n",
" <td>2.75</td>\n",
" <td>Blend</td>\n",
" <td>Togo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>A. Morin</td>\n",
" <td>Atsane</td>\n",
" <td>70.00</td>\n",
" <td>France</td>\n",
" <td>3.00</td>\n",
" <td>Blend</td>\n",
" <td>Togo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>A. Morin</td>\n",
" <td>Akata</td>\n",
" <td>70.00</td>\n",
" <td>France</td>\n",
" <td>3.50</td>\n",
" <td>Blend</td>\n",
" <td>Togo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>A. Morin</td>\n",
" <td>Quilla</td>\n",
" <td>70.00</td>\n",
" <td>France</td>\n",
" <td>3.50</td>\n",
" <td>Blend</td>\n",
" <td>Peru</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-57feeb39-0f64-4b19-8d29-49c2a15234f0')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-57feeb39-0f64-4b19-8d29-49c2a15234f0 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-57feeb39-0f64-4b19-8d29-49c2a15234f0');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-c3c744d4-6b3e-4e56-8f0e-0ac5ebfe423b\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-c3c744d4-6b3e-4e56-8f0e-0ac5ebfe423b')\"\n",
" title=\"Suggest charts.\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-c3c744d4-6b3e-4e56-8f0e-0ac5ebfe423b button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 3
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "UnH92sD8e1ri"
},
"source": [
"# 3. Generate Embeddings from DNN\n",
"\n",
"We're ready to generate embeddings by training the DNN on the feature data. This section draws on concepts discussed on the page [Supervised Similarity Measure](https://developers.google.com/machine-learning/clustering/similarity/supervised-similarity).\n",
"\n",
"Run the section below to set up functions to train the DNN that generates embeddings. You do not need to understand the code."
]
},
{
"cell_type": "code",
"metadata": {
"cellView": "form",
"id": "S1IyjxoUv57M"
},
"source": [
"#@title Functions to Build and Train a Similarity DNN Model\n",
"\n",
"class SimilarityModel(object):\n",
" \"\"\"Class to build, train, and inspect a Similarity Model.\n",
"\n",
" This class builds a deep neural network that maps a dataset of entities\n",
" with heterogenous features to an embedding space.\n",
" Given a dataset as a pandas dataframe, determine the model by specifying\n",
" the set of features used as input and as labels to the DNN, and the\n",
" size of each hidden layer. The data is mapped to the embedding space\n",
" in the last hidden layer.\n",
"\n",
" To build an auto-encoder, make the set of output features identical to the set\n",
" of input features. Alternatively, build a predictor by using a single feature\n",
" as the label. When using a single feature as a label, ensure\n",
" this feature is removed from the input, or add at least\n",
" one hidden layer of a sufficiently low dimension such that the model cannot\n",
" trivially learn the label.\n",
" Caveat: The total loss being minimized is a simple sum of losses for each\n",
" output label (plus the regularization). If the output feature set combines\n",
" sparse and dense features, the total loss is a sum of cross-entropy soft-max\n",
" losses with root mean squared error losses, potentially in different scales,\n",
" which could emphasis some output labels more than others.\n",
" \"\"\"\n",
"\n",
" def __init__(self,\n",
" dataframe,\n",
" input_feature_names,\n",
" output_feature_names,\n",
" dense_feature_names,\n",
" sparse_input_feature_embedding_dims,\n",
" hidden_dims=[32],\n",
" l2_regularization=0.0,\n",
" use_bias=True,\n",
" batch_size=100,\n",
" inspect=False):\n",
" \"\"\"Build a similarity model.\n",
"\n",
" Args:\n",
" dataframe: the pandas dataframe used to train and validate the model.\n",
" input_feature_names: list of strings, names of input feature columns.\n",
" output_feature_names: list of strings, names of output feature columns.\n",
" dense_feature_names: list of strings, names of feature columns that are\n",
" treated as dense. All other feature columns are treated as sparse.\n",
" sparse_input_feature_embedding_dims: dictionary that maps feature names to\n",
" ints, expressing the embedding dimension of each input feature. Any\n",
" sparse feature in input_feature_names must be in this dictionary.\n",
" hidden_dims: list of ints, dimensions of each hidden layer. These hidden\n",
" layers are not counting the first layer which is a concatenation of the\n",
" input embeddings and the dense input features. Hence, this list can be\n",
" empty, in which case the outputs of the network are directly connected\n",
" to the input embeddings and/or dense inputs.\n",
" use_bias: bool, if true, add a bias term to each hidden layer.\n",
" batch_size: int, batch size.\n",
" inspect: bool, if true, add each tensor of the model to the list of\n",
" tensors that are inspected.\n",
" \"\"\"\n",
" used_feature_names = tuple(\n",
" set(input_feature_names).union(output_feature_names))\n",
" sparse_feature_names = tuple(\n",
" set(used_feature_names).difference(dense_feature_names))\n",
" # Dictionary mapping each sparse feature column to its vocabulary.\n",
" ### sparse_feature_vocabs = { 'maker': [u'A. Morin', u'AMMA', ...], ... }\n",
" sparse_feature_vocabs = {\n",
" sfn: sorted(list(set(choc_data[sfn].values)))\n",
" for sfn in sparse_feature_names\n",
" }\n",
"\n",
" # Sparse output features are mapped to ids via tf.feature_to_id, hence\n",
" # we need key-id pairs for these vocabularies.\n",
" sparse_output_feature_names = (\n",
" tuple(set(sparse_feature_names).intersection(output_feature_names)))\n",
" keys_and_values = {}\n",
" for fn in sparse_output_feature_names:\n",
" keys = tf.constant(\n",
" sparse_feature_vocabs[fn],\n",
" dtype=tf.string,\n",
" name='{}_vocab_keys'.format(fn))\n",
" values = tf.range(\n",
" len(sparse_feature_vocabs[fn]),\n",
" dtype=tf.int64,\n",
" name='{}_vocab_values'.format(fn))\n",
" keys_and_values[fn] = (keys, values)\n",
"\n",
" # Class instance data members.\n",
" self._session = None\n",
" self._loss = None\n",
" self._metrics = {}\n",
" self._embeddings = None\n",
" self._vars_to_inspect = {}\n",
"\n",
" def split_dataframe(df, holdout_fraction=0.1):\n",
" \"\"\"Splits a pandas dataframe into training and test sets.\n",
"\n",
" Args:\n",
" df: the source pandas dataframe.\n",
" holdout_fraction: fraction of dataframe rows to use in the test set.\n",
"\n",
" Returns:\n",
" A pair of non-overlapping pandas dataframe for training and holdout.\n",
" \"\"\"\n",
" test = df.sample(frac=holdout_fraction, replace=False)\n",
" train = df[~df.index.isin(test.index)]\n",
" return train, test\n",
"\n",
" train_dataframe, test_dataframe = split_dataframe(dataframe)\n",
"\n",
" def make_batch(dataframe, batch_size):\n",
" \"\"\"Creates a batch of examples.\n",
"\n",
" Args:\n",
" dataframe: a panda dataframe with rows being examples and with\n",
" columns being feature columns.\n",
" batch_size: the batch size.\n",
"\n",
" Returns:\n",
" A dictionary of tensors, keyed by their feature names.\n",
" Each tensor is of shape [batch_size]. Tensors for sparse features are of\n",
" strings, while tensors for dense features are of floats.\n",
" \"\"\"\n",
" used_features = {ufn: dataframe[ufn] for ufn in used_feature_names}\n",
" batch = (\n",
" tf.data.Dataset.from_tensor_slices(used_features).shuffle(1000)\n",
" .repeat().batch(batch_size).make_one_shot_iterator().get_next())\n",
" if inspect:\n",
" for k, v in six.iteritems(batch):\n",
" self._vars_to_inspect['input_%s' % k] = v\n",
" return batch\n",
"\n",
" def generate_feature_columns(feature_names):\n",
" \"\"\"Creates the list of used feature columns.\n",
"\n",
" Args:\n",
" feature_names: an iterable of strings with the names of the features for\n",
" which feature columns are generated.\n",
"\n",
" Returns:\n",
" A dictionary, keyed by feature names, of _DenseColumn and\n",
" _NumericColumn.\n",
" \"\"\"\n",
" used_sparse_feature_names = (\n",
" tuple(set(sparse_feature_names).intersection(feature_names)))\n",
" used_dense_feature_names = (\n",
" tuple(set(dense_feature_names).intersection(feature_names)))\n",
" f_columns = {}\n",
" for sfn in used_sparse_feature_names:\n",
" sf_column = tf.feature_column.categorical_column_with_vocabulary_list(\n",
" key=sfn,\n",
" vocabulary_list=sparse_feature_vocabs[sfn],\n",
" num_oov_buckets=0)\n",
" f_columns[sfn] = tf.feature_column.embedding_column(\n",
" categorical_column=sf_column,\n",
" dimension=sparse_input_feature_embedding_dims[sfn],\n",
" combiner='mean',\n",
" initializer=tf.truncated_normal_initializer(stddev=.1))\n",
" for dfn in used_dense_feature_names:\n",
" f_columns[dfn] = tf.feature_column.numeric_column(dfn)\n",
" return f_columns\n",
"\n",
" def create_tower(features, columns):\n",
" \"\"\"Creates the tower mapping features to embeddings.\n",
"\n",
" Args:\n",
" features: a dictionary of tensors of shape [batch_size], keyed by\n",
" feature name. Sparse features are associated to tensors of strings,\n",
" while dense features are associated to tensors of floats.\n",
" columns: a dictionary, keyed by feature names, of _DenseColumn and\n",
" _NumericColumn.\n",
"\n",
" Returns:\n",
" A pair of elements: hidden_layer and output_layer.\n",
" hidden_layer is a tensor of shape [batch_size, hidden_dims[-1]].\n",
" output_layer is a dictionary keyed by the output feature names, of\n",
" dictionaries {'labels': labels, 'logits': logits}.\n",
" Dense output features have both labels and logits as float tensors\n",
" of shape [batch_size, 1]. Sparse output features have labels as\n",
" string tensors of shape [batch_size, 1] and logits as float tensors\n",
" of shape [batch_size, len(sparse_feature_vocab)].\n",
" \"\"\"\n",
" # TODO: sanity check the arguments.\n",
" # Input features.\n",
" input_columns = [columns[fn] for fn in input_feature_names]\n",
" hidden_layer = tf.feature_column.input_layer(features, input_columns)\n",
" dense_input_feature_names = (\n",
" tuple(set(dense_feature_names).intersection(input_feature_names)))\n",
" input_dim = (\n",
" sum(sparse_input_feature_embedding_dims.values()) +\n",
" len(dense_input_feature_names))\n",
" for layer_idx, layer_output_dim in enumerate(hidden_dims):\n",
" w = tf.get_variable(\n",
" 'hidden%d_w_' % layer_idx,\n",
" shape=[input_dim, layer_output_dim],\n",
" initializer=tf.truncated_normal_initializer(\n",
" stddev=1.0 / np.sqrt(layer_output_dim)))\n",
" if inspect:\n",
" self._vars_to_inspect['hidden%d_w_' % layer_idx] = w\n",
" hidden_layer = tf.matmul(hidden_layer, w) # / 10.)\n",
" if inspect:\n",
" self._vars_to_inspect['hidden_layer_%d' % layer_idx] = hidden_layer\n",
" input_dim = layer_output_dim\n",
" # Output features.\n",
" output_layer = {}\n",
" for ofn in output_feature_names:\n",
" if ofn in sparse_feature_names:\n",
" feature_dim = len(sparse_feature_vocabs[ofn])\n",
" else:\n",
" feature_dim = 1\n",
" w = tf.get_variable(\n",
" 'output_w_%s' % ofn,\n",
" shape=[input_dim, feature_dim],\n",
" initializer=tf.truncated_normal_initializer(stddev=1.0 /\n",
" np.sqrt(feature_dim)))\n",
" if inspect:\n",
" self._vars_to_inspect['output_w_%s' % ofn] = w\n",
" if use_bias:\n",
" bias = tf.get_variable(\n",
" 'output_bias_%s' % ofn,\n",
" shape=[1, feature_dim],\n",
" initializer=tf.truncated_normal_initializer(stddev=1.0 /\n",
" np.sqrt(feature_dim)))\n",
" if inspect:\n",
" self._vars_to_inspect['output_bias_%s' % ofn] = bias\n",
" else:\n",
" bias = tf.constant(0.0, shape=[1, feature_dim])\n",
" output_layer[ofn] = {\n",
" 'labels':\n",
" features[ofn],\n",
" 'logits':\n",
" tf.add(tf.matmul(hidden_layer, w), bias) # w / 10.), bias)\n",
" }\n",
" if inspect:\n",
" self._vars_to_inspect['output_labels_%s' %\n",
" ofn] = output_layer[ofn]['labels']\n",
" self._vars_to_inspect['output_logits_%s' %\n",
" ofn] = output_layer[ofn]['logits']\n",
" return hidden_layer, output_layer\n",
"\n",
" def similarity_loss(top_embeddings, output_layer):\n",
" \"\"\"Build the loss to be optimized.\n",
"\n",
" Args:\n",
" top_embeddings: First element returned by create_tower.\n",
" output_layer: Second element returned by create_tower.\n",
"\n",
" Returns:\n",
" total_loss: A tensor of shape [1] with the total loss to be optimized.\n",
" losses: A dictionary keyed by output feature names, of tensors of shape\n",
" [1] with the contribution to the loss of each output feature.\n",
" \"\"\"\n",
" losses = {}\n",
" total_loss = tf.scalar_mul(l2_regularization,\n",
" tf.nn.l2_loss(top_embeddings))\n",
" for fn, output in six.iteritems(output_layer):\n",
" if fn in sparse_feature_names:\n",
" losses[fn] = tf.reduce_mean(\n",
" tf.nn.sparse_softmax_cross_entropy_with_logits(\n",
" logits=output['logits'],\n",
" labels=tf.feature_to_id(\n",
" output['labels'], keys_and_values=keys_and_values[fn])))\n",
" else:\n",
" losses[fn] = tf.sqrt(\n",
" tf.reduce_mean(\n",
" tf.square(output['logits'] -\n",
" tf.cast(output['labels'], tf.float32))))\n",
" total_loss += losses[fn]\n",
" return total_loss, losses\n",
"\n",
" # Body of the constructor.\n",
" input_feature_columns = generate_feature_columns(input_feature_names)\n",
" # Train\n",
" with tf.variable_scope('model', reuse=False):\n",
" train_hidden_layer, train_output_layer = create_tower(\n",
" make_batch(train_dataframe, batch_size), input_feature_columns)\n",
" self._train_loss, train_losses = similarity_loss(train_hidden_layer,\n",
" train_output_layer)\n",
" # Test\n",
" with tf.variable_scope('model', reuse=True):\n",
" test_hidden_layer, test_output_layer = create_tower(\n",
" make_batch(test_dataframe, batch_size), input_feature_columns)\n",
" test_loss, test_losses = similarity_loss(test_hidden_layer,\n",
" test_output_layer)\n",
" # Whole dataframe to get final embeddings\n",
" with tf.variable_scope('model', reuse=True):\n",
" self._hidden_layer, _ = create_tower(\n",
" make_batch(dataframe, dataframe.shape[0]), input_feature_columns)\n",
" # Metrics is a dictionary of dictionaries of dictionaries.\n",
" # The 3 levels are used as plots, line colors, and line styles respectively.\n",
" self._metrics = {\n",
" 'total': {\n",
" 'train': {'loss': self._train_loss},\n",
" 'test': {'loss': test_loss}\n",
" },\n",
" 'feature': {\n",
" 'train': {'%s loss' % k: v for k, v in six.iteritems(train_losses)},\n",
" 'test': {'%s loss' % k: v for k, v in six.iteritems(test_losses)}\n",
" }\n",
" }\n",
"\n",
" def train(self,\n",
" num_iterations=30,\n",
" learning_rate=1.0,\n",
" plot_results=True,\n",
" optimizer=tf.train.GradientDescentOptimizer):\n",
" \"\"\"Trains the model.\n",
"\n",
" Args:\n",
" num_iterations: int, the number of iterations to run.\n",
" learning_rate: float, the optimizer learning rate.\n",
" plot_results: bool, whether to plot the results at the end of training.\n",
" optimizer: tf.train.Optimizer, the optimizer to be used for training.\n",
" \"\"\"\n",
" with self._train_loss.graph.as_default():\n",
" opt = optimizer(learning_rate)\n",
" train_op = opt.minimize(self._train_loss)\n",
" opt_init_op = tf.variables_initializer(opt.variables())\n",
" if self._session is None:\n",
" self._session = tf.Session()\n",
" with self._session.as_default():\n",
" self._session.run(tf.global_variables_initializer())\n",
" self._session.run(tf.local_variables_initializer())\n",
" self._session.run(tf.tables_initializer())\n",
" tf.train.start_queue_runners()\n",
"\n",
" with self._session.as_default():\n",
" self._session.run(opt_init_op)\n",
" if plot_results:\n",
" iterations = []\n",
" metrics_vals = {k0: {k1: {k2: []\n",
" for k2 in v1}\n",
" for k1, v1 in six.iteritems(v0)}\n",
" for k0, v0 in six.iteritems(self._metrics)}\n",
"\n",
" # Train and append results.\n",
" for i in range(num_iterations + 1):\n",
" _, results = self._session.run((train_op, self._metrics))\n",
"\n",
" # Printing the 1 liner with losses.\n",
" if (i % 10 == 0) or i == num_iterations:\n",
" print('\\riteration%6d, ' % i + ', '.join(\n",
" ['%s %s %s: %7.3f' % (k0, k1, k2, v2)\n",
" for k0, v0 in six.iteritems(results)\n",
" for k1, v1 in six.iteritems(v0)\n",
" for k2, v2 in six.iteritems(v1)])\n",
" , end=\" \"\n",
" )\n",
" if plot_results:\n",
" iterations.append(i)\n",
" for k0, v0 in six.iteritems(results):\n",
" for k1, v1 in six.iteritems(v0):\n",
" for k2, v2 in six.iteritems(v1):\n",
" metrics_vals[k0][k1][k2].append(results[k0][k1][k2])\n",
"\n",
" # Feedforward the entire dataframe to get all the embeddings.\n",
" self._embeddings = self._session.run(self._hidden_layer)\n",
"\n",
" # Plot the losses and embeddings.\n",
" if plot_results:\n",
" num_subplots = len(metrics_vals) + 1\n",
" colors = 10 * ('red', 'blue', 'black', 'green')\n",
" styles = 10 * ('-', '--', '-.', ':')\n",
" # Plot the metrics.\n",
" fig = plt.figure()\n",
" fig.set_size_inches(num_subplots*10, 8)\n",
" for i0, (k0, v0) in enumerate(six.iteritems(metrics_vals)):\n",
" ax = fig.add_subplot(1, num_subplots, i0+1)\n",
" ax.set_title(k0)\n",
" for i1, (k1, v1) in enumerate(six.iteritems(v0)):\n",
" for i2, (k2, v2) in enumerate(six.iteritems(v1)):\n",
" ax.plot(iterations, v2, label='%s %s' % (k1, k2),\n",
" color=colors[i1], linestyle=styles[i2])\n",
" ax.set_xlim([1, num_iterations])\n",
" ax.set_yscale('log')\n",
" ax.legend()\n",
" # Plot the embeddings (first 3 dimensions).\n",
" ax.legend(loc='upper right')\n",
" ax = fig.add_subplot(1, num_subplots, num_subplots)\n",
" ax.scatter(\n",
" self._embeddings[:, 0], self._embeddings[:, 1],\n",
" alpha=0.5, marker='o')\n",
" ax.set_title('embeddings')\n",
"\n",
"\n",
" @property\n",
" def embeddings(self):\n",
" return self._embeddings"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "Anh93kGFUFEt"
},
"source": [
"The next cell trains the DNN. You can choose either a predictor DNN or an autoencoder DNN by specifying the parameter `output_feature_names` as follows:\n",
"\n",
"* If choosing a predictor DNN, specify one feature, for example, [`rating`].\n",
"* If choosing an autoencoder DNN, specify all features as follows: `['maker','maker_location','broad_origin','cocoa_percent','bean_type','rating']`.\n",
"\n",
"You do not need to change the other parameters, but if you're curious:\n",
"* `l2_regularization`: Controls the weight for L2 regularization.\n",
"* `hidden_dims`: Controls the dimensions of the hidden layers.\n",
"\n",
"Running the next cell generates the following plots:\n",
"\n",
"* '*total*': Total loss across all features.\n",
"* '*feature*': Loss for the specified output features.\n",
"* '*embeddings*': First two dimensions of the generated embeddings."
]
},
{
"cell_type": "code",
"metadata": {
"cellView": "form",
"id": "7vcluIucw0BG",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"outputId": "3f0a8f98-5a71-4cca-a3ca-72e108b3ec7f"
},
"source": [
"#@title Training a DNN Similarity Model\n",
"\n",
"# Define some constants related to this dataset.\n",
"sparse_feature_names = ('maker', 'maker_location', 'broad_origin',\n",
" 'specific_origin', 'bean_type')\n",
"dense_feature_names = ('reference_number', 'review_date', 'cocoa_percent',\n",
" 'rating')\n",
"\n",
"# Set of features used as input to the similarity model.\n",
"input_feature_names = ('maker', 'maker_location', 'broad_origin',\n",
" 'cocoa_percent', 'bean_type','rating', )\n",
"# Set of features used as output to the similarity model.\n",
"output_feature_names = ['rating'] #@param\n",
"\n",
"# As a rule of thumb, a reasonable choice for the embedding dimension of a\n",
"# sparse feature column is the log2 of the cardinality of its vocabulary.\n",
"# sparse_input_feature_embedding_dims = { 'maker': 9, 'maker_location': 6, ... }\n",
"default_embedding_dims = {\n",
" sfn: int(round(math.log(choc_data[sfn].nunique()) / math.log(2)))\n",
" for sfn in set(sparse_feature_names).intersection(input_feature_names)\n",
"}\n",
"# Dictionary mapping each sparse input feature to the dimension of its embedding\n",
"# space.\n",
"sparse_input_feature_embedding_dims = default_embedding_dims # can be a param\n",
"\n",
"# Weight of the L2 regularization applied to the top embedding layer.\n",
"l2_regularization = 10 #@param\n",
"# List of dimensions of the hidden layers of the deep neural network.\n",
"hidden_dims = [20, 10] #@param\n",
"\n",
"print('------ build model')\n",
"with tf.Graph().as_default():\n",
" similarity_model = SimilarityModel(\n",
" choc_data,\n",
" input_feature_names=input_feature_names,\n",
" output_feature_names=output_feature_names,\n",
" dense_feature_names=dense_feature_names,\n",
" sparse_input_feature_embedding_dims=sparse_input_feature_embedding_dims,\n",
" hidden_dims=hidden_dims,\n",
" l2_regularization=l2_regularization,\n",
" batch_size=100,\n",
" use_bias=True,\n",
" inspect=True)\n",
"\n",
"print('------ train model')\n",
"similarity_model.train(\n",
" num_iterations=1000,\n",
" learning_rate=0.1,\n",
" optimizer=tf.train.AdagradOptimizer)\n",
"print('\\n')\n"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"WARNING:tensorflow:From <ipython-input-4-0840690cf28c>:147: categorical_column_with_vocabulary_list (from tensorflow.python.feature_column.feature_column_v2) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use Keras preprocessing layers instead, either directly or via the `tf.keras.utils.FeatureSpace` utility. Each of `tf.feature_column.*` has a functional equivalent in `tf.keras.layers` for feature preprocessing when training a Keras model.\n",
"WARNING:tensorflow:From <ipython-input-4-0840690cf28c>:151: embedding_column (from tensorflow.python.feature_column.feature_column_v2) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use Keras preprocessing layers instead, either directly or via the `tf.keras.utils.FeatureSpace` utility. Each of `tf.feature_column.*` has a functional equivalent in `tf.keras.layers` for feature preprocessing when training a Keras model.\n",
"WARNING:tensorflow:From <ipython-input-4-0840690cf28c>:157: numeric_column (from tensorflow.python.feature_column.feature_column_v2) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use Keras preprocessing layers instead, either directly or via the `tf.keras.utils.FeatureSpace` utility. Each of `tf.feature_column.*` has a functional equivalent in `tf.keras.layers` for feature preprocessing when training a Keras model.\n",
"WARNING:tensorflow:From <ipython-input-4-0840690cf28c>:124: DatasetV1.make_one_shot_iterator (from tensorflow.python.data.ops.dataset_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This is a deprecated API that should only be used in TF 1 graph mode and legacy TF 2 graph mode available through `tf.compat.v1`. In all other situations -- namely, eager mode and inside `tf.function` -- you can consume dataset elements using `for elem in dataset: ...` or by explicitly creating iterator via `iterator = iter(dataset)` and fetching its elements via `values = next(iterator)`. Furthermore, this API is not available in TF 2. During the transition from TF 1 to TF 2 you can use `tf.compat.v1.data.make_one_shot_iterator(dataset)` to create a TF 1 graph mode style iterator for a dataset created through TF 2 APIs. Note that this should be a transient state of your code base as there are in general no guarantees about the interoperability of TF 1 and TF 2 code.\n",
"WARNING:tensorflow:From <ipython-input-4-0840690cf28c>:183: input_layer (from tensorflow.python.feature_column.feature_column) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use Keras preprocessing layers instead, either directly or via the `tf.keras.utils.FeatureSpace` utility. Each of `tf.feature_column.*` has a functional equivalent in `tf.keras.layers` for feature preprocessing when training a Keras model.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.10/dist-packages/tensorflow/python/feature_column/feature_column.py:216: EmbeddingColumn._get_dense_tensor (from tensorflow.python.feature_column.feature_column_v2) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"The old _FeatureColumn APIs are being deprecated. Please use the new FeatureColumn APIs instead.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.10/dist-packages/tensorflow/python/feature_column/feature_column_v2.py:3135: VocabularyListCategoricalColumn._get_sparse_tensors (from tensorflow.python.feature_column.feature_column_v2) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"The old _FeatureColumn APIs are being deprecated. Please use the new FeatureColumn APIs instead.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.10/dist-packages/tensorflow/python/feature_column/feature_column.py:2207: VocabularyListCategoricalColumn._transform_feature (from tensorflow.python.feature_column.feature_column_v2) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"The old _FeatureColumn APIs are being deprecated. Please use the new FeatureColumn APIs instead.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.10/dist-packages/tensorflow/python/feature_column/feature_column_v2.py:3076: VocabularyListCategoricalColumn._num_buckets (from tensorflow.python.feature_column.feature_column_v2) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"The old _FeatureColumn APIs are being deprecated. Please use the new FeatureColumn APIs instead.\n"
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"------ build model\n"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"WARNING:tensorflow:From /usr/local/lib/python3.10/dist-packages/tensorflow/python/feature_column/feature_column.py:220: EmbeddingColumn._variable_shape (from tensorflow.python.feature_column.feature_column_v2) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"The old _FeatureColumn APIs are being deprecated. Please use the new FeatureColumn APIs instead.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.10/dist-packages/tensorflow/python/feature_column/feature_column.py:216: NumericColumn._get_dense_tensor (from tensorflow.python.feature_column.feature_column_v2) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"The old _FeatureColumn APIs are being deprecated. Please use the new FeatureColumn APIs instead.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.10/dist-packages/tensorflow/python/feature_column/feature_column.py:2207: NumericColumn._transform_feature (from tensorflow.python.feature_column.feature_column_v2) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"The old _FeatureColumn APIs are being deprecated. Please use the new FeatureColumn APIs instead.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.10/dist-packages/tensorflow/python/feature_column/feature_column.py:220: NumericColumn._variable_shape (from tensorflow.python.feature_column.feature_column_v2) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"The old _FeatureColumn APIs are being deprecated. Please use the new FeatureColumn APIs instead.\n"
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"------ train model\n"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"WARNING:tensorflow:From /usr/local/lib/python3.10/dist-packages/tensorflow/python/training/adagrad.py:138: calling Constant.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"WARNING:tensorflow:From <ipython-input-4-0840690cf28c>:322: start_queue_runners (from tensorflow.python.training.queue_runner_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"To construct input pipelines, use the `tf.data` module.\n",
"WARNING:tensorflow:`tf.train.start_queue_runners()` was called when no queue runners were defined. You can safely remove the call to this deprecated function.\n"
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"iteration 1000, total train loss: 21.638, total test loss: 48.318, feature train rating loss: 0.494, feature test rating loss: 0.487 \n",
"\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 3000x800 with 3 Axes>"
],
"image/png": "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W1ubduzYIY/H0616pPbPcUaMGCHDMDrdfswxx3T6vePznD3P7ff7NWzYsC7PsadQKKTi4uJO2wYNGtQp8LRp0yaVlZUpEol02m/Pz5mCwaDuuusuXXfddSotLdVnPvMZnX322br00ks1dOjQbtUDAIcKAlMAcBjb84V2T9xxxx264YYbdPnll+u2225TUVGRPB6Prr32Wr5NDQAAAKDbOtYP8+bN0/Tp07vcp+NN+L5Yh+xrHWRZlrxe717bP95d6uP13nPPPTr++OO7PFYsFutWLQAAAAAOno7X7v/+7/++zy88HHfccVqzZo0kdbke+KTtjuMclHr6276ur7euvfZazZw5U08//bQWLVqkG264QXfeeadefPFFnXDCCX16LgA4mAhMAYDLdfVhwFFHHSXbtrV27VqNHj06u72urk6NjY066qijPvH+kvTEE0/o1FNP1S9/+ctO2xsbGzVkyJA+qh4AAADA4a7jW89+v1/Tpk37xH27uw75pC+HDBo0SI2NjXtt37RpU7e+gT18+HBJUn5+/n7rBQAAAJA7xcXFysvLk2VZn/javSMwdaA6utF+3AcffKBIJJLt4NSdeqT2z3FWrVolx3E6rW/ef//9vfbrOPdpp52W3Z5Op7VhwwaNHz++19ez53leeukltbW1deoytW7dui73Hz58uK677jpdd911Wrt2rY4//njde++9+u///u8+qQcA+oMn1wUAAA5MNBqVpE4fCJx11lmSpPnz53fa97777pMkff7zn+90/64+TPB6vXt9e+J///d/tXXr1j6oGgAAAMBAUVJSoqlTp+pnP/uZtm3bttftO3bsyP65u+uQrtZBHYYPH65XX31Vpmlmt/3hD3/Qli1bulXvhAkTNHz4cP3whz9Ua2vrJ9YLAAAAIHe8Xq/OP/98/e53v9OqVav2ur2vX7svW7ZMb775Zvb3LVu26Pe//73OOOMMeb3eHtVz1llnqba2Vk888UR2W1tb216j/CZOnKji4mI99NBDndY4Cxcu7HI91FvTp09XOp3Www8/nN1m27Zqamo67dfW1qZkMtlp2/Dhw5WXl6dUKtVn9QBAf6DDFAC43IQJEyRJ3/3ud/Wv//qv8vv9mjlzpmbNmqWf//znamxs1CmnnKLly5frkUce0bnnnqtTTz210/1/+tOf6vbbb9eIESNUUlKi0047TWeffbZuvfVWzZ49WyeffLLeeecd/eY3v+n2TGwAAAAA6FBTU6N/+qd/0rhx43TllVdq2LBhqqur07Jly/T3v/9db731liR1ex0yfPhwFRYW6qGHHlJeXp6i0agmT56so48+WldccYWeeOIJnXnmmbrwwgu1fv16/fd//3e2c9T+eDwe/eIXv9CMGTM0ZswYzZ49W+Xl5dq6dateeukl5efn6//9v//X548RAAAAgJ77wQ9+oJdeekmTJ0/WlVdeqaqqKjU0NOjNN9/Un/70JzU0NPTZucaOHavp06fr61//uoLBoB588EFJ0i233NLjeq688kr95Cc/0aWXXqo33nhDZWVl+vWvf92pu5PU3qn39ttv11e+8hWddtppuuiii7RhwwYtWLCgTz+vOffcc3XiiSfquuuu07p163TsscfqmWeeydbb0QXrgw8+0Omnn64LL7xQVVVV8vl8euqpp1RXV6d//dd/7bN6AKA/EJgCAJebNGmSbrvtNj300EN6/vnnZdu2NmzYoF/84hcaNmyYFi5cqKeeekpDhw7V9ddfr5tuuqnT/W+88UZt2rRJd999t1paWnTKKafotNNO03/+538qHo/r0Ucf1eOPP65Pf/rT+r//+z995zvfydGVAgAAAHCrqqoqvf7667rlllu0cOFC7dq1SyUlJTrhhBN04403Zvfr7jrE7/frkUce0fXXX6+rr75amUxGCxYs0NFHH63p06fr3nvv1X333adrr71WEydO1B/+8Addd9113a536tSpWrZsmW677Tb95Cc/UWtrq4YOHarJkyfrK1/5Sp89LgAAAAAOTGlpqZYvX65bb71VTz75pB588EENHjxYY8aM0V133dWn5zrllFN00kkn6ZZbbtHmzZtVVVWlhQsX6rjjjutxPZFIRIsXL9Y111yjBx54QJFIRJdccolmzJihM888s9N5r7rqKlmWpXvuuUff+ta3NG7cOD3zzDO64YYb+uzavF6v/u///k/f+MY39Mgjj8jj8ei8887TTTfdpClTpigUCkmSKioqdPHFF2vx4sX69a9/LZ/Pp2OPPVa//e1vdf755/dZPQDQHwxnzz7nAAAAAAAAAAAAAABgQHv66ad13nnn6a9//aumTJmS63IAoE8RmAIAAAAAAAAAAAAAYABLJBIKh8PZ3y3L0hlnnKHXX39d27dv73QbABwOGMkHAAAAAAAAAAAAAMAAds011yiRSOikk05SKpXSk08+qVdeeUV33HEHYSkAhyU6TAEAAAAAAAAAAAAAMIA9+uijuvfee7Vu3Tolk0mNGDFCX/3qVzVnzpxclwYABwWBKQAAAAAAAAAAAAAAAAADhifXBQAAAAAAAAAAAAAAAABAfyEwBQAAAAAAAAAAAAAAAGDA8OW6gJ6ybVu1tbXKy8uTYRi5LgcAAADoxHEctbS06IgjjpDHw/cTsDfWNAAAADhUsZ7B/rCeAQAAwKGsJ2sa1wWmamtrVVFRkesyAAAAgE+0ZcsWfepTn8p1GTgEsaYBAADAoY71DPaF9QwAAADcoDtrGtcFpvLy8iS1X1x+fn6OqwEAAAA6a25uVkVFRfZ1K7An1jQAAAA4VLGewf6wngEAAMChrCdrGtcFpjpavObn5/NiHAAAAIcsRhNgX1jTAAAA4FDHegb7wnoGAAAAbtCdNQ1DyAEAAAAAAAAAAAAAAAAMGASmAAAAAKAf1NTUqKqqSpMmTcp1KQAAAAAAAAAADGgEpgAAAACgH1RXV2vNmjVasWJFrksBAAAAAAAAAGBA8+W6AAAAgIHKsiyl0+lcl4Ee8vv98nq9uS4DAAAAhxHWBuhPrGkAAAAAgMAUAABAv3McR9u3b1djY2OuS0EvFRYWaujQoTIMI9elAAAAwMVYGyBXWNMAAAAAGOgITAEAAPSzjg9ESkpKFIlEeIPaRRzHUVtbm+rr6yVJZWVlOa4IAAAAbsbaAP2NNQ0AAAAAtHNNYKqmpkY1NTWyLCvXpQAAAPSaZVnZD0QGDx6c63LQC+FwWJJUX1+vkpISRlkAAACgV1gbIFdY0wAAAACA5Ml1Ad1VXV2tNWvWaMWKFbkuBQAAoNfS6bQkKRKJ5LgSHIiO56/j+QQAAAB6irUBcok1DQAAAICBzjWBKQAAgMMJozbcjecPAAAAfYXXlsgF/t4BAAAAGOgITAEAAAAAAAAAAAAAAAAYMAhMAQAAICcqKys1f/78nB8DAAAAQG4diq/rDcPQ008/fVDPsXHjRhmGoZUrVx7U8wAAAAAA9ubLdQEAAABwh6lTp+r444/vsw8yVqxYoWg02ifHAgAAANB/Dqe1wc0336ynn356r9DStm3bNGjQoJzUBAAAAAA4+AhMAQAAoM84jiPLsuTz7f9lZnFxcT9UBAAAACAXcr02ME1TgUCg1/cfOnRoH1YDAAAAADjUMJIPAAAA+3XZZZfpz3/+s+6//34ZhiHDMLRx40YtWbJEhmHoueee04QJExQMBvXXv/5V69ev1znnnKPS0lLFYjFNmjRJf/rTnzodc8+xG4Zh6Be/+IXOO+88RSIRjRw5Us8880yP6ty8ebPOOeccxWIx5efn68ILL1RdXV329rfeekunnnqq8vLylJ+frwkTJuj111+XJG3atEkzZ87UoEGDFI1GNWbMGD377LO9f9AAAACAw9ChujaorKzUbbfdpksvvVT5+fm66qqrJEnf/va3NWrUKEUiEQ0bNkw33HCD0um0JGnhwoW65ZZb9NZbb2WvZeHChdkaOkbydYzOe/LJJ3XqqacqEolo/PjxWrZsWacaHn74YVVUVCgSiei8887Tfffdp8LCwh49vn/+85914oknKhgMqqysTN/5zneUyWSytz/xxBMaN26cwuGwBg8erGnTpikej0uSlixZohNPPFHRaFSFhYWaMmWKNm3a1KPzAwAAAMBAQWAKAAAg1xxHisdz8+M43Srx/vvv10knnaQrr7xS27Zt07Zt21RRUZG9/Tvf+Y5+8IMf6N1339Vxxx2n1tZWnXXWWVq8eLH+9re/6cwzz9TMmTO1efPmTzzPLbfcogsvvFBvv/22zjrrLF1yySVqaGjoVo22beucc85RQ0OD/vznP+uPf/yjPvzwQ1100UXZfS655BJ96lOf0ooVK/TGG2/oO9/5jvx+vySpurpaqVRKL7/8st555x3dddddisVi3To30B01NTWqqqrSpEmTcl0KAAA4VLE2yOrN2uCHP/yhxo8fr7/97W+64YYbJEl5eXlauHCh1qxZo/vvv18PP/ywfvSjH0mSLrroIl133XUaM2ZM9lo+vn7Y03e/+13NmzdPK1eu1KhRo3TxxRdnw0xLly7V1VdfrW984xtauXKlPve5z+n73/9+tx7TDlu3btVZZ52lSZMm6a233tJPf/pT/fKXv9Ttt98uqX1M4MUXX6zLL79c7777rpYsWaIvfOELchxHmUxG5557rk455RS9/fbbWrZsma666ioZhtGjGgAAAABgoGAkHwAAQK61tUm5Cua0tkrR6H53KygoUCAQUCQS6XI0xa233qrPfe5z2d+Lioo0fvz47O+33XabnnrqKT3zzDOaM2fOPs9z2WWX6eKLL5Yk3XHHHfrxj3+s5cuX68wzz9xvjYsXL9Y777yjDRs2ZD+w+a//+i+NGTNGK1as0KRJk7R582Z961vf0rHHHitJGjlyZPb+mzdv1vnnn69x48ZJkoYNG7bfcwI9UV1drerqajU3N6ugoCDX5QAAgEMRa4Os3qwNTjvtNF133XWdtn3ve9/L/rmyslLz5s3TY489pv/4j/9QOBxWLBaTz+fr1gi+efPm6fOf/7yk9kDXmDFjtG7dOh177LF64IEHNGPGDM2bN0+SNGrUKL3yyiv6wx/+sN/jdnjwwQdVUVGhn/zkJzIMQ8cee6xqa2v17W9/WzfeeKO2bdumTCajL3zhCzrqqKMkKbt+aWhoUFNTk84++2wNHz5ckjR69OhunxsAAAAABho6TAEAAOCATZw4sdPvra2tmjdvnkaPHq3CwkLFYjG9++67+/0W+XHHHZf9czQaVX5+vurr67tVw7vvvquKiopO326vqqpSYWGh3n33XUnS3LlzdcUVV2jatGn6wQ9+oPXr12f3/frXv67bb79dU6ZM0U033aS33367W+cFAAAA8A+5XBvseW5JevzxxzVlyhQNHTpUsVhM3/ve9/Z77u7UVFZWJknZmt5//32deOKJnfbf8/f9effdd3XSSSd16go1ZcoUtba26u9//7vGjx+v008/XePGjdMXv/hFPfzww9q9e7ek9mDaZZddpunTp2vmzJm6//77tW3btl5dJwAAAAAMBASmAAAAci0Saf82dy5+IpE+uYToHt9Enzdvnp566indcccd+stf/qKVK1dq3LhxMk3zE4/TMR6vg2EYsm27T2qUpJtvvlmrV6/W5z//eb344ouqqqrSU089JUm64oor9OGHH+pLX/qS3nnnHU2cOFEPPPBAn50bAAAA2C/WBlm9WRvsee5ly5bpkksu0VlnnaU//OEP+tvf/qbvfve7+z13d2rqCDX15Xplf7xer/74xz/queeeU1VVlR544AEdc8wx2rBhgyRpwYIFWrZsmU4++WQ9/vjjGjVqlF599dV+qw8AAAAA3ISRfAAAALlmGN0afZFrgUBAlmV1a9+lS5fqsssu03nnnSep/VvlGzduPIjVtY+b2LJli7Zs2ZLtMrVmzRo1Njaqqqoqu9+oUaM0atQoffOb39TFF1+sBQsWZOusqKjQ1VdfrauvvlrXX3+9Hn74YV1z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48YpGo2qoqJCX/va19Ta2ipJWrJkiWbPnq2mpqbs8W+++WZJe4/kMwxDv/jFL3TeeecpEolo5MiReuaZZzrV8Mwzz2jkyJEKhUI69dRT9cgjj8gwDDU2Nnb7cXznnXd02mmnZR+Lq666KltvR80nnniiotGoCgsLNWXKFG3atEmS9NZbb+nUU09VXl6e8vPzNWHCBL3++uvdPjcAAAAAgA5TAAAAOec4Ultbbs4diUiGsf/97r//fn3wwQcaO3asbr31Vknt38RubGzUaaedpiuuuEI/+tGPlEgk9O1vf1sXXnihXnzxRW3btk0XX3yx7r77bp133nlqaWnRX/7yFzmOo3nz5undd99Vc3NzNrBUVFTUrbovu+wyrV27Vs8884zy8/P17W9/W2eddZbWrFkjv9+v6upqmaapl19+WdFoVGvWrFEsFpMk3XDDDVqzZo2ee+45DRkyROvWrVMikejdAwgAAAD0IdYG3VsbPPLII/rqV7+qpUuXZrd5PB79+Mc/1tFHH60PP/xQX/va1/Qf//EfevDBB3XyySdr/vz5uvHGG/X+++9LUnZ90JVbbrlFd999t+655x498MADuuSSS7Rp0yYVFRVpw4YNuuCCC/SNb3xDV1xxhf72t79p3rx53XmIs+LxuKZPn66TTjpJK1asUH19va644grNmTNHCxcuVCaT0bnnnqsrr7xS//M//yPTNLV8+XIZHz1Bl1xyiU444QT99Kc/ldfr1cqVK+X3+3tUAwAAAAAMdASmAAAAcqytTfqE9+oPqtZWKRrd/34FBQUKBAKKRCIaOnRodvtPfvITnXDCCbrjjjuy2371q1+poqJCH3zwgVpbW5XJZPSFL3xBRx11lCRp3Lhx2X3D4bBSqVSnY+5PR1Bq6dKlOvnkkyVJv/nNb1RRUaGnn35aX/ziF7V582adf/752XMNGzYse//NmzfrhBNO0MSJEyW1f6McAAAAOBSwNuje2mDkyJG6++67O2279tprs3+urKzU7bffrquvvloPPvigAoGACgoKZBhGt45/2WWX6eKLL5Yk3XHHHfrxj3+s5cuX68wzz9TPfvYzHXPMMbrnnnskScccc4xWrVql73//+/s9bodHH31UyWRS//Vf/6XoRw/6T37yE82cOVN33XWX/H6/mpqadPbZZ2v48OGSpNGjR2fvv3nzZn3rW9/Ssccem308AAAAAAA9w0g+AAAA9Npbb72ll156SbFYLPvT8ab9+vXrNX78eJ1++ukaN26cvvjFL+rhhx/W7t27D+ic7777rnw+nyZPnpzdNnjwYB1zzDF69913JUlf//rXdfvtt2vKlCm66aab9Pbbb2f3/epXv6rHHntMxx9/vP7jP/5Dr7zyygHVAwAAAKB/1wYTJkzYa9uf/vQnnX766SovL1deXp6+9KUvadeuXWrrRcuu4447LvvnaDSq/Px81dfXS5Lef/99TZo0qdP+J554Yo+O/+6772r8+PHZsJQkTZkyRbZt6/3331dRUZEuu+wyTZ8+XTNnztT999+vbdu2ZfedO3eurrjiCk2bNk0/+MEPtH79+h5fIwAAAAAMdASmAAAAciwSaf82dy5+IpEDq721tVUzZ87UypUrO/2sXbtW//zP/yyv16s//vGPeu6551RVVaUHHnhAxxxzjDZs2NA3D94+XHHFFfrwww/1pS99Se+8844mTpyoBx54QJI0Y8YMbdq0Sd/85jdVW1ur008/vccjNAAAAICDgbVB90T3aIW1ceNGnX322TruuOP0u9/9Tm+88YZqamokSaZp9vj4e463MwxDtm33+DgHYsGCBVq2bJlOPvlkPf744xo1apReffVVSdLNN9+s1atX6/Of/7xefPFFVVVV6amnnurX+gAAAADA7QhMAQAA5JhhtI++yMWPYXS/zkAgIMuyOm379Kc/rdWrV6uyslIjRozo9NPxIYZhGJoyZYpuueUW/e1vf1MgEMi+md/VMfdn9OjRymQyeu2117Lbdu3apffff19VVVXZbRUVFbr66qv15JNP6rrrrtPDDz+cva24uFizZs3Sf//3f2v+/Pn6+c9/3qMaAAAAgIOBtUHP1gYd3njjDdm2rXvvvVef+cxnNGrUKNXW1u635t445phj9Prrr3fatmLFih4dY/To0XrrrbcUj8ez25YuXSqPx6Njjjkmu+2EE07Q9ddfr1deeUVjx47Vo48+mr1t1KhR+uY3v6kXXnhBX/jCF7RgwYJeXhEAAAAADEwEpgAAANAtlZWVeu2117Rx40bt3LlTtm2rurpaDQ0Nuvjii7VixQqtX79eixYt0uzZs2VZll577TXdcccdev3117V582Y9+eST2rFjh0aPHp095ttvv633339fO3fuVDqd3m8dI0eO1DnnnKMr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NOMXVUREREREREQkJypXjkW8AWByiXFs4/f884Ddnr0LJiIiIiIiIpIBKhcvgN7NKqBWaV8EhEXjzLVQBIRFo3YZX/RuVgGVixfI7kWUZOT3cIOnmyvCkghEhUfFIp+bK/InEaiS21veDUwBwJgxgIcHe+398ovzj4uMBF59FShdGk9Pb4qtv4SjbFmGpe67jy37RERERERERERuB8OH8/J7/w645FkR2LwZmDUrexdKREREREREJINULl4AA1pVwrB2VTGkTRUMa1cV/VtWUlgqF3C0VbwUGAFzSxEdR1vFysV91FZREpW3A1PlywMDBvD6a68BZ8+m/Jj9+5mKmjiRVal27UL96c/jr10GzZoBQUFAly7ARx+lumiViIiIiIiIiEiuc999QNOmQHS0DdPv/543OnucRURERERERCQXcHGxoVwRb1QrWRDlinirDV8uobaKkh55OzAFsB1fgQLAvn1A5cpA797AkSMJp7PbgcmTgYYNgX/+AYoVA95/H3BzA777DiUWTMKmTUC/fgxKjRwJdOiQ+KxERERERERERPKSYcN4OWP3fQhv8gAQEgI8+yxHlomIiIiIiIiIZBO1VZS0yvuBqeLFgY0bgTZtgJgYYO5coEYN4JFHgN27Oc2//wLt27PGfGQk0LkzK0299RZDVAAwYgQ8ft2AmTOBmTOBfPmADRuA2rXZvS+9xwfXrgW++IK5LRERERERERGRnKR7d+DOO4Hr122Y3/E7wMsL+PVXoF49YOdO52bi5wdMmgQcOpSpyyoiIiIiIiIitxe1VUyZ3W5w3j8MRy4H4bx/GOx2tVTL+4EpgFWjfvkF2LGDR/iMAX78EWjQgEGqe+5hqMrLC5gxA1i5EihRgo8dNIhVqex2oFcv4NQp9OsHHDwIdO3KDNbEicDddwPz5qU+8GQM8N57QMeOQP/+wKJFGf7qE9i/ny0F//03859LRERERCQvWrVqFe6++25UqVIFX331VXYvjohIpnNzA15+mdenfF8CZsMvTFCdOgU0a8YDDbGxiT84JAR4912gUiXglVd4LObq1axbeBERERERERHJ89RWMWkn/IIxY8tJTN5wDJ9tPI7JG45hxpaTOOEXnN2Llq1uj8CUw333AcuWAQcOAE8/Dbi6Aps2ATduMDz1999MLdni/OHYbMD06UCjRpyue3cgJASVKgErVgBr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LSIiIiIiIiIiIpnEZowxWfmEly5dwpUrV1C3bl1cvnwZ9evXx7Fjx5A/f36nHp9j+2OvXw88+CADUvPnA/ffz5Ly334LHDzo3Dzc3IBDhximAhAWxjL1V64wjLRxI29zcQEGlF6Od//tgyJT32OKqU8fDt18+GFg6dJMfKEJHT4MTJwIfP014OoKrFgBdOqUpYsgIiIikmPk2O1VuWnLli1o3bp1gtufffZZzJ07FwAwdepUTJgwAZcvX0bdunXx2WefoVGjRhny/FpHREQ4+GruXLbmu3CBt9WoYfBZ5c/RZsXLPEayciWPtYiISJbRtqqkROuIiIiIiORkqdlezfLA1K3q1KmDVatWoVy5ck5Nn6M3xseMYel4Nzce+XPIl4+Jp6eeYlWpq1fZay/uz5YtwL//sib96NE3HzplCkdbOjRvDkydGIk6LQsBERFMK1WrxqBVzZrsq3f4MIdnZiFjgOeeY/tAb29g82bgvvsy/nlu3ODLu3EDeOABFuvKiX76iRXCevdmcTEXNb8UERG5beTo7VXJEbSOiIhYwsOBadNYferGDd72QqVNmHDyYfh6xwC//AKoJaqISJbRtqqkROuIiIiIiORkqdleTXWM47fffkPXrl1RunRp2Gw2LF++PME006ZNQ4UKFeDp6YlGjRph586dic5r9+7diI2NdTosleONHg20acOwlM0GtGoFfPUVcPky681378400Z138r7evRmwmj8feO89zuOHH+LNsl8/tr0rXx5YsAD47TegTugfDEuVKmUFo2rUYCjLGJZ7ymI2G19qhw6sgtW5M3D8eOrnExsL+PmxKNemTcCMGcCQIXxbS5UCihQBmjVjKf969YA//3R+3oGB1qjVzLRvH/Dkk8DRo8Abb/BjuX49859XREREREREJLfx8gJefZVjyQYN4m1fnnwAtTxPYG1YCx5gOHAg4QOjoxmmGjwY+N//gICALF1uEREREREREcm57HaD8/5hOHI5COf9w2C3Z2sdIcmh3FL7gNDQUNSpUwd9+vRBjx49Ety/aNEiDB8+HDNnzkSjRo0wZcoUdOjQAUePHkXx4sVvTufv749nnnkGX375ZfpeQU7i6gosX86S8c2bA6kJgj30EODuzqTQwYOsFgUeONyzh4GkmzZt4uUDD8S/4/XX+dzffMMgVsmS6X5JqeHuzlxY69bA7t2s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Tz9p6tSpLOXrQT/99JPKy8urPH//5z//qfLvVJcncm3nfQ3pv8omTpyouLi404rg4FkN6btVq1bptdde0/r1670QIc4UM0zBr2RkZCgvL09ZWVm+DgVNyA8//KBx48Zp/vz5Cg0N9XU4aIKcTqf69Omjxx9/XImJiRo7dqxuvvlmvfjii74ODU3EggULNH/+fL311ltau3at5s2bpxkzZmjevHm+Dg0AcJYhp0Fl5DOoC3Ia1IR8BkBTNmnSJNlsthq/6nqzuDKn0ylJuuWWWzRmzBglJiZq5syZ6tatm15//fXGPIyA5cn+e//997V06VI9/fTTjRs0JHm2705VXFystLQ09ejRQw8//PCZBw7gNJmZmcrKytKiRYv43KCJKykp0ejRo/XKK6+oTZs2vg4HdcAMU/Abd9xxhz788EOtXLlS7du3d22PjY3ViRMnVFhY6PbE7YEDB1xTuMbGxmrNmjVuP+/AgQOuffBvubm5KigoUJ8+fVzbysvLtXLlSj3//PP69NNPGSMBrl27durRo4fbtvPPP1/vvvuupJN9fODAAbVr187V5sCBA7rwwgtdbQoKCtx+RllZmQ4ePMgYOQtMmDBBkyZN0vXXXy9J6tWrl77//ntNmzZN6enpjBG4aazxEBsb6zrXnPozTv0dAM4u5DSoCvkM6oKcBjUhn0F9kM/A2+6991798Y9/rLHNueee26D3oYoxXNU5cvfu3Q0PGi6e7L+lS5dqx44dp82kes0112jgwIFavnz5GUQOT/ZdhZKSEg0dOlQRERFatGiRgoODzzRsVKNNmzZq1qxZlefe6vqpunM152nva0j/VZgxY4YyMzP12Wef6YILLvBkmKhCfftux44d2rVrl6666irXtooC76CgIOXn56tLly6eDRr1wgxTaPKMMbrjjju0aNEiLV269LSpni+66CIFBwfr888/dyly8K4AAAWpSURBVG3Lz8/X7t27lZycLElKTk7Wpk2b3C76lixZosjIyNOSKfifwYMHa9OmTVq/fr3rq2/fvho1apTrNWMksA0YMED5+flu27799lt17NhRktS5c2fFxsa6jZHi4mKtXr3abYwUFhYqNzfX1Wbp0qVyOp1KSkrywlHAk44cOSK73f2yqFmzZq4LWcYITtVY4yE5OVkrV65UaWmpq82SJUvUrVs3lq8AzjLkNKgJ+QzqgpwGNSGfQX2Qz8Db2rZtq+7du9f45XA4GvQ+1KlTJ8XFxdV4jsSZ8WT/TZo0SRs3bnS7DpakmTNnas6cOd44vLOaJ/tOss4dKSkpcjgcev/995n1xsMcDocuuugit/O30+nU559/7jp/V5acnOzWXrLO1dW1h+c0pP8kafr06Zo6daoWL16svn37eiNUVFLfvuvevftpn/FcffXVuvzyy7V+/Xp16NDBm+GjLgzQxN12222mZcuWZvny5Wbfvn2uryNHjrja3HrrrSYhIcEsXbrUfPPNNyY5OdkkJye79peVlZmePXualJQUs379erN48WLTtm1bc//99/vikOAFgwYNMuPGjXN9zxgJbGvWrDFBQUHmscceM9u2bTPz58834eHh5s0333S1yczMNFFRUeZf//qX2bhxoxk2bJjp3LmzOXr0qKvN0KFDTWJiolm9erVZtWqV6dq1qxk5cqQvDgmNLD093cTHx5sPP/zQ7Ny507z33numTZs25r777nO1YYwElpKSErNu3Tqzbt06I8n8/e9/N+vWrTPff/+9MaZxxkNhYaGJiYkxo0ePNnl5eSYrK8uEh4ebl156yevHC8CzyGlQX+QzqIycBjUhn0Fl5DPwV7WNux9//NF069bNrF692rVt5syZJjIy0ixcuNBs27bNTJ482YSGhprt27f74hACWkP6rzJJZtGiRV6IFqeqb98VFRWZpKQk06tXL7N9+3a3PLesrMxXh3HWy8rKMiEhIWbu3Llmy5YtZuzYsSYqKsrs37/fGGPM6NGjzaRJk1ztv/zySxMUFGRmzJhhtm7daqZMmWKCg4PNpk2bfHUIAa2+/ZeZmWkcDod555133P6PlZSU+OoQAlZ9+66y9PR0M2zYMC9Fi/qiYApNnqQqv+bMmeNqc/ToUXP77bebVq1amfDwcPPb3/7W7Nu3z+3n7Nq1y1x55ZUmLCzMtGnTxtx7772mtLTUy0cDb6l8g4Exgg8++MD07NnThISEmO7du5uXX37Zbb/T6TQPPvigiYmJMSEhIWbw4MEmPz/frc3PP/9sRo4caVq0aGEiIyPNmDFjuDg9SxQXF5tx48aZhIQEExoaas4991zz17/+1Rw/ftzVhjESWJYtW1bl9Ud6eroxpvHGw4YNG8wll1xiQkJCTHx8vMnMzPTWIQLwInIa1Bf5DKpCToPqkM+gMvIZ+Kvaxt3OnTuNJLNs2TK3vzdt2jTTvn17Ex4ebpKTk80XX3zh5chhTMP771QUTPlGffuuuvOMJLNz507fHESAeO6550xCQoJxOBzm4osvNl9//bVr36BBg1zn+goLFiwwv/rVr4zD4TC//vWvzUcffeTliHGq+vRfx44dq/w/NmXKFO8Hjnr/3zsVBVNNm80YYzw3fxUAAAAAAAAAAAAAAAAANB322psAAAAAAAAAAAAAAAAAwNmBgikAAAAAAAAAAAAAAAAAAYOCKQAAAAAAAAAAAAAAAAABg4IpAAAAAAAAAAAAAAAAAAGDgikAAAAAAAAAAAAAAAAAAYOCKQAAAAAAAAAAAAAAAAABg4IpAAAAAAAAAAAAAAAAAAGDgikAAAAAAAAAAAAAAAAAAYOCKQAAAAAAAAAAAAAAAAABg4IpAAAAAAAAAAAAAAAAAAGDgikAAAAAAAAAAAAAAAAAAYOCKQAAAAAAAAAAAAAAAAAB4/8Ath3Dx1Cb1sQAAAAASUVORK5CYII=\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ImOGD5GJ8Ia7"
},
"source": [
"# 4. Cluster Chocolate Dataset\n",
"We're ready to cluster the chocolates! Run the code to set up the k-means clustering functions. You do not need to understand the code.\n",
"\n",
"**Note**: If you're following the Clustering self study, then before running the rest of this Colab, read the sections on [k-means](https://developers.google.com/machine-learning/clustering/algorithm/run-algorithm) and [quality metrics](https://developers.google.com/machine-learning/clustering/interpret)."
]
},
{
"cell_type": "code",
"metadata": {
"cellView": "form",
"id": "eExms-TP8Hn6"
},
"source": [
"#@title Run cell to set up functions\n",
"def dfSimilarity(df,centroids):\n",
" ### dfSimilarity = Calculate similarities for dataframe input\n",
" ### We need to calculate ||a-b||^2 = |a|^2 + |b|^2 - 2*|a|*|b|\n",
" ### Implement this with matrix operations\n",
" ### See the Appendix for further explanation\n",
" numPoints = len(df.index)\n",
" numCentroids = len(centroids.index)\n",
" ## Strictly speaking, we don't need to calculate the norm of points\n",
" # because it adds a constant bias to distances\n",
" # But calculating it so that the similarity doesn't go negative\n",
" # And that we expect similarities in [0,1] which aids debugging\n",
" pointNorms = np.square(nla.norm(df,axis=1))\n",
" pointNorms = np.reshape(pointNorms,[numPoints,1])\n",
" ## Calculate the norm of centroids\n",
" centroidNorms = np.square(nla.norm(centroids,axis=1))\n",
" centroidNorms = np.reshape(centroidNorms,(1,numCentroids))\n",
" ## Calculate |a|^2 + |b|^2 - 2*|a|*|b|\n",
" similarities = pointNorms + centroidNorms - 2.0*np.dot(df,np.transpose(centroids))\n",
" # Divide by the number of features\n",
" # Which is 10 because the one-hot encoding means the \"Maker\" and \"Bean\" are\n",
" # weighted twice\n",
" similarities = similarities/10.0\n",
" # numerical artifacts lead to negligible but negative values that go to NaN on the root\n",
" similarities = similarities.clip(min=0.0)\n",
" # Square root since it's ||a-b||^2\n",
" similarities = np.sqrt(similarities)\n",
" return similarities\n",
"\n",
"def initCentroids(df,k,feature_cols):\n",
" # Pick 'k' examples are random to serve as initial centroids\n",
" limit = len(df.index)\n",
" centroids_key = np.random.randint(0,limit-1,k)\n",
" centroids = df.loc[centroids_key,feature_cols].copy(deep=True)\n",
" # the indexes get copied over so reset them\n",
" centroids.reset_index(drop=True,inplace=True)\n",
" return centroids\n",
"\n",
"def pt2centroid(df,centroids,feature_cols):\n",
" ### Calculate similarities between all points and centroids\n",
" ### And assign points to the closest centroid + save that distance\n",
" numCentroids = len(centroids.index)\n",
" numExamples = len(df.index)\n",
" # dfSimilarity = Calculate similarities for dataframe input\n",
" dist = dfSimilarity(df.loc[:,feature_cols],centroids.loc[:,feature_cols])\n",
" df.loc[:,'centroid'] = np.argmin(dist,axis=1) # closest centroid\n",
" df.loc[:,'pt2centroid'] = np.min(dist,axis=1) # minimum distance\n",
" return df\n",
"\n",
"def recomputeCentroids(df,centroids,feature_cols):\n",
" ### For every centroid, recompute it as an average of the points\n",
" ### assigned to it\n",
" numCentroids = len(centroids.index)\n",
" for cen in range(numCentroids):\n",
" dfSubset = df.loc[df['centroid'] == cen, feature_cols] # all points for centroid\n",
" if not(dfSubset.empty): # if there are points assigned to the centroid\n",
" clusterAvg = np.sum(dfSubset)/len(dfSubset.index)\n",
" centroids.loc[cen] = clusterAvg\n",
" return centroids\n",
"\n",
"def kmeans(df,k,feature_cols,verbose):\n",
" flagConvergence = False\n",
" maxIter = 100\n",
" iter = 0 # ensure kmeans doesn't run for ever\n",
" centroids = initCentroids(df,k,feature_cols)\n",
" while not(flagConvergence):\n",
" iter += 1\n",
" #Save old mapping of points to centroids\n",
" oldMapping = df['centroid'].copy(deep=True)\n",
" # Perform k-means\n",
" df = pt2centroid(df,centroids,feature_cols)\n",
" centroids = recomputeCentroids(df,centroids,feature_cols)\n",
" # Check convergence by comparing [oldMapping, newMapping]\n",
" newMapping = df['centroid']\n",
" flagConvergence = all(oldMapping == newMapping)\n",
" if verbose == 1:\n",
" print(\"Total distance:\" + str(np.sum(df['pt2centroid'])))\n",
" if (iter > maxIter):\n",
" print('k-means did not converge! Reached maximum iteration limit of ' \\\n",
" + str(maxIter) + '.')\n",
" sys.exit()\n",
" return\n",
" print('k-means converged for ' + str(k) + ' clusters' + \\\n",
" ' after ' + str(iter) + ' iterations!')\n",
" return [df,centroids]"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "-KnRLWvw1rJ9"
},
"source": [
"Run the following cell to cluster the chocolate dataset, where `k` is the number of clusters. You'll experiment with different values of `k` later. For now, use `k = 160`.\n",
"\n",
"On every iteration of k-means, the output shows how the sum of distances from all examples to their centroids reduces, such that k-means always converges. The following table shows the data for the first few chocolates. On the extreme right of the table, check the assigned centroid for each example in the `centroid` column and the distance from the example to its centroid in the `pt2centroid` column.\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"cellView": "form",
"id": "AKDwhN9J1PhU",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 501
},
"outputId": "3d23fe62-a860-4669-9c84-06ffa4f72af3"
},
"source": [
"k = 160 #@param\n",
"\n",
"# Extract embeddings into a dataframe\n",
"choc_embed = similarity_model.embeddings\n",
"choc_embed = pd.DataFrame(choc_embed)\n",
"\n",
"feature_cols = choc_embed.columns.values # save original columns\n",
"# initialize every point to an impossible value, the k+1 cluster\n",
"choc_embed['centroid'] = k\n",
"# init the point to centroid distance to an impossible value \"2\" (>1)\n",
"choc_embed['pt2centroid'] = 2\n",
"[choc_embed,centroids] = kmeans(choc_embed,k,feature_cols,1)\n",
"print(\"Data for the first few chocolates, with 'centroid' and 'pt2centroid' on the extreme right:\")\n",
"choc_embed.head()"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Total distance:37.953346\n",
"Total distance:34.805386\n",
"Total distance:33.80506\n",
"Total distance:33.313477\n",
"Total distance:33.128784\n",
"Total distance:32.992622\n",
"Total distance:32.91336\n",
"Total distance:32.844948\n",
"Total distance:32.714973\n",
"Total distance:32.622005\n",
"Total distance:32.52008\n",
"Total distance:32.47841\n",
"Total distance:32.42681\n",
"Total distance:32.415524\n",
"Total distance:32.415237\n",
"k-means converged for 160 clusters after 15 iterations!\n",
"Data for the first few chocolates, with 'centroid' and 'pt2centroid' on the extreme right:\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
" 0 1 2 3 4 5 6 7 8 9 centroid \\\n",
"0 -0.13 0.11 0.02 0.04 0.04 -0.06 -0.07 -0.11 0.13 0.02 47 \n",
"1 -0.03 -0.00 -0.03 -0.01 -0.05 -0.03 0.04 -0.02 0.02 0.03 79 \n",
"2 -0.04 0.05 0.07 0.01 -0.01 -0.02 -0.11 -0.08 0.02 -0.02 40 \n",
"3 0.04 -0.06 0.02 -0.08 -0.00 0.01 0.08 0.04 -0.08 0.00 13 \n",
"4 -0.06 0.03 0.03 -0.02 -0.01 -0.03 -0.01 -0.08 0.04 -0.01 52 \n",
"\n",
" pt2centroid \n",
"0 0.02 \n",
"1 0.02 \n",
"2 0.01 \n",
"3 0.02 \n",
"4 0.02 "
],
"text/html": [
"\n",
" <div id=\"df-51b7cb62-93de-43fb-a950-15977176b9f9\" class=\"colab-df-container\">\n",
" <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>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>centroid</th>\n",
" <th>pt2centroid</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-0.13</td>\n",
" <td>0.11</td>\n",
" <td>0.02</td>\n",
" <td>0.04</td>\n",
" <td>0.04</td>\n",
" <td>-0.06</td>\n",
" <td>-0.07</td>\n",
" <td>-0.11</td>\n",
" <td>0.13</td>\n",
" <td>0.02</td>\n",
" <td>47</td>\n",
" <td>0.02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-0.03</td>\n",
" <td>-0.00</td>\n",
" <td>-0.03</td>\n",
" <td>-0.01</td>\n",
" <td>-0.05</td>\n",
" <td>-0.03</td>\n",
" <td>0.04</td>\n",
" <td>-0.02</td>\n",
" <td>0.02</td>\n",
" <td>0.03</td>\n",
" <td>79</td>\n",
" <td>0.02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-0.04</td>\n",
" <td>0.05</td>\n",
" <td>0.07</td>\n",
" <td>0.01</td>\n",
" <td>-0.01</td>\n",
" <td>-0.02</td>\n",
" <td>-0.11</td>\n",
" <td>-0.08</td>\n",
" <td>0.02</td>\n",
" <td>-0.02</td>\n",
" <td>40</td>\n",
" <td>0.01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.04</td>\n",
" <td>-0.06</td>\n",
" <td>0.02</td>\n",
" <td>-0.08</td>\n",
" <td>-0.00</td>\n",
" <td>0.01</td>\n",
" <td>0.08</td>\n",
" <td>0.04</td>\n",
" <td>-0.08</td>\n",
" <td>0.00</td>\n",
" <td>13</td>\n",
" <td>0.02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-0.06</td>\n",
" <td>0.03</td>\n",
" <td>0.03</td>\n",
" <td>-0.02</td>\n",
" <td>-0.01</td>\n",
" <td>-0.03</td>\n",
" <td>-0.01</td>\n",
" <td>-0.08</td>\n",
" <td>0.04</td>\n",
" <td>-0.01</td>\n",
" <td>52</td>\n",
" <td>0.02</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-51b7cb62-93de-43fb-a950-15977176b9f9')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-51b7cb62-93de-43fb-a950-15977176b9f9 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-51b7cb62-93de-43fb-a950-15977176b9f9');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-49e26429-f515-4335-ada2-89e5b65db4fa\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-49e26429-f515-4335-ada2-89e5b65db4fa')\"\n",
" title=\"Suggest charts.\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-49e26429-f515-4335-ada2-89e5b65db4fa button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 7
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "m6kE9uVnXjy4"
},
"source": [
"## Inspect Clustering Result"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "13TnsPz23xOU"
},
"source": [
"Inspect the chocolates in different clusters by changing the parameter `clusterNumber`\n",
"in the next cell and running the cell. Consider these questions as you inspect the clusters:\n",
"\n",
"* Are the clusters meaningful?\n",
"* Is the clustering result better with a manual similarity measure (see your previous Colab) or a supervised similarity measure?\n",
"* Does changing the number of clusters make the clusters more or less meaningful?\n",
"\n",
"For context, on the page [Supervised Similarity Measure](https://developers.google.com/machine-learning/clustering/similarity/supervised-similarity), read the table \"*Comparison of Manual and Supervised Measures*\". Then click the next cell for the discussion."
]
},
{
"cell_type": "code",
"metadata": {
"cellView": "form",
"id": "NHWgGmpyux39",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 269
},
"outputId": "d865beaa-bcb1-4774-fb83-729ae75c1ba6"
},
"source": [
"clusterNumber = 20 #@param\n",
"choc_data.loc[choc_embed['centroid']==clusterNumber,:]"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" maker specific_origin \\\n",
"321 Cacaoyere (Ecuatoriana) Amazonia \n",
"379 Chchukululu (Tulicorp) Los Rios \n",
"550 Doble & Bignall Puerto Cabello,Mantuano \n",
"610 El Rey San Joaquin \n",
"1356 Raaka Amazon Basin Blend \n",
"1384 Robert (aka Chocolaterie Robert) Madagascar \n",
"1525 Soma Sangre Grande P,Trinidad \n",
"\n",
" cocoa_percent maker_location rating bean_type \\\n",
"321 63.00 Ecuador 3.50 Forastero (Arriba) \n",
"379 75.00 Ecuador 3.00 Forastero (Arriba) \n",
"550 72.00 England 3.25 Trinitario \n",
"610 70.00 Venezuela 3.75 Blend \n",
"1356 70.00 U.S.A. 3.00 Blend \n",
"1384 75.00 Madagascar 3.25 Trinitario \n",
"1525 70.00 Canada 3.75 Trinitario \n",
"\n",
" broad_origin \n",
"321 Ecuador \n",
"379 Ecuador \n",
"550 Venezuela \n",
"610 Venezuela \n",
"1356 Peru,SMartin,Pangoa,nacional \n",
"1384 Madagascar \n",
"1525 Trinidad "
],
"text/html": [
"\n",
" <div id=\"df-8ee89f21-ce61-47da-9abb-5a2590700c97\" class=\"colab-df-container\">\n",
" <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>maker</th>\n",
" <th>specific_origin</th>\n",
" <th>cocoa_percent</th>\n",
" <th>maker_location</th>\n",
" <th>rating</th>\n",
" <th>bean_type</th>\n",
" <th>broad_origin</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>321</th>\n",
" <td>Cacaoyere (Ecuatoriana)</td>\n",
" <td>Amazonia</td>\n",
" <td>63.00</td>\n",
" <td>Ecuador</td>\n",
" <td>3.50</td>\n",
" <td>Forastero (Arriba)</td>\n",
" <td>Ecuador</td>\n",
" </tr>\n",
" <tr>\n",
" <th>379</th>\n",
" <td>Chchukululu (Tulicorp)</td>\n",
" <td>Los Rios</td>\n",
" <td>75.00</td>\n",
" <td>Ecuador</td>\n",
" <td>3.00</td>\n",
" <td>Forastero (Arriba)</td>\n",
" <td>Ecuador</td>\n",
" </tr>\n",
" <tr>\n",
" <th>550</th>\n",
" <td>Doble &amp; Bignall</td>\n",
" <td>Puerto Cabello,Mantuano</td>\n",
" <td>72.00</td>\n",
" <td>England</td>\n",
" <td>3.25</td>\n",
" <td>Trinitario</td>\n",
" <td>Venezuela</td>\n",
" </tr>\n",
" <tr>\n",
" <th>610</th>\n",
" <td>El Rey</td>\n",
" <td>San Joaquin</td>\n",
" <td>70.00</td>\n",
" <td>Venezuela</td>\n",
" <td>3.75</td>\n",
" <td>Blend</td>\n",
" <td>Venezuela</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1356</th>\n",
" <td>Raaka</td>\n",
" <td>Amazon Basin Blend</td>\n",
" <td>70.00</td>\n",
" <td>U.S.A.</td>\n",
" <td>3.00</td>\n",
" <td>Blend</td>\n",
" <td>Peru,SMartin,Pangoa,nacional</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1384</th>\n",
" <td>Robert (aka Chocolaterie Robert)</td>\n",
" <td>Madagascar</td>\n",
" <td>75.00</td>\n",
" <td>Madagascar</td>\n",
" <td>3.25</td>\n",
" <td>Trinitario</td>\n",
" <td>Madagascar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1525</th>\n",
" <td>Soma</td>\n",
" <td>Sangre Grande P,Trinidad</td>\n",
" <td>70.00</td>\n",
" <td>Canada</td>\n",
" <td>3.75</td>\n",
" <td>Trinitario</td>\n",
" <td>Trinidad</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-8ee89f21-ce61-47da-9abb-5a2590700c97')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-8ee89f21-ce61-47da-9abb-5a2590700c97 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-8ee89f21-ce61-47da-9abb-5a2590700c97');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-d92df24a-264a-493a-bf75-25f09b289033\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-d92df24a-264a-493a-bf75-25f09b289033')\"\n",
" title=\"Suggest charts.\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-d92df24a-264a-493a-bf75-25f09b289033 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 8
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MJtuP9w5jJHq"
},
"source": [
"### Solution: Discussion of clustering results\n",
"Click below for the answer."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "gxiPD8g_jShi"
},
"source": [
"**Discussion**:\n",
"\n",
"**Q. Are the clusters meaningful?**\n",
"\n",
"The clusters become more meaningful when you increase the number of clusters above approximately 100. Below ~100 clusters, dissimilar chocolates tend to be grouped together. Specifically, the grouping of numeric features is more meaningful than the categorical features. A possible cause is that the DNN isn't accurately encoding the categorical features because ~1800 examples isn't enough data to encode each of the dozens of values that categorical features have.\n",
"\n",
"**Q. Is the clustering result better with a manual similarity measure or a supervised similarity measure?**\n",
"\n",
"The clusters are more meaningful for the manual similarity measure because you customized the measure to accurately capture similarity between chocolates. Manual design was possible because the dataset was not complex. In comparison, in your supervised similarity measure, you just threw your data into the DNN and relied on the DNN to encode the similarity. The disadvantage is that with such a small dataset, the DNN lacks the data to accurately encode similarity.\n",
"\n",
"**Q. Does changing the number of clusters make the clusters more or less meaningful?**\n",
"\n",
"Increasing the number of clusters makes the clusters more meaningful up to a limit, because dissimilar chocolates can be broken up into distinct clusters."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Z1eW0PlG57Zs"
},
"source": [
"# 5. Quality Metrics for Clusters\n",
"For the clusters, let's calculate the metrics discussed in [Interpret Results](https://developers.google.com/machine-learning/clustering/interpret). Read that course content before starting this code section.\n",
"\n",
"Run the next cell to set up functions."
]
},
{
"cell_type": "code",
"metadata": {
"id": "i9Y2H-nR56C3"
},
"source": [
"#@title Run cell to setup functions { display-mode: \"form\" }\n",
"def clusterCardinality(df):\n",
" k = np.max(df[\"centroid\"]) + 1\n",
" if six.PY2:\n",
" k = k.astype(int)\n",
" print(\"Number of clusters:\"+str(k))\n",
" clCard = np.zeros(k)\n",
" for kk in range(k):\n",
" clCard[kk] = np.sum(df[\"centroid\"]==kk)\n",
" if six.PY2:\n",
" clCard = clCard.astype(int)\n",
" # print \"Cluster Cardinality:\"+str(clCard)\n",
" plt.figure()\n",
" plt.bar(range(k),clCard)\n",
" plt.title('Cluster Cardinality')\n",
" plt.xlabel('Cluster Number: '+str(0)+' to '+str(k-1))\n",
" plt.ylabel('Points in Cluster')\n",
" return clCard\n",
"\n",
"def clusterMagnitude(df):\n",
" k = np.max(df[\"centroid\"]) + 1\n",
" if six.PY2:\n",
" k = k.astype(int)\n",
" cl = np.zeros(k)\n",
" clMag = np.zeros(k)\n",
" for kk in range(k):\n",
" idx = np.where(df[\"centroid\"]==kk)\n",
" idx = idx[0]\n",
" clMag[kk] = np.sum(df.loc[idx,\"pt2centroid\"])\n",
" # print \"Cluster Magnitude:\",clMag #precision set using np pref\n",
" plt.figure()\n",
" plt.bar(range(k),clMag)\n",
" plt.title('Cluster Magnitude')\n",
" plt.xlabel('Cluster Number: '+str(0)+' to '+str(k-1))\n",
" plt.ylabel('Total Point-to-Centroid Distance')\n",
" return clMag\n",
"\n",
"def plotCardVsMag(clCard,clMag):\n",
" plt.figure()\n",
" plt.scatter(clCard,clMag)\n",
" plt.xlim(xmin=0)\n",
" plt.ylim(ymin=0)\n",
" plt.title('Magnitude vs Cardinality')\n",
" plt.ylabel('Magnitude')\n",
" plt.xlabel('Cardinality')\n",
"\n",
"def clusterQualityMetrics(df):\n",
" clCard = clusterCardinality(df)\n",
" clMag = clusterMagnitude(df)\n",
" plotCardVsMag(clCard,clMag)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "1nLYPlv4ejwD"
},
"source": [
"Calculate the following metrics by running the next cell:\n",
"\n",
"* cardinality of your clusters\n",
"* magnitude of your clusters\n",
"* cardinality vs magnitude\n",
"\n",
"Observe:\n",
"* The plots show that inspecting cluster metrics for many clusters isn't easy. However, the plots provide a general idea of the quality of the clustering. There are a number of outlying clusters.\n",
"* The correlation between cluster cardinality and cluster magnitude is lower than it was for a manual similarity measure. The lower correlation shows that some chocolates were harder to cluster, leading to large example-centroid distances.\n",
"\n",
"Experiment by changing these options and checking the result:\n",
"* dimensions of DNN's hidden layer\n",
"* autoencoder or predictor DNN\n",
"* number of clusters"
]
},
{
"cell_type": "code",
"metadata": {
"id": "3llKFtEpeiZ_",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"outputId": "5de68684-9ae5-4012-d76a-cf02a2ae8844"
},
"source": [
"clusterQualityMetrics(choc_embed)"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Number of clusters:160\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABBoElEQVR4nO3deVyU5f7/8fcgqyDgCqLinrhbmop6slMU5Z5mZpZothnmQlb6Lbc6LtUpyw5pi5me9FjmcjLbTA3zJFqipWluYZAKZiq4osL1+6MH83NicUaBmZtez8djHg/muu+57891Mw5vr/u+5rYZY4wAAAAsyMvdBQAAAFwpggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggxgcfXq1dOQIUPcXUa5ZLPZNHnyZPvzd999VzabTQcOHCi1fR44cEA2m03vvvuuvW3y5Mmy2Wyltk/AyggygIfav3+/Hn74YTVo0ED+/v4KDg5W586d9eqrr+rs2bNlUsOZM2c0efJkffXVV2Wyv0tlZ2drypQpat26tYKCghQQEKAWLVroqaee0qFDh8q8Hk8zbdo0rVixwt1lAG7n7e4CABS0atUq9e/fX35+fho8eLBatGih8+fPa8OGDXriiSf0448/6s033yz1Os6cOaMpU6ZIkm688cZS31++n3/+WTExMUpLS1P//v310EMPydfXVz/88IPmzp2r5cuXa8+ePWVWT7777rtPd999t/z8/Mp0v88884zGjRvn0DZt2jTdeeed6tOnT5nWAngaggzgYVJTU3X33Xerbt26Wrt2rWrWrGlfFh8fr3379mnVqlVurPDqnT59WoGBgYUuu3jxovr27avMzEx99dVX6tKli8PyqVOn6vnnny/1OgpToUIFVahQoUT27Qpvb295e/NxDRSGU0uAh3nhhRd06tQpzZ071yHE5GvUqJFGjRpV5OuLup6isOs7vvvuO8XGxqpatWoKCAhQ/fr1df/990v641qN6tWrS5KmTJkim81W4JqRn376SXfeeaeqVKkif39/tWvXTh999FGh+01KStKjjz6qGjVqqHbt2kXWv3TpUn3//fd6+umnC4QYSQoODtbUqVPtz7/++mv1799fkZGR8vPzU506dTRmzJgCp9+GDBmioKAg7d+/X926dVOlSpU0aNAg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yHB3aS4bPny4CQkJMV999ZU5fPiw/XHmzBn7Oo888oiJjIw0a9euNd99952Jjo420dHRbqz66lw6a8kY6/dv8+bNxtvb20ydOtXs3bvXLFy40FSsWNG899579nVmzJhhQkNDzX//+1/zww8/mN69e5v69eubs2fPurFy58XFxZlatWqZjz/+2KSmppply5aZatWqmSeffNK+jpX6ePLkSbN161azdetWI8m8/PLLZuvWrfYZO8705bbbbjPXXnut2bRpk9mwYYNp3LixGThwoLu6VEBxfTx//rzp1auXqV27ttm2bZvDZ09OTo59G57cx8v9Dv/sz7OWjLF2/5YtW2Z8fHzMm2++afbu3Wtee+01U6FCBfP111/bt1EWn60Emavw2muvmcjISOPr62vat29vkpOT3V3SFZFU6GPevHn2dc6ePWseffRRU7lyZVOxYkVzxx13mMOHD7uv6Kv05yBTHvq3cuVK06JFC+Pn52eioqLMm2++6bA8Ly/PTJgwwYSFhRk/Pz9z8803m927d7upWtdlZ2ebUaNGmcjISOPv728aNGhgnn76aYc/elbq47p16wr9dxcXF2eMca4vv//+uxk4cKAJCgoywcHBZujQoebkyZNu6E3hiutjampqkZ8969ats2/Dk/t4ud/hnxUWZKzev7lz55pGjRoZf39/07p1a7NixQqHbZTFZ6vNmEu+FhMAAMBCuEYGAABYFkEGAABYFkEGAABYFkEGAABYFkEGAABYFkEGAABYFkEGAABYFkEG8CA2m00rVqxwdxmWMXnyZLVp08bdZQBwI4IMUEYyMjL02GOPqUGDBvLz81OdOnXUs2dPh/uQlKSvvvpKNputwA3bSpLNZpO/v79++eUXh/Y+ffpoyJAhpbZfT7JkyRJFRUXJ399fLVu21CeffFLs+iUZvqZOnapOnTqpYsWKCg0NLXQdm81W4LF48WKHdRITE9W0aVMFBASoSZMmWrBgQYnUB5QFggxQBg4cOKC2bdtq7dq1evHFF7V9+3Z99tln+vvf/674+Hh3l1csY4wuXrxY5HKbzaaJEyeWYUWl78KFC06t980332jgwIEaNmyYtm7dqj59+qhPnz7asWNHKVf4h/Pnz6t///4aPnx4sevNmzdPhw8ftj/69OljXzZ79myNHz9ekydP1o8//qgpU6YoPj5eK1euLOXqgRJS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/vhj/fbbbzp16pQqVaqksWPHasyYMZo/f77279+vlJQUvfbaawUufr0S48eP16FDh/Tll186tN90003697//ra+//lrbt29XXFycKlSocNX7kyR/f3/FxcXp+++/19dff62RI0fqrrvuso+KTJkyRdOnT9esWbO0Z88ebd++XfPmzdPLL79c7HY3b96sqKgoHTx4sMh1Ro0apc8++0wvvfSSfvrpJ02ePFnfffddgQuSL1WvXj2lpqZq27ZtOnr0qHJychQTE6OWLVtq0KBBSklJ0ebNmzV48GB17dq12FN8aWlp2rZtm9LS0pSbm2sfccofiVq5cqXefvtt7dixQ/v27dPs2bM1bdo0PfbYY/Zt7NmzR++995727t2rzZs36+6779aOHTs0bdq0Yo8P4DHcOGMK+Es5dOiQiY+PN3Xr1jW+vr6mVq1aplevXg5Tm/WnqbIbNmwwLVu2NP7+/uZvf/ubWbJkicP06xEjRpiGDRsaPz8/U716dXPfffeZo0eP2l//7LPPmvDwcGOz2ezTofPy8swrr7ximjRpYnx8fEz16tVNbGysSUpKMsYUPu27KH+u1xhjpk2b5jDd2xhjsrKyzIABA0xwcLCpU6eOeffddwudfn3ptvKnRW/dutXe9ufa8qdfv/766yYiIsL4+/ubO++80xw7dsyhpoULF5o2bdoYX19fU7lyZXPDDTeYZcuWFbmfS/eVf6yL8sEHH5hrrrnG+Pr6mubNm5tVq1YVu/65c+dMv379TGho6FVPv46LiyswnVuS/T316aefmjZt2pigoCATGBhon6qem5tr38bOnTtNmzZtTEBAgAkODja9e/c2P/30U7H7BTyJzZhSvBIRAACgFHFqCQAAWBZBBgAAWBZBBgAAWBZBBgAAWBZBBgAAWBZBBgAAWBZBBgAAWBZBBgAAWBZBBgAAWBZBBgAAWBZBBgAAWBZBBgAAWNb/A45JPPwArpnxAAAAAElFTkSuQmCC\n"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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bRqNBomJifD29q5y3a1bt6KkpARvvPFGlf2USiWsra21XkRERGS8DHrODQCEhoYiMDAQHh4e8PT0RHR0NIqKihAUFAQACAgIgKOjI6KiorTWW716NYYOHYqWLVsaomwiIiKqpwwebkaMGIGbN28iPDwc2dnZcHNzQ0JCgnSScVZWFkxMtCeYzpw5gwMHDuCnn34yRMlERERUjxk83ABASEgIQkJCKlyWlJRUrq179+4QQtRyVURERNQQNeirpYiIiIj+ieGGiIiIjArDDRERERkVhhsiIiIyKgw3REREZFQYboiIiMioMNwQERGRUWG4ISIiIqPCcENERERGheGGiIiIjArDDRERERkVhhsiIiIyKgw3REREZFQYboiIiMioVDvclJaW4syZM7h//74+6yEiIiKqEdnhpri4GGPHjoWlpSV69eqFrKwsAMB7772H+fPn671AIiIiIjlkh5vp06fj2LFjSEpKgkqlktr9/PywZcsWvRZHREREJFcTuSts27YNW7ZswWOPPQaFQiG19+rVC+fPn9drcURERERyyZ65uXnzJuzs7Mq1FxUVaYUdIiIiIkOQHW48PDwQHx8vvS8LNKtWrYK3t7f+KiMiIiKqBtmHpebNm4f//Oc/OHXqFO7fv4+lS5fi1KlTOHjwIPbt21cbNRIRERHpTPbMzeOPP4709HTcv38fffr0wU8//QQ7OzskJyfD3d29NmokIiIi0pnsmRsA6Ny5M1auXKnvWoiIiIhqTPbMzc6dO7Fr165y7bt27cKPP/6ol6KIiIiIqkt2uAkLC4NarS7XLoRAWFiYXooiIiIiqi7Z4ebcuXPo2bNnuXYXFxdkZmbqpSgiIiKi6pIdbmxsbHDhwoVy7ZmZmbCystJLUURERETVJTvcDBkyBO+//77W3YgzMzPxwQcfYPDgwXotjoiIiEgu2eFmwYIFsLKygouLCzp27IiOHTuiR48eaNmyJT755JPaqJGIiIhIZ7IvBbexscHBgwexe/duHDt2DBYWFujbty+eeOKJ2qiPiIiISJZq3edGoVDgueeew3PPPafveoiIiIhqpFrhJjExEYmJibhx4wY0Go3WsjVr1uilMCIiIqLqkB1uIiMjMXv2bHh4eKBNmzZ8EjgRERHVK7LDTWxsLNatW4fRo0fXRj1ERERENSL7aqnS0lL0799fbwXExMTA2dkZKpUKXl5eSElJqbJ/fn4+JkyYgDZt2kCpVKJbt27YuXOn3uohIiKihk12uHnrrbewadMmvex8y5YtCA0NRUREBNLS0uDq6gp/f3/cuHGjwv6lpaV49tlncenSJXzzzTc4c+YMVq5cCUdHR73UQ0RERA2f7MNSd+/exRdffIGff/4Zffv2hZmZmdbyxYsX67ytxYsXIzg4GEFBQQAeHPKKj4/HmjVrKnxO1Zo1a5CXl4eDBw9K+3V2dpY7BCIiIjJissPN77//Djc3NwDAiRMntJbJObm4tLQUqampmD59utRmYmICPz8/JCcnV7jO999/D29vb0yYMAHbt29H69at8frrr2PatGkwNTWVOxQiIiIyQrLDzd69e/Wy49zcXKjVatjb22u129vb4/Tp0xWuc+HCBezZswejRo3Czp07kZmZiXfffRf37t1DREREheuUlJSgpKREel9QUKCX+omIiKh+kn3OjSFpNBrY2dnhiy++gLu7O0aMGIEZM2YgNja20nWioqJgY2MjvZycnOqwYiIiIqpr1bqJ35EjR/D1118jKysLpaWlWsvi4uJ02karVq1gamqKnJwcrfacnBw4ODhUuE6bNm1gZmamdQiqR48eyM7ORmlpKczNzcutM336dISGhkrvCwoKGHCIiIiMmOyZm82bN6N///7IyMjAd999h3v37uHkyZPYs2cPbGxsdN6Oubk53N3dkZiYKLVpNBokJibC29u7wnV8fHyQmZmpdVfks2fPok2bNhUGGwBQKpWwtrbWehEREZHxkh1u5s2bhyVLlmDHjh0wNzfH0qVLcfr0abz66qto3769rG2FhoZi5cqVWL9+PTIyMjB+/HgUFRVJV08FBARonXA8fvx45OXlYdKkSTh79izi4+Mxb948TJgwQe4wiIiIyEjJPix1/vx5DBw4EMCD2ZeioiIoFApMnjwZTz/9NCIjI3Xe1ogRI3Dz5k2Eh4cjOzsbbm5uSEhIkE4yzsrKgonJ3/nLyckJu3btwuTJk9G3b184Ojpi0qRJmDZtmtxhEBERkZGSHW6aN2+OO3fuAAAcHR1x4sQJ9OnTB/n5+SguLpZdQEhICEJCQipclpSUVK7N29sbhw4dkr0fIiIiahxkh5snnngCu3fvRp8+fTB8+HBMmjQJe/bswe7du/HMM8/URo1EREREOpMdbj799FPcvXsXADBj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\n"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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evRATEwMgoOD8Z///Aeurq427JnltZhpKR8fHzg4ONRb+V1cXAx/f38b9Ur6NPeW991ypk+fjh07dmDfvn245557tMf9/f1RV1eHa9eu6bTnvW4YZ2dndOrUCVFRUUhJSUFERATef/993mcLy8rKQklJCXr16gVHR0c4OjriwIED+OCDD+Do6Ag/Pz/e7ybi5eWFe++9F6dPn5bc73WLCW6cnZ0RFRWF9PR07TG1Wo309HTExsbasGfSFhoaCn9/f537XlFRgcOHD/O+m0kQBEyfPh1fffUV9u7di9DQUJ33o6Ki4OTkpHOvT548iYKCAt5rC1Cr1aitreV9trCHHnoIv/76K3JycrQ/vXv3xjPPPKP9/7zfTeP69es4c+YMAgICpPd7besVzda0ceNGQaFQCJ9++qmQl5cnTJ48WfDy8hKKiops3bVmrbKyUvjll1+EX375RQAgLFmyRPjll1+E8+fPC4IgCAsXLhS8vLyEbdu2CUePHhVGjhwphIaGCjdu3LBxz5uXKVOmCEqlUti/f79QWFio/amurta2efHFF4X27dsLe/fuFX7++WchNjZWiI2NtWGvm6dZs2YJBw4cEPLz84WjR48Ks2bNEmQymfDdd98JgsD73NTuzJYSBN5vS3nttdeE/fv3C/n5+cKPP/4oxMXFCT4+PkJJSYkgCNK6zy0quBEEQfjwww+F9u3bC87OzkJ0dLRw6NAhW3ep2du3b58AoN7PhAkTBEG4nQ4+Z84cwc/PT1AoFMJDDz0knDx50radbob03WMAwtq1a7Vtbty4IUydOlXw9vYW3NzchMcee0woLCy0XaebqWeffVYIDg4WnJ2dhbZt2woPPfSQNrARBN7npnZ3cMP7bRkJCQlCQECA4OzsLAQGBgoJCQnC6dOnte9L6T7LBEEQbDNmRERERGR5LWbNDREREbUMDG6IiIhIUhjcEBERkaQwuCEiIiJJYXBDREREksLghoiIiCSFwQ0RERFJCoMbImpWQkJCkJqaqn0tk8nw9ddfW/QaDz74IF555RWD1yQi+8bghogaraioCC+99BI6dOgAhUKBoKAgDB8+XGefmqZSWFios9txUzhy5AgmT56sfd0UARURWY6jrTtARM3buXPn0K9fP3h5eWHx4sXo3r07bt68iV27dmHatGk4ceKE2edUqVSQyWSQy03/+8saOxa3bdu2ya9BRJbDkRsiapSpU6dCJpMhMzMTTzzxBO69917cd999SEpKwqFDhwAAS5YsQffu3eHu7o6goCBMnToV169f157j008/hZeXF7755huEhYVBoVCgoKAAJSUlGD58OFxdXREaGorPP/+83vXvHEU5d+4cZDIZtm7dikGDBsHNzQ0RERHIyMjQti8rK8OYMWMQGBgINzc3dO/eHV988YXR73jntFRISAgA4LHHHoNMJkNISAjOnTsHuVyOn3/+WedzqampCA4OhlqtNve2ElEjMLghoga7cuUK0tLSMG3aNLi7u9d738vLCwAgl8vxwQcf4NixY/jss8+wd+9evP766zptq6ursWjRInzyySc4duwYfH19MXHiRFy4cAH79u3Dli1b8NFHH6GkpMRkv/7xj3/gb3/7G3JycnDvvfdizJgxuHXrFgCgpqYGUVFR+Pbbb5Gbm4vJkydj3LhxyMzMFPWdjxw5AgBYu3YtCgsLceTIEYSEhCAuLg5r167Vabt27VpMnDhR1AgUEVmQrXfuJKLm6/DhwwIAYevWrWZ9bvPmzUKbNm20r9euXSsAEHJycrTHTp48KQAQMjMztceOHz8uABD+9a9/aY8BEL766itBEAQhPz9fACB88skn2vePHTsmABCOHz9usD/Dhg0TXnvtNe3ru3elDg4ONnhNjU2bNgne3t5CTU2NIAiCkJWVJchkMiE/P9/YrSCiJsB/ThBRgwmCIKrdnj178NBDDyEwMBAeHh4YN24cysrKUF1drW3j7OyMHj16aF8fP34cjo6OiIqK0h7r2rWrdjTImDvPExAQAADaER+VSoUFCxage/fuaN26NVq1aoVdu3ahoKBA1HcxZNSoUXBwcMBXX30F4PZU26BBg7TTWERkPQxuiKjBOnfuDJlMZnTR8Llz5/Doo4+iR48e+PLLL5GVlYVly5YBAOrq6rTtXF1dIZPJLNIvJycn7f/XnFOz7mXx4sV4//33MXPmTOzbtw85OTmIj4/X6UtDODs7Y/z48Vi7di3q6uqwYcMGPPvss406JxE1DIMbImqw1q1bIz4+HsuWLUNVVVW9969du4asrCyo1Wq899576NOnD+69915cunTJ5Lm7du2KW7duISsrS3vs5MmTuHbtWqP6/OOPP2LkyJEYO3YsIiIi0KFDB5w6dcqsczg5OUGlUtU7/vzzz2PPnj346KOPcOvWLTz++OON6isRNQyDGyJqlGXLlkGlUiE6OhpffvklfvvtNxw/fhwffPABYmNj0alTJ9y8eRMffvghzp49i3Xr1mHFihUmz9ulSxcMHToUL7zwAg4fPoysrCw8//zzcHV1bVR/O3fujN27d+Onn37C8ePH8cILL6C4uNisc4SEhCA9PR1FRUW4evWq9ni3bt3Qp08fzJw5E2PGjGl0X4moYRjcEFGjdOjQAdnZ2Rg0aBBee+01hIeHY8iQIUhPT8fy5csRERGBJUuWYNGiRQgPD8fnn3+OlJQUUedeu3Yt2rVrh4EDB+Lxxx/H5MmT4evr26j+vvHGG+jVqxfi4+Px4IMPwt/fH6NGjTLrHO+99x52796NoKAg9OzZU+e95557DnV1dZySIrIhmSB2RSAREZm0YMECbN68GUePHrV1V4haLI7cEBFZwPXr15Gbm4ulS5fipZdesnV3iFo0BjdERBYwffp0REVF4cEHH+SUFJGNcVqKiIiIJIUjN0RERCQpDG6IiIhIUhjcEBERkaQwuCEiIiJJYXBDREREksLghoiIiCSFwQ0RERFJCoMbIiIikhQGN0RERCQp/w+9mjsZZ4p0sQAAAABJRU5ErkJggg==\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "SBa0k9KK2PAt"
},
"source": [
"## Find Optimum Number of Clusters\n",
"\n",
"Let's try finding the right number of clusters as you did in the previous programming exercise. For details, read \"*Step Three: Optimum Number of Clusters*\" on [Interpret Results](https://developers.google.com/machine-learning/clustering/interpret).\n",
"\n",
"Run the code below (it takes a while!). The resulting plot is uneven for low `k`, showing that the k-means has a difficult time clustering the data. As `k` increases past 100, the loss evens out, showing that k-means is effectively grouping the data into clusters."
]
},
{
"cell_type": "code",
"metadata": {
"cellView": "form",
"id": "-df7QnPlhuIN",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "df16c756-966d-4a40-a734-e561af7b6ccb"
},
"source": [
"# Plot loss vs number of clusters\n",
"def lossVsClusters(kmin, kmax, kstep, choc_data):\n",
" kmax += 1 # include kmax-th cluster in range\n",
" kRange = range(kmin, kmax, kstep)\n",
" loss = np.zeros(len(kRange))\n",
" lossCtr = 0\n",
" for kk in kRange:\n",
" [choc_data, centroids] = kmeans(choc_data, kk, feature_cols, 0)\n",
" loss[lossCtr] = np.sum(choc_data['pt2centroid'])\n",
" lossCtr += 1\n",
" plt.scatter(kRange, loss)\n",
" plt.title('Loss vs Clusters Used')\n",
" plt.xlabel('Number of clusters')\n",
" plt.ylabel('Total Point-to-Centroid Distance')\n",
"\n",
"\n",
"kmin = 5 # @param\n",
"kmax = 200 # @param\n",
"kstep = 10 # @param\n",
"lossVsClusters(kmin, kmax, kstep, choc_embed)"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"k-means converged for 5 clusters after 40 iterations!\n",
"k-means converged for 15 clusters after 62 iterations!\n",
"k-means converged for 25 clusters after 47 iterations!\n",
"k-means converged for 35 clusters after 57 iterations!\n",
"k-means converged for 45 clusters after 27 iterations!\n",
"k-means converged for 55 clusters after 32 iterations!\n",
"k-means converged for 65 clusters after 22 iterations!\n",
"k-means converged for 75 clusters after 25 iterations!\n",
"k-means converged for 85 clusters after 17 iterations!\n",
"k-means converged for 95 clusters after 24 iterations!\n",
"k-means converged for 105 clusters after 28 iterations!\n",
"k-means converged for 115 clusters after 18 iterations!\n",
"k-means converged for 125 clusters after 22 iterations!\n",
"k-means converged for 135 clusters after 20 iterations!\n",
"k-means converged for 145 clusters after 17 iterations!\n",
"k-means converged for 155 clusters after 26 iterations!\n",
"k-means converged for 165 clusters after 15 iterations!\n",
"k-means converged for 175 clusters after 17 iterations!\n",
"k-means converged for 185 clusters after 14 iterations!\n",
"k-means converged for 195 clusters after 14 iterations!\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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AFQ11pxTQUGB2r4RERFwcHDAu+++W+ucOfe/d10a8xmNGDEClZWVGkOplUol1q1bB0tLS4SHhwOovkL191tarq6u8PDwUL1PSEgIfHx88P7776OkpKTO8zE3N0dERAR2796NrKws1fZLly4hPj6+3nMmak44pJuoCXzxxRe19u2YPXs23nnnHRw4cAB9+/bFyy+/jFatWuGzzz5DeXk5Vq5cqdrX398fAwcOREhICJycnHD69GnVkF4A+O233xAeHo5x48bB398frVq1wq5du3Dnzh0888wz9dbo6uqKxx57DKtWrUJxcbHGrafDhw/jlVdewVNPPQVfX19UVVXhv//9L8zNzREVFfXAYz/99NM4f/48li1bhjNnzmD8+PHw8vJCXl4e9u/fj0OHDj1wRuHJkydj1apViIiIwIsvvojc3FysX78e3bt3V3VEBoCXXnoJ+fn5GDRoENq3b4/r16/jo48+Qo8ePVTDtnv06AFzc3OsWLEChYWFsLKywqBBg+Dq6op169bhn//8J3r16oVnnnkGLi4uyMrKwo8//og+ffrg448/fuB5NuYzioyMxNChQzF37lycPHkSjz76KEpLS/H999/j6NGjeOedd+Di4gKgun9S+/bt8eSTTyI4OBh2dnY4ePAgTp06hQ8++ABAdaDbsGEDhg8fju7du+OFF15Au3btcOvWLRw5cgQODg6Ii4sDUB069+/fj379+uHll19GVVUVPvroI3Tv3l2t3xZRs2foS0VEpqzm9lNdjxs3bgghhEhJSRERERHCzs5O2NjYiMcee0wcO3ZM7VjvvPOO6N27t3B0dBStW7cWfn5+YtmyZaKiokIIIcSff/4pZs6cKfz8/IStra2Qy+UiNDRUbNu2Tet6P//8cwFA2Nvbi3v37qltu3btmpg8ebLw8fER1tbWwsnJSTz22GPi4MGDWh//0KFDYvTo0cLV1VW0atVKuLi4iMjISLFnzx7VPrXdfhJCiC1btohOnToJS0tL0aNHDxEfH68xpHvHjh1i6NChwtXVVVhaWooOHTqIadOmiezsbI3z7NSpk2rI8v23oo4cOSIiIiKEXC4X1tbWwsfHRzz//PPi9OnTqn3quv3U2M+orKxMLFmyRPj5+QkrKytha2srHnnkEbFlyxa1/crLy8WCBQtEcHCwsLe3F7a2tiI4OFh8+umnGsc8c+aM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q5g/fz5GjRql0+KIiIiItCU51KxcuRK2trbw8/ODt7c3vL290a1bNzg7O+P999/XR41ERERE9ZI8+Z5cLsexY8dw4MABnD17Fq1bt0ZQUBD69++vj/qIiIiItMJ5aoiIiKjZacjvt+QrNQBw6NAhHDp0CLm5uVAqlWrbvvjii4YckoiIiKhRJIeamJgYLF26FA8//DDc3d25MjcRERE1C5JDzfr167F582b885//1Ec9RERERA0iefRTRUUFHn30UX3UQkRERNRgkkPNSy+9hK1bt+qjFiIiIqIGk3z7qaysDP/5z39w8OBBBAUFwcLCQm37qlWrdFYcERERkbYkh5pz586hR48eAIALFy6obWOnYSIiIjIUyaHmyJEj+qiDiIiIqFEk96khIiIiao4aNPne6dOnsW3bNmRlZaGiokJt286dO3VSGBEREZEUkq/UfPvtt3j00Udx6dIl7Nq1C5WVlbh48SIOHz4MuVyujxqJiIiI6iU51Lz77rtYvXo14uLiYGlpibVr1+Ly5csYN24cOnTooI8aiYiIiOolOdRkZGRg5MiRAABLS0vcvXsXMpkMc+fOxX/+8x+dF0hERESkDcmh5qGHHkJxcTEAoF27dqph3QUFBSgtLdVtdURERERaktxRuH///jhw4AACAwPx1FNPYfbs2Th8+DAOHDiA8PBwfdRIREREVC/Joebjjz9GWVkZAODNN9+EhYUFjh07hqioKPz73//WeYFERERE2pAJIYShi9CnoqIiyOVyFBYWwsHBwdDlEBERkRYa8vstuU+Nubk5cnNzNdrz8vJgbm4u9XBEREREOiE51NR1Yae8vByWlpaNLoiIiIioIbTuU/Phhx8CqF60csOGDbCzs1NtUygU+Pnnn+Hn56f7ComIiIi0oHWoWb16NYDqKzXr169Xu9VkaWmJjh07Yv369bqvkIiIiEgLWt9+yszMRGZmJgYMGICzZ8+qnmdmZiI9PR3x8fEIDQ2V9OZLliyBTCZTe9x/taesrAwzZ86Es7Mz7OzsEBUVhTt37kh6DyIiImoZJPepOXLkCB566CHVc4VCgdTUVPz1118NKqB79+7Izs5WPX799VfVtrlz5yIuLg7bt29HYmIibt++jbFjxzbofYiIiMi0SQ41c+bMwcaNGwFUB5r+/fujV69e8PT0REJCguQCWrVqBTc3N9WjTZs2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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "hK5iKbQ9k5EJ"
},
"source": [
"# Summary\n",
"\n",
"The codelab demonstrates these characteristics of a supervised similarity measure, described on the page [Supervised Similarity Measure](https://developers.google.com/machine-learning/clustering/similarity/supervised-similarity) in the table \"*Comparison of Manual and Supervised Measures*\":\n",
"\n",
"* **Eliminates redundant information in correlated features**. As discussed in this [section](#scrollTo=MJtuP9w5jJHq), the DNN eliminates redundant information. However, to prove this characteristic, you'd need to train the DNN on adequate data and then compare with the results of a manual similarity measure.\n",
"* **Does not provides insight into calculated similarities**. Because you do not know what the embeddings represent, you have no insight into the clustering result.\n",
"* **Suitable for large datasets with complex features**. Our dataset was too small to adequately train the DNN, demonstrating that DNNs need large datasets to train. The advantage is that you do not need to understand the input data. Since large datasets are not easy to understand, these two characteristics go hand-in-hand.\n",
"* **Not suitable for small datasets**. A small dataset does not have enough information to train the DNN."
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment