logisticRegression.ipynb (51017B)
1 { 2 "cells": [ 3 { 4 "cell_type": "code", 5 "execution_count": 1, 6 "metadata": {}, 7 "outputs": [], 8 "source": [ 9 "from sklearn.datasets import load_iris\n", 10 "iris = load_iris(as_frame=True)" 11 ] 12 }, 13 { 14 "cell_type": "code", 15 "execution_count": 2, 16 "metadata": {}, 17 "outputs": [ 18 { 19 "data": { 20 "text/plain": [ 21 "['data',\n", 22 " 'target',\n", 23 " 'frame',\n", 24 " 'target_names',\n", 25 " 'DESCR',\n", 26 " 'feature_names',\n", 27 " 'filename',\n", 28 " 'data_module']" 29 ] 30 }, 31 "execution_count": 2, 32 "metadata": {}, 33 "output_type": "execute_result" 34 } 35 ], 36 "source": [ 37 "list(iris)" 38 ] 39 }, 40 { 41 "cell_type": "code", 42 "execution_count": 3, 43 "metadata": {}, 44 "outputs": [ 45 { 46 "data": { 47 "text/html": [ 48 "<div>\n", 49 "<style scoped>\n", 50 " .dataframe tbody tr th:only-of-type {\n", 51 " vertical-align: middle;\n", 52 " }\n", 53 "\n", 54 " .dataframe tbody tr th {\n", 55 " vertical-align: top;\n", 56 " }\n", 57 "\n", 58 " .dataframe thead th {\n", 59 " text-align: right;\n", 60 " }\n", 61 "</style>\n", 62 "<table border=\"1\" class=\"dataframe\">\n", 63 " <thead>\n", 64 " <tr style=\"text-align: right;\">\n", 65 " <th></th>\n", 66 " <th>sepal length (cm)</th>\n", 67 " <th>sepal width (cm)</th>\n", 68 " <th>petal length (cm)</th>\n", 69 " <th>petal width (cm)</th>\n", 70 " </tr>\n", 71 " </thead>\n", 72 " <tbody>\n", 73 " <tr>\n", 74 " <th>0</th>\n", 75 " <td>5.1</td>\n", 76 " <td>3.5</td>\n", 77 " <td>1.4</td>\n", 78 " <td>0.2</td>\n", 79 " </tr>\n", 80 " <tr>\n", 81 " <th>1</th>\n", 82 " <td>4.9</td>\n", 83 " <td>3.0</td>\n", 84 " <td>1.4</td>\n", 85 " <td>0.2</td>\n", 86 " </tr>\n", 87 " <tr>\n", 88 " <th>2</th>\n", 89 " <td>4.7</td>\n", 90 " <td>3.2</td>\n", 91 " <td>1.3</td>\n", 92 " <td>0.2</td>\n", 93 " </tr>\n", 94 " </tbody>\n", 95 "</table>\n", 96 "</div>" 97 ], 98 "text/plain": [ 99 " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n", 100 "0 5.1 3.5 1.4 0.2\n", 101 "1 4.9 3.0 1.4 0.2\n", 102 "2 4.7 3.2 1.3 0.2" 103 ] 104 }, 105 "execution_count": 3, 106 "metadata": {}, 107 "output_type": "execute_result" 108 } 109 ], 110 "source": [ 111 "iris.data.head(3)" 112 ] 113 }, 114 { 115 "cell_type": "code", 116 "execution_count": 4, 117 "metadata": {}, 118 "outputs": [ 119 { 120 "data": { 121 "text/plain": [ 122 "0 0\n", 123 "1 0\n", 124 "2 0\n", 125 "Name: target, dtype: int64" 126 ] 127 }, 128 "execution_count": 4, 129 "metadata": {}, 130 "output_type": "execute_result" 131 } 132 ], 133 "source": [ 134 "iris.target.head(3)" 135 ] 136 }, 137 { 138 "cell_type": "code", 139 "execution_count": 5, 140 "metadata": {}, 141 "outputs": [ 142 { 143 "data": { 144 "text/plain": [ 145 "array(['setosa', 'versicolor', 'virginica'], dtype='<U10')" 146 ] 147 }, 148 "execution_count": 5, 149 "metadata": {}, 150 "output_type": "execute_result" 151 } 152 ], 153 "source": [ 154 "iris.target_names" 155 ] 156 }, 157 { 158 "cell_type": "code", 159 "execution_count": 6, 160 "metadata": {}, 161 "outputs": [ 162 { 163 "data": { 164 "text/html": [ 165 "<style>#sk-container-id-1 {\n", 166 " /* Definition of color scheme common for light and dark mode */\n", 167 " --sklearn-color-text: black;\n", 168 " --sklearn-color-line: gray;\n", 169 " /* Definition of color scheme for unfitted estimators */\n", 170 " --sklearn-color-unfitted-level-0: #fff5e6;\n", 171 " --sklearn-color-unfitted-level-1: #f6e4d2;\n", 172 " --sklearn-color-unfitted-level-2: #ffe0b3;\n", 173 " --sklearn-color-unfitted-level-3: chocolate;\n", 174 " /* Definition of color scheme for fitted estimators */\n", 175 " --sklearn-color-fitted-level-0: #f0f8ff;\n", 176 " --sklearn-color-fitted-level-1: #d4ebff;\n", 177 " --sklearn-color-fitted-level-2: #b3dbfd;\n", 178 " --sklearn-color-fitted-level-3: cornflowerblue;\n", 179 "\n", 180 " /* Specific color for light theme */\n", 181 " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", 182 " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n", 183 " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", 184 " --sklearn-color-icon: #696969;\n", 185 "\n", 186 " @media (prefers-color-scheme: dark) {\n", 187 " /* Redefinition of color scheme for dark theme */\n", 188 " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", 189 " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n", 190 " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", 191 " --sklearn-color-icon: #878787;\n", 192 " }\n", 193 "}\n", 194 "\n", 195 "#sk-container-id-1 {\n", 196 " color: var(--sklearn-color-text);\n", 197 "}\n", 198 "\n", 199 "#sk-container-id-1 pre {\n", 200 " padding: 0;\n", 201 "}\n", 202 "\n", 203 "#sk-container-id-1 input.sk-hidden--visually {\n", 204 " border: 0;\n", 205 " clip: rect(1px 1px 1px 1px);\n", 206 " clip: rect(1px, 1px, 1px, 1px);\n", 207 " height: 1px;\n", 208 " margin: -1px;\n", 209 " overflow: hidden;\n", 210 " padding: 0;\n", 211 " position: absolute;\n", 212 " width: 1px;\n", 213 "}\n", 214 "\n", 215 "#sk-container-id-1 div.sk-dashed-wrapped {\n", 216 " border: 1px dashed var(--sklearn-color-line);\n", 217 " margin: 0 0.4em 0.5em 0.4em;\n", 218 " box-sizing: border-box;\n", 219 " padding-bottom: 0.4em;\n", 220 " background-color: var(--sklearn-color-background);\n", 221 "}\n", 222 "\n", 223 "#sk-container-id-1 div.sk-container {\n", 224 " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n", 225 " but bootstrap.min.css set `[hidden] { display: none !important; }`\n", 226 " so we also need the `!important` here to be able to override the\n", 227 " default hidden behavior on the sphinx rendered scikit-learn.org.\n", 228 " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n", 229 " display: inline-block !important;\n", 230 " position: relative;\n", 231 "}\n", 232 "\n", 233 "#sk-container-id-1 div.sk-text-repr-fallback {\n", 234 " display: none;\n", 235 "}\n", 236 "\n", 237 "div.sk-parallel-item,\n", 238 "div.sk-serial,\n", 239 "div.sk-item {\n", 240 " /* draw centered vertical line to link estimators */\n", 241 " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n", 242 " background-size: 2px 100%;\n", 243 " background-repeat: no-repeat;\n", 244 " background-position: center center;\n", 245 "}\n", 246 "\n", 247 "/* Parallel-specific style estimator block */\n", 248 "\n", 249 "#sk-container-id-1 div.sk-parallel-item::after {\n", 250 " content: \"\";\n", 251 " width: 100%;\n", 252 " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n", 253 " flex-grow: 1;\n", 254 "}\n", 255 "\n", 256 "#sk-container-id-1 div.sk-parallel {\n", 257 " display: flex;\n", 258 " align-items: stretch;\n", 259 " justify-content: center;\n", 260 " background-color: var(--sklearn-color-background);\n", 261 " position: relative;\n", 262 "}\n", 263 "\n", 264 "#sk-container-id-1 div.sk-parallel-item {\n", 265 " display: flex;\n", 266 " flex-direction: column;\n", 267 "}\n", 268 "\n", 269 "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n", 270 " align-self: flex-end;\n", 271 " width: 50%;\n", 272 "}\n", 273 "\n", 274 "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n", 275 " align-self: flex-start;\n", 276 " width: 50%;\n", 277 "}\n", 278 "\n", 279 "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n", 280 " width: 0;\n", 281 "}\n", 282 "\n", 283 "/* Serial-specific style estimator block */\n", 284 "\n", 285 "#sk-container-id-1 div.sk-serial {\n", 286 " display: flex;\n", 287 " flex-direction: column;\n", 288 " align-items: center;\n", 289 " background-color: var(--sklearn-color-background);\n", 290 " padding-right: 1em;\n", 291 " padding-left: 1em;\n", 292 "}\n", 293 "\n", 294 "\n", 295 "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n", 296 "clickable and can be expanded/collapsed.\n", 297 "- Pipeline and ColumnTransformer use this feature and define the default style\n", 298 "- Estimators will overwrite some part of the style using the `sk-estimator` class\n", 299 "*/\n", 300 "\n", 301 "/* Pipeline and ColumnTransformer style (default) */\n", 302 "\n", 303 "#sk-container-id-1 div.sk-toggleable {\n", 304 " /* Default theme specific background. It is overwritten whether we have a\n", 305 " specific estimator or a Pipeline/ColumnTransformer */\n", 306 " background-color: var(--sklearn-color-background);\n", 307 "}\n", 308 "\n", 309 "/* Toggleable label */\n", 310 "#sk-container-id-1 label.sk-toggleable__label {\n", 311 " cursor: pointer;\n", 312 " display: block;\n", 313 " width: 100%;\n", 314 " margin-bottom: 0;\n", 315 " padding: 0.5em;\n", 316 " box-sizing: border-box;\n", 317 " text-align: center;\n", 318 "}\n", 319 "\n", 320 "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n", 321 " /* Arrow on the left of the label */\n", 322 " content: \"▸\";\n", 323 " float: left;\n", 324 " margin-right: 0.25em;\n", 325 " color: var(--sklearn-color-icon);\n", 326 "}\n", 327 "\n", 328 "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n", 329 " color: var(--sklearn-color-text);\n", 330 "}\n", 331 "\n", 332 "/* Toggleable content - dropdown */\n", 333 "\n", 334 "#sk-container-id-1 div.sk-toggleable__content {\n", 335 " max-height: 0;\n", 336 " max-width: 0;\n", 337 " overflow: hidden;\n", 338 " text-align: left;\n", 339 " /* unfitted */\n", 340 " background-color: var(--sklearn-color-unfitted-level-0);\n", 341 "}\n", 342 "\n", 343 "#sk-container-id-1 div.sk-toggleable__content.fitted {\n", 344 " /* fitted */\n", 345 " background-color: var(--sklearn-color-fitted-level-0);\n", 346 "}\n", 347 "\n", 348 "#sk-container-id-1 div.sk-toggleable__content pre {\n", 349 " margin: 0.2em;\n", 350 " border-radius: 0.25em;\n", 351 " color: var(--sklearn-color-text);\n", 352 " /* unfitted */\n", 353 " background-color: var(--sklearn-color-unfitted-level-0);\n", 354 "}\n", 355 "\n", 356 "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n", 357 " /* unfitted */\n", 358 " background-color: var(--sklearn-color-fitted-level-0);\n", 359 "}\n", 360 "\n", 361 "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n", 362 " /* Expand drop-down */\n", 363 " max-height: 200px;\n", 364 " max-width: 100%;\n", 365 " overflow: auto;\n", 366 "}\n", 367 "\n", 368 "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n", 369 " content: \"▾\";\n", 370 "}\n", 371 "\n", 372 "/* Pipeline/ColumnTransformer-specific style */\n", 373 "\n", 374 "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", 375 " color: var(--sklearn-color-text);\n", 376 " background-color: var(--sklearn-color-unfitted-level-2);\n", 377 "}\n", 378 "\n", 379 "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", 380 " background-color: var(--sklearn-color-fitted-level-2);\n", 381 "}\n", 382 "\n", 383 "/* Estimator-specific style */\n", 384 "\n", 385 "/* Colorize estimator box */\n", 386 "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", 387 " /* unfitted */\n", 388 " background-color: var(--sklearn-color-unfitted-level-2);\n", 389 "}\n", 390 "\n", 391 "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", 392 " /* fitted */\n", 393 " background-color: var(--sklearn-color-fitted-level-2);\n", 394 "}\n", 395 "\n", 396 "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n", 397 "#sk-container-id-1 div.sk-label label {\n", 398 " /* The background is the default theme color */\n", 399 " color: var(--sklearn-color-text-on-default-background);\n", 400 "}\n", 401 "\n", 402 "/* On hover, darken the color of the background */\n", 403 "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n", 404 " color: var(--sklearn-color-text);\n", 405 " background-color: var(--sklearn-color-unfitted-level-2);\n", 406 "}\n", 407 "\n", 408 "/* Label box, darken color on hover, fitted */\n", 409 "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n", 410 " color: var(--sklearn-color-text);\n", 411 " background-color: var(--sklearn-color-fitted-level-2);\n", 412 "}\n", 413 "\n", 414 "/* Estimator label */\n", 415 "\n", 416 "#sk-container-id-1 div.sk-label label {\n", 417 " font-family: monospace;\n", 418 " font-weight: bold;\n", 419 " display: inline-block;\n", 420 " line-height: 1.2em;\n", 421 "}\n", 422 "\n", 423 "#sk-container-id-1 div.sk-label-container {\n", 424 " text-align: center;\n", 425 "}\n", 426 "\n", 427 "/* Estimator-specific */\n", 428 "#sk-container-id-1 div.sk-estimator {\n", 429 " font-family: monospace;\n", 430 " border: 1px dotted var(--sklearn-color-border-box);\n", 431 " border-radius: 0.25em;\n", 432 " box-sizing: border-box;\n", 433 " margin-bottom: 0.5em;\n", 434 " /* unfitted */\n", 435 " background-color: var(--sklearn-color-unfitted-level-0);\n", 436 "}\n", 437 "\n", 438 "#sk-container-id-1 div.sk-estimator.fitted {\n", 439 " /* fitted */\n", 440 " background-color: var(--sklearn-color-fitted-level-0);\n", 441 "}\n", 442 "\n", 443 "/* on hover */\n", 444 "#sk-container-id-1 div.sk-estimator:hover {\n", 445 " /* unfitted */\n", 446 " background-color: var(--sklearn-color-unfitted-level-2);\n", 447 "}\n", 448 "\n", 449 "#sk-container-id-1 div.sk-estimator.fitted:hover {\n", 450 " /* fitted */\n", 451 " background-color: var(--sklearn-color-fitted-level-2);\n", 452 "}\n", 453 "\n", 454 "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n", 455 "\n", 456 "/* Common style for \"i\" and \"?\" */\n", 457 "\n", 458 ".sk-estimator-doc-link,\n", 459 "a:link.sk-estimator-doc-link,\n", 460 "a:visited.sk-estimator-doc-link {\n", 461 " float: right;\n", 462 " font-size: smaller;\n", 463 " line-height: 1em;\n", 464 " font-family: monospace;\n", 465 " background-color: var(--sklearn-color-background);\n", 466 " border-radius: 1em;\n", 467 " height: 1em;\n", 468 " width: 1em;\n", 469 " text-decoration: none !important;\n", 470 " margin-left: 1ex;\n", 471 " /* unfitted */\n", 472 " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", 473 " color: var(--sklearn-color-unfitted-level-1);\n", 474 "}\n", 475 "\n", 476 ".sk-estimator-doc-link.fitted,\n", 477 "a:link.sk-estimator-doc-link.fitted,\n", 478 "a:visited.sk-estimator-doc-link.fitted {\n", 479 " /* fitted */\n", 480 " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", 481 " color: var(--sklearn-color-fitted-level-1);\n", 482 "}\n", 483 "\n", 484 "/* On hover */\n", 485 "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n", 486 ".sk-estimator-doc-link:hover,\n", 487 "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n", 488 ".sk-estimator-doc-link:hover {\n", 489 " /* unfitted */\n", 490 " background-color: var(--sklearn-color-unfitted-level-3);\n", 491 " color: var(--sklearn-color-background);\n", 492 " text-decoration: none;\n", 493 "}\n", 494 "\n", 495 "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n", 496 ".sk-estimator-doc-link.fitted:hover,\n", 497 "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n", 498 ".sk-estimator-doc-link.fitted:hover {\n", 499 " /* fitted */\n", 500 " background-color: var(--sklearn-color-fitted-level-3);\n", 501 " color: var(--sklearn-color-background);\n", 502 " text-decoration: none;\n", 503 "}\n", 504 "\n", 505 "/* Span, style for the box shown on hovering the info icon */\n", 506 ".sk-estimator-doc-link span {\n", 507 " display: none;\n", 508 " z-index: 9999;\n", 509 " position: relative;\n", 510 " font-weight: normal;\n", 511 " right: .2ex;\n", 512 " padding: .5ex;\n", 513 " margin: .5ex;\n", 514 " width: min-content;\n", 515 " min-width: 20ex;\n", 516 " max-width: 50ex;\n", 517 " color: var(--sklearn-color-text);\n", 518 " box-shadow: 2pt 2pt 4pt #999;\n", 519 " /* unfitted */\n", 520 " background: var(--sklearn-color-unfitted-level-0);\n", 521 " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n", 522 "}\n", 523 "\n", 524 ".sk-estimator-doc-link.fitted span {\n", 525 " /* fitted */\n", 526 " background: var(--sklearn-color-fitted-level-0);\n", 527 " border: var(--sklearn-color-fitted-level-3);\n", 528 "}\n", 529 "\n", 530 ".sk-estimator-doc-link:hover span {\n", 531 " display: block;\n", 532 "}\n", 533 "\n", 534 "/* \"?\"-specific style due to the `<a>` HTML tag */\n", 535 "\n", 536 "#sk-container-id-1 a.estimator_doc_link {\n", 537 " float: right;\n", 538 " font-size: 1rem;\n", 539 " line-height: 1em;\n", 540 " font-family: monospace;\n", 541 " background-color: var(--sklearn-color-background);\n", 542 " border-radius: 1rem;\n", 543 " height: 1rem;\n", 544 " width: 1rem;\n", 545 " text-decoration: none;\n", 546 " /* unfitted */\n", 547 " color: var(--sklearn-color-unfitted-level-1);\n", 548 " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", 549 "}\n", 550 "\n", 551 "#sk-container-id-1 a.estimator_doc_link.fitted {\n", 552 " /* fitted */\n", 553 " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", 554 " color: var(--sklearn-color-fitted-level-1);\n", 555 "}\n", 556 "\n", 557 "/* On hover */\n", 558 "#sk-container-id-1 a.estimator_doc_link:hover {\n", 559 " /* unfitted */\n", 560 " background-color: var(--sklearn-color-unfitted-level-3);\n", 561 " color: var(--sklearn-color-background);\n", 562 " text-decoration: none;\n", 563 "}\n", 564 "\n", 565 "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n", 566 " /* fitted */\n", 567 " background-color: var(--sklearn-color-fitted-level-3);\n", 568 "}\n", 569 "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression(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-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> LogisticRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression(random_state=10)</pre></div> </div></div></div></div>" 570 ], 571 "text/plain": [ 572 "LogisticRegression(random_state=10)" 573 ] 574 }, 575 "execution_count": 6, 576 "metadata": {}, 577 "output_type": "execute_result" 578 } 579 ], 580 "source": [ 581 "from sklearn.linear_model import LogisticRegression\n", 582 "from sklearn.model_selection import train_test_split\n", 583 "\n", 584 "X = iris.data[['petal width (cm)']].values\n", 585 "\n", 586 "# Is current virginica?\n", 587 "y = iris.target_names[iris.target] == 'virginica'\n", 588 "\n", 589 "# Split\n", 590 "X_train, X_test, y_train, y_test = train_test_split(X,y,random_state=10)\n", 591 "\n", 592 "# Train\n", 593 "\n", 594 "log_reg = LogisticRegression(random_state=10)\n", 595 "log_reg.fit(X_train,y_train)" 596 ] 597 }, 598 { 599 "cell_type": "code", 600 "execution_count": 7, 601 "metadata": {}, 602 "outputs": [], 603 "source": [ 604 "import numpy as np\n", 605 "\n", 606 "# Predict probability on 1,000 evenly spaced values from 0 to 3\n", 607 "X_new = np.linspace(0,3,1000).reshape(-1,1)\n", 608 "y_proba = log_reg.predict_proba(X_new)" 609 ] 610 }, 611 { 612 "cell_type": "code", 613 "execution_count": 8, 614 "metadata": {}, 615 "outputs": [ 616 { 617 "data": { 618 "text/plain": [ 619 "<matplotlib.collections.PathCollection at 0x7feb4bf61bd0>" 620 ] 621 }, 622 "execution_count": 8, 623 "metadata": {}, 624 "output_type": "execute_result" 625 }, 626 { 627 "data": { 628 "image/png": "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", 629 "text/plain": [ 630 "<Figure size 640x480 with 1 Axes>" 631 ] 632 }, 633 "metadata": {}, 634 "output_type": "display_data" 635 } 636 ], 637 "source": [ 638 "import matplotlib.pyplot as plt\n", 639 "\n", 640 "# First probability is the likelihood it is not\n", 641 "# then the second is the likelihood it is thus\n", 642 "# below we want the second one to show the probability\n", 643 "# that a given value is a virginica iris.\n", 644 "\n", 645 "\n", 646 "plt.plot(X_new,y_proba[:,1]) # Slicing notation. We want all rows\n", 647 " # and then the comma\n", 648 " # specifies the wanted columns.\n", 649 "\n", 650 "\n", 651 "plt.scatter(X_train, y_train, s=60, cmap='jet', c=y_train, marker='^')" 652 ] 653 }, 654 { 655 "cell_type": "code", 656 "execution_count": 20, 657 "metadata": {}, 658 "outputs": [ 659 { 660 "data": { 661 "text/plain": [ 662 "1.6486486486486487" 663 ] 664 }, 665 "execution_count": 20, 666 "metadata": {}, 667 "output_type": "execute_result" 668 } 669 ], 670 "source": [ 671 "# First get the array of only values where the second column is >= 50% probability.\n", 672 "# Then, get the first x val.\n", 673 "decision_boundary = X_new[y_proba[:, 1] >= 0.5][0, 0]\n", 674 "decision_boundary" 675 ] 676 }, 677 { 678 "cell_type": "code", 679 "execution_count": 18, 680 "metadata": {}, 681 "outputs": [ 682 { 683 "data": { 684 "text/plain": [ 685 "array([False, True])" 686 ] 687 }, 688 "execution_count": 18, 689 "metadata": {}, 690 "output_type": "execute_result" 691 } 692 ], 693 "source": [ 694 "log_reg.predict([[1.5], [1.7]])" 695 ] 696 } 697 ], 698 "metadata": { 699 "kernelspec": { 700 "display_name": "notebook", 701 "language": "python", 702 "name": "notebook" 703 }, 704 "language_info": { 705 "codemirror_mode": { 706 "name": "ipython", 707 "version": 3 708 }, 709 "file_extension": ".py", 710 "mimetype": "text/x-python", 711 "name": "python", 712 "nbconvert_exporter": "python", 713 "pygments_lexer": "ipython3", 714 "version": "3.11.2" 715 } 716 }, 717 "nbformat": 4, 718 "nbformat_minor": 2 719 }