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+/PncddddXH755dSpUydYYYmIiEgICVqiEhERweTJk3n88cfJzs6mZcuW3HXXXdx9993BCklERERCTNASlV69erFgwYJg3V5EREQqgaD3URERERHxRImKiIiIhCwlKiIiIhKylKiIiIhIyFKiIiIiIiFLiYqIiIiELCUqIiIi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", 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\"> 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 }