{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# K-Means Clustering\n", "> A Summary of lecture \"Cluster Analysis in Python\", via datacamp\n", "\n", "- toc: true \n", "- badges: true\n", "- comments: true\n", "- author: Chanseok Kang\n", "- categories: [Python, Datacamp, Machine_Learning]\n", "- image: images/distortion.png" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Basics of k-means clustering\n", "- Why k-means clustering?\n", " - A critical drawback of hierarchical clustering: runtime\n", " - K means runs significantly fater on large datasets\n", "- K-means clustering\n", " - Generate cluster centers\n", " - Generate cluster labels" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### K-means clustering: first exercise\n", "This exercise will familiarize you with the usage of k-means clustering on a dataset. Let us use the Comic Con dataset and check how k-means clustering works on it.\n", "\n", "Recall the two steps of k-means clustering:\n", "\n", "- Define cluster centers through ```kmeans()``` function. It has two required arguments: observations and number of clusters.\n", "- Assign cluster labels through the ```vq()``` function. It has two required arguments: observations and cluster centers." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Preprocess" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x_coordinatey_coordinate
0174
1206
2350
3140
4374
\n", "
" ], "text/plain": [ " x_coordinate y_coordinate\n", "0 17 4\n", "1 20 6\n", "2 35 0\n", "3 14 0\n", "4 37 4" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "comic_con = pd.read_csv('./dataset/comic_con.csv', index_col=0)\n", "comic_con.head()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from scipy.cluster.vq import whiten\n", "\n", "comic_con['x_scaled'] = whiten(comic_con['x_coordinate'])\n", "comic_con['y_scaled'] = whiten(comic_con['y_coordinate'])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from scipy.cluster.vq import kmeans, vq\n", "\n", "# Generate cluster centers\n", "cluster_centers, distortions = kmeans(comic_con[['x_scaled', 'y_scaled']], 2)\n", "\n", "# Assign cluster labels\n", "comic_con['cluster_labels'], distortion_list = vq(comic_con[['x_scaled', 'y_scaled']], cluster_centers)\n", "\n", "# Plot clusters\n", "sns.scatterplot(x='x_scaled', y='y_scaled', hue='cluster_labels', data=comic_con);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Runtime of k-means clustering\n", "Recall that it took a significantly long time to run hierarchical clustering. How long does it take to run the kmeans() function on the FIFA dataset?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Preprocess" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sliding_tackleaggression
02363
12648
23356
33878
41129
\n", "
" ], "text/plain": [ " sliding_tackle aggression\n", "0 23 63\n", "1 26 48\n", "2 33 56\n", "3 38 78\n", "4 11 29" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fifa = pd.read_csv('./dataset/fifa_18_dataset.csv')\n", "fifa.head()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "fifa['scaled_sliding_tackle'] = whiten(fifa['sliding_tackle'])\n", "fifa['scaled_aggression'] = whiten(fifa['aggression'])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7.19 s ± 10.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "from scipy.cluster.hierarchy import linkage\n", "\n", "%timeit linkage(fifa[['scaled_sliding_tackle', 'scaled_aggression']], method='ward')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "69 ms ± 1.21 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], "source": [ "%timeit kmeans(fifa[['scaled_sliding_tackle', 'scaled_aggression']], 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## How many clusters?\n", "- How to find the right k?\n", " - No absolute method to find right number of clusters(k) in k-means clustering\n", " - Elbow method\n", "- Distortion\n", "![distortion](image/distortion.png)\n", " - sum of squared distances of points from cluster centers\n", " - Decreases with an increasing number of clusters\n", " - Becomes zero when the number of clusters equals the numbers of points\n", " - Elbow plot: line plot between cluster centers and distortion\n", "- Elbow method\n", " - Elbow plot helps indicate number of clusters present in data\n", " - Only gives an indication of optimal k\n", " - Does not always pinpoint how many k\n", " - Other methods : average silhouette, gap statistic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Elbow method on distinct clusters\n", "Let us use the comic con data set to see how the elbow plot looks on a data set with distinct, well-defined clusters. You may want to display the data points before proceeding with the exercise." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "distortions = []\n", "num_clusters = range(1, 7)\n", "\n", "# Create a list of distortions from the kmeans function\n", "for i in num_clusters:\n", " cluster_centers, distortion = kmeans(comic_con[['x_scaled', 'y_scaled']], i)\n", " distortions.append(distortion)\n", " \n", "# Create a data frame with two lists - num_clusters, distortions\n", "elbow_plot = pd.DataFrame({'num_clusters': num_clusters, 'distortions': distortions})\n", "\n", "# Create a line plot of num_clusters and distortions\n", "sns.lineplot(x='num_clusters', y='distortions', data=elbow_plot);\n", "plt.xticks(num_clusters);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Elbow method on uniform data\n", "In the earlier exercise, you constructed an elbow plot on data with well-defined clusters. Let us now see how the elbow plot looks on a data set with uniformly distributed points. You may want to display the data points on the console before proceeding with the exercise." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Preprocess" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x_coordinatey_coordinate
0393
1427
2583
3433
4136
\n", "
" ], "text/plain": [ " x_coordinate y_coordinate\n", "0 39 3\n", "1 42 7\n", "2 58 3\n", "3 43 3\n", "4 13 6" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "uniform_data = pd.read_csv('./dataset/uniform_data.csv', index_col=0)\n", "uniform_data.head()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "uniform_data['x_scaled'] = whiten(uniform_data['x_coordinate'])\n", "uniform_data['y_scaled'] = whiten(uniform_data['y_coordinate'])" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "distortions = []\n", "num_clusters = range(2, 7)\n", "\n", "# Create a list of distortions from the kmeans function\n", "for i in num_clusters:\n", " cluster_centers, distortion = kmeans(uniform_data[['x_scaled', 'y_scaled']], i)\n", " distortions.append(distortion)\n", " \n", "# Create a data frame with two lists - num_clusters, distortions\n", "elbow_plot = pd.DataFrame({'num_clusters': num_clusters, 'distortions': distortions})\n", "\n", "# Create a line plot of num_clusters and distortions\n", "sns.lineplot(x='num_clusters', y='distortions', data=elbow_plot);\n", "plt.xticks(num_clusters);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Limitations of k-means clustering\n", "- Limitations of k-means clustering\n", " - How to find the right K\n", " - Impact of seeds\n", " - Biased towards equal sized clusters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Impact of seeds on distinct clusters\n", "You noticed the impact of seeds on a dataset that did not have well-defined groups of clusters. In this exercise, you will explore whether seeds impact the clusters in the Comic Con data, where the clusters are well-defined.\n", "\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Initialize seed\n", "np.random.seed(0)\n", "\n", "# Run kmeans clustering\n", "cluster_centers, distortion = kmeans(comic_con[['x_scaled', 'y_scaled']], 2)\n", "comic_con['cluster_labels'], distortion_list = vq(comic_con[['x_scaled', 'y_scaled']], cluster_centers)\n", "\n", "# Plot the scatterplot\n", "sns.scatterplot(x='x_scaled', y='y_scaled', hue='cluster_labels', data=comic_con);" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Initialize seed\n", "np.random.seed([1, 2, 1000])\n", "\n", "# Run kmeans clustering\n", "cluster_centers, distortion = kmeans(comic_con[['x_scaled', 'y_scaled']], 2)\n", "comic_con['cluster_labels'], distortion_list = vq(comic_con[['x_scaled', 'y_scaled']], cluster_centers)\n", "\n", "# Plot the scatterplot\n", "sns.scatterplot(x='x_scaled', y='y_scaled', hue='cluster_labels', data=comic_con);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Uniform clustering patterns\n", "Now that you are familiar with the impact of seeds, let us look at the bias in k-means clustering towards the formation of uniform clusters.\n", "\n", "Let us use a mouse-like dataset for our next exercise. A mouse-like dataset is a group of points that resemble the head of a mouse: it has three clusters of points arranged in circles, one each for the face and two ears of a mouse." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- preprocess" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x_coordinatey_coordinate
033.87552844.893421
138.20874841.116327
235.74058857.418006
332.54696357.218082
462.06314647.196944
\n", "
" ], "text/plain": [ " x_coordinate y_coordinate\n", "0 33.875528 44.893421\n", "1 38.208748 41.116327\n", "2 35.740588 57.418006\n", "3 32.546963 57.218082\n", "4 62.063146 47.196944" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mouse = pd.read_csv('./dataset/mouse.csv', index_col=0)\n", "mouse.head()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "mouse['x_scaled'] = whiten(mouse['x_coordinate'])\n", "mouse['y_scaled'] = whiten(mouse['y_coordinate'])" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Generate cluster centers\n", "cluster_centers, distortion = kmeans(mouse[['x_scaled', 'y_scaled']], 3)\n", "\n", "# Assign cluster labels\n", "mouse['cluster_labels'], distortion_list = vq(mouse[['x_scaled', 'y_scaled']], cluster_centers)\n", "\n", "# Plot clusters\n", "sns.scatterplot(x='x_scaled', y='y_scaled', hue='cluster_labels', data=mouse);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### FIFA 18: defenders revisited\n", "In the FIFA 18 dataset, various attributes of players are present. Two such attributes are:\n", "\n", "- defending: a number which signifies the defending attributes of a player\n", "- physical: a number which signifies the physical attributes of a player\n", "\n", "These are typically defense-minded players. In this exercise, you will perform clustering based on these attributes in the data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Preprocess" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IDnamefull_nameclubclub_logospecialageleaguebirth_dateheight_cm...prefers_cbprefers_lbprefers_lwbprefers_lsprefers_lfprefers_lamprefers_lcmprefers_ldmprefers_lcbprefers_gk
020801Cristiano RonaldoC. Ronaldo dos Santos AveiroReal Madrid CFhttps://cdn.sofifa.org/18/teams/243.png222832Spanish Primera División1985-02-05185.0...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
1158023L. MessiLionel MessiFC Barcelonahttps://cdn.sofifa.org/18/teams/241.png215830Spanish Primera División1987-06-24170.0...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
2190871NeymarNeymar da Silva Santos Jr.Paris Saint-Germainhttps://cdn.sofifa.org/18/teams/73.png210025French Ligue 11992-02-05175.0...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
3176580L. SuárezLuis SuárezFC Barcelonahttps://cdn.sofifa.org/18/teams/241.png229130Spanish Primera División1987-01-24182.0...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
4167495M. NeuerManuel NeuerFC Bayern Munichhttps://cdn.sofifa.org/18/teams/21.png149331German Bundesliga1986-03-27193.0...FalseFalseFalseFalseFalseFalseFalseFalseFalseTrue
\n", "

5 rows × 185 columns

\n", "
" ], "text/plain": [ " ID name full_name \\\n", "0 20801 Cristiano Ronaldo C. Ronaldo dos Santos Aveiro \n", "1 158023 L. Messi Lionel Messi \n", "2 190871 Neymar Neymar da Silva Santos Jr. \n", "3 176580 L. Suárez Luis Suárez \n", "4 167495 M. Neuer Manuel Neuer \n", "\n", " club club_logo special age \\\n", "0 Real Madrid CF https://cdn.sofifa.org/18/teams/243.png 2228 32 \n", "1 FC Barcelona https://cdn.sofifa.org/18/teams/241.png 2158 30 \n", "2 Paris Saint-Germain https://cdn.sofifa.org/18/teams/73.png 2100 25 \n", "3 FC Barcelona https://cdn.sofifa.org/18/teams/241.png 2291 30 \n", "4 FC Bayern Munich https://cdn.sofifa.org/18/teams/21.png 1493 31 \n", "\n", " league birth_date height_cm ... prefers_cb \\\n", "0 Spanish Primera División 1985-02-05 185.0 ... False \n", "1 Spanish Primera División 1987-06-24 170.0 ... False \n", "2 French Ligue 1 1992-02-05 175.0 ... False \n", "3 Spanish Primera División 1987-01-24 182.0 ... False \n", "4 German Bundesliga 1986-03-27 193.0 ... False \n", "\n", " prefers_lb prefers_lwb prefers_ls prefers_lf prefers_lam prefers_lcm \\\n", "0 False False False False False False \n", "1 False False False False False False \n", "2 False False False False False False \n", "3 False False False False False False \n", "4 False False False False False False \n", "\n", " prefers_ldm prefers_lcb prefers_gk \n", "0 False False False \n", "1 False False False \n", "2 False False False \n", "3 False False False \n", "4 False False True \n", "\n", "[5 rows x 185 columns]" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fifa = pd.read_csv('./dataset/fifa_18_sample_data.csv')\n", "fifa.head()" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "fifa = fifa[['def', 'phy']].copy()" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "fifa['scaled_def'] = whiten(fifa['def'])\n", "fifa['scaled_phy'] = whiten(fifa['phy'])" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " scaled_def scaled_phy\n", "cluster_labels \n", "0 1.948298 7.163234\n", "1 3.817844 9.020452\n", "2 2.072803 9.066327\n" ] }, { "data": { "image/png": "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/BZFhGHZBOvnEWldTmXzEqwpskdUPJ6SY6/iDtF39hOs82e93vAQAx17Cc1vINLaRqh+PkPdHSlhlOjB7pRdwbG+o0nHbwQCxKNDOMdPVMTyRkZ8NcXR97huShUoPI/BrnaCc+ePWsVgd0dKjN+wLAK19f6TRPMynP6+pOMHiA8N4hzvTR6LCGYwRGVTC5HW5QTr5vo5+gsXU71kBeEFjRnr/4bmzvfHsqnV31WsFxzLmp///OesXbuWM888k49//OMpr1188cWMbgQ9cuQILS0tALz++uucd955nHXWWaxdu5Zdu3Zx6623smfPHs466yz+/u/9arR33XUX69evZ+3atXzzm98EoL29nZUrV3LzzTezbt06OjtT198ysWnTJs455xxWr17Nfffdl/Lal7/8ZdatW8dll12WzMzZs2cPV1xxBeeccw7vfve72blz57g+t2zZwqpVq1i7di2bN28+uUGbAD3znwb8ojHZzVBdZ2R828gwduREqGc0BdMMBPGcGO7I+Pf4jjmAUor4GKlmwwrgZTjfHR46kefvjV9D8GIjqYvUnodK083xY+V2wsYh0snU5hdLGXtsTlpkXMRAbD1H0fhO/Pbbb+f5559n7ty5HD16lC1btkz5vnvvvZcvfOELXHfddcRiMVzX5Y477uC1117jlVdeAWDbtm3s2rWLF198EaUUGzdu5LnnnmPx4sW8+eab/OxnP8s6TPTAAw9QV1dHNBpl/fr1XHPNNdTX1zM4OMi6deu4++67+fa3v81tt93GPffcw0033cS9995LW1sb27dv5+abb+bZZ59N6fOOO+5g3759BINBent7J7jyyaGdf4GxghXjCqkEquecqM8KfvqjkZjxGiZ2dQ2xYz3J18U0kyEfESFYW5983R2OUtGwCNJqpQVq61Py/EezdJLXjFSnzOSNQHDSJ5jAnHpGjh4Z15YrnuP4NydDEMMs+tKEmlRSdKpEcnpye/bZZ7n22muZO9d/Kq6ry65q3AUXXMDtt99OV1cXV199NW1tbePO2bZtG9u2bePss88GYGBggF27drF48WKam5s5//zzs7Zzy5YtPP744wB0dnaya9cu6uvrMQyDj3zkIwBcf/31XH311QwMDPD73/+eD33oQ8n3j2SYrK1du5brrruOTZs2sWnTpqxtmQzt/AuMWCaRpSsY6urAcxwCtXUE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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Setup a random seed in numpy\n", "np.random.seed([1000, 2000])\n", "\n", "# Fit the data into a k-means algorithm\n", "cluster_centers, _ = kmeans(fifa[['scaled_def', 'scaled_phy']], 3)\n", "\n", "# Assign cluster labels\n", "fifa['cluster_labels'], _ = vq(fifa[['scaled_def', 'scaled_phy']], cluster_centers)\n", "\n", "# Display cluster centers\n", "print(fifa[['scaled_def', 'scaled_phy', 'cluster_labels']].groupby('cluster_labels').mean())\n", "\n", "# Create a scatter plot through seaborn\n", "sns.scatterplot(x='scaled_def', y='scaled_phy', hue='cluster_labels', data=fifa);" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }