├── README.md ├── cover_fifa_22.jpg ├── fifa.ipynb └── players_22.csv /README.md: -------------------------------------------------------------------------------- 1 | # K-Means Clustering 2 | 3 | #  4 | 5 | 6 | Building a K-means clustering algorithm from scratch and using it to cluster the FIFA22 data. 7 | 8 | Clustering is an unsupervised machine learning technique that can find patterns in your data. K-means is one of the most popular forms of clustering. 9 | 10 | We'll create our algorithm using python and pandas. We'll then compare it to the reference implementation from scikit-learn. 11 | 12 | Project Steps 13 | 14 | * Write out pseudocode for the algorithm 15 | * Code the k-means algorithm 16 | * Plot the clusters from the algorithm 17 | * Compare performance to the scikit-learn algorithm 18 | 19 | # K-means overview 20 | 21 | K-means is an unsupervised machine learning technique that allow us to cluster data points. This enables us to find patterns in the data that can help us analyze it more effectively. K-means is an iterative algorithm, which means that it will converge to the optimal clustering over time. 22 | 23 | To run a k-means clustering: 24 | 25 | * Specify the number of clusters you want (usually referred to as `k`). 26 | * Randomly initialize the centroid for each cluster. The centroid is the data point that is in the center of the cluster. 27 | * Determine which data points belong to which cluster by finding the closest `centroid` to each data point. 28 | * Update the centroids based on the geometric mean of all the data points in the cluster. 29 | * Run 3 and 4 until the `centroids` stop changing. Each run is referred to as an iteration. 30 | 31 | # Code 32 | 33 | You can find the code for this project [here](https://github.com/taureanjoe/kmeans-clustering). 34 | 35 | ## Data 36 | 37 | We'll be using data from FIFA, which you can download [here](https://www.kaggle.com/datasets/stefanoleone992/fifa-22-complete-player-dataset?select=players_22.csv). We'll use the file `players_22.csv`. 38 | -------------------------------------------------------------------------------- /cover_fifa_22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taureanjoe/kmeans-clustering/6317826da46702012622970ee99312d9da507125/cover_fifa_22.jpg -------------------------------------------------------------------------------- /fifa.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "We are going to cluster the FIFA data dataset using our own K-means clustering algorithm.\n", 8 | "\n", 9 | "# \n", 10 | "\n", 11 | "The datasets provided include the players data for the Career Mode from FIFA 15 to FIFA 22 (\"players_22.csv\"). The data allows multiple comparisons for the same players across the last 8 version of the videogame.\n", 12 | "\n", 13 | "### Content\n", 14 | "\n", 15 | "* Every player available in FIFA 15, 16, 17, 18, 19, 20, 21, and also FIFA 22\n", 16 | "* 100+ attributes\n", 17 | "* URL of the scraped players\n", 18 | "* URL of the uploaded player faces, club and nation logos\n", 19 | "* Player positions, with the role in the club and in the national team\n", 20 | "* Player attributes with statistics as Attacking, Skills, Defense, Mentality, GK Skills, etc.\n", 21 | "* Player personal data like Nationality, Club, DateOfBirth, Wage, Salary, etc.\n", 22 | "\n", 23 | "Data has been scraped from the publicly available website [sofifa.com](https://sofifa.com/)." 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 2, 29 | "metadata": {}, 30 | "outputs": [], 31 | "source": [ 32 | "import pandas as pd\n", 33 | "import numpy as np" 34 | ] 35 | }, 36 | { 37 | "cell_type": "code", 38 | "execution_count": 18, 39 | "metadata": {}, 40 | "outputs": [ 41 | { 42 | "name": "stderr", 43 | "output_type": "stream", 44 | "text": [ 45 | "/var/folders/tm/5w0c8x0d2rzck8tf0hvstwf40000gn/T/ipykernel_5324/2061566770.py:1: DtypeWarning: Columns (25,108) have mixed types. Specify dtype option on import or set low_memory=False.\n", 46 | " players = pd.read_csv(\"players_22.csv\")\n" 47 | ] 48 | } 49 | ], 50 | "source": [ 51 | "players = pd.read_csv(\"players_22.csv\")" 52 | ] 53 | }, 54 | { 55 | "cell_type": "code", 56 | "execution_count": 19, 57 | "metadata": {}, 58 | "outputs": [ 59 | { 60 | "data": { 61 | "text/html": [ 62 | "
\n", 80 | " | sofifa_id | \n", 81 | "player_url | \n", 82 | "short_name | \n", 83 | "long_name | \n", 84 | "player_positions | \n", 85 | "overall | \n", 86 | "potential | \n", 87 | "value_eur | \n", 88 | "wage_eur | \n", 89 | "age | \n", 90 | "... | \n", 91 | "lcb | \n", 92 | "cb | \n", 93 | "rcb | \n", 94 | "rb | \n", 95 | "gk | \n", 96 | "player_face_url | \n", 97 | "club_logo_url | \n", 98 | "club_flag_url | \n", 99 | "nation_logo_url | \n", 100 | "nation_flag_url | \n", 101 | "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", 106 | "158023 | \n", 107 | "https://sofifa.com/player/158023/lionel-messi/... | \n", 108 | "L. Messi | \n", 109 | "Lionel Andrés Messi Cuccittini | \n", 110 | "RW, ST, CF | \n", 111 | "93 | \n", 112 | "93 | \n", 113 | "78000000.0 | \n", 114 | "320000.0 | \n", 115 | "34 | \n", 116 | "... | \n", 117 | "50+3 | \n", 118 | "50+3 | \n", 119 | "50+3 | \n", 120 | "61+3 | \n", 121 | "19+3 | \n", 122 | "https://cdn.sofifa.net/players/158/023/22_120.png | \n", 123 | "https://cdn.sofifa.net/teams/73/60.png | \n", 124 | "https://cdn.sofifa.net/flags/fr.png | \n", 125 | "https://cdn.sofifa.net/teams/1369/60.png | \n", 126 | "https://cdn.sofifa.net/flags/ar.png | \n", 127 | "
1 | \n", 130 | "188545 | \n", 131 | "https://sofifa.com/player/188545/robert-lewand... | \n", 132 | "R. Lewandowski | \n", 133 | "Robert Lewandowski | \n", 134 | "ST | \n", 135 | "92 | \n", 136 | "92 | \n", 137 | "119500000.0 | \n", 138 | "270000.0 | \n", 139 | "32 | \n", 140 | "... | \n", 141 | "60+3 | \n", 142 | "60+3 | \n", 143 | "60+3 | \n", 144 | "61+3 | \n", 145 | "19+3 | \n", 146 | "https://cdn.sofifa.net/players/188/545/22_120.png | \n", 147 | "https://cdn.sofifa.net/teams/21/60.png | \n", 148 | "https://cdn.sofifa.net/flags/de.png | \n", 149 | "https://cdn.sofifa.net/teams/1353/60.png | \n", 150 | "https://cdn.sofifa.net/flags/pl.png | \n", 151 | "
2 | \n", 154 | "20801 | \n", 155 | "https://sofifa.com/player/20801/c-ronaldo-dos-... | \n", 156 | "Cristiano Ronaldo | \n", 157 | "Cristiano Ronaldo dos Santos Aveiro | \n", 158 | "ST, LW | \n", 159 | "91 | \n", 160 | "91 | \n", 161 | "45000000.0 | \n", 162 | "270000.0 | \n", 163 | "36 | \n", 164 | "... | \n", 165 | "53+3 | \n", 166 | "53+3 | \n", 167 | "53+3 | \n", 168 | "60+3 | \n", 169 | "20+3 | \n", 170 | "https://cdn.sofifa.net/players/020/801/22_120.png | \n", 171 | "https://cdn.sofifa.net/teams/11/60.png | \n", 172 | "https://cdn.sofifa.net/flags/gb-eng.png | \n", 173 | "https://cdn.sofifa.net/teams/1354/60.png | \n", 174 | "https://cdn.sofifa.net/flags/pt.png | \n", 175 | "
3 | \n", 178 | "190871 | \n", 179 | "https://sofifa.com/player/190871/neymar-da-sil... | \n", 180 | "Neymar Jr | \n", 181 | "Neymar da Silva Santos Júnior | \n", 182 | "LW, CAM | \n", 183 | "91 | \n", 184 | "91 | \n", 185 | "129000000.0 | \n", 186 | "270000.0 | \n", 187 | "29 | \n", 188 | "... | \n", 189 | "50+3 | \n", 190 | "50+3 | \n", 191 | "50+3 | \n", 192 | "62+3 | \n", 193 | "20+3 | \n", 194 | "https://cdn.sofifa.net/players/190/871/22_120.png | \n", 195 | "https://cdn.sofifa.net/teams/73/60.png | \n", 196 | "https://cdn.sofifa.net/flags/fr.png | \n", 197 | "NaN | \n", 198 | "https://cdn.sofifa.net/flags/br.png | \n", 199 | "
4 | \n", 202 | "192985 | \n", 203 | "https://sofifa.com/player/192985/kevin-de-bruy... | \n", 204 | "K. De Bruyne | \n", 205 | "Kevin De Bruyne | \n", 206 | "CM, CAM | \n", 207 | "91 | \n", 208 | "91 | \n", 209 | "125500000.0 | \n", 210 | "350000.0 | \n", 211 | "30 | \n", 212 | "... | \n", 213 | "69+3 | \n", 214 | "69+3 | \n", 215 | "69+3 | \n", 216 | "75+3 | \n", 217 | "21+3 | \n", 218 | "https://cdn.sofifa.net/players/192/985/22_120.png | \n", 219 | "https://cdn.sofifa.net/teams/10/60.png | \n", 220 | "https://cdn.sofifa.net/flags/gb-eng.png | \n", 221 | "https://cdn.sofifa.net/teams/1325/60.png | \n", 222 | "https://cdn.sofifa.net/flags/be.png | \n", 223 | "
... | \n", 226 | "... | \n", 227 | "... | \n", 228 | "... | \n", 229 | "... | \n", 230 | "... | \n", 231 | "... | \n", 232 | "... | \n", 233 | "... | \n", 234 | "... | \n", 235 | "... | \n", 236 | "... | \n", 237 | "... | \n", 238 | "... | \n", 239 | "... | \n", 240 | "... | \n", 241 | "... | \n", 242 | "... | \n", 243 | "... | \n", 244 | "... | \n", 245 | "... | \n", 246 | "... | \n", 247 | "
19234 | \n", 250 | "261962 | \n", 251 | "https://sofifa.com/player/261962/defu-song/220002 | \n", 252 | "Song Defu | \n", 253 | "宋德福 | \n", 254 | "CDM | \n", 255 | "47 | \n", 256 | "52 | \n", 257 | "70000.0 | \n", 258 | "1000.0 | \n", 259 | "22 | \n", 260 | "... | \n", 261 | "46+2 | \n", 262 | "46+2 | \n", 263 | "46+2 | \n", 264 | "48+2 | \n", 265 | "15+2 | \n", 266 | "https://cdn.sofifa.net/players/261/962/22_120.png | \n", 267 | "https://cdn.sofifa.net/teams/112541/60.png | \n", 268 | "https://cdn.sofifa.net/flags/cn.png | \n", 269 | "NaN | \n", 270 | "https://cdn.sofifa.net/flags/cn.png | \n", 271 | "
19235 | \n", 274 | "262040 | \n", 275 | "https://sofifa.com/player/262040/caoimhin-port... | \n", 276 | "C. Porter | \n", 277 | "Caoimhin Porter | \n", 278 | "CM | \n", 279 | "47 | \n", 280 | "59 | \n", 281 | "110000.0 | \n", 282 | "500.0 | \n", 283 | "19 | \n", 284 | "... | \n", 285 | "44+2 | \n", 286 | "44+2 | \n", 287 | "44+2 | \n", 288 | "48+2 | \n", 289 | "14+2 | \n", 290 | "https://cdn.sofifa.net/players/262/040/22_120.png | \n", 291 | "https://cdn.sofifa.net/teams/445/60.png | \n", 292 | "https://cdn.sofifa.net/flags/ie.png | \n", 293 | "NaN | \n", 294 | "https://cdn.sofifa.net/flags/ie.png | \n", 295 | "
19236 | \n", 298 | "262760 | \n", 299 | "https://sofifa.com/player/262760/nathan-logue/... | \n", 300 | "N. Logue | \n", 301 | "Nathan Logue-Cunningham | \n", 302 | "CM | \n", 303 | "47 | \n", 304 | "55 | \n", 305 | "100000.0 | \n", 306 | "500.0 | \n", 307 | "21 | \n", 308 | "... | \n", 309 | "45+2 | \n", 310 | "45+2 | \n", 311 | "45+2 | \n", 312 | "47+2 | \n", 313 | "12+2 | \n", 314 | "https://cdn.sofifa.net/players/262/760/22_120.png | \n", 315 | "https://cdn.sofifa.net/teams/111131/60.png | \n", 316 | "https://cdn.sofifa.net/flags/ie.png | \n", 317 | "NaN | \n", 318 | "https://cdn.sofifa.net/flags/ie.png | \n", 319 | "
19237 | \n", 322 | "262820 | \n", 323 | "https://sofifa.com/player/262820/luke-rudden/2... | \n", 324 | "L. Rudden | \n", 325 | "Luke Rudden | \n", 326 | "ST | \n", 327 | "47 | \n", 328 | "60 | \n", 329 | "110000.0 | \n", 330 | "500.0 | \n", 331 | "19 | \n", 332 | "... | \n", 333 | "26+2 | \n", 334 | "26+2 | \n", 335 | "26+2 | \n", 336 | "32+2 | \n", 337 | "15+2 | \n", 338 | "https://cdn.sofifa.net/players/262/820/22_120.png | \n", 339 | "https://cdn.sofifa.net/teams/111131/60.png | \n", 340 | "https://cdn.sofifa.net/flags/ie.png | \n", 341 | "NaN | \n", 342 | "https://cdn.sofifa.net/flags/ie.png | \n", 343 | "
19238 | \n", 346 | "264540 | \n", 347 | "https://sofifa.com/player/264540/emanuel-lalch... | \n", 348 | "E. Lalchhanchhuaha | \n", 349 | "Emanuel Lalchhanchhuaha | \n", 350 | "CAM | \n", 351 | "47 | \n", 352 | "60 | \n", 353 | "110000.0 | \n", 354 | "500.0 | \n", 355 | "19 | \n", 356 | "... | \n", 357 | "41+2 | \n", 358 | "41+2 | \n", 359 | "41+2 | \n", 360 | "45+2 | \n", 361 | "16+2 | \n", 362 | "https://cdn.sofifa.net/players/264/540/22_120.png | \n", 363 | "https://cdn.sofifa.net/teams/113040/60.png | \n", 364 | "https://cdn.sofifa.net/flags/in.png | \n", 365 | "NaN | \n", 366 | "https://cdn.sofifa.net/flags/in.png | \n", 367 | "
19239 rows × 110 columns
\n", 371 | "\n", 571 | " | overall | \n", 572 | "potential | \n", 573 | "wage_eur | \n", 574 | "value_eur | \n", 575 | "age | \n", 576 | "
---|---|---|---|---|---|
0 | \n", 581 | "93 | \n", 582 | "93 | \n", 583 | "320000.0 | \n", 584 | "78000000.0 | \n", 585 | "34 | \n", 586 | "
1 | \n", 589 | "92 | \n", 590 | "92 | \n", 591 | "270000.0 | \n", 592 | "119500000.0 | \n", 593 | "32 | \n", 594 | "
2 | \n", 597 | "91 | \n", 598 | "91 | \n", 599 | "270000.0 | \n", 600 | "45000000.0 | \n", 601 | "36 | \n", 602 | "
3 | \n", 605 | "91 | \n", 606 | "91 | \n", 607 | "270000.0 | \n", 608 | "129000000.0 | \n", 609 | "29 | \n", 610 | "
4 | \n", 613 | "91 | \n", 614 | "91 | \n", 615 | "350000.0 | \n", 616 | "125500000.0 | \n", 617 | "30 | \n", 618 | "
... | \n", 621 | "... | \n", 622 | "... | \n", 623 | "... | \n", 624 | "... | \n", 625 | "... | \n", 626 | "
19234 | \n", 629 | "47 | \n", 630 | "52 | \n", 631 | "1000.0 | \n", 632 | "70000.0 | \n", 633 | "22 | \n", 634 | "
19235 | \n", 637 | "47 | \n", 638 | "59 | \n", 639 | "500.0 | \n", 640 | "110000.0 | \n", 641 | "19 | \n", 642 | "
19236 | \n", 645 | "47 | \n", 646 | "55 | \n", 647 | "500.0 | \n", 648 | "100000.0 | \n", 649 | "21 | \n", 650 | "
19237 | \n", 653 | "47 | \n", 654 | "60 | \n", 655 | "500.0 | \n", 656 | "110000.0 | \n", 657 | "19 | \n", 658 | "
19238 | \n", 661 | "47 | \n", 662 | "60 | \n", 663 | "500.0 | \n", 664 | "110000.0 | \n", 665 | "19 | \n", 666 | "
19165 rows × 5 columns
\n", 670 | "\n", 751 | " | overall | \n", 752 | "potential | \n", 753 | "wage_eur | \n", 754 | "value_eur | \n", 755 | "age | \n", 756 | "
---|---|---|---|---|---|
count | \n", 761 | "19165.000000 | \n", 762 | "19165.000000 | \n", 763 | "19165.000000 | \n", 764 | "19165.000000 | \n", 765 | "19165.000000 | \n", 766 | "
mean | \n", 769 | "4.670472 | \n", 770 | "5.319998 | \n", 771 | "1.219443 | \n", 772 | "1.131826 | \n", 773 | "4.063345 | \n", 774 | "
std | \n", 777 | "1.346635 | \n", 778 | "1.191076 | \n", 779 | "0.501528 | \n", 780 | "0.353229 | \n", 781 | "1.575838 | \n", 782 | "
min | \n", 785 | "1.000000 | \n", 786 | "1.000000 | \n", 787 | "1.000000 | \n", 788 | "1.000000 | \n", 789 | "1.000000 | \n", 790 | "
25% | \n", 793 | "3.739130 | \n", 794 | "4.521739 | \n", 795 | "1.012876 | \n", 796 | "1.021620 | \n", 797 | "2.666667 | \n", 798 | "
50% | \n", 801 | "4.717391 | \n", 802 | "5.304348 | \n", 803 | "1.064378 | \n", 804 | "1.044817 | \n", 805 | "4.000000 | \n", 806 | "
75% | \n", 809 | "5.500000 | \n", 810 | "6.086957 | \n", 811 | "1.193133 | \n", 812 | "1.092370 | \n", 813 | "5.333333 | \n", 814 | "
max | \n", 817 | "10.000000 | \n", 818 | "10.000000 | \n", 819 | "10.000000 | \n", 820 | "10.000000 | \n", 821 | "10.000000 | \n", 822 | "
\n", 874 | " | overall | \n", 875 | "potential | \n", 876 | "wage_eur | \n", 877 | "value_eur | \n", 878 | "age | \n", 879 | "
---|---|---|---|---|---|
0 | \n", 884 | "10.000000 | \n", 885 | "9.608696 | \n", 886 | "9.227468 | \n", 887 | "4.618307 | \n", 888 | "7.000000 | \n", 889 | "
1 | \n", 892 | "9.804348 | \n", 893 | "9.413043 | \n", 894 | "7.939914 | \n", 895 | "6.543654 | \n", 896 | "6.333333 | \n", 897 | "
2 | \n", 900 | "9.608696 | \n", 901 | "9.217391 | \n", 902 | "7.939914 | \n", 903 | "3.087308 | \n", 904 | "7.666667 | \n", 905 | "
3 | \n", 908 | "9.608696 | \n", 909 | "9.217391 | \n", 910 | "7.939914 | \n", 911 | "6.984396 | \n", 912 | "5.333333 | \n", 913 | "
4 | \n", 916 | "9.608696 | \n", 917 | "9.217391 | \n", 918 | "10.000000 | \n", 919 | "6.822018 | \n", 920 | "5.666667 | \n", 921 | "
\n", 1000 | " | 0 | \n", 1001 | "1 | \n", 1002 | "2 | \n", 1003 | "3 | \n", 1004 | "4 | \n", 1005 | "
---|---|---|---|---|---|
overall | \n", 1010 | "6.282609 | \n", 1011 | "5.108696 | \n", 1012 | "6.282609 | \n", 1013 | "5.500000 | \n", 1014 | "4.521739 | \n", 1015 | "
potential | \n", 1018 | "6.478261 | \n", 1019 | "4.717391 | \n", 1020 | "5.108696 | \n", 1021 | "4.130435 | \n", 1022 | "5.695652 | \n", 1023 | "
wage_eur | \n", 1026 | "1.115880 | \n", 1027 | "1.012876 | \n", 1028 | "1.373391 | \n", 1029 | "1.270386 | \n", 1030 | "1.064378 | \n", 1031 | "
value_eur | \n", 1034 | "1.097010 | \n", 1035 | "1.025099 | \n", 1036 | "1.175879 | \n", 1037 | "1.087731 | \n", 1038 | "1.055255 | \n", 1039 | "
age | \n", 1042 | "7.000000 | \n", 1043 | "5.666667 | \n", 1044 | "2.666667 | \n", 1045 | "2.000000 | \n", 1046 | "2.666667 | \n", 1047 | "
\n", 1213 | " | 0 | \n", 1214 | "1 | \n", 1215 | "2 | \n", 1216 | "
---|---|---|---|
overall | \n", 1221 | "5.807503 | \n", 1222 | "4.781960 | \n", 1223 | "3.205672 | \n", 1224 | "
potential | \n", 1227 | "6.497870 | \n", 1228 | "4.506813 | \n", 1229 | "4.930905 | \n", 1230 | "
wage_eur | \n", 1233 | "1.420500 | \n", 1234 | "1.118498 | \n", 1235 | "1.028564 | \n", 1236 | "
value_eur | \n", 1239 | "1.285685 | \n", 1240 | "1.044909 | \n", 1241 | "1.026655 | \n", 1242 | "
age | \n", 1245 | "3.598215 | \n", 1246 | "5.467648 | \n", 1247 | "2.514741 | \n", 1248 | "
\n", 1297 | " | short_name | \n", 1298 | "overall | \n", 1299 | "potential | \n", 1300 | "wage_eur | \n", 1301 | "value_eur | \n", 1302 | "age | \n", 1303 | "
---|---|---|---|---|---|---|
199 | \n", 1308 | "Pepe | \n", 1309 | "82 | \n", 1310 | "82 | \n", 1311 | "14000.0 | \n", 1312 | "5500000.0 | \n", 1313 | "38 | \n", 1314 | "
284 | \n", 1317 | "Joaquín | \n", 1318 | "81 | \n", 1319 | "81 | \n", 1320 | "23000.0 | \n", 1321 | "8500000.0 | \n", 1322 | "39 | \n", 1323 | "
292 | \n", 1326 | "José Fonte | \n", 1327 | "81 | \n", 1328 | "81 | \n", 1329 | "30000.0 | \n", 1330 | "4600000.0 | \n", 1331 | "37 | \n", 1332 | "
388 | \n", 1335 | "G. Buffon | \n", 1336 | "80 | \n", 1337 | "80 | \n", 1338 | "18000.0 | \n", 1339 | "2300000.0 | \n", 1340 | "43 | \n", 1341 | "
509 | \n", 1344 | "Iniesta | \n", 1345 | "79 | \n", 1346 | "79 | \n", 1347 | "10000.0 | \n", 1348 | "5500000.0 | \n", 1349 | "37 | \n", 1350 | "
... | \n", 1353 | "... | \n", 1354 | "... | \n", 1355 | "... | \n", 1356 | "... | \n", 1357 | "... | \n", 1358 | "... | \n", 1359 | "
18890 | \n", 1362 | "S. Haokip | \n", 1363 | "51 | \n", 1364 | "51 | \n", 1365 | "500.0 | \n", 1366 | "60000.0 | \n", 1367 | "28 | \n", 1368 | "
18971 | \n", 1371 | "Lalkhawpuimawia | \n", 1372 | "51 | \n", 1373 | "51 | \n", 1374 | "500.0 | \n", 1375 | "60000.0 | \n", 1376 | "29 | \n", 1377 | "
19032 | \n", 1380 | "Song Yue | \n", 1381 | "50 | \n", 1382 | "50 | \n", 1383 | "2000.0 | \n", 1384 | "40000.0 | \n", 1385 | "29 | \n", 1386 | "
19100 | \n", 1389 | "J. Russell | \n", 1390 | "49 | \n", 1391 | "49 | \n", 1392 | "500.0 | \n", 1393 | "15000.0 | \n", 1394 | "36 | \n", 1395 | "
19118 | \n", 1398 | "Gao Xiang | \n", 1399 | "49 | \n", 1400 | "49 | \n", 1401 | "2000.0 | \n", 1402 | "35000.0 | \n", 1403 | "32 | \n", 1404 | "
7191 rows × 6 columns
\n", 1408 | "KMeans(n_clusters=3)In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
KMeans(n_clusters=3)
\n", 1520 | " | 0 | \n", 1521 | "1 | \n", 1522 | "2 | \n", 1523 | "
---|---|---|---|
overall | \n", 1528 | "6.232940 | \n", 1529 | "4.800860 | \n", 1530 | "3.601045 | \n", 1531 | "
potential | \n", 1534 | "6.623509 | \n", 1535 | "4.503855 | \n", 1536 | "5.207475 | \n", 1537 | "
wage_eur | \n", 1540 | "1.657900 | \n", 1541 | "1.112885 | \n", 1542 | "1.040009 | \n", 1543 | "
value_eur | \n", 1546 | "1.414134 | \n", 1547 | "1.040007 | \n", 1548 | "1.035859 | \n", 1549 | "
age | \n", 1552 | "4.142102 | \n", 1553 | "5.608923 | \n", 1554 | "2.712137 | \n", 1555 | "