machinelearning

Machine learning code
git clone git://git.laack.co/machinelearning.git
Log | Files | Refs

KMeansBlobs.ipynb (59621B)


      1 {
      2  "cells": [
      3   {
      4    "cell_type": "code",
      5    "execution_count": 192,
      6    "metadata": {},
      7    "outputs": [],
      8    "source": [
      9     "from sklearn.cluster import KMeans\n",
     10     "from sklearn.datasets import make_blobs\n",
     11     "\n",
     12     "centers = [[-10, -10], [10, 10], [-10, 10], [10, -10], [0, 0]]  \n",
     13     "\n",
     14     "X, y = make_blobs(n_samples=1000, centers=centers)\n",
     15     "\n",
     16     "k=5\n",
     17     "\n",
     18     "kmeans = KMeans(n_clusters=k, random_state=42)\n",
     19     "y_pred = kmeans.fit_predict(X)"
     20    ]
     21   },
     22   {
     23    "cell_type": "code",
     24    "execution_count": 193,
     25    "metadata": {},
     26    "outputs": [
     27     {
     28      "data": {
     29       "text/plain": [
     30        "<matplotlib.collections.PathCollection at 0x7f4abf3b9090>"
     31       ]
     32      },
     33      "execution_count": 193,
     34      "metadata": {},
     35      "output_type": "execute_result"
     36     },
     37     {
     38      "data": {
     39       "image/png": "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RBl+OxERKQvTDTtnWcWtNgc0Owvienp/ztGDMCmhFI3ibNYS5Z73ljrcqsDX928lKlVU7tGjvNioEdmpnncSHXT//Zzx7LOlvseOOXOYdIqXYUmbjQadO3PjypUYhsGexYuZ98ILrJ8+HXduLnVataLvrbfS75ZbsIeHlzoOEZEy2b8cfjoP0rfnLUs2rfb0CafCWV9CVJzn5x5YBdMG+75rs+GA2NYwbpHvy5OrKCUqYi0LHjECd25ukTqSZqecwvhZs8o0imGaJu/370/S8uUeR1XO/+ILulx8cZHnuZ1O7F5WAomIVIi0HTClG+QeKbp3jmGHel3ggsVWN1hP3C7YPAU2/B8cWgNH9ngotDWg1VgYMhFqNAjkq6iUlKgIAPvXrWP+//7Hmi+/JDczk7rt2tHvllvoff31ARnFyEhO5tMzzmDfqlUYdjumy2X91+3mtKeeYvCDVafpkIhUQX/fBf+87n2Dv7O+htbn+37N7FRr00OwWt8f/MdKXBr0hVpNyhZvFaJERSqM2+lk4w8/sPbrr8lJT6dehw70vu466rZpE+zQRES8+6ABZHneTBXDDq3Os6aAJKB8ff/Wqh8pM5vDQYexY+kwdmywQxER8U9JtSWmC7IPVUwsUiytBxURkeorphWeG66RV/zatsLCkaKUqIiISPXV5Sbvx00ndLq2YmKRYilRERGR6qvz9RDf/1hH2BN1vQ0a9K7YmKQQJSoiIlJ9OSLhnF+h2+0QVuvY4zUbw+DXYPCrwYtNAK36ERERseRmQuomsIVB7fZg8zDKIgGhVT8iIiL+CKsB9bsHOwo5gaZ+REREJGQpUREREZGQpURFREREQpYSFREREQlZSlREREQkZClRERERkZClREVERERClhIVERERCVlKVERERCRkKVERERGRkKVERUREREKWEhUREREJWUpUREREJGQpUREREZGQpURFREREQpYSFREREQlZSlREREQkZClRERERkZClREVERERCVtATlccffxzDMAp9dOjQIdhhiYiISAhwBDsAgM6dO/Prr78WfO1whERYIiIiEmQhkRE4HA4aNmwY7DBEREQkxAR96gdg06ZNJCQk0KpVKy677DJ27tzp8dzs7GzS0tIKfYiIiEjVFPREpX///kyaNImZM2fy9ttvs23bNgYPHkx6enqx5z/zzDPExsYWfDRt2rSC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IlK5KFEREY82HgzseSe6Z6DVZK04NsOa4rmye8nXCfexH76v54lI6FCiIiIeRYf7dl5pC1VPbQGvnWWNnBw/ImIzrI62P14CdYrpfXKiUW09JzxgNX07uamV+IhI5aJiWhHxaGhLiI2A1GzP58SEw2k+TM94cls/OLU5vL3UKq6NsFudZK/tZe3I7IvhbaBzHGw4WHzC4jLhARXSilRKSlRExKNIBzw8GO771fM5Dw22Rj/Koms8vHV26Z9vM+CnS+GMz6xkJX+TRZthFdK+OhxGtitbjCISHEpURMSrewZauw4/NefYTssu05queeCk0neLDbSmsbDqRmujxWnrITPXGmW5rhc0rx3s6ESktLQpoYj4JCkDvlgNienQqBZc0gUaRQc7KhGprLQpoYgEVMNacJc27xORCqZVPyIiIhKylKiIiIhIyFKiIiIiIiFLiYqIiIiELCUqIiIiErKUqIiIiEjIUqIiIiIiIUuJioiIiIQsJSoiIiISspSoiIiISMhSoiIiIiIhS4mKiIiIhCwlKiIiIhKylKiIiIhIyFKiIiIiIiFLiYqIiIiELCUqIiIiErKUqIiIiEjICmqi0qJFCwzDKPTx7LPPBjMkERERCSGOYAfw5JNPct111xV8HR0dHcRoREREJJQEPVGJjo6mYcOGwQ5DREREQlDQa1SeffZZ6tWrR8+ePXnhhRdwOp1ez8/OziYtLa3Qh4iIiFRNQR1Ruf322+nVqxd169Zl3rx5PPjgg+zdu5eXXnrJ43OeeeYZnnjiiQqMUkRERILFME3TDOQFH3jgAZ577jmv56xbt44OHToUefzDDz/khhtuICMjg4iIiGKfm52dTXZ2dsHXaWlpNG3alNTUVGJiYsoWvIiIiFSItLQ0YmNjS3z/Dniisn//fg4ePOj1nFatWhEeHl7k8TVr1tClSxfWr19P+/btfbqfry9UREREQoev798Bn/qJi4sjLi6uVM9dsWIFNpuNBg0aBDgqERERqYyCVqMyf/58Fi5cyNChQ4mOjmb+/PncddddXH755dSpUydYYYmIiEgICVqiEhERweTJk3n88cfJzs6mZcuW3HXXXdx9993BCklERERCTNASlV69erFgwYJg3V5EREQqgaD3URERERHxRImKiIiIhCwlKiIiIhKylKiIiIhIyFKiIiIiIiFLiYqIiIiELCUqIiIiErKUqIiIiEjIUqIiIiIiIUuJioiIiIQsJSoiIiISspSoiIiISMhSoiIiIiIhS4mKiIiIhCwlKiIiIhKylKiIiIhIyFKiIiIiIiFLiYqIiIiELCUqIiIiErIcwQ5ARESkLDLJJIkk7NhJIIEwwoIdUoVw4yaTTGzYqEGNYIdTbpSohLhVq5JZvDgRh8PG6ae3pHHjmGCHJCISEjLJ5CdmsIqVuHEDEEkkgziJUzgVWxWdNHDhYh5zWcA80kkHoCGNOIUhdKFrkKMLPCUqIWr79hQuv3wqc+fuKnjMZjO46KLOnHlmayZPXs3u3Wk0bRrD1Vf35NxzO+JwVM1/lCIiJ8ommw95j/3sx8QseDyLLH5jNoc4zLmch4ERxCgDz4WLz/mMzWwq9LqTSeJLJnOAA5zK0CBGGHiGaZpmyaeFrrS0NGJjY0lNTSUmpmqMNuzff4QePd5h374jOJ3uYs+x2QzcbhO73cDlMhk8uBkzZlxGrVrhFRytiEjFm8Nf/MqsQm/WJ7qOG2hKswqMqvwtZTHfMt3rObdyBw1oUDEBlYGv79/6FTwEvf76IpKTMzwmKQBut/WP0+Wy/jtv3i7uuGNmhcQnIhJsS1jkNUmxYWMZSyswooqxkIVeR4ls2FjCogqMqPwpUQlBH320vCAB8ZXLZfLJJyvZv/9IOUUFLpebrCwnlXwQTkSqgFTSvB534+Ywhysomopz4ISprhO5cZNMcgVGVP5UoxKCDhw4WqrnOZ1u5s7dxdixHQIaz5IliTz33N9Mn74Bp9NN06Yx3HJLX26/vT9RUdWjul5EQksUkRzB8y9mBgY1qVnkcTdujLw/oWgviczlb9azDhcu4mnIAAbSje7Y8v6UxFHF3tqr1qupIhISarF1a0qpnps/JeSP9PRsEhPTqV07kvj4Wpimydy5u/jrrx2sX3+Azz9fBRybZtq1K42HHvqN777bwK+/XuFXsrJjRwqrVu0jIsLOSSc1o0YNJToi4r+e9GIuf3scXTAx6U4PAJw4WcJiFjCfQxzEjp2OdKIf/UkkkaUsJp10alGLXvShD32JIILtbGcD63HhpCGN6Eo3wim/OsB1rGUKXwAUrGLaSyJT+ZpNbOR8xhFBJDnkeL1OJJHlFmMwKFEJQddd15t///s3v5MOm82gf//GPp+/e3cajzzyG59/vpqcHBcA3bs3IDU1h+3bUwoKdYvjdpssWLCH556by+OPn+rTvW644Xt++mkz+TNH0dHh3HPPQB5++BTsds1CiojvBjCIZSwli6yCN/V8BgZNaUYb2uLEyf/xCVvYUnDchYs1rGE1qwo9L4ssfuFnFrGQCCJIJqlgBMONm5nMYBwX0Y72pYo5kT2sZAUZZBBDDD3pRQPiAWup9VdMKfJa8hOxVfxDS1qSQUaJ98kiq1TxhSqt+glBaWnZ9Ov3Hlu2HMLp9O1/j91ucP75HZkyZVyJ57rdJm+8sYh7751Fbq7ngl1f1K9fg7177/G6NHrfviP07v0uSUnpRV6PYcC11/bi3XdHlykOEal+DrCfL5lMEkkYGAVv6p3ozFjOI5JIn1YH+cOGjRu4iUYk+PwcJ06m8Q2r+AcbtkLJSHs6cDGXsoD5zGKm1zjjaMAhDuLC5fV+7enAZYz3Ob5g0aqfSiwmJoI5c67i3HM7YrMdm0eNinJQt24UhmG9wQMFn3fqFMfbb48q8dput8mVV07njjtmljlJAThwIJN9+7wX8P7vf/PYu7dokgJgmvDee8v455+qVfwlIuWvPnHcxK1cxw2MYCSjOYe7uIeLuZRIIjExWcD8gCUp+f5mjl/nz2Imq/gHoMiIyQbW8wovspMdJV5nP/toRvMS62ta0NKv+EKdpn5CVFxcTb78chx796azfHkSYWE2BgxogmEYTJq0gg8+WEZiYgaNG0dz3XW9mDChB263yQcfLGPDhoNER4dzwQWd6NgxrtB1n356Dp9++k9AY42M9PzXyDRN3ntvmddVTA6HjY8+Ws7LL58V0LhEpOrLn+Yprl/KUY6SXsLqIH+5cbOGNVyAWShhcONmM5tZwyqyyCKGWDrRmQY0YHEJy4VTSSUXZ4n3NjAYyCC2sdXj8TDC6Ekv/15UiFOiEgJSUrLIyXFRv36NQiMoAI0aRdOoUXShx269tR8XXNCJL75YxZ496WRk5PDRRyu4//5fyMzMxeGw4XabPProH4wb14mPPx5LVFQYb765mEce+T1gcdtsBv36NaZu3SiP5+TkuEhJ8T5f6nK52b07PWBx5UtJyeLjj1fw00+byc11M2BAY66/vjfNm9cO+L1EJPTYsZfLdd24mMib9KEvLWjJ7/zGOtYWmZJZyHzqUb/EqRqATC8rmMBKQlrRmg505HSGMZtfC00jGRg4cHAp46vcvj9KVILo22/X8+yzf7NgwR4AEhKiue22ftx990DCw4v/B2aaJv/5z1/85z9/FXSmdTrdHF9pdPyUzjffrAPgwgs7c+utMwIav9tt8tBDJ3s9JzzcTs2aYRw5kuvxHLvdRnx80WWEZbFo0R7OOuszUlKyCr43f/65neeem8tHH53D+PHdA3o/EQk9EUTQjObsYmfAp3/2spfv+a7E8w5ywKfrGRiEE04OOcXGamJyMoMBGMJQWtGahSxgN7uw46AjHelLP2Kp7dfrqAxUTBskL788n7vvnlXQCj+fzWZw2mkt+fHHS4tNVl59dQF33vmz3/dzOAyfC3O9MQwrRtOE1147i1tu6Vfic269dQYTJy7xOv2zcOG19Ovn+4olb1JSsmjV6lVSU7OLXTllsxksWHANffsG5n4iEnrcuNnKFpaznFWsDHY4JTIw6EFPtrCZtOOmq/KLhJvSFBduIoigC13oRg8iiAhixGXn6/u3EpUg2Lr1MG3avIan77xhwOuvjyiSBGRnO0lIeIlDh/xrCGcYeLyXv+Lja3LTTX245ppeNGni2/d7585UevZ8h9TUrCLJis1mcO65Hfjqq3EYRmAaML366gLuuutnj6/Z4bAxblwnPv/8/IDcT0RCyz6S+ZzPOMShIqts4Nibfxhh5JJb8HX+f+tQh8McLrSSqCKM5Tziacha1rCXREzcZJPNbnYXeR0xxHAV11KPehUWX6D5+v6tqZ8geP/9ZdhsnnuUALzxxqIiicqcOTv9TlIgcEkKQHLyEUaMaFtskrJnTxrvvruUn3/egstlMmRIc266qQ+tW9dl7tyrufzyqSxdurfgfIfDxnXX9eLll4cHLEkBCvVqKY7T6WbGjE0Bu5+IhI500vmQ9zmK9bPyxCTFho02tKMnPWlHe7awmeUsI5XUgt4m7WjPRjbwJ3+QyJ4Ki30WM8kkE7CSqXgaksTeYl9HOul8ysfczp0+dautzJSoBMHq1fu8JimmCRs2HMQ0TfbtO8LOnanUrRtFenp2BUZZPIfDxpdfrikyTTNr1hbOOWcyubmugte2fPleXnllAR9/PJbLLuvGkiXXs2zZXlasSCIy0sEZZ7QiLi6wtSmAT8uuvW34KCKV12IWcpSjHkdC3LjZxhaGM5wwwuhARzrQsch5HelES1rxAe9W2N45+UkKWDUp+UlKcUxMDnGQTWykPYHdNiXUKFEJgpo1w712fQWw2WDMmMn8+OPGgtGBTp3qV1CE3qWmFl7Fs3t3GmPHTiY721loJCP/9V1xxXS6dGlA9+4N6dWrEb16NSrX+AYMaMyff273+P21242A1cOISGhZycoSp2tyyeVrvuImbiGHHFbzD1vYgolJE5rSng7MZQ7LWFpkJCOU2LCxlS1VPlGp2uNFZeB2m3z77XrOPvv/aNv2Nfr3f5833lgUkFGNPn0albg7sstFoSQFYP16q3rcFsT/a06nm7/+2sHvv28reOzdd5eSk+PyOt1y9dXf8fHHKypkVOj663t7Pe5ymdx+e/9yj0NEKl4Wvk2P7yWRf1jBy/yP6UxjNatYw2pmMoNXeYmlLAnpJAWsUZWDHCQXz6sqqwIV0xYjN9fFuHFf8e23GwpGPvJLKJo3r81ff11J06axpbr200/P4d///q3UseUXxtps4A7SvyGbzYrh3XdHc+21vejf/30WLSp5HtcwICoqjBdeOIObb+5brjF++ulKJkyYjt1uK5jmyf9/eccd/QNeFyMioeFd3mY3u306N4wwnDgrtGC2PEQSyTDOoB8Dgh2KX9RCv5QSE9MZPPgjvv12A3Bs+sI0rY/du1M5//wvKU1+N3XqujIlKflxAPTr1yRoIytutxXHDTf8wM6dqbhcvmVMpgmZmbnccssMPvpoebnGOH58dxYuvJZx4zoRGxtBzZphnHJKc6ZNu0hJikgll8gefuJHvuZLfuFnDhzXq6Qvvo+W5pJb6ZMUsDYh/IHvWcC8YIdSLjSicpxt2w4zYMD77NuXWeK5CxZcQ//+Tfy6/oAB77N4caLfuyKfyOGwMWJEG+bM2Vli19fyZLcbPPjgyWzZcpjJk1f7tbqoUaNa7Nx5l9fNDEVEcsllA+s5zGEiiGATG9nAemzYCpYUu3EzkJM4ixG4cfMJkzy2ma/Kwgjnfh4knPBgh+ITLU8uhWuv/Z4DB0pOUux2gz/+2O5XopKRkcPChYFZ5uZ0uvn++40BuVZZuFwmzzzzd4n1NsXZuzeDefN2ccopzcshMhGpClaziu+YThZZRXqa5NeP5D82n7lEE83JDOYyxvMSLxRaRXOiCCLIpnxq5gwMoonmKEcDVj9ix15iK/5ccljPOrpRtTpv69fZPJs2HeS337b5XPfh7ziUr9MjlU1pkpR8yckZbN16mKSkjABGJCJVwQbW8yWTycIaNfZlimYOf+LEyUY2eE1SgHJLUsBKKrLJJooaNKdFibsd+8KX/YIMDDKoej9PNaKS559/fF8n73KZfo8ExMRE0KZNXbZsORTQBmyV2ZVXTicz09oxtE+fRjz66BBGj24f5KhEJNhMTH5hlt+dYY9ylN3sYhELKryr7PGceX+yySaN1Aq7r4lJDJWjQ7s/NKKSJzLSt5zNZjPo2bMhAwd6n/ZZs2YfL744j2eemcMvv2zBNOGuuwb4lKQ4HDYGDWpKRET57PwZKvKTFIBly5IYM2Yy77yzJIgRiUgoOMB+9pFcqkQjFyfJpXxuZRdOeJXsqaIRlTxDhrSgRo0wMjO9zyc2alSLb7650OOqkcOHj3LJJd/w889bsNutc1wuk9at63DFFd28XrtXr4bcffdADhzI5MEHZ5Od7QroPj2hLL/A+NZbf2Ls2A7Ex9cKckQiEiyZPvZCKcrAlTeSUR11ojNhhAU7jIDTiEqeWrXCufPO/nhbtTpkSHNWr76Zli3rFHvc5XJz1lmf8euvW/O+NgtqOLZvT+Hxx//0GsOKFcn88stW7rzzZ44etUYbqkOScjy32+Tjj0N/p1MRKT+1qe33c2zYaEELvmJKyDdqE/8oUTnOk08O5aqregLW9IvNZhQsn73ssq788st4ateO9Pj8H3/cxKJFicUWmLpcZolJh96kram1DRsOlHyiiFRZscTSmjY+F6EaGNSiFmGE+VR0WlVV1QRNUz/HsdttfPDBGO64oz+TJq1gz550GjWqxRVXdPdpf5ovvlhd4h4+UrLo6IhghyAiQTaCs3mHtz12js0vlg0nnN70pR/9eZWXghBp6GhG1Wz3oESlGN26xfPSS8P9ft6hQ5lKUsrI6XQzblynYIchIkF0lKP8wqxie5DUpR4jOJu2tCOHHMIJx4aNVawKQqShwcAgjHC60yPYoZQLJSoB1Lp1XRyO7QV7y4h/DMMqah40qGmwQxGRIHHh4lMmsYfiG2RmcZQEGuPEyQ62k002uTj5nukVG2iIMLBhx8alXE4EVXM0WolKAF17bS/eflvLa0srMtLB1KmeV1SJSNW3kQ1eNxXMJJOvmMJeEqvd6p4HeIgd7GARC9nLXhw46Exn+jOAutQLdnjlptyKaZ966ikGDRpEjRo1qF27drHn7Ny5k5EjR1KjRg0aNGjAfffdh9PpLPbcyqBXr0bcemu/Yo/ZbHrzLcnRo86C1U4iUj2tZEWJRbTb2VbtkhSAz/iUjnRiAlfxAA9xL/9iBCOrdJIC5Zio5OTkMG7cOG666aZij7tcLkaOHElOTg7z5s3j448/ZtKkSTz66KPlFVKFeO21s3j55eE0anSsD0hUlIP+/RsHbbfjyuTTT1eWamdqEakajnCkWjZr88VudpFOerDDqHDlvnvypEmTuPPOO0lJSSn0+E8//cSoUaNITEwkPj4egIkTJ3L//fezf/9+wsN92/0xkLsnB5LT6WbNmn3k5Ljo0KE+kyat4M47fy7zzsnVwXXX9eKdd0ZpCkikGprGN6xkRZVdaltWIzibgZwU7DACwtf376D9jj9//ny6du1akKQADB8+nLS0NNasWePxednZ2aSlpRX6CEUOh43u3RvSt29joqMjGDWqnUYKfPTee8uYNWtLsMMQkSDoRW8lKV4Eok/MPvaxhMUsZQmHOBSAqMpX0Ippk5KSCiUpQMHXSUlJHp/3zDPP8MQTT5RrbOWhZcs6XHxxF6ZMWaNRlRI4HDbeemsJw4e3CXYoIlLBmtGc7vRkJcuDHUpI6kjnUj83jVS+5iu2s63Q4+3pwLmcTw1qlDW8cuHXiMoDDzyAYRheP9avX19esQLw4IMPkpqaWvCxa9eucr1fIL3zzihOPrlZsMMIeU6nm1WrfN/NWkSqDgODczmP0zi9Su5bUxY1qUm9UhbOZpHFB7zHTnYUObaRDXzMRzgJzcUMfo2o3HPPPVx55ZVez2nVqpVP12rYsCGLFi0q9FhycnLBMU8iIiKIiKhca8VN0+SNNxbx7LNzSUysfoVQpVGrlm81SiJS9diwMYShLGcZhzkc7HBCRhwNPB4zMdnFLpJIxI6dNrQjltiC40tZQgopxRYqm5jsJZE1rA7JpnF+JSpxcXHExcUF5MYDBw7kqaeeYt++fTRoYH3zf/nlF2JiYujUqWp1Jr333lm89NKCYIdRadhsBhddVPrhTRGp/PaSqCTlBNvZRjrpRBNd6PF97OMrJpPMsZFoA4NudGc05xBOOMtY6nU1lYHBCpZX/kTFHzt37uTQoUPs3LkTl8vFihUrAGjTpg21atXizDPPpFOnTowfP57nn3+epKQkHn74YW655ZZKN2LizapVyUpS/FS7diTXX9872GGISBAd4UiwQwhJhzlUKFFJIYUPeJcssgqdZ2LyDys5QgbjuZLMEr6fJiYZIbr0udwSlUcffZSPP/644OuePa1diX///XdOPfVU7HY7P/zwAzfddBMDBw6kZs2aTJgwgSeffLK8QgqK999fhsNhU1t9P5x+ekvi4moGOwwRCaLa1A52CCHpe75lFOfQiEasZhW/8gtHOVrsuSYmm9nMdrYTS6zX5M/AoDZ1yivsMin3PirlLVT7qOQbPfoLfvhhY7DDqFTCwmzs3XsP9eqFZgW6iFSMibzFXhLVAK4Y4YSTQ06J59mw0YOeNKEJ3/Gt13Mv5XI60DFQIZYo5PuoVBd16kRitwc7iuCz231v3pab6+b337eXXzAiUimMZBQ2bFBCS/3qyJckBcCNm1RS6U5PGtO42O0JDAza0JZ2tA90mAGhRKWcdexYH1cZ+vPExlaN1S8ul3+/EeXklL2pkYhUbk1pxtVcRx1NA5XJVrawlS1M4Gp60Csv+bM4CKM/A7mEywo9Hko09VOO3G6Ttm1fY+vWlFI93zDg3HM7MHVq+famqSiGAb7+bVu//hbat69fvgGJSKWQRBJv8Xqww6jU7Ni5jTuoSz0yySSRPRgYNKYJkUQGJSZN/YSAOXN2lDpJAetNvaokKeBbkmK3Gwwd2kJJiogUiCeecKrG6HKwuHGzCKt3WQ1q0Ia2tKZN0JIUfyhRKUdbtpSuB4BhWB/VUcOGtZg0aWywwxCREGJgcBrDgh1GpWZisokNwQ6jVJSolKM6dUqXqZqm71MklUlJydf11/di+fIbaNYs1vuJIlLtDGQQPegZ7DAqNVcl3exRiUo5Gj68DdHR/g1X+ro6xmarfEMuNptBt24NiIws3L6nXbt6LFhwDe+8M1r9U0SkWAYGLfFtixYpyoaN5jQPdhilErTdk6uDGjXCePTRIdx33y8+P8fhsOEqYZlQvXpRtGlTl0WL9lSqkRfThAkTenD11T2ZOXMzGRk5dOxYn0GDmmL4MdfldLqZPHk177yzhE2bDlGnThTjx3fj+ut7U7++eq+IVFVppGHDhruSjgyUFwODeBqSxF6P57hx058BgLW0+SAHsGOnPnEhu9onn1b9lDPTNHn66Tk8+eRf5Oa6sNsLd6m12QzcbpPY2Aief/4Mnnvub68FuHa7wZgx7bnmmp6MGvVFBbyCwAkPt5OYeHeZGrllZzsZPfoLfvlla8H3DqzvY4MGNfnrrytp27Z0u4uKSGhbwmK+Y3qwwwgpNmx0ojMXcjHzmMtMZhQ6bmBgYnI2o+hFb2bzC0tYTC65AEQTw2BOoT8Diu2xUp58ff/WiEo5MwyDf//7FG66qS9ff72W5OQMmjSJ4eyz2zJnzk4SE9Np1KgWo0a1IyoqjH37jvDYY38UvAGfyOUyGT++G999V7mKogwDPvhgTJm7zT7++B/Mnr0NoND3yO022b//COeeO4VVq27ya4RGRCqHTnTmR77HRfD6LDUgnkgi2cmOoMVwPDduwgjjAPvZxc4ix01M6lKPjnRiEh+whz2FOv2mk8YMfuAgBxnJqIoM3WcaUQkR2dlO9u07gtPpZuDAD9i370iRaR273aB//ybceWd/Lrzwa5+vnZBQi8TEDL9jyn+vD8TfkLFj2zNt2sVlukZWlpP4+P+Rlpbt9bw//7ySU06pnHOxIuLdH/zGb8wO2v3HcTELmFdsUhAM+aMgJe2MXI/6HGC/12vdyM0k0Dig8XmjPiqVxL59R7jllh+JjX2WZs1eoVWr10hOLpqkgFW/cued/Rk/flqJ17XZ4Moru7Nr113s2XMPDz88uNjzatWyin1PHICw2w3CwuzY7YH5K5KSklXySSVYv/5AiUmK3W7w99+h8QNERAJvCEMZxpk4yjghEEFEqZ73G78SQUSFT5N4Yub9KemckpIUGzaWsiSQoQWMpn6CKDk5g96932XPHt+21nY63Vx22VRyc0suJOvevSEffTS24Ov//Oc0brutP88//zdLluylVq1wbrmlLyNGtOW77zbw4IOzWbvW+otsGDB8eGtGjWrHzTfP8HAH//j6Gr3xdaVTZVwRJSK+MTA4hSH0ZwDLWcoSlrCPZJ+eO5oxtKQ1YLWV/4Hv/L7/QQ7QkIZVbqNEN24OciDYYRRLiUoQ3XffL369gbtcps975uSPlByvQYOa/O9/w4s8PmZMe0aPbsf69QdIScmiefPaJCRE43K5ee65uezeneb3Xj0n2rYtBdM0y1Q70qFDferVi+LgweK3NAfre3TaaS1LfQ8RqRwiiGAAg+jHAF7hJVIoucHmPvbTl/4A5Pq4qV9x1rKGWGqTRmqVSVgMDKIIzVWTmvoJktTULD7/fFW5XT8hIdqv8w3DoGPHOAYObFrwXLvdxvffX0JsbGSZO+U6nW6fRoK8CQ+3c9ddAzzG4nAY9OvXmL59E8p0HxGpPGzYON3HrrULmc8edgPQiAQa06RUS3NNTI9JipH3JzR5jsvEpCvdKjAW3ylRCZLt21PKPErhzZQpa5g8eXWZr9O1azxr1tzM+ed3KtN14uNrEh5uL3M8DzxwMhdd1AWwanbAqscBaNGiDlOnXqgVPyLVTHd6cLYPK1ZOrMO4gHFEEVWqe3oaSTmdYbSlXamuWV5s2GhAPBGEF5tEGRg0pBHt6RCE6EqmRCVIipuaCbQHHvjV4zJnfzRsWIv/+7/zaNSols+dc49ntxvccEPvMsdhXcvG55+fx8yZlzFmTHu6dGnA4MHNee+90axceSONG1felV8iUnoDGIgd778MWXUYBwu+rkd9buJWutE9YHHMYy4XcymXcJnPzzl+FOb4RKIt7Qq68ZZ2lMbAoCY1uZTLuZprqU1twEpe8q/ZghZM4KoSv3/BouXJQZKd7SQm5llycsq3H8D8+dcwYECTgFxr2bK9nHbax2Rk5Pg8GmQY0L59fRYsuIbY2NDfpVNEKq9neZpMjng8bmDQkU5czKVFjv3CLObwZ0DiaEwT9rOPHB/qYAwMWtOG0YzhCEfYzS5s2GhFG+pTHxcuVrKchSzkAPuxYyeHnCKrfWzYiCSSAQxkLWtJ4TA1qEEPetKX/tTE2p7EjZstbGYPu7Fhpy1taURwpsvV8C3E3X//rz4lKfkrWOx2g+efP4OVK5OYNGmlz/c5eDCz1DGeqFevRqxdewtvv72YL75YzYEDmaSmel8uDPDNNxcqSRGRctedHixgPqaHFvve6jCGcQbxxPMHv5e4lLck+XUwvjAx2cwm/mElQxhKE5oWOm7HTi/60Is+BY8dYD9/8DurWYUbNw4c9KAnQziVWGpzKqd5vJ8NG21pF3LTU95oRCUIDh8+SqNGL5Kd7T1RadEiltGj29GmTT0uu6wr9erVwO02mThxCf/5z18kJZXcxG327CsAa6qpd+9GAeuLAlaX2KeemlNoS4DiREeHM3Pm5Qwa1NTreSIiZZFCCm/yWsGIw/EMbMTTgBu4ucQpjid4NCjdb+/gLupR3+fzc8klm2wiiSxzX5lgUMO3EPbHH9tLTFIAnn/+DF577Wxuv71/Qet5m83g5pv7smvXncTHe95p2GaD2NgIhg37hNNP/4T+/d+nWbNXePfdpQF7HZGRDnzJc48cyWX48M9ITCx7LxUREU9qU5uruZZYYoHCdRjNac4ErvapDqM/A8s1zuIYGCzxs+FaGGHUolalTFL8oUQlCHytS/FWCOtw2PnggzHYbEbBqpd8Nhu43ZCRkVOow21iYjo33PADzzwzpzRhFzFqVDufalXcbpPMzFzeeSc0ux6KSNXRiATu5B4u5wqGMJTTOYMbuZmrubagTqMkJzOYmtTyWsAa6CXIJiYHyzjlVFUpUQmCnj0b+XRer17ezxs5sh2zZl1O9+4NCz0eF1cTu93wmEQ88sjvPk0blaRLlwaMGNHGp5VAbrfJtGnry3xPEZGS2LDRjvYM5TROYYjf+9fUohbXc0ORehEDg570YgJX0ZjALFI4/trhpWzrX9VV7fGiENWuXT1OO60lf/65vdhkwuEwGDKkBW3b1ivxWqef3oply25gw4YD7Nt3hPr1a9Cz5zteRzpMEz79dCX33XdSmV4HwBdfnM+YMZP566+SdxLNynKW+X4iIhWhDnW5jhtIJok97MaOg1a0IhqrlqI1bTjIQdJJJ4pIJvI2Lkr/M87EpDNdAhV+laIRlSD56KNzaNiwaF8Su90gPr4WH354jl/Xa9++PoMHN6dmzfAS61/sdoMdO1L9jrk4sbGR/PHHBIYMae61e63DYVPHWBGpdOJpSC/60J0eBUlKvnrUowUt8s7pVeK1PHWttWGjIQ1DtuFasClRCZJmzWJZtuwG/vWvk4iLq4FhQFxcDf71r5NYtuwGmjWLLdV1a9eOLHFTPrfbpH79wO3pYBgGTzxxarE7PudzOt3ccku/gN1TRCSUDOX0IonM8ZrnNVWLxGrVYMv7A5BAY67gqlK1868OtDw5RJR1w77jjR07mR9+2Oh1+mfDhltp167kqSV/PPjgrzz77NxC9TH5nz/yyCk8+eTQgN5PRCSUZJDBz/zEP6wsWB4dRRQncwqDOQUAJ07WsoZEEnFgpx3taUqzEN4fqPz4+v6tRKUKWrEiiQED3ic3111k5ZBhwFVX9eSDD8aUy72/+WYtL700n/nzrYZHgwY15d57BzF2rIY0RaR6yCKLVFIJJ5w61Al2OCFLiUo1N2fODsaPn8aOHanYbAZut4nDYeOmm/rw4otnEhZWvns6uFxWE7hANpgTEamKDnOIf1jJETKJJZbu9KAWtYIdVrlToiK43SazZ29l3boD1KoVzqhR7WjQwLc+AiIiUr7cuPmRH1jMwoJCWxMTA4NTOY1GNCKTTGpTh+Y0r3I1LEpUREREQthMfmIef/t0bm3qMIZzaEPbco6q4qiFvoiISIjKJJMFzPP5/FRS+JSP2cbWcowqNClRERERqWAb2YDbwy7PxclfRfQzM8srpJClREVERKSC5ZDt93NMTBLZw4FqtieQEhUREZEKVo+4Uj83nbLv1VaZKFERERGpYC1pSW1ql6rRWwzR5RBR6FKiIiIiUsFs2DiPcdiw+ZysGBg0oSn1qF/O0YUWJSoiIiJB0IIWXMcNtKVdQbLiKWnJ77NyFiMqMsSQ4Ah2ACIiItVVAo25nCs4mvenJjVZx1pm8TMZpBecF0ccoziHZjQPYrTBoURFREQkyKLy/gD0oCdd6cZOdnKUTGpTm0YkVMuNC0GJioiISMixY6clLYMdRkhQjYqIiIiELCUqIiIiErKUqIiIiEjIUqIiIiIiIUuJioiIiIQsJSoiIiISspSoiIiISMhSoiIiIiIhS4mKiIiIhKxK35nWNE0A0tLSghyJiIiI+Cr/fTv/fdyTSp+opKdbmzY1bdo0yJGIiIiIv9LT04mNjfV43DBLSmVCnNvtJjExkejoaAyjem7Y5K+0tDSaNm3Krl27iImJCXY4VYa+r4Gn72ng6XsaePqelo5pmqSnp5OQkIDN5rkSpdKPqNhsNpo0aRLsMCqlmJgY/aMqB/q+Bp6+p4Gn72ng6XvqP28jKflUTCsiIiIhS4mKiIiIhCwlKtVQREQEjz32GBEREcEOpUrR9zXw9D0NPH1PA0/f0/JV6YtpRUREpOrSiIqIiIiELCUqIiIiErKUqIiIiEjIUqIiIiIiIUuJSjXz1FNPMWjQIGrUqEHt2rWLPWfnzp2MHDmSGjVq0KBBA+677z6cTmfFBlrJtWjRAsMwCn08++yzwQ6rUnnzzTdp0aIFkZGR9O/fn0WLFgU7pErr8ccfL/L3sUOHDsEOq9L566+/GD16NAkJCRiGwfTp0wsdN02TRx99lEaNGhEVFcWwYcPYtGlTcIKtQpSoVDM5OTmMGzeOm266qdjjLpeLkSNHkpOTw7x58/j444+ZNGkSjz76aAVHWvk9+eST7N27t+DjtttuC3ZIlcaUKVO4++67eeyxx1i2bBndu3dn+PDh7Nu3L9ihVVqdO3cu9Pfx77//DnZIlc6RI0fo3r07b775ZrHHn3/+eV577TUmTpzIwoULqVmzJsOHDycrK6uCI61iTKmWPvroIzM2NrbI4zNmzDBtNpuZlJRU8Njbb79txsTEmNnZ2RUYYeXWvHlz8+WXXw52GJVWv379zFtuuaXga5fLZSYkJJjPPPNMEKOqvB577DGze/fuwQ6jSgHMadOmFXztdrvNhg0bmi+88ELBYykpKWZERIT5xRdfBCHCqkMjKlLI/Pnz6dq1K/Hx8QWPDR8+nLS0NNasWRPEyCqfZ599lnr16tGzZ09eeOEFTZ/5KCcnh6VLlzJs2LCCx2w2G8OGDWP+/PlBjKxy27RpEwkJCbRq1YrLLruMnTt3BjukKmXbtm0kJSUV+nsbGxtL//799fe2jCr9poQSWElJSYWSFKDg66SkpGCEVCndfvvt9OrVi7p16zJv3jwefPBB9u7dy0svvRTs0ELegQMHcLlcxf49XL9+fZCiqtz69+/PpEmTaN++PXv37uWJJ55g8ODBrF69mujo6GCHVyXk/3ws7u+tfnaWjUZUqoAHHnigSKHciR/6AV92/nyf7777bk499VS6devGjTfeyIsvvsjrr79OdnZ2kF+FVEcjRoxg3LhxdOvWjeHDhzNjxgxSUlL48ssvgx2aSIk0olIF3HPPPVx55ZVez2nVqpVP12rYsGGR1RXJyckFx6qzsnyf+/fvj9PpZPv27bRv374coqs66tevj91uL/h7ly85Obna/x0MlNq1a9OuXTs2b94c7FCqjPy/m8nJyTRq1Kjg8eTkZHr06BGkqKoGJSpVQFxcHHFxcQG51sCBA3nqqafYt28fDRo0AOCXX34hJiaGTp06BeQelVVZvs8rVqzAZrMVfE/Fs/DwcHr37s3s2bMZO3YsAG63m9mzZ3PrrbcGN7gqIiMjgy1btjB+/Phgh1JltGzZkoYNGzJ79uyCxCQtLY2FCxd6XGUpvlGiUs3s3LmTQ4cOsXPnTlwuFytWrACgTZs21KpVizPPPJNOnToxfvx4nn/+eZKSknj44Ye55ZZbtDOoj+bPn8/ChQsZOnQo0dHRzJ8/n7vuuovLL7+cOnXqBDu8SuHuu+9mwoQJ9OnTh379+vHKK69w5MgRrrrqqmCHVinde++9jB49mubNm5OYmMhjjz2G3W7nkksuCXZolUpGRkahUaht27axYsUK6tatS7Nmzbjzzjv573//S9u2bWnZsiWPPPIICQkJBQm3lFKwlx1JxZowYYIJFPn4/fffC87Zvn27OWLECDMqKsqsX7++ec8995i5ubnBC7qSWbp0qdm/f38zNjbWjIyMNDt27Gg+/fTTZlZWVrBDq1Ref/11s1mzZmZ4eLjZr18/c8GCBcEOqdK66KKLzEaNGpnh4eFm48aNzYsuusjcvHlzsMOqdH7//fdif35OmDDBNE1rifIjjzxixsfHmxEREebpp59ubtiwIbhBVwGGaZpmsJIkEREREW+06kdERERClhIVERERCVlKVERERCRkKVERERGRkKVERUREREKWEhUREREJWUpUREREJGQpUREREZGQpURFREREQpYSFREREQlZSlREREQkZClRERERkZD1/+gr2W+fOUizAAAAAElFTkSuQmCC",
     40       "text/plain": [
     41        "<Figure size 640x480 with 1 Axes>"
     42       ]
     43      },
     44      "metadata": {},
     45      "output_type": "display_data"
     46     }
     47    ],
     48    "source": [
     49     "import matplotlib.pyplot as plt\n",
     50     "\n",
     51     "plt.scatter(X[:,0], X[:,1], cmap='jet', c=y_pred)"
     52    ]
     53   },
     54   {
     55    "cell_type": "code",
     56    "execution_count": 194,
     57    "metadata": {},
     58    "outputs": [
     59     {
     60      "data": {
     61       "text/plain": [
     62        "array([[ -9.84352595,  -9.96540697],\n",
     63        "       [  0.09795656,  -0.01811357],\n",
     64        "       [ 10.04050575, -10.05118736],\n",
     65        "       [ 10.05603167,   9.99326165],\n",
     66        "       [ -9.93720855,  10.13647801]])"
     67       ]
     68      },
     69      "execution_count": 194,
     70      "metadata": {},
     71      "output_type": "execute_result"
     72     }
     73    ],
     74    "source": [
     75     "kmeans.cluster_centers_"
     76    ]
     77   },
     78   {
     79    "cell_type": "code",
     80    "execution_count": 195,
     81    "metadata": {},
     82    "outputs": [
     83     {
     84      "data": {
     85       "text/plain": [
     86        "array([1, 1, 1, 1], dtype=int32)"
     87       ]
     88      },
     89      "execution_count": 195,
     90      "metadata": {},
     91      "output_type": "execute_result"
     92     }
     93    ],
     94    "source": [
     95     "import numpy as np\n",
     96     "\n",
     97     "X_new = np.array([[0, 2], [3, 2], [-3, 3], [-3, 2.5]])\n",
     98     "kmeans.predict(X_new)"
     99    ]
    100   },
    101   {
    102    "cell_type": "code",
    103    "execution_count": 196,
    104    "metadata": {},
    105    "outputs": [
    106     {
    107      "data": {
    108       "text/plain": [
    109        "array([[15.49,  2.02, 15.69, 12.85, 12.84],\n",
    110        "       [17.55,  3.53, 13.96, 10.66, 15.28],\n",
    111        "       [14.66,  4.33, 18.45, 14.81,  9.95],\n",
    112        "       [14.22,  3.99, 18.1 , 15.05, 10.32]])"
    113       ]
    114      },
    115      "execution_count": 196,
    116      "metadata": {},
    117      "output_type": "execute_result"
    118     }
    119    ],
    120    "source": [
    121     "# Get the distance from the value to all other centroids\n",
    122     "kmeans.transform(X_new).round(2)"
    123    ]
    124   },
    125   {
    126    "cell_type": "code",
    127    "execution_count": 197,
    128    "metadata": {},
    129    "outputs": [
    130     {
    131      "data": {
    132       "text/plain": [
    133        "2044.6185867173392"
    134       ]
    135      },
    136      "execution_count": 197,
    137      "metadata": {},
    138      "output_type": "execute_result"
    139     }
    140    ],
    141    "source": [
    142     "kmeans.inertia_"
    143    ]
    144   },
    145   {
    146    "cell_type": "code",
    147    "execution_count": 198,
    148    "metadata": {},
    149    "outputs": [
    150     {
    151      "data": {
    152       "text/plain": [
    153        "-2044.6185867173394"
    154       ]
    155      },
    156      "execution_count": 198,
    157      "metadata": {},
    158      "output_type": "execute_result"
    159     }
    160    ],
    161    "source": [
    162     "kmeans.score(X)"
    163    ]
    164   },
    165   {
    166    "cell_type": "code",
    167    "execution_count": 199,
    168    "metadata": {},
    169    "outputs": [
    170     {
    171      "data": {
    172       "text/html": [
    173        "<style>#sk-container-id-4 {\n",
    174        "  /* Definition of color scheme common for light and dark mode */\n",
    175        "  --sklearn-color-text: black;\n",
    176        "  --sklearn-color-line: gray;\n",
    177        "  /* Definition of color scheme for unfitted estimators */\n",
    178        "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
    179        "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
    180        "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
    181        "  --sklearn-color-unfitted-level-3: chocolate;\n",
    182        "  /* Definition of color scheme for fitted estimators */\n",
    183        "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
    184        "  --sklearn-color-fitted-level-1: #d4ebff;\n",
    185        "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
    186        "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
    187        "\n",
    188        "  /* Specific color for light theme */\n",
    189        "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
    190        "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
    191        "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
    192        "  --sklearn-color-icon: #696969;\n",
    193        "\n",
    194        "  @media (prefers-color-scheme: dark) {\n",
    195        "    /* Redefinition of color scheme for dark theme */\n",
    196        "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
    197        "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
    198        "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
    199        "    --sklearn-color-icon: #878787;\n",
    200        "  }\n",
    201        "}\n",
    202        "\n",
    203        "#sk-container-id-4 {\n",
    204        "  color: var(--sklearn-color-text);\n",
    205        "}\n",
    206        "\n",
    207        "#sk-container-id-4 pre {\n",
    208        "  padding: 0;\n",
    209        "}\n",
    210        "\n",
    211        "#sk-container-id-4 input.sk-hidden--visually {\n",
    212        "  border: 0;\n",
    213        "  clip: rect(1px 1px 1px 1px);\n",
    214        "  clip: rect(1px, 1px, 1px, 1px);\n",
    215        "  height: 1px;\n",
    216        "  margin: -1px;\n",
    217        "  overflow: hidden;\n",
    218        "  padding: 0;\n",
    219        "  position: absolute;\n",
    220        "  width: 1px;\n",
    221        "}\n",
    222        "\n",
    223        "#sk-container-id-4 div.sk-dashed-wrapped {\n",
    224        "  border: 1px dashed var(--sklearn-color-line);\n",
    225        "  margin: 0 0.4em 0.5em 0.4em;\n",
    226        "  box-sizing: border-box;\n",
    227        "  padding-bottom: 0.4em;\n",
    228        "  background-color: var(--sklearn-color-background);\n",
    229        "}\n",
    230        "\n",
    231        "#sk-container-id-4 div.sk-container {\n",
    232        "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
    233        "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
    234        "     so we also need the `!important` here to be able to override the\n",
    235        "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
    236        "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
    237        "  display: inline-block !important;\n",
    238        "  position: relative;\n",
    239        "}\n",
    240        "\n",
    241        "#sk-container-id-4 div.sk-text-repr-fallback {\n",
    242        "  display: none;\n",
    243        "}\n",
    244        "\n",
    245        "div.sk-parallel-item,\n",
    246        "div.sk-serial,\n",
    247        "div.sk-item {\n",
    248        "  /* draw centered vertical line to link estimators */\n",
    249        "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
    250        "  background-size: 2px 100%;\n",
    251        "  background-repeat: no-repeat;\n",
    252        "  background-position: center center;\n",
    253        "}\n",
    254        "\n",
    255        "/* Parallel-specific style estimator block */\n",
    256        "\n",
    257        "#sk-container-id-4 div.sk-parallel-item::after {\n",
    258        "  content: \"\";\n",
    259        "  width: 100%;\n",
    260        "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
    261        "  flex-grow: 1;\n",
    262        "}\n",
    263        "\n",
    264        "#sk-container-id-4 div.sk-parallel {\n",
    265        "  display: flex;\n",
    266        "  align-items: stretch;\n",
    267        "  justify-content: center;\n",
    268        "  background-color: var(--sklearn-color-background);\n",
    269        "  position: relative;\n",
    270        "}\n",
    271        "\n",
    272        "#sk-container-id-4 div.sk-parallel-item {\n",
    273        "  display: flex;\n",
    274        "  flex-direction: column;\n",
    275        "}\n",
    276        "\n",
    277        "#sk-container-id-4 div.sk-parallel-item:first-child::after {\n",
    278        "  align-self: flex-end;\n",
    279        "  width: 50%;\n",
    280        "}\n",
    281        "\n",
    282        "#sk-container-id-4 div.sk-parallel-item:last-child::after {\n",
    283        "  align-self: flex-start;\n",
    284        "  width: 50%;\n",
    285        "}\n",
    286        "\n",
    287        "#sk-container-id-4 div.sk-parallel-item:only-child::after {\n",
    288        "  width: 0;\n",
    289        "}\n",
    290        "\n",
    291        "/* Serial-specific style estimator block */\n",
    292        "\n",
    293        "#sk-container-id-4 div.sk-serial {\n",
    294        "  display: flex;\n",
    295        "  flex-direction: column;\n",
    296        "  align-items: center;\n",
    297        "  background-color: var(--sklearn-color-background);\n",
    298        "  padding-right: 1em;\n",
    299        "  padding-left: 1em;\n",
    300        "}\n",
    301        "\n",
    302        "\n",
    303        "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
    304        "clickable and can be expanded/collapsed.\n",
    305        "- Pipeline and ColumnTransformer use this feature and define the default style\n",
    306        "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
    307        "*/\n",
    308        "\n",
    309        "/* Pipeline and ColumnTransformer style (default) */\n",
    310        "\n",
    311        "#sk-container-id-4 div.sk-toggleable {\n",
    312        "  /* Default theme specific background. It is overwritten whether we have a\n",
    313        "  specific estimator or a Pipeline/ColumnTransformer */\n",
    314        "  background-color: var(--sklearn-color-background);\n",
    315        "}\n",
    316        "\n",
    317        "/* Toggleable label */\n",
    318        "#sk-container-id-4 label.sk-toggleable__label {\n",
    319        "  cursor: pointer;\n",
    320        "  display: block;\n",
    321        "  width: 100%;\n",
    322        "  margin-bottom: 0;\n",
    323        "  padding: 0.5em;\n",
    324        "  box-sizing: border-box;\n",
    325        "  text-align: center;\n",
    326        "}\n",
    327        "\n",
    328        "#sk-container-id-4 label.sk-toggleable__label-arrow:before {\n",
    329        "  /* Arrow on the left of the label */\n",
    330        "  content: \"▸\";\n",
    331        "  float: left;\n",
    332        "  margin-right: 0.25em;\n",
    333        "  color: var(--sklearn-color-icon);\n",
    334        "}\n",
    335        "\n",
    336        "#sk-container-id-4 label.sk-toggleable__label-arrow:hover:before {\n",
    337        "  color: var(--sklearn-color-text);\n",
    338        "}\n",
    339        "\n",
    340        "/* Toggleable content - dropdown */\n",
    341        "\n",
    342        "#sk-container-id-4 div.sk-toggleable__content {\n",
    343        "  max-height: 0;\n",
    344        "  max-width: 0;\n",
    345        "  overflow: hidden;\n",
    346        "  text-align: left;\n",
    347        "  /* unfitted */\n",
    348        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
    349        "}\n",
    350        "\n",
    351        "#sk-container-id-4 div.sk-toggleable__content.fitted {\n",
    352        "  /* fitted */\n",
    353        "  background-color: var(--sklearn-color-fitted-level-0);\n",
    354        "}\n",
    355        "\n",
    356        "#sk-container-id-4 div.sk-toggleable__content pre {\n",
    357        "  margin: 0.2em;\n",
    358        "  border-radius: 0.25em;\n",
    359        "  color: var(--sklearn-color-text);\n",
    360        "  /* unfitted */\n",
    361        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
    362        "}\n",
    363        "\n",
    364        "#sk-container-id-4 div.sk-toggleable__content.fitted pre {\n",
    365        "  /* unfitted */\n",
    366        "  background-color: var(--sklearn-color-fitted-level-0);\n",
    367        "}\n",
    368        "\n",
    369        "#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
    370        "  /* Expand drop-down */\n",
    371        "  max-height: 200px;\n",
    372        "  max-width: 100%;\n",
    373        "  overflow: auto;\n",
    374        "}\n",
    375        "\n",
    376        "#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
    377        "  content: \"▾\";\n",
    378        "}\n",
    379        "\n",
    380        "/* Pipeline/ColumnTransformer-specific style */\n",
    381        "\n",
    382        "#sk-container-id-4 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
    383        "  color: var(--sklearn-color-text);\n",
    384        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
    385        "}\n",
    386        "\n",
    387        "#sk-container-id-4 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
    388        "  background-color: var(--sklearn-color-fitted-level-2);\n",
    389        "}\n",
    390        "\n",
    391        "/* Estimator-specific style */\n",
    392        "\n",
    393        "/* Colorize estimator box */\n",
    394        "#sk-container-id-4 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
    395        "  /* unfitted */\n",
    396        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
    397        "}\n",
    398        "\n",
    399        "#sk-container-id-4 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
    400        "  /* fitted */\n",
    401        "  background-color: var(--sklearn-color-fitted-level-2);\n",
    402        "}\n",
    403        "\n",
    404        "#sk-container-id-4 div.sk-label label.sk-toggleable__label,\n",
    405        "#sk-container-id-4 div.sk-label label {\n",
    406        "  /* The background is the default theme color */\n",
    407        "  color: var(--sklearn-color-text-on-default-background);\n",
    408        "}\n",
    409        "\n",
    410        "/* On hover, darken the color of the background */\n",
    411        "#sk-container-id-4 div.sk-label:hover label.sk-toggleable__label {\n",
    412        "  color: var(--sklearn-color-text);\n",
    413        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
    414        "}\n",
    415        "\n",
    416        "/* Label box, darken color on hover, fitted */\n",
    417        "#sk-container-id-4 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
    418        "  color: var(--sklearn-color-text);\n",
    419        "  background-color: var(--sklearn-color-fitted-level-2);\n",
    420        "}\n",
    421        "\n",
    422        "/* Estimator label */\n",
    423        "\n",
    424        "#sk-container-id-4 div.sk-label label {\n",
    425        "  font-family: monospace;\n",
    426        "  font-weight: bold;\n",
    427        "  display: inline-block;\n",
    428        "  line-height: 1.2em;\n",
    429        "}\n",
    430        "\n",
    431        "#sk-container-id-4 div.sk-label-container {\n",
    432        "  text-align: center;\n",
    433        "}\n",
    434        "\n",
    435        "/* Estimator-specific */\n",
    436        "#sk-container-id-4 div.sk-estimator {\n",
    437        "  font-family: monospace;\n",
    438        "  border: 1px dotted var(--sklearn-color-border-box);\n",
    439        "  border-radius: 0.25em;\n",
    440        "  box-sizing: border-box;\n",
    441        "  margin-bottom: 0.5em;\n",
    442        "  /* unfitted */\n",
    443        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
    444        "}\n",
    445        "\n",
    446        "#sk-container-id-4 div.sk-estimator.fitted {\n",
    447        "  /* fitted */\n",
    448        "  background-color: var(--sklearn-color-fitted-level-0);\n",
    449        "}\n",
    450        "\n",
    451        "/* on hover */\n",
    452        "#sk-container-id-4 div.sk-estimator:hover {\n",
    453        "  /* unfitted */\n",
    454        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
    455        "}\n",
    456        "\n",
    457        "#sk-container-id-4 div.sk-estimator.fitted:hover {\n",
    458        "  /* fitted */\n",
    459        "  background-color: var(--sklearn-color-fitted-level-2);\n",
    460        "}\n",
    461        "\n",
    462        "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
    463        "\n",
    464        "/* Common style for \"i\" and \"?\" */\n",
    465        "\n",
    466        ".sk-estimator-doc-link,\n",
    467        "a:link.sk-estimator-doc-link,\n",
    468        "a:visited.sk-estimator-doc-link {\n",
    469        "  float: right;\n",
    470        "  font-size: smaller;\n",
    471        "  line-height: 1em;\n",
    472        "  font-family: monospace;\n",
    473        "  background-color: var(--sklearn-color-background);\n",
    474        "  border-radius: 1em;\n",
    475        "  height: 1em;\n",
    476        "  width: 1em;\n",
    477        "  text-decoration: none !important;\n",
    478        "  margin-left: 1ex;\n",
    479        "  /* unfitted */\n",
    480        "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
    481        "  color: var(--sklearn-color-unfitted-level-1);\n",
    482        "}\n",
    483        "\n",
    484        ".sk-estimator-doc-link.fitted,\n",
    485        "a:link.sk-estimator-doc-link.fitted,\n",
    486        "a:visited.sk-estimator-doc-link.fitted {\n",
    487        "  /* fitted */\n",
    488        "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
    489        "  color: var(--sklearn-color-fitted-level-1);\n",
    490        "}\n",
    491        "\n",
    492        "/* On hover */\n",
    493        "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
    494        ".sk-estimator-doc-link:hover,\n",
    495        "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
    496        ".sk-estimator-doc-link:hover {\n",
    497        "  /* unfitted */\n",
    498        "  background-color: var(--sklearn-color-unfitted-level-3);\n",
    499        "  color: var(--sklearn-color-background);\n",
    500        "  text-decoration: none;\n",
    501        "}\n",
    502        "\n",
    503        "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
    504        ".sk-estimator-doc-link.fitted:hover,\n",
    505        "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
    506        ".sk-estimator-doc-link.fitted:hover {\n",
    507        "  /* fitted */\n",
    508        "  background-color: var(--sklearn-color-fitted-level-3);\n",
    509        "  color: var(--sklearn-color-background);\n",
    510        "  text-decoration: none;\n",
    511        "}\n",
    512        "\n",
    513        "/* Span, style for the box shown on hovering the info icon */\n",
    514        ".sk-estimator-doc-link span {\n",
    515        "  display: none;\n",
    516        "  z-index: 9999;\n",
    517        "  position: relative;\n",
    518        "  font-weight: normal;\n",
    519        "  right: .2ex;\n",
    520        "  padding: .5ex;\n",
    521        "  margin: .5ex;\n",
    522        "  width: min-content;\n",
    523        "  min-width: 20ex;\n",
    524        "  max-width: 50ex;\n",
    525        "  color: var(--sklearn-color-text);\n",
    526        "  box-shadow: 2pt 2pt 4pt #999;\n",
    527        "  /* unfitted */\n",
    528        "  background: var(--sklearn-color-unfitted-level-0);\n",
    529        "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
    530        "}\n",
    531        "\n",
    532        ".sk-estimator-doc-link.fitted span {\n",
    533        "  /* fitted */\n",
    534        "  background: var(--sklearn-color-fitted-level-0);\n",
    535        "  border: var(--sklearn-color-fitted-level-3);\n",
    536        "}\n",
    537        "\n",
    538        ".sk-estimator-doc-link:hover span {\n",
    539        "  display: block;\n",
    540        "}\n",
    541        "\n",
    542        "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
    543        "\n",
    544        "#sk-container-id-4 a.estimator_doc_link {\n",
    545        "  float: right;\n",
    546        "  font-size: 1rem;\n",
    547        "  line-height: 1em;\n",
    548        "  font-family: monospace;\n",
    549        "  background-color: var(--sklearn-color-background);\n",
    550        "  border-radius: 1rem;\n",
    551        "  height: 1rem;\n",
    552        "  width: 1rem;\n",
    553        "  text-decoration: none;\n",
    554        "  /* unfitted */\n",
    555        "  color: var(--sklearn-color-unfitted-level-1);\n",
    556        "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
    557        "}\n",
    558        "\n",
    559        "#sk-container-id-4 a.estimator_doc_link.fitted {\n",
    560        "  /* fitted */\n",
    561        "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
    562        "  color: var(--sklearn-color-fitted-level-1);\n",
    563        "}\n",
    564        "\n",
    565        "/* On hover */\n",
    566        "#sk-container-id-4 a.estimator_doc_link:hover {\n",
    567        "  /* unfitted */\n",
    568        "  background-color: var(--sklearn-color-unfitted-level-3);\n",
    569        "  color: var(--sklearn-color-background);\n",
    570        "  text-decoration: none;\n",
    571        "}\n",
    572        "\n",
    573        "#sk-container-id-4 a.estimator_doc_link.fitted:hover {\n",
    574        "  /* fitted */\n",
    575        "  background-color: var(--sklearn-color-fitted-level-3);\n",
    576        "}\n",
    577        "</style><div id=\"sk-container-id-4\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>MiniBatchKMeans(n_clusters=5, random_state=10)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" checked><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;MiniBatchKMeans<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.cluster.MiniBatchKMeans.html\">?<span>Documentation for MiniBatchKMeans</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>MiniBatchKMeans(n_clusters=5, random_state=10)</pre></div> </div></div></div></div>"
    578       ],
    579       "text/plain": [
    580        "MiniBatchKMeans(n_clusters=5, random_state=10)"
    581       ]
    582      },
    583      "execution_count": 199,
    584      "metadata": {},
    585      "output_type": "execute_result"
    586     }
    587    ],
    588    "source": [
    589     "from sklearn.cluster import MiniBatchKMeans\n",
    590     "\n",
    591     "minibatch_kmeans = MiniBatchKMeans(n_clusters=5, random_state=10)\n",
    592     "minibatch_kmeans.fit(X)"
    593    ]
    594   }
    595  ],
    596  "metadata": {
    597   "kernelspec": {
    598    "display_name": "notebook",
    599    "language": "python",
    600    "name": "notebook"
    601   },
    602   "language_info": {
    603    "codemirror_mode": {
    604     "name": "ipython",
    605     "version": 3
    606    },
    607    "file_extension": ".py",
    608    "mimetype": "text/x-python",
    609    "name": "python",
    610    "nbconvert_exporter": "python",
    611    "pygments_lexer": "ipython3",
    612    "version": "3.11.2"
    613   }
    614  },
    615  "nbformat": 4,
    616  "nbformat_minor": 2
    617 }