machinelearning

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

votingClassifier.ipynb (91811B)


      1 {
      2  "cells": [
      3   {
      4    "cell_type": "code",
      5    "execution_count": 42,
      6    "metadata": {},
      7    "outputs": [],
      8    "source": [
      9     "from sklearn.datasets import make_moons\n",
     10     "from sklearn.ensemble import RandomForestClassifier, VotingClassifier\n",
     11     "from sklearn.linear_model import LogisticRegression\n",
     12     "from sklearn.model_selection import train_test_split\n",
     13     "from sklearn.svm import SVC\n",
     14     "\n",
     15     "# Train many classifiers of different types to create an ensemble.\n",
     16     "# This is done so that errors caused by one type of model should, in theory\n",
     17     "# be offset by other models.\n",
     18     "\n",
     19     "X,y = make_moons(n_samples=500, noise=.3, random_state=42)\n",
     20     "\n",
     21     "X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=42)"
     22    ]
     23   },
     24   {
     25    "cell_type": "code",
     26    "execution_count": 43,
     27    "metadata": {},
     28    "outputs": [
     29     {
     30      "data": {
     31       "text/html": [
     32        "<style>#sk-container-id-8 {\n",
     33        "  /* Definition of color scheme common for light and dark mode */\n",
     34        "  --sklearn-color-text: black;\n",
     35        "  --sklearn-color-line: gray;\n",
     36        "  /* Definition of color scheme for unfitted estimators */\n",
     37        "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
     38        "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
     39        "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
     40        "  --sklearn-color-unfitted-level-3: chocolate;\n",
     41        "  /* Definition of color scheme for fitted estimators */\n",
     42        "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
     43        "  --sklearn-color-fitted-level-1: #d4ebff;\n",
     44        "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
     45        "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
     46        "\n",
     47        "  /* Specific color for light theme */\n",
     48        "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
     49        "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
     50        "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
     51        "  --sklearn-color-icon: #696969;\n",
     52        "\n",
     53        "  @media (prefers-color-scheme: dark) {\n",
     54        "    /* Redefinition of color scheme for dark theme */\n",
     55        "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
     56        "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
     57        "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
     58        "    --sklearn-color-icon: #878787;\n",
     59        "  }\n",
     60        "}\n",
     61        "\n",
     62        "#sk-container-id-8 {\n",
     63        "  color: var(--sklearn-color-text);\n",
     64        "}\n",
     65        "\n",
     66        "#sk-container-id-8 pre {\n",
     67        "  padding: 0;\n",
     68        "}\n",
     69        "\n",
     70        "#sk-container-id-8 input.sk-hidden--visually {\n",
     71        "  border: 0;\n",
     72        "  clip: rect(1px 1px 1px 1px);\n",
     73        "  clip: rect(1px, 1px, 1px, 1px);\n",
     74        "  height: 1px;\n",
     75        "  margin: -1px;\n",
     76        "  overflow: hidden;\n",
     77        "  padding: 0;\n",
     78        "  position: absolute;\n",
     79        "  width: 1px;\n",
     80        "}\n",
     81        "\n",
     82        "#sk-container-id-8 div.sk-dashed-wrapped {\n",
     83        "  border: 1px dashed var(--sklearn-color-line);\n",
     84        "  margin: 0 0.4em 0.5em 0.4em;\n",
     85        "  box-sizing: border-box;\n",
     86        "  padding-bottom: 0.4em;\n",
     87        "  background-color: var(--sklearn-color-background);\n",
     88        "}\n",
     89        "\n",
     90        "#sk-container-id-8 div.sk-container {\n",
     91        "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
     92        "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
     93        "     so we also need the `!important` here to be able to override the\n",
     94        "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
     95        "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
     96        "  display: inline-block !important;\n",
     97        "  position: relative;\n",
     98        "}\n",
     99        "\n",
    100        "#sk-container-id-8 div.sk-text-repr-fallback {\n",
    101        "  display: none;\n",
    102        "}\n",
    103        "\n",
    104        "div.sk-parallel-item,\n",
    105        "div.sk-serial,\n",
    106        "div.sk-item {\n",
    107        "  /* draw centered vertical line to link estimators */\n",
    108        "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
    109        "  background-size: 2px 100%;\n",
    110        "  background-repeat: no-repeat;\n",
    111        "  background-position: center center;\n",
    112        "}\n",
    113        "\n",
    114        "/* Parallel-specific style estimator block */\n",
    115        "\n",
    116        "#sk-container-id-8 div.sk-parallel-item::after {\n",
    117        "  content: \"\";\n",
    118        "  width: 100%;\n",
    119        "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
    120        "  flex-grow: 1;\n",
    121        "}\n",
    122        "\n",
    123        "#sk-container-id-8 div.sk-parallel {\n",
    124        "  display: flex;\n",
    125        "  align-items: stretch;\n",
    126        "  justify-content: center;\n",
    127        "  background-color: var(--sklearn-color-background);\n",
    128        "  position: relative;\n",
    129        "}\n",
    130        "\n",
    131        "#sk-container-id-8 div.sk-parallel-item {\n",
    132        "  display: flex;\n",
    133        "  flex-direction: column;\n",
    134        "}\n",
    135        "\n",
    136        "#sk-container-id-8 div.sk-parallel-item:first-child::after {\n",
    137        "  align-self: flex-end;\n",
    138        "  width: 50%;\n",
    139        "}\n",
    140        "\n",
    141        "#sk-container-id-8 div.sk-parallel-item:last-child::after {\n",
    142        "  align-self: flex-start;\n",
    143        "  width: 50%;\n",
    144        "}\n",
    145        "\n",
    146        "#sk-container-id-8 div.sk-parallel-item:only-child::after {\n",
    147        "  width: 0;\n",
    148        "}\n",
    149        "\n",
    150        "/* Serial-specific style estimator block */\n",
    151        "\n",
    152        "#sk-container-id-8 div.sk-serial {\n",
    153        "  display: flex;\n",
    154        "  flex-direction: column;\n",
    155        "  align-items: center;\n",
    156        "  background-color: var(--sklearn-color-background);\n",
    157        "  padding-right: 1em;\n",
    158        "  padding-left: 1em;\n",
    159        "}\n",
    160        "\n",
    161        "\n",
    162        "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
    163        "clickable and can be expanded/collapsed.\n",
    164        "- Pipeline and ColumnTransformer use this feature and define the default style\n",
    165        "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
    166        "*/\n",
    167        "\n",
    168        "/* Pipeline and ColumnTransformer style (default) */\n",
    169        "\n",
    170        "#sk-container-id-8 div.sk-toggleable {\n",
    171        "  /* Default theme specific background. It is overwritten whether we have a\n",
    172        "  specific estimator or a Pipeline/ColumnTransformer */\n",
    173        "  background-color: var(--sklearn-color-background);\n",
    174        "}\n",
    175        "\n",
    176        "/* Toggleable label */\n",
    177        "#sk-container-id-8 label.sk-toggleable__label {\n",
    178        "  cursor: pointer;\n",
    179        "  display: block;\n",
    180        "  width: 100%;\n",
    181        "  margin-bottom: 0;\n",
    182        "  padding: 0.5em;\n",
    183        "  box-sizing: border-box;\n",
    184        "  text-align: center;\n",
    185        "}\n",
    186        "\n",
    187        "#sk-container-id-8 label.sk-toggleable__label-arrow:before {\n",
    188        "  /* Arrow on the left of the label */\n",
    189        "  content: \"▸\";\n",
    190        "  float: left;\n",
    191        "  margin-right: 0.25em;\n",
    192        "  color: var(--sklearn-color-icon);\n",
    193        "}\n",
    194        "\n",
    195        "#sk-container-id-8 label.sk-toggleable__label-arrow:hover:before {\n",
    196        "  color: var(--sklearn-color-text);\n",
    197        "}\n",
    198        "\n",
    199        "/* Toggleable content - dropdown */\n",
    200        "\n",
    201        "#sk-container-id-8 div.sk-toggleable__content {\n",
    202        "  max-height: 0;\n",
    203        "  max-width: 0;\n",
    204        "  overflow: hidden;\n",
    205        "  text-align: left;\n",
    206        "  /* unfitted */\n",
    207        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
    208        "}\n",
    209        "\n",
    210        "#sk-container-id-8 div.sk-toggleable__content.fitted {\n",
    211        "  /* fitted */\n",
    212        "  background-color: var(--sklearn-color-fitted-level-0);\n",
    213        "}\n",
    214        "\n",
    215        "#sk-container-id-8 div.sk-toggleable__content pre {\n",
    216        "  margin: 0.2em;\n",
    217        "  border-radius: 0.25em;\n",
    218        "  color: var(--sklearn-color-text);\n",
    219        "  /* unfitted */\n",
    220        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
    221        "}\n",
    222        "\n",
    223        "#sk-container-id-8 div.sk-toggleable__content.fitted pre {\n",
    224        "  /* unfitted */\n",
    225        "  background-color: var(--sklearn-color-fitted-level-0);\n",
    226        "}\n",
    227        "\n",
    228        "#sk-container-id-8 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
    229        "  /* Expand drop-down */\n",
    230        "  max-height: 200px;\n",
    231        "  max-width: 100%;\n",
    232        "  overflow: auto;\n",
    233        "}\n",
    234        "\n",
    235        "#sk-container-id-8 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
    236        "  content: \"▾\";\n",
    237        "}\n",
    238        "\n",
    239        "/* Pipeline/ColumnTransformer-specific style */\n",
    240        "\n",
    241        "#sk-container-id-8 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
    242        "  color: var(--sklearn-color-text);\n",
    243        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
    244        "}\n",
    245        "\n",
    246        "#sk-container-id-8 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
    247        "  background-color: var(--sklearn-color-fitted-level-2);\n",
    248        "}\n",
    249        "\n",
    250        "/* Estimator-specific style */\n",
    251        "\n",
    252        "/* Colorize estimator box */\n",
    253        "#sk-container-id-8 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
    254        "  /* unfitted */\n",
    255        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
    256        "}\n",
    257        "\n",
    258        "#sk-container-id-8 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
    259        "  /* fitted */\n",
    260        "  background-color: var(--sklearn-color-fitted-level-2);\n",
    261        "}\n",
    262        "\n",
    263        "#sk-container-id-8 div.sk-label label.sk-toggleable__label,\n",
    264        "#sk-container-id-8 div.sk-label label {\n",
    265        "  /* The background is the default theme color */\n",
    266        "  color: var(--sklearn-color-text-on-default-background);\n",
    267        "}\n",
    268        "\n",
    269        "/* On hover, darken the color of the background */\n",
    270        "#sk-container-id-8 div.sk-label:hover label.sk-toggleable__label {\n",
    271        "  color: var(--sklearn-color-text);\n",
    272        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
    273        "}\n",
    274        "\n",
    275        "/* Label box, darken color on hover, fitted */\n",
    276        "#sk-container-id-8 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
    277        "  color: var(--sklearn-color-text);\n",
    278        "  background-color: var(--sklearn-color-fitted-level-2);\n",
    279        "}\n",
    280        "\n",
    281        "/* Estimator label */\n",
    282        "\n",
    283        "#sk-container-id-8 div.sk-label label {\n",
    284        "  font-family: monospace;\n",
    285        "  font-weight: bold;\n",
    286        "  display: inline-block;\n",
    287        "  line-height: 1.2em;\n",
    288        "}\n",
    289        "\n",
    290        "#sk-container-id-8 div.sk-label-container {\n",
    291        "  text-align: center;\n",
    292        "}\n",
    293        "\n",
    294        "/* Estimator-specific */\n",
    295        "#sk-container-id-8 div.sk-estimator {\n",
    296        "  font-family: monospace;\n",
    297        "  border: 1px dotted var(--sklearn-color-border-box);\n",
    298        "  border-radius: 0.25em;\n",
    299        "  box-sizing: border-box;\n",
    300        "  margin-bottom: 0.5em;\n",
    301        "  /* unfitted */\n",
    302        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
    303        "}\n",
    304        "\n",
    305        "#sk-container-id-8 div.sk-estimator.fitted {\n",
    306        "  /* fitted */\n",
    307        "  background-color: var(--sklearn-color-fitted-level-0);\n",
    308        "}\n",
    309        "\n",
    310        "/* on hover */\n",
    311        "#sk-container-id-8 div.sk-estimator:hover {\n",
    312        "  /* unfitted */\n",
    313        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
    314        "}\n",
    315        "\n",
    316        "#sk-container-id-8 div.sk-estimator.fitted:hover {\n",
    317        "  /* fitted */\n",
    318        "  background-color: var(--sklearn-color-fitted-level-2);\n",
    319        "}\n",
    320        "\n",
    321        "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
    322        "\n",
    323        "/* Common style for \"i\" and \"?\" */\n",
    324        "\n",
    325        ".sk-estimator-doc-link,\n",
    326        "a:link.sk-estimator-doc-link,\n",
    327        "a:visited.sk-estimator-doc-link {\n",
    328        "  float: right;\n",
    329        "  font-size: smaller;\n",
    330        "  line-height: 1em;\n",
    331        "  font-family: monospace;\n",
    332        "  background-color: var(--sklearn-color-background);\n",
    333        "  border-radius: 1em;\n",
    334        "  height: 1em;\n",
    335        "  width: 1em;\n",
    336        "  text-decoration: none !important;\n",
    337        "  margin-left: 1ex;\n",
    338        "  /* unfitted */\n",
    339        "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
    340        "  color: var(--sklearn-color-unfitted-level-1);\n",
    341        "}\n",
    342        "\n",
    343        ".sk-estimator-doc-link.fitted,\n",
    344        "a:link.sk-estimator-doc-link.fitted,\n",
    345        "a:visited.sk-estimator-doc-link.fitted {\n",
    346        "  /* fitted */\n",
    347        "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
    348        "  color: var(--sklearn-color-fitted-level-1);\n",
    349        "}\n",
    350        "\n",
    351        "/* On hover */\n",
    352        "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
    353        ".sk-estimator-doc-link:hover,\n",
    354        "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
    355        ".sk-estimator-doc-link:hover {\n",
    356        "  /* unfitted */\n",
    357        "  background-color: var(--sklearn-color-unfitted-level-3);\n",
    358        "  color: var(--sklearn-color-background);\n",
    359        "  text-decoration: none;\n",
    360        "}\n",
    361        "\n",
    362        "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
    363        ".sk-estimator-doc-link.fitted:hover,\n",
    364        "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
    365        ".sk-estimator-doc-link.fitted:hover {\n",
    366        "  /* fitted */\n",
    367        "  background-color: var(--sklearn-color-fitted-level-3);\n",
    368        "  color: var(--sklearn-color-background);\n",
    369        "  text-decoration: none;\n",
    370        "}\n",
    371        "\n",
    372        "/* Span, style for the box shown on hovering the info icon */\n",
    373        ".sk-estimator-doc-link span {\n",
    374        "  display: none;\n",
    375        "  z-index: 9999;\n",
    376        "  position: relative;\n",
    377        "  font-weight: normal;\n",
    378        "  right: .2ex;\n",
    379        "  padding: .5ex;\n",
    380        "  margin: .5ex;\n",
    381        "  width: min-content;\n",
    382        "  min-width: 20ex;\n",
    383        "  max-width: 50ex;\n",
    384        "  color: var(--sklearn-color-text);\n",
    385        "  box-shadow: 2pt 2pt 4pt #999;\n",
    386        "  /* unfitted */\n",
    387        "  background: var(--sklearn-color-unfitted-level-0);\n",
    388        "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
    389        "}\n",
    390        "\n",
    391        ".sk-estimator-doc-link.fitted span {\n",
    392        "  /* fitted */\n",
    393        "  background: var(--sklearn-color-fitted-level-0);\n",
    394        "  border: var(--sklearn-color-fitted-level-3);\n",
    395        "}\n",
    396        "\n",
    397        ".sk-estimator-doc-link:hover span {\n",
    398        "  display: block;\n",
    399        "}\n",
    400        "\n",
    401        "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
    402        "\n",
    403        "#sk-container-id-8 a.estimator_doc_link {\n",
    404        "  float: right;\n",
    405        "  font-size: 1rem;\n",
    406        "  line-height: 1em;\n",
    407        "  font-family: monospace;\n",
    408        "  background-color: var(--sklearn-color-background);\n",
    409        "  border-radius: 1rem;\n",
    410        "  height: 1rem;\n",
    411        "  width: 1rem;\n",
    412        "  text-decoration: none;\n",
    413        "  /* unfitted */\n",
    414        "  color: var(--sklearn-color-unfitted-level-1);\n",
    415        "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
    416        "}\n",
    417        "\n",
    418        "#sk-container-id-8 a.estimator_doc_link.fitted {\n",
    419        "  /* fitted */\n",
    420        "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
    421        "  color: var(--sklearn-color-fitted-level-1);\n",
    422        "}\n",
    423        "\n",
    424        "/* On hover */\n",
    425        "#sk-container-id-8 a.estimator_doc_link:hover {\n",
    426        "  /* unfitted */\n",
    427        "  background-color: var(--sklearn-color-unfitted-level-3);\n",
    428        "  color: var(--sklearn-color-background);\n",
    429        "  text-decoration: none;\n",
    430        "}\n",
    431        "\n",
    432        "#sk-container-id-8 a.estimator_doc_link.fitted:hover {\n",
    433        "  /* fitted */\n",
    434        "  background-color: var(--sklearn-color-fitted-level-3);\n",
    435        "}\n",
    436        "</style><div id=\"sk-container-id-8\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>VotingClassifier(estimators=[(&#x27;lr&#x27;, LogisticRegression(random_state=42)),\n",
    437        "                             (&#x27;rf&#x27;, RandomForestClassifier(random_state=42)),\n",
    438        "                             (&#x27;svc&#x27;, SVC(random_state=42))])</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 sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-28\" type=\"checkbox\" ><label for=\"sk-estimator-id-28\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;VotingClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.VotingClassifier.html\">?<span>Documentation for VotingClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>VotingClassifier(estimators=[(&#x27;lr&#x27;, LogisticRegression(random_state=42)),\n",
    439        "                             (&#x27;rf&#x27;, RandomForestClassifier(random_state=42)),\n",
    440        "                             (&#x27;svc&#x27;, SVC(random_state=42))])</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lr</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-29\" type=\"checkbox\" ><label for=\"sk-estimator-id-29\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;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></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression(random_state=42)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>rf</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-30\" type=\"checkbox\" ><label for=\"sk-estimator-id-30\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;RandomForestClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier(random_state=42)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>svc</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-31\" type=\"checkbox\" ><label for=\"sk-estimator-id-31\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;SVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>SVC(random_state=42)</pre></div> </div></div></div></div></div></div></div></div></div>"
    441       ],
    442       "text/plain": [
    443        "VotingClassifier(estimators=[('lr', LogisticRegression(random_state=42)),\n",
    444        "                             ('rf', RandomForestClassifier(random_state=42)),\n",
    445        "                             ('svc', SVC(random_state=42))])"
    446       ]
    447      },
    448      "execution_count": 43,
    449      "metadata": {},
    450      "output_type": "execute_result"
    451     }
    452    ],
    453    "source": [
    454     "voting_clf = VotingClassifier(\n",
    455     "    estimators=[\n",
    456     "        ('lr' , LogisticRegression(random_state=42)),\n",
    457     "        ('rf',RandomForestClassifier(random_state=42)),\n",
    458     "        ('svc', SVC(random_state=42))\n",
    459     "    ]\n",
    460     ")\n",
    461     "\n",
    462     "voting_clf.fit(X_train,y_train)"
    463    ]
    464   },
    465   {
    466    "cell_type": "code",
    467    "execution_count": 44,
    468    "metadata": {},
    469    "outputs": [
    470     {
    471      "name": "stdout",
    472      "output_type": "stream",
    473      "text": [
    474       "lr = 0.864\n",
    475       "rf = 0.896\n",
    476       "svc = 0.896\n"
    477      ]
    478     }
    479    ],
    480    "source": [
    481     "for name, clf in voting_clf.named_estimators_.items():\n",
    482     "    print(name, '=', clf.score(X_test,y_test))"
    483    ]
    484   },
    485   {
    486    "cell_type": "code",
    487    "execution_count": 45,
    488    "metadata": {},
    489    "outputs": [
    490     {
    491      "data": {
    492       "text/plain": [
    493        "array([1])"
    494       ]
    495      },
    496      "execution_count": 45,
    497      "metadata": {},
    498      "output_type": "execute_result"
    499     }
    500    ],
    501    "source": [
    502     "voting_clf.predict(X_test[:1])"
    503    ]
    504   },
    505   {
    506    "cell_type": "code",
    507    "execution_count": 46,
    508    "metadata": {},
    509    "outputs": [
    510     {
    511      "data": {
    512       "text/plain": [
    513        "[array([1]), array([1]), array([0])]"
    514       ]
    515      },
    516      "execution_count": 46,
    517      "metadata": {},
    518      "output_type": "execute_result"
    519     }
    520    ],
    521    "source": [
    522     "[clf.predict(X_test[:1]) for clf in voting_clf.estimators_]"
    523    ]
    524   },
    525   {
    526    "cell_type": "code",
    527    "execution_count": 47,
    528    "metadata": {},
    529    "outputs": [
    530     {
    531      "data": {
    532       "text/plain": [
    533        "0.912"
    534       ]
    535      },
    536      "execution_count": 47,
    537      "metadata": {},
    538      "output_type": "execute_result"
    539     }
    540    ],
    541    "source": [
    542     "voting_clf.score(X_test,y_test)"
    543    ]
    544   },
    545   {
    546    "cell_type": "code",
    547    "execution_count": 48,
    548    "metadata": {},
    549    "outputs": [
    550     {
    551      "data": {
    552       "text/html": [
    553        "<style>#sk-container-id-9 {\n",
    554        "  /* Definition of color scheme common for light and dark mode */\n",
    555        "  --sklearn-color-text: black;\n",
    556        "  --sklearn-color-line: gray;\n",
    557        "  /* Definition of color scheme for unfitted estimators */\n",
    558        "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
    559        "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
    560        "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
    561        "  --sklearn-color-unfitted-level-3: chocolate;\n",
    562        "  /* Definition of color scheme for fitted estimators */\n",
    563        "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
    564        "  --sklearn-color-fitted-level-1: #d4ebff;\n",
    565        "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
    566        "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
    567        "\n",
    568        "  /* Specific color for light theme */\n",
    569        "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
    570        "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
    571        "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
    572        "  --sklearn-color-icon: #696969;\n",
    573        "\n",
    574        "  @media (prefers-color-scheme: dark) {\n",
    575        "    /* Redefinition of color scheme for dark theme */\n",
    576        "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
    577        "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
    578        "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
    579        "    --sklearn-color-icon: #878787;\n",
    580        "  }\n",
    581        "}\n",
    582        "\n",
    583        "#sk-container-id-9 {\n",
    584        "  color: var(--sklearn-color-text);\n",
    585        "}\n",
    586        "\n",
    587        "#sk-container-id-9 pre {\n",
    588        "  padding: 0;\n",
    589        "}\n",
    590        "\n",
    591        "#sk-container-id-9 input.sk-hidden--visually {\n",
    592        "  border: 0;\n",
    593        "  clip: rect(1px 1px 1px 1px);\n",
    594        "  clip: rect(1px, 1px, 1px, 1px);\n",
    595        "  height: 1px;\n",
    596        "  margin: -1px;\n",
    597        "  overflow: hidden;\n",
    598        "  padding: 0;\n",
    599        "  position: absolute;\n",
    600        "  width: 1px;\n",
    601        "}\n",
    602        "\n",
    603        "#sk-container-id-9 div.sk-dashed-wrapped {\n",
    604        "  border: 1px dashed var(--sklearn-color-line);\n",
    605        "  margin: 0 0.4em 0.5em 0.4em;\n",
    606        "  box-sizing: border-box;\n",
    607        "  padding-bottom: 0.4em;\n",
    608        "  background-color: var(--sklearn-color-background);\n",
    609        "}\n",
    610        "\n",
    611        "#sk-container-id-9 div.sk-container {\n",
    612        "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
    613        "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
    614        "     so we also need the `!important` here to be able to override the\n",
    615        "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
    616        "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
    617        "  display: inline-block !important;\n",
    618        "  position: relative;\n",
    619        "}\n",
    620        "\n",
    621        "#sk-container-id-9 div.sk-text-repr-fallback {\n",
    622        "  display: none;\n",
    623        "}\n",
    624        "\n",
    625        "div.sk-parallel-item,\n",
    626        "div.sk-serial,\n",
    627        "div.sk-item {\n",
    628        "  /* draw centered vertical line to link estimators */\n",
    629        "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
    630        "  background-size: 2px 100%;\n",
    631        "  background-repeat: no-repeat;\n",
    632        "  background-position: center center;\n",
    633        "}\n",
    634        "\n",
    635        "/* Parallel-specific style estimator block */\n",
    636        "\n",
    637        "#sk-container-id-9 div.sk-parallel-item::after {\n",
    638        "  content: \"\";\n",
    639        "  width: 100%;\n",
    640        "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
    641        "  flex-grow: 1;\n",
    642        "}\n",
    643        "\n",
    644        "#sk-container-id-9 div.sk-parallel {\n",
    645        "  display: flex;\n",
    646        "  align-items: stretch;\n",
    647        "  justify-content: center;\n",
    648        "  background-color: var(--sklearn-color-background);\n",
    649        "  position: relative;\n",
    650        "}\n",
    651        "\n",
    652        "#sk-container-id-9 div.sk-parallel-item {\n",
    653        "  display: flex;\n",
    654        "  flex-direction: column;\n",
    655        "}\n",
    656        "\n",
    657        "#sk-container-id-9 div.sk-parallel-item:first-child::after {\n",
    658        "  align-self: flex-end;\n",
    659        "  width: 50%;\n",
    660        "}\n",
    661        "\n",
    662        "#sk-container-id-9 div.sk-parallel-item:last-child::after {\n",
    663        "  align-self: flex-start;\n",
    664        "  width: 50%;\n",
    665        "}\n",
    666        "\n",
    667        "#sk-container-id-9 div.sk-parallel-item:only-child::after {\n",
    668        "  width: 0;\n",
    669        "}\n",
    670        "\n",
    671        "/* Serial-specific style estimator block */\n",
    672        "\n",
    673        "#sk-container-id-9 div.sk-serial {\n",
    674        "  display: flex;\n",
    675        "  flex-direction: column;\n",
    676        "  align-items: center;\n",
    677        "  background-color: var(--sklearn-color-background);\n",
    678        "  padding-right: 1em;\n",
    679        "  padding-left: 1em;\n",
    680        "}\n",
    681        "\n",
    682        "\n",
    683        "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
    684        "clickable and can be expanded/collapsed.\n",
    685        "- Pipeline and ColumnTransformer use this feature and define the default style\n",
    686        "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
    687        "*/\n",
    688        "\n",
    689        "/* Pipeline and ColumnTransformer style (default) */\n",
    690        "\n",
    691        "#sk-container-id-9 div.sk-toggleable {\n",
    692        "  /* Default theme specific background. It is overwritten whether we have a\n",
    693        "  specific estimator or a Pipeline/ColumnTransformer */\n",
    694        "  background-color: var(--sklearn-color-background);\n",
    695        "}\n",
    696        "\n",
    697        "/* Toggleable label */\n",
    698        "#sk-container-id-9 label.sk-toggleable__label {\n",
    699        "  cursor: pointer;\n",
    700        "  display: block;\n",
    701        "  width: 100%;\n",
    702        "  margin-bottom: 0;\n",
    703        "  padding: 0.5em;\n",
    704        "  box-sizing: border-box;\n",
    705        "  text-align: center;\n",
    706        "}\n",
    707        "\n",
    708        "#sk-container-id-9 label.sk-toggleable__label-arrow:before {\n",
    709        "  /* Arrow on the left of the label */\n",
    710        "  content: \"▸\";\n",
    711        "  float: left;\n",
    712        "  margin-right: 0.25em;\n",
    713        "  color: var(--sklearn-color-icon);\n",
    714        "}\n",
    715        "\n",
    716        "#sk-container-id-9 label.sk-toggleable__label-arrow:hover:before {\n",
    717        "  color: var(--sklearn-color-text);\n",
    718        "}\n",
    719        "\n",
    720        "/* Toggleable content - dropdown */\n",
    721        "\n",
    722        "#sk-container-id-9 div.sk-toggleable__content {\n",
    723        "  max-height: 0;\n",
    724        "  max-width: 0;\n",
    725        "  overflow: hidden;\n",
    726        "  text-align: left;\n",
    727        "  /* unfitted */\n",
    728        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
    729        "}\n",
    730        "\n",
    731        "#sk-container-id-9 div.sk-toggleable__content.fitted {\n",
    732        "  /* fitted */\n",
    733        "  background-color: var(--sklearn-color-fitted-level-0);\n",
    734        "}\n",
    735        "\n",
    736        "#sk-container-id-9 div.sk-toggleable__content pre {\n",
    737        "  margin: 0.2em;\n",
    738        "  border-radius: 0.25em;\n",
    739        "  color: var(--sklearn-color-text);\n",
    740        "  /* unfitted */\n",
    741        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
    742        "}\n",
    743        "\n",
    744        "#sk-container-id-9 div.sk-toggleable__content.fitted pre {\n",
    745        "  /* unfitted */\n",
    746        "  background-color: var(--sklearn-color-fitted-level-0);\n",
    747        "}\n",
    748        "\n",
    749        "#sk-container-id-9 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
    750        "  /* Expand drop-down */\n",
    751        "  max-height: 200px;\n",
    752        "  max-width: 100%;\n",
    753        "  overflow: auto;\n",
    754        "}\n",
    755        "\n",
    756        "#sk-container-id-9 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
    757        "  content: \"▾\";\n",
    758        "}\n",
    759        "\n",
    760        "/* Pipeline/ColumnTransformer-specific style */\n",
    761        "\n",
    762        "#sk-container-id-9 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
    763        "  color: var(--sklearn-color-text);\n",
    764        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
    765        "}\n",
    766        "\n",
    767        "#sk-container-id-9 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
    768        "  background-color: var(--sklearn-color-fitted-level-2);\n",
    769        "}\n",
    770        "\n",
    771        "/* Estimator-specific style */\n",
    772        "\n",
    773        "/* Colorize estimator box */\n",
    774        "#sk-container-id-9 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
    775        "  /* unfitted */\n",
    776        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
    777        "}\n",
    778        "\n",
    779        "#sk-container-id-9 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
    780        "  /* fitted */\n",
    781        "  background-color: var(--sklearn-color-fitted-level-2);\n",
    782        "}\n",
    783        "\n",
    784        "#sk-container-id-9 div.sk-label label.sk-toggleable__label,\n",
    785        "#sk-container-id-9 div.sk-label label {\n",
    786        "  /* The background is the default theme color */\n",
    787        "  color: var(--sklearn-color-text-on-default-background);\n",
    788        "}\n",
    789        "\n",
    790        "/* On hover, darken the color of the background */\n",
    791        "#sk-container-id-9 div.sk-label:hover label.sk-toggleable__label {\n",
    792        "  color: var(--sklearn-color-text);\n",
    793        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
    794        "}\n",
    795        "\n",
    796        "/* Label box, darken color on hover, fitted */\n",
    797        "#sk-container-id-9 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
    798        "  color: var(--sklearn-color-text);\n",
    799        "  background-color: var(--sklearn-color-fitted-level-2);\n",
    800        "}\n",
    801        "\n",
    802        "/* Estimator label */\n",
    803        "\n",
    804        "#sk-container-id-9 div.sk-label label {\n",
    805        "  font-family: monospace;\n",
    806        "  font-weight: bold;\n",
    807        "  display: inline-block;\n",
    808        "  line-height: 1.2em;\n",
    809        "}\n",
    810        "\n",
    811        "#sk-container-id-9 div.sk-label-container {\n",
    812        "  text-align: center;\n",
    813        "}\n",
    814        "\n",
    815        "/* Estimator-specific */\n",
    816        "#sk-container-id-9 div.sk-estimator {\n",
    817        "  font-family: monospace;\n",
    818        "  border: 1px dotted var(--sklearn-color-border-box);\n",
    819        "  border-radius: 0.25em;\n",
    820        "  box-sizing: border-box;\n",
    821        "  margin-bottom: 0.5em;\n",
    822        "  /* unfitted */\n",
    823        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
    824        "}\n",
    825        "\n",
    826        "#sk-container-id-9 div.sk-estimator.fitted {\n",
    827        "  /* fitted */\n",
    828        "  background-color: var(--sklearn-color-fitted-level-0);\n",
    829        "}\n",
    830        "\n",
    831        "/* on hover */\n",
    832        "#sk-container-id-9 div.sk-estimator:hover {\n",
    833        "  /* unfitted */\n",
    834        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
    835        "}\n",
    836        "\n",
    837        "#sk-container-id-9 div.sk-estimator.fitted:hover {\n",
    838        "  /* fitted */\n",
    839        "  background-color: var(--sklearn-color-fitted-level-2);\n",
    840        "}\n",
    841        "\n",
    842        "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
    843        "\n",
    844        "/* Common style for \"i\" and \"?\" */\n",
    845        "\n",
    846        ".sk-estimator-doc-link,\n",
    847        "a:link.sk-estimator-doc-link,\n",
    848        "a:visited.sk-estimator-doc-link {\n",
    849        "  float: right;\n",
    850        "  font-size: smaller;\n",
    851        "  line-height: 1em;\n",
    852        "  font-family: monospace;\n",
    853        "  background-color: var(--sklearn-color-background);\n",
    854        "  border-radius: 1em;\n",
    855        "  height: 1em;\n",
    856        "  width: 1em;\n",
    857        "  text-decoration: none !important;\n",
    858        "  margin-left: 1ex;\n",
    859        "  /* unfitted */\n",
    860        "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
    861        "  color: var(--sklearn-color-unfitted-level-1);\n",
    862        "}\n",
    863        "\n",
    864        ".sk-estimator-doc-link.fitted,\n",
    865        "a:link.sk-estimator-doc-link.fitted,\n",
    866        "a:visited.sk-estimator-doc-link.fitted {\n",
    867        "  /* fitted */\n",
    868        "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
    869        "  color: var(--sklearn-color-fitted-level-1);\n",
    870        "}\n",
    871        "\n",
    872        "/* On hover */\n",
    873        "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
    874        ".sk-estimator-doc-link:hover,\n",
    875        "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
    876        ".sk-estimator-doc-link:hover {\n",
    877        "  /* unfitted */\n",
    878        "  background-color: var(--sklearn-color-unfitted-level-3);\n",
    879        "  color: var(--sklearn-color-background);\n",
    880        "  text-decoration: none;\n",
    881        "}\n",
    882        "\n",
    883        "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
    884        ".sk-estimator-doc-link.fitted:hover,\n",
    885        "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
    886        ".sk-estimator-doc-link.fitted:hover {\n",
    887        "  /* fitted */\n",
    888        "  background-color: var(--sklearn-color-fitted-level-3);\n",
    889        "  color: var(--sklearn-color-background);\n",
    890        "  text-decoration: none;\n",
    891        "}\n",
    892        "\n",
    893        "/* Span, style for the box shown on hovering the info icon */\n",
    894        ".sk-estimator-doc-link span {\n",
    895        "  display: none;\n",
    896        "  z-index: 9999;\n",
    897        "  position: relative;\n",
    898        "  font-weight: normal;\n",
    899        "  right: .2ex;\n",
    900        "  padding: .5ex;\n",
    901        "  margin: .5ex;\n",
    902        "  width: min-content;\n",
    903        "  min-width: 20ex;\n",
    904        "  max-width: 50ex;\n",
    905        "  color: var(--sklearn-color-text);\n",
    906        "  box-shadow: 2pt 2pt 4pt #999;\n",
    907        "  /* unfitted */\n",
    908        "  background: var(--sklearn-color-unfitted-level-0);\n",
    909        "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
    910        "}\n",
    911        "\n",
    912        ".sk-estimator-doc-link.fitted span {\n",
    913        "  /* fitted */\n",
    914        "  background: var(--sklearn-color-fitted-level-0);\n",
    915        "  border: var(--sklearn-color-fitted-level-3);\n",
    916        "}\n",
    917        "\n",
    918        ".sk-estimator-doc-link:hover span {\n",
    919        "  display: block;\n",
    920        "}\n",
    921        "\n",
    922        "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
    923        "\n",
    924        "#sk-container-id-9 a.estimator_doc_link {\n",
    925        "  float: right;\n",
    926        "  font-size: 1rem;\n",
    927        "  line-height: 1em;\n",
    928        "  font-family: monospace;\n",
    929        "  background-color: var(--sklearn-color-background);\n",
    930        "  border-radius: 1rem;\n",
    931        "  height: 1rem;\n",
    932        "  width: 1rem;\n",
    933        "  text-decoration: none;\n",
    934        "  /* unfitted */\n",
    935        "  color: var(--sklearn-color-unfitted-level-1);\n",
    936        "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
    937        "}\n",
    938        "\n",
    939        "#sk-container-id-9 a.estimator_doc_link.fitted {\n",
    940        "  /* fitted */\n",
    941        "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
    942        "  color: var(--sklearn-color-fitted-level-1);\n",
    943        "}\n",
    944        "\n",
    945        "/* On hover */\n",
    946        "#sk-container-id-9 a.estimator_doc_link:hover {\n",
    947        "  /* unfitted */\n",
    948        "  background-color: var(--sklearn-color-unfitted-level-3);\n",
    949        "  color: var(--sklearn-color-background);\n",
    950        "  text-decoration: none;\n",
    951        "}\n",
    952        "\n",
    953        "#sk-container-id-9 a.estimator_doc_link.fitted:hover {\n",
    954        "  /* fitted */\n",
    955        "  background-color: var(--sklearn-color-fitted-level-3);\n",
    956        "}\n",
    957        "</style><div id=\"sk-container-id-9\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>VotingClassifier(estimators=[(&#x27;lr&#x27;, LogisticRegression(random_state=42)),\n",
    958        "                             (&#x27;rf&#x27;, RandomForestClassifier(random_state=42)),\n",
    959        "                             (&#x27;svc&#x27;, SVC(probability=True, random_state=42))],\n",
    960        "                 voting=&#x27;soft&#x27;)</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 sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-32\" type=\"checkbox\" ><label for=\"sk-estimator-id-32\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;VotingClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.VotingClassifier.html\">?<span>Documentation for VotingClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>VotingClassifier(estimators=[(&#x27;lr&#x27;, LogisticRegression(random_state=42)),\n",
    961        "                             (&#x27;rf&#x27;, RandomForestClassifier(random_state=42)),\n",
    962        "                             (&#x27;svc&#x27;, SVC(probability=True, random_state=42))],\n",
    963        "                 voting=&#x27;soft&#x27;)</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lr</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-33\" type=\"checkbox\" ><label for=\"sk-estimator-id-33\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;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></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression(random_state=42)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>rf</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-34\" type=\"checkbox\" ><label for=\"sk-estimator-id-34\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;RandomForestClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier(random_state=42)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>svc</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-35\" type=\"checkbox\" ><label for=\"sk-estimator-id-35\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;SVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>SVC(probability=True, random_state=42)</pre></div> </div></div></div></div></div></div></div></div></div>"
    964       ],
    965       "text/plain": [
    966        "VotingClassifier(estimators=[('lr', LogisticRegression(random_state=42)),\n",
    967        "                             ('rf', RandomForestClassifier(random_state=42)),\n",
    968        "                             ('svc', SVC(probability=True, random_state=42))],\n",
    969        "                 voting='soft')"
    970       ]
    971      },
    972      "execution_count": 48,
    973      "metadata": {},
    974      "output_type": "execute_result"
    975     }
    976    ],
    977    "source": [
    978     "# Same thing, but adding soft voting to average probabilities\n",
    979     "# from each output. Also, need to specify the svc estimator to use\n",
    980     "# probabilistic outputs instead of binary like svcs normally do. \n",
    981     "\n",
    982     "voting_clf.voting = 'soft'\n",
    983     "voting_clf.named_estimators['svc'].probability = True\n",
    984     "voting_clf.fit(X_train, y_train)"
    985    ]
    986   },
    987   {
    988    "cell_type": "code",
    989    "execution_count": 49,
    990    "metadata": {},
    991    "outputs": [
    992     {
    993      "data": {
    994       "text/plain": [
    995        "0.92"
    996       ]
    997      },
    998      "execution_count": 49,
    999      "metadata": {},
   1000      "output_type": "execute_result"
   1001     }
   1002    ],
   1003    "source": [
   1004     "voting_clf.score(X_test, y_test)"
   1005    ]
   1006   },
   1007   {
   1008    "cell_type": "code",
   1009    "execution_count": 50,
   1010    "metadata": {},
   1011    "outputs": [
   1012     {
   1013      "data": {
   1014       "text/html": [
   1015        "<style>#sk-container-id-10 {\n",
   1016        "  /* Definition of color scheme common for light and dark mode */\n",
   1017        "  --sklearn-color-text: black;\n",
   1018        "  --sklearn-color-line: gray;\n",
   1019        "  /* Definition of color scheme for unfitted estimators */\n",
   1020        "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
   1021        "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
   1022        "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
   1023        "  --sklearn-color-unfitted-level-3: chocolate;\n",
   1024        "  /* Definition of color scheme for fitted estimators */\n",
   1025        "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
   1026        "  --sklearn-color-fitted-level-1: #d4ebff;\n",
   1027        "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
   1028        "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
   1029        "\n",
   1030        "  /* Specific color for light theme */\n",
   1031        "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
   1032        "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
   1033        "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
   1034        "  --sklearn-color-icon: #696969;\n",
   1035        "\n",
   1036        "  @media (prefers-color-scheme: dark) {\n",
   1037        "    /* Redefinition of color scheme for dark theme */\n",
   1038        "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
   1039        "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
   1040        "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
   1041        "    --sklearn-color-icon: #878787;\n",
   1042        "  }\n",
   1043        "}\n",
   1044        "\n",
   1045        "#sk-container-id-10 {\n",
   1046        "  color: var(--sklearn-color-text);\n",
   1047        "}\n",
   1048        "\n",
   1049        "#sk-container-id-10 pre {\n",
   1050        "  padding: 0;\n",
   1051        "}\n",
   1052        "\n",
   1053        "#sk-container-id-10 input.sk-hidden--visually {\n",
   1054        "  border: 0;\n",
   1055        "  clip: rect(1px 1px 1px 1px);\n",
   1056        "  clip: rect(1px, 1px, 1px, 1px);\n",
   1057        "  height: 1px;\n",
   1058        "  margin: -1px;\n",
   1059        "  overflow: hidden;\n",
   1060        "  padding: 0;\n",
   1061        "  position: absolute;\n",
   1062        "  width: 1px;\n",
   1063        "}\n",
   1064        "\n",
   1065        "#sk-container-id-10 div.sk-dashed-wrapped {\n",
   1066        "  border: 1px dashed var(--sklearn-color-line);\n",
   1067        "  margin: 0 0.4em 0.5em 0.4em;\n",
   1068        "  box-sizing: border-box;\n",
   1069        "  padding-bottom: 0.4em;\n",
   1070        "  background-color: var(--sklearn-color-background);\n",
   1071        "}\n",
   1072        "\n",
   1073        "#sk-container-id-10 div.sk-container {\n",
   1074        "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
   1075        "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
   1076        "     so we also need the `!important` here to be able to override the\n",
   1077        "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
   1078        "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
   1079        "  display: inline-block !important;\n",
   1080        "  position: relative;\n",
   1081        "}\n",
   1082        "\n",
   1083        "#sk-container-id-10 div.sk-text-repr-fallback {\n",
   1084        "  display: none;\n",
   1085        "}\n",
   1086        "\n",
   1087        "div.sk-parallel-item,\n",
   1088        "div.sk-serial,\n",
   1089        "div.sk-item {\n",
   1090        "  /* draw centered vertical line to link estimators */\n",
   1091        "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
   1092        "  background-size: 2px 100%;\n",
   1093        "  background-repeat: no-repeat;\n",
   1094        "  background-position: center center;\n",
   1095        "}\n",
   1096        "\n",
   1097        "/* Parallel-specific style estimator block */\n",
   1098        "\n",
   1099        "#sk-container-id-10 div.sk-parallel-item::after {\n",
   1100        "  content: \"\";\n",
   1101        "  width: 100%;\n",
   1102        "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
   1103        "  flex-grow: 1;\n",
   1104        "}\n",
   1105        "\n",
   1106        "#sk-container-id-10 div.sk-parallel {\n",
   1107        "  display: flex;\n",
   1108        "  align-items: stretch;\n",
   1109        "  justify-content: center;\n",
   1110        "  background-color: var(--sklearn-color-background);\n",
   1111        "  position: relative;\n",
   1112        "}\n",
   1113        "\n",
   1114        "#sk-container-id-10 div.sk-parallel-item {\n",
   1115        "  display: flex;\n",
   1116        "  flex-direction: column;\n",
   1117        "}\n",
   1118        "\n",
   1119        "#sk-container-id-10 div.sk-parallel-item:first-child::after {\n",
   1120        "  align-self: flex-end;\n",
   1121        "  width: 50%;\n",
   1122        "}\n",
   1123        "\n",
   1124        "#sk-container-id-10 div.sk-parallel-item:last-child::after {\n",
   1125        "  align-self: flex-start;\n",
   1126        "  width: 50%;\n",
   1127        "}\n",
   1128        "\n",
   1129        "#sk-container-id-10 div.sk-parallel-item:only-child::after {\n",
   1130        "  width: 0;\n",
   1131        "}\n",
   1132        "\n",
   1133        "/* Serial-specific style estimator block */\n",
   1134        "\n",
   1135        "#sk-container-id-10 div.sk-serial {\n",
   1136        "  display: flex;\n",
   1137        "  flex-direction: column;\n",
   1138        "  align-items: center;\n",
   1139        "  background-color: var(--sklearn-color-background);\n",
   1140        "  padding-right: 1em;\n",
   1141        "  padding-left: 1em;\n",
   1142        "}\n",
   1143        "\n",
   1144        "\n",
   1145        "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
   1146        "clickable and can be expanded/collapsed.\n",
   1147        "- Pipeline and ColumnTransformer use this feature and define the default style\n",
   1148        "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
   1149        "*/\n",
   1150        "\n",
   1151        "/* Pipeline and ColumnTransformer style (default) */\n",
   1152        "\n",
   1153        "#sk-container-id-10 div.sk-toggleable {\n",
   1154        "  /* Default theme specific background. It is overwritten whether we have a\n",
   1155        "  specific estimator or a Pipeline/ColumnTransformer */\n",
   1156        "  background-color: var(--sklearn-color-background);\n",
   1157        "}\n",
   1158        "\n",
   1159        "/* Toggleable label */\n",
   1160        "#sk-container-id-10 label.sk-toggleable__label {\n",
   1161        "  cursor: pointer;\n",
   1162        "  display: block;\n",
   1163        "  width: 100%;\n",
   1164        "  margin-bottom: 0;\n",
   1165        "  padding: 0.5em;\n",
   1166        "  box-sizing: border-box;\n",
   1167        "  text-align: center;\n",
   1168        "}\n",
   1169        "\n",
   1170        "#sk-container-id-10 label.sk-toggleable__label-arrow:before {\n",
   1171        "  /* Arrow on the left of the label */\n",
   1172        "  content: \"▸\";\n",
   1173        "  float: left;\n",
   1174        "  margin-right: 0.25em;\n",
   1175        "  color: var(--sklearn-color-icon);\n",
   1176        "}\n",
   1177        "\n",
   1178        "#sk-container-id-10 label.sk-toggleable__label-arrow:hover:before {\n",
   1179        "  color: var(--sklearn-color-text);\n",
   1180        "}\n",
   1181        "\n",
   1182        "/* Toggleable content - dropdown */\n",
   1183        "\n",
   1184        "#sk-container-id-10 div.sk-toggleable__content {\n",
   1185        "  max-height: 0;\n",
   1186        "  max-width: 0;\n",
   1187        "  overflow: hidden;\n",
   1188        "  text-align: left;\n",
   1189        "  /* unfitted */\n",
   1190        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
   1191        "}\n",
   1192        "\n",
   1193        "#sk-container-id-10 div.sk-toggleable__content.fitted {\n",
   1194        "  /* fitted */\n",
   1195        "  background-color: var(--sklearn-color-fitted-level-0);\n",
   1196        "}\n",
   1197        "\n",
   1198        "#sk-container-id-10 div.sk-toggleable__content pre {\n",
   1199        "  margin: 0.2em;\n",
   1200        "  border-radius: 0.25em;\n",
   1201        "  color: var(--sklearn-color-text);\n",
   1202        "  /* unfitted */\n",
   1203        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
   1204        "}\n",
   1205        "\n",
   1206        "#sk-container-id-10 div.sk-toggleable__content.fitted pre {\n",
   1207        "  /* unfitted */\n",
   1208        "  background-color: var(--sklearn-color-fitted-level-0);\n",
   1209        "}\n",
   1210        "\n",
   1211        "#sk-container-id-10 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
   1212        "  /* Expand drop-down */\n",
   1213        "  max-height: 200px;\n",
   1214        "  max-width: 100%;\n",
   1215        "  overflow: auto;\n",
   1216        "}\n",
   1217        "\n",
   1218        "#sk-container-id-10 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
   1219        "  content: \"▾\";\n",
   1220        "}\n",
   1221        "\n",
   1222        "/* Pipeline/ColumnTransformer-specific style */\n",
   1223        "\n",
   1224        "#sk-container-id-10 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
   1225        "  color: var(--sklearn-color-text);\n",
   1226        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
   1227        "}\n",
   1228        "\n",
   1229        "#sk-container-id-10 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
   1230        "  background-color: var(--sklearn-color-fitted-level-2);\n",
   1231        "}\n",
   1232        "\n",
   1233        "/* Estimator-specific style */\n",
   1234        "\n",
   1235        "/* Colorize estimator box */\n",
   1236        "#sk-container-id-10 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
   1237        "  /* unfitted */\n",
   1238        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
   1239        "}\n",
   1240        "\n",
   1241        "#sk-container-id-10 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
   1242        "  /* fitted */\n",
   1243        "  background-color: var(--sklearn-color-fitted-level-2);\n",
   1244        "}\n",
   1245        "\n",
   1246        "#sk-container-id-10 div.sk-label label.sk-toggleable__label,\n",
   1247        "#sk-container-id-10 div.sk-label label {\n",
   1248        "  /* The background is the default theme color */\n",
   1249        "  color: var(--sklearn-color-text-on-default-background);\n",
   1250        "}\n",
   1251        "\n",
   1252        "/* On hover, darken the color of the background */\n",
   1253        "#sk-container-id-10 div.sk-label:hover label.sk-toggleable__label {\n",
   1254        "  color: var(--sklearn-color-text);\n",
   1255        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
   1256        "}\n",
   1257        "\n",
   1258        "/* Label box, darken color on hover, fitted */\n",
   1259        "#sk-container-id-10 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
   1260        "  color: var(--sklearn-color-text);\n",
   1261        "  background-color: var(--sklearn-color-fitted-level-2);\n",
   1262        "}\n",
   1263        "\n",
   1264        "/* Estimator label */\n",
   1265        "\n",
   1266        "#sk-container-id-10 div.sk-label label {\n",
   1267        "  font-family: monospace;\n",
   1268        "  font-weight: bold;\n",
   1269        "  display: inline-block;\n",
   1270        "  line-height: 1.2em;\n",
   1271        "}\n",
   1272        "\n",
   1273        "#sk-container-id-10 div.sk-label-container {\n",
   1274        "  text-align: center;\n",
   1275        "}\n",
   1276        "\n",
   1277        "/* Estimator-specific */\n",
   1278        "#sk-container-id-10 div.sk-estimator {\n",
   1279        "  font-family: monospace;\n",
   1280        "  border: 1px dotted var(--sklearn-color-border-box);\n",
   1281        "  border-radius: 0.25em;\n",
   1282        "  box-sizing: border-box;\n",
   1283        "  margin-bottom: 0.5em;\n",
   1284        "  /* unfitted */\n",
   1285        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
   1286        "}\n",
   1287        "\n",
   1288        "#sk-container-id-10 div.sk-estimator.fitted {\n",
   1289        "  /* fitted */\n",
   1290        "  background-color: var(--sklearn-color-fitted-level-0);\n",
   1291        "}\n",
   1292        "\n",
   1293        "/* on hover */\n",
   1294        "#sk-container-id-10 div.sk-estimator:hover {\n",
   1295        "  /* unfitted */\n",
   1296        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
   1297        "}\n",
   1298        "\n",
   1299        "#sk-container-id-10 div.sk-estimator.fitted:hover {\n",
   1300        "  /* fitted */\n",
   1301        "  background-color: var(--sklearn-color-fitted-level-2);\n",
   1302        "}\n",
   1303        "\n",
   1304        "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
   1305        "\n",
   1306        "/* Common style for \"i\" and \"?\" */\n",
   1307        "\n",
   1308        ".sk-estimator-doc-link,\n",
   1309        "a:link.sk-estimator-doc-link,\n",
   1310        "a:visited.sk-estimator-doc-link {\n",
   1311        "  float: right;\n",
   1312        "  font-size: smaller;\n",
   1313        "  line-height: 1em;\n",
   1314        "  font-family: monospace;\n",
   1315        "  background-color: var(--sklearn-color-background);\n",
   1316        "  border-radius: 1em;\n",
   1317        "  height: 1em;\n",
   1318        "  width: 1em;\n",
   1319        "  text-decoration: none !important;\n",
   1320        "  margin-left: 1ex;\n",
   1321        "  /* unfitted */\n",
   1322        "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
   1323        "  color: var(--sklearn-color-unfitted-level-1);\n",
   1324        "}\n",
   1325        "\n",
   1326        ".sk-estimator-doc-link.fitted,\n",
   1327        "a:link.sk-estimator-doc-link.fitted,\n",
   1328        "a:visited.sk-estimator-doc-link.fitted {\n",
   1329        "  /* fitted */\n",
   1330        "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
   1331        "  color: var(--sklearn-color-fitted-level-1);\n",
   1332        "}\n",
   1333        "\n",
   1334        "/* On hover */\n",
   1335        "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
   1336        ".sk-estimator-doc-link:hover,\n",
   1337        "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
   1338        ".sk-estimator-doc-link:hover {\n",
   1339        "  /* unfitted */\n",
   1340        "  background-color: var(--sklearn-color-unfitted-level-3);\n",
   1341        "  color: var(--sklearn-color-background);\n",
   1342        "  text-decoration: none;\n",
   1343        "}\n",
   1344        "\n",
   1345        "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
   1346        ".sk-estimator-doc-link.fitted:hover,\n",
   1347        "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
   1348        ".sk-estimator-doc-link.fitted:hover {\n",
   1349        "  /* fitted */\n",
   1350        "  background-color: var(--sklearn-color-fitted-level-3);\n",
   1351        "  color: var(--sklearn-color-background);\n",
   1352        "  text-decoration: none;\n",
   1353        "}\n",
   1354        "\n",
   1355        "/* Span, style for the box shown on hovering the info icon */\n",
   1356        ".sk-estimator-doc-link span {\n",
   1357        "  display: none;\n",
   1358        "  z-index: 9999;\n",
   1359        "  position: relative;\n",
   1360        "  font-weight: normal;\n",
   1361        "  right: .2ex;\n",
   1362        "  padding: .5ex;\n",
   1363        "  margin: .5ex;\n",
   1364        "  width: min-content;\n",
   1365        "  min-width: 20ex;\n",
   1366        "  max-width: 50ex;\n",
   1367        "  color: var(--sklearn-color-text);\n",
   1368        "  box-shadow: 2pt 2pt 4pt #999;\n",
   1369        "  /* unfitted */\n",
   1370        "  background: var(--sklearn-color-unfitted-level-0);\n",
   1371        "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
   1372        "}\n",
   1373        "\n",
   1374        ".sk-estimator-doc-link.fitted span {\n",
   1375        "  /* fitted */\n",
   1376        "  background: var(--sklearn-color-fitted-level-0);\n",
   1377        "  border: var(--sklearn-color-fitted-level-3);\n",
   1378        "}\n",
   1379        "\n",
   1380        ".sk-estimator-doc-link:hover span {\n",
   1381        "  display: block;\n",
   1382        "}\n",
   1383        "\n",
   1384        "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
   1385        "\n",
   1386        "#sk-container-id-10 a.estimator_doc_link {\n",
   1387        "  float: right;\n",
   1388        "  font-size: 1rem;\n",
   1389        "  line-height: 1em;\n",
   1390        "  font-family: monospace;\n",
   1391        "  background-color: var(--sklearn-color-background);\n",
   1392        "  border-radius: 1rem;\n",
   1393        "  height: 1rem;\n",
   1394        "  width: 1rem;\n",
   1395        "  text-decoration: none;\n",
   1396        "  /* unfitted */\n",
   1397        "  color: var(--sklearn-color-unfitted-level-1);\n",
   1398        "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
   1399        "}\n",
   1400        "\n",
   1401        "#sk-container-id-10 a.estimator_doc_link.fitted {\n",
   1402        "  /* fitted */\n",
   1403        "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
   1404        "  color: var(--sklearn-color-fitted-level-1);\n",
   1405        "}\n",
   1406        "\n",
   1407        "/* On hover */\n",
   1408        "#sk-container-id-10 a.estimator_doc_link:hover {\n",
   1409        "  /* unfitted */\n",
   1410        "  background-color: var(--sklearn-color-unfitted-level-3);\n",
   1411        "  color: var(--sklearn-color-background);\n",
   1412        "  text-decoration: none;\n",
   1413        "}\n",
   1414        "\n",
   1415        "#sk-container-id-10 a.estimator_doc_link.fitted:hover {\n",
   1416        "  /* fitted */\n",
   1417        "  background-color: var(--sklearn-color-fitted-level-3);\n",
   1418        "}\n",
   1419        "</style><div id=\"sk-container-id-10\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>BaggingClassifier(estimator=DecisionTreeClassifier(), max_samples=100,\n",
   1420        "                  n_estimators=500, n_jobs=-1, 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 sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-36\" type=\"checkbox\" ><label for=\"sk-estimator-id-36\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;BaggingClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.BaggingClassifier.html\">?<span>Documentation for BaggingClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>BaggingClassifier(estimator=DecisionTreeClassifier(), max_samples=100,\n",
   1421        "                  n_estimators=500, n_jobs=-1, random_state=10)</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-37\" type=\"checkbox\" ><label for=\"sk-estimator-id-37\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">estimator: DecisionTreeClassifier</label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier()</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-38\" type=\"checkbox\" ><label for=\"sk-estimator-id-38\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;DecisionTreeClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.tree.DecisionTreeClassifier.html\">?<span>Documentation for DecisionTreeClassifier</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier()</pre></div> </div></div></div></div></div></div></div></div></div>"
   1422       ],
   1423       "text/plain": [
   1424        "BaggingClassifier(estimator=DecisionTreeClassifier(), max_samples=100,\n",
   1425        "                  n_estimators=500, n_jobs=-1, random_state=10)"
   1426       ]
   1427      },
   1428      "execution_count": 50,
   1429      "metadata": {},
   1430      "output_type": "execute_result"
   1431     }
   1432    ],
   1433    "source": [
   1434     "# Bagging (voting) classifier using decision trees.\n",
   1435     "\n",
   1436     "# Bagging classifier by default uses soft voting when the underlying\n",
   1437     "# model can output probabilities which decision trees can.\n",
   1438     "\n",
   1439     "from sklearn.ensemble import BaggingClassifier\n",
   1440     "from sklearn.tree import DecisionTreeClassifier\n",
   1441     "\n",
   1442     "bag_clf = BaggingClassifier(DecisionTreeClassifier(), n_estimators=500, max_samples=100, n_jobs=-1,random_state=10)\n",
   1443     "bag_clf.fit(X_train, y_train)"
   1444    ]
   1445   },
   1446   {
   1447    "cell_type": "code",
   1448    "execution_count": 51,
   1449    "metadata": {},
   1450    "outputs": [
   1451     {
   1452      "data": {
   1453       "text/plain": [
   1454        "0.92"
   1455       ]
   1456      },
   1457      "execution_count": 51,
   1458      "metadata": {},
   1459      "output_type": "execute_result"
   1460     }
   1461    ],
   1462    "source": [
   1463     "# Same as before. Nice\n",
   1464     "\n",
   1465     "bag_clf.score(X_test,y_test)"
   1466    ]
   1467   },
   1468   {
   1469    "cell_type": "code",
   1470    "execution_count": 52,
   1471    "metadata": {},
   1472    "outputs": [
   1473     {
   1474      "data": {
   1475       "text/plain": [
   1476        "0.8986666666666666"
   1477       ]
   1478      },
   1479      "execution_count": 52,
   1480      "metadata": {},
   1481      "output_type": "execute_result"
   1482     }
   1483    ],
   1484    "source": [
   1485     "# Train and then validate predictors on their out of bag samples.\n",
   1486     "\n",
   1487     "bag_clf = BaggingClassifier(DecisionTreeClassifier(), n_estimators=500, oob_score=True, n_jobs=-1, random_state=10)\n",
   1488     "\n",
   1489     "bag_clf.fit(X_train, y_train)\n",
   1490     "bag_clf.oob_score_"
   1491    ]
   1492   },
   1493   {
   1494    "cell_type": "code",
   1495    "execution_count": 53,
   1496    "metadata": {},
   1497    "outputs": [
   1498     {
   1499      "data": {
   1500       "text/plain": [
   1501        "0.896"
   1502       ]
   1503      },
   1504      "execution_count": 53,
   1505      "metadata": {},
   1506      "output_type": "execute_result"
   1507     }
   1508    ],
   1509    "source": [
   1510     "from sklearn.metrics import accuracy_score\n",
   1511     "y_pred = bag_clf.predict(X_test)\n",
   1512     "accuracy_score(y_test,y_pred)"
   1513    ]
   1514   },
   1515   {
   1516    "cell_type": "code",
   1517    "execution_count": 58,
   1518    "metadata": {},
   1519    "outputs": [
   1520     {
   1521      "data": {
   1522       "text/plain": [
   1523        "0.92"
   1524       ]
   1525      },
   1526      "execution_count": 58,
   1527      "metadata": {},
   1528      "output_type": "execute_result"
   1529     }
   1530    ],
   1531    "source": [
   1532     "# Expected way to train a random forest (still uses bagging, but underlyingly)\n",
   1533     "from sklearn.ensemble import RandomForestClassifier\n",
   1534     "\n",
   1535     "# Create random forest classifiers with 500 estimators (predictors)\n",
   1536     "# max leaf nodes of 16 to give regularization, and n_jobs set to -1\n",
   1537     "# which will allow training on all cpu cores (otherwise can specify some int for that\n",
   1538     "# number of cores).\n",
   1539     "\n",
   1540     "rnd_clf = RandomForestClassifier(n_estimators=500 , max_leaf_nodes=16, n_jobs=-1, random_state=10)\n",
   1541     "\n",
   1542     "rnd_clf.fit(X_train, y_train)\n",
   1543     "y_pred_rf = rnd_clf.predict(X_test)\n",
   1544     "rnd_clf.score(X_test, y_test)"
   1545    ]
   1546   },
   1547   {
   1548    "cell_type": "code",
   1549    "execution_count": 65,
   1550    "metadata": {},
   1551    "outputs": [
   1552     {
   1553      "data": {
   1554       "text/plain": [
   1555        "array([0.41214609, 0.58785391])"
   1556       ]
   1557      },
   1558      "execution_count": 65,
   1559      "metadata": {},
   1560      "output_type": "execute_result"
   1561     }
   1562    ],
   1563    "source": [
   1564     "rnd_clf.feature_importances_"
   1565    ]
   1566   },
   1567   {
   1568    "cell_type": "code",
   1569    "execution_count": 63,
   1570    "metadata": {},
   1571    "outputs": [
   1572     {
   1573      "data": {
   1574       "text/plain": [
   1575        "0.92"
   1576       ]
   1577      },
   1578      "execution_count": 63,
   1579      "metadata": {},
   1580      "output_type": "execute_result"
   1581     }
   1582    ],
   1583    "source": [
   1584     "# extra trees testing (I think this will be very innacurate, but let's see!)\n",
   1585     "\n",
   1586     "from sklearn.ensemble import ExtraTreesClassifier\n",
   1587     "ext_clf = ExtraTreesClassifier(n_estimators=800, max_leaf_nodes=16, n_jobs=-1, random_state=10)\n",
   1588     "ext_clf.fit(X_train, y_train)\n",
   1589     "ext_clf.score(X_test, y_test)\n",
   1590     "\n",
   1591     "# Damn that's pretty good, and quite fast to train."
   1592    ]
   1593   },
   1594   {
   1595    "cell_type": "code",
   1596    "execution_count": 64,
   1597    "metadata": {},
   1598    "outputs": [
   1599     {
   1600      "data": {
   1601       "text/plain": [
   1602        "array([0.41388478, 0.58611522])"
   1603       ]
   1604      },
   1605      "execution_count": 64,
   1606      "metadata": {},
   1607      "output_type": "execute_result"
   1608     }
   1609    ],
   1610    "source": [
   1611     "# Gives the relative importance of each feature based on its\n",
   1612     "# ability to reduce impurity on average. \n",
   1613     "ext_clf.feature_importances_"
   1614    ]
   1615   },
   1616   {
   1617    "cell_type": "code",
   1618    "execution_count": 77,
   1619    "metadata": {},
   1620    "outputs": [
   1621     {
   1622      "name": "stderr",
   1623      "output_type": "stream",
   1624      "text": [
   1625       "/home/andrew/gitRepos/myvenv/lib/python3.11/site-packages/sklearn/ensemble/_weight_boosting.py:519: FutureWarning: The SAMME.R algorithm (the default) is deprecated and will be removed in 1.6. Use the SAMME algorithm to circumvent this warning.\n",
   1626       "  warnings.warn(\n"
   1627      ]
   1628     },
   1629     {
   1630      "data": {
   1631       "text/html": [
   1632        "<style>#sk-container-id-16 {\n",
   1633        "  /* Definition of color scheme common for light and dark mode */\n",
   1634        "  --sklearn-color-text: black;\n",
   1635        "  --sklearn-color-line: gray;\n",
   1636        "  /* Definition of color scheme for unfitted estimators */\n",
   1637        "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
   1638        "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
   1639        "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
   1640        "  --sklearn-color-unfitted-level-3: chocolate;\n",
   1641        "  /* Definition of color scheme for fitted estimators */\n",
   1642        "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
   1643        "  --sklearn-color-fitted-level-1: #d4ebff;\n",
   1644        "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
   1645        "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
   1646        "\n",
   1647        "  /* Specific color for light theme */\n",
   1648        "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
   1649        "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
   1650        "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
   1651        "  --sklearn-color-icon: #696969;\n",
   1652        "\n",
   1653        "  @media (prefers-color-scheme: dark) {\n",
   1654        "    /* Redefinition of color scheme for dark theme */\n",
   1655        "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
   1656        "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
   1657        "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
   1658        "    --sklearn-color-icon: #878787;\n",
   1659        "  }\n",
   1660        "}\n",
   1661        "\n",
   1662        "#sk-container-id-16 {\n",
   1663        "  color: var(--sklearn-color-text);\n",
   1664        "}\n",
   1665        "\n",
   1666        "#sk-container-id-16 pre {\n",
   1667        "  padding: 0;\n",
   1668        "}\n",
   1669        "\n",
   1670        "#sk-container-id-16 input.sk-hidden--visually {\n",
   1671        "  border: 0;\n",
   1672        "  clip: rect(1px 1px 1px 1px);\n",
   1673        "  clip: rect(1px, 1px, 1px, 1px);\n",
   1674        "  height: 1px;\n",
   1675        "  margin: -1px;\n",
   1676        "  overflow: hidden;\n",
   1677        "  padding: 0;\n",
   1678        "  position: absolute;\n",
   1679        "  width: 1px;\n",
   1680        "}\n",
   1681        "\n",
   1682        "#sk-container-id-16 div.sk-dashed-wrapped {\n",
   1683        "  border: 1px dashed var(--sklearn-color-line);\n",
   1684        "  margin: 0 0.4em 0.5em 0.4em;\n",
   1685        "  box-sizing: border-box;\n",
   1686        "  padding-bottom: 0.4em;\n",
   1687        "  background-color: var(--sklearn-color-background);\n",
   1688        "}\n",
   1689        "\n",
   1690        "#sk-container-id-16 div.sk-container {\n",
   1691        "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
   1692        "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
   1693        "     so we also need the `!important` here to be able to override the\n",
   1694        "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
   1695        "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
   1696        "  display: inline-block !important;\n",
   1697        "  position: relative;\n",
   1698        "}\n",
   1699        "\n",
   1700        "#sk-container-id-16 div.sk-text-repr-fallback {\n",
   1701        "  display: none;\n",
   1702        "}\n",
   1703        "\n",
   1704        "div.sk-parallel-item,\n",
   1705        "div.sk-serial,\n",
   1706        "div.sk-item {\n",
   1707        "  /* draw centered vertical line to link estimators */\n",
   1708        "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
   1709        "  background-size: 2px 100%;\n",
   1710        "  background-repeat: no-repeat;\n",
   1711        "  background-position: center center;\n",
   1712        "}\n",
   1713        "\n",
   1714        "/* Parallel-specific style estimator block */\n",
   1715        "\n",
   1716        "#sk-container-id-16 div.sk-parallel-item::after {\n",
   1717        "  content: \"\";\n",
   1718        "  width: 100%;\n",
   1719        "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
   1720        "  flex-grow: 1;\n",
   1721        "}\n",
   1722        "\n",
   1723        "#sk-container-id-16 div.sk-parallel {\n",
   1724        "  display: flex;\n",
   1725        "  align-items: stretch;\n",
   1726        "  justify-content: center;\n",
   1727        "  background-color: var(--sklearn-color-background);\n",
   1728        "  position: relative;\n",
   1729        "}\n",
   1730        "\n",
   1731        "#sk-container-id-16 div.sk-parallel-item {\n",
   1732        "  display: flex;\n",
   1733        "  flex-direction: column;\n",
   1734        "}\n",
   1735        "\n",
   1736        "#sk-container-id-16 div.sk-parallel-item:first-child::after {\n",
   1737        "  align-self: flex-end;\n",
   1738        "  width: 50%;\n",
   1739        "}\n",
   1740        "\n",
   1741        "#sk-container-id-16 div.sk-parallel-item:last-child::after {\n",
   1742        "  align-self: flex-start;\n",
   1743        "  width: 50%;\n",
   1744        "}\n",
   1745        "\n",
   1746        "#sk-container-id-16 div.sk-parallel-item:only-child::after {\n",
   1747        "  width: 0;\n",
   1748        "}\n",
   1749        "\n",
   1750        "/* Serial-specific style estimator block */\n",
   1751        "\n",
   1752        "#sk-container-id-16 div.sk-serial {\n",
   1753        "  display: flex;\n",
   1754        "  flex-direction: column;\n",
   1755        "  align-items: center;\n",
   1756        "  background-color: var(--sklearn-color-background);\n",
   1757        "  padding-right: 1em;\n",
   1758        "  padding-left: 1em;\n",
   1759        "}\n",
   1760        "\n",
   1761        "\n",
   1762        "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
   1763        "clickable and can be expanded/collapsed.\n",
   1764        "- Pipeline and ColumnTransformer use this feature and define the default style\n",
   1765        "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
   1766        "*/\n",
   1767        "\n",
   1768        "/* Pipeline and ColumnTransformer style (default) */\n",
   1769        "\n",
   1770        "#sk-container-id-16 div.sk-toggleable {\n",
   1771        "  /* Default theme specific background. It is overwritten whether we have a\n",
   1772        "  specific estimator or a Pipeline/ColumnTransformer */\n",
   1773        "  background-color: var(--sklearn-color-background);\n",
   1774        "}\n",
   1775        "\n",
   1776        "/* Toggleable label */\n",
   1777        "#sk-container-id-16 label.sk-toggleable__label {\n",
   1778        "  cursor: pointer;\n",
   1779        "  display: block;\n",
   1780        "  width: 100%;\n",
   1781        "  margin-bottom: 0;\n",
   1782        "  padding: 0.5em;\n",
   1783        "  box-sizing: border-box;\n",
   1784        "  text-align: center;\n",
   1785        "}\n",
   1786        "\n",
   1787        "#sk-container-id-16 label.sk-toggleable__label-arrow:before {\n",
   1788        "  /* Arrow on the left of the label */\n",
   1789        "  content: \"▸\";\n",
   1790        "  float: left;\n",
   1791        "  margin-right: 0.25em;\n",
   1792        "  color: var(--sklearn-color-icon);\n",
   1793        "}\n",
   1794        "\n",
   1795        "#sk-container-id-16 label.sk-toggleable__label-arrow:hover:before {\n",
   1796        "  color: var(--sklearn-color-text);\n",
   1797        "}\n",
   1798        "\n",
   1799        "/* Toggleable content - dropdown */\n",
   1800        "\n",
   1801        "#sk-container-id-16 div.sk-toggleable__content {\n",
   1802        "  max-height: 0;\n",
   1803        "  max-width: 0;\n",
   1804        "  overflow: hidden;\n",
   1805        "  text-align: left;\n",
   1806        "  /* unfitted */\n",
   1807        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
   1808        "}\n",
   1809        "\n",
   1810        "#sk-container-id-16 div.sk-toggleable__content.fitted {\n",
   1811        "  /* fitted */\n",
   1812        "  background-color: var(--sklearn-color-fitted-level-0);\n",
   1813        "}\n",
   1814        "\n",
   1815        "#sk-container-id-16 div.sk-toggleable__content pre {\n",
   1816        "  margin: 0.2em;\n",
   1817        "  border-radius: 0.25em;\n",
   1818        "  color: var(--sklearn-color-text);\n",
   1819        "  /* unfitted */\n",
   1820        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
   1821        "}\n",
   1822        "\n",
   1823        "#sk-container-id-16 div.sk-toggleable__content.fitted pre {\n",
   1824        "  /* unfitted */\n",
   1825        "  background-color: var(--sklearn-color-fitted-level-0);\n",
   1826        "}\n",
   1827        "\n",
   1828        "#sk-container-id-16 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
   1829        "  /* Expand drop-down */\n",
   1830        "  max-height: 200px;\n",
   1831        "  max-width: 100%;\n",
   1832        "  overflow: auto;\n",
   1833        "}\n",
   1834        "\n",
   1835        "#sk-container-id-16 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
   1836        "  content: \"▾\";\n",
   1837        "}\n",
   1838        "\n",
   1839        "/* Pipeline/ColumnTransformer-specific style */\n",
   1840        "\n",
   1841        "#sk-container-id-16 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
   1842        "  color: var(--sklearn-color-text);\n",
   1843        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
   1844        "}\n",
   1845        "\n",
   1846        "#sk-container-id-16 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
   1847        "  background-color: var(--sklearn-color-fitted-level-2);\n",
   1848        "}\n",
   1849        "\n",
   1850        "/* Estimator-specific style */\n",
   1851        "\n",
   1852        "/* Colorize estimator box */\n",
   1853        "#sk-container-id-16 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
   1854        "  /* unfitted */\n",
   1855        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
   1856        "}\n",
   1857        "\n",
   1858        "#sk-container-id-16 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
   1859        "  /* fitted */\n",
   1860        "  background-color: var(--sklearn-color-fitted-level-2);\n",
   1861        "}\n",
   1862        "\n",
   1863        "#sk-container-id-16 div.sk-label label.sk-toggleable__label,\n",
   1864        "#sk-container-id-16 div.sk-label label {\n",
   1865        "  /* The background is the default theme color */\n",
   1866        "  color: var(--sklearn-color-text-on-default-background);\n",
   1867        "}\n",
   1868        "\n",
   1869        "/* On hover, darken the color of the background */\n",
   1870        "#sk-container-id-16 div.sk-label:hover label.sk-toggleable__label {\n",
   1871        "  color: var(--sklearn-color-text);\n",
   1872        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
   1873        "}\n",
   1874        "\n",
   1875        "/* Label box, darken color on hover, fitted */\n",
   1876        "#sk-container-id-16 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
   1877        "  color: var(--sklearn-color-text);\n",
   1878        "  background-color: var(--sklearn-color-fitted-level-2);\n",
   1879        "}\n",
   1880        "\n",
   1881        "/* Estimator label */\n",
   1882        "\n",
   1883        "#sk-container-id-16 div.sk-label label {\n",
   1884        "  font-family: monospace;\n",
   1885        "  font-weight: bold;\n",
   1886        "  display: inline-block;\n",
   1887        "  line-height: 1.2em;\n",
   1888        "}\n",
   1889        "\n",
   1890        "#sk-container-id-16 div.sk-label-container {\n",
   1891        "  text-align: center;\n",
   1892        "}\n",
   1893        "\n",
   1894        "/* Estimator-specific */\n",
   1895        "#sk-container-id-16 div.sk-estimator {\n",
   1896        "  font-family: monospace;\n",
   1897        "  border: 1px dotted var(--sklearn-color-border-box);\n",
   1898        "  border-radius: 0.25em;\n",
   1899        "  box-sizing: border-box;\n",
   1900        "  margin-bottom: 0.5em;\n",
   1901        "  /* unfitted */\n",
   1902        "  background-color: var(--sklearn-color-unfitted-level-0);\n",
   1903        "}\n",
   1904        "\n",
   1905        "#sk-container-id-16 div.sk-estimator.fitted {\n",
   1906        "  /* fitted */\n",
   1907        "  background-color: var(--sklearn-color-fitted-level-0);\n",
   1908        "}\n",
   1909        "\n",
   1910        "/* on hover */\n",
   1911        "#sk-container-id-16 div.sk-estimator:hover {\n",
   1912        "  /* unfitted */\n",
   1913        "  background-color: var(--sklearn-color-unfitted-level-2);\n",
   1914        "}\n",
   1915        "\n",
   1916        "#sk-container-id-16 div.sk-estimator.fitted:hover {\n",
   1917        "  /* fitted */\n",
   1918        "  background-color: var(--sklearn-color-fitted-level-2);\n",
   1919        "}\n",
   1920        "\n",
   1921        "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
   1922        "\n",
   1923        "/* Common style for \"i\" and \"?\" */\n",
   1924        "\n",
   1925        ".sk-estimator-doc-link,\n",
   1926        "a:link.sk-estimator-doc-link,\n",
   1927        "a:visited.sk-estimator-doc-link {\n",
   1928        "  float: right;\n",
   1929        "  font-size: smaller;\n",
   1930        "  line-height: 1em;\n",
   1931        "  font-family: monospace;\n",
   1932        "  background-color: var(--sklearn-color-background);\n",
   1933        "  border-radius: 1em;\n",
   1934        "  height: 1em;\n",
   1935        "  width: 1em;\n",
   1936        "  text-decoration: none !important;\n",
   1937        "  margin-left: 1ex;\n",
   1938        "  /* unfitted */\n",
   1939        "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
   1940        "  color: var(--sklearn-color-unfitted-level-1);\n",
   1941        "}\n",
   1942        "\n",
   1943        ".sk-estimator-doc-link.fitted,\n",
   1944        "a:link.sk-estimator-doc-link.fitted,\n",
   1945        "a:visited.sk-estimator-doc-link.fitted {\n",
   1946        "  /* fitted */\n",
   1947        "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
   1948        "  color: var(--sklearn-color-fitted-level-1);\n",
   1949        "}\n",
   1950        "\n",
   1951        "/* On hover */\n",
   1952        "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
   1953        ".sk-estimator-doc-link:hover,\n",
   1954        "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
   1955        ".sk-estimator-doc-link:hover {\n",
   1956        "  /* unfitted */\n",
   1957        "  background-color: var(--sklearn-color-unfitted-level-3);\n",
   1958        "  color: var(--sklearn-color-background);\n",
   1959        "  text-decoration: none;\n",
   1960        "}\n",
   1961        "\n",
   1962        "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
   1963        ".sk-estimator-doc-link.fitted:hover,\n",
   1964        "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
   1965        ".sk-estimator-doc-link.fitted:hover {\n",
   1966        "  /* fitted */\n",
   1967        "  background-color: var(--sklearn-color-fitted-level-3);\n",
   1968        "  color: var(--sklearn-color-background);\n",
   1969        "  text-decoration: none;\n",
   1970        "}\n",
   1971        "\n",
   1972        "/* Span, style for the box shown on hovering the info icon */\n",
   1973        ".sk-estimator-doc-link span {\n",
   1974        "  display: none;\n",
   1975        "  z-index: 9999;\n",
   1976        "  position: relative;\n",
   1977        "  font-weight: normal;\n",
   1978        "  right: .2ex;\n",
   1979        "  padding: .5ex;\n",
   1980        "  margin: .5ex;\n",
   1981        "  width: min-content;\n",
   1982        "  min-width: 20ex;\n",
   1983        "  max-width: 50ex;\n",
   1984        "  color: var(--sklearn-color-text);\n",
   1985        "  box-shadow: 2pt 2pt 4pt #999;\n",
   1986        "  /* unfitted */\n",
   1987        "  background: var(--sklearn-color-unfitted-level-0);\n",
   1988        "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
   1989        "}\n",
   1990        "\n",
   1991        ".sk-estimator-doc-link.fitted span {\n",
   1992        "  /* fitted */\n",
   1993        "  background: var(--sklearn-color-fitted-level-0);\n",
   1994        "  border: var(--sklearn-color-fitted-level-3);\n",
   1995        "}\n",
   1996        "\n",
   1997        ".sk-estimator-doc-link:hover span {\n",
   1998        "  display: block;\n",
   1999        "}\n",
   2000        "\n",
   2001        "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
   2002        "\n",
   2003        "#sk-container-id-16 a.estimator_doc_link {\n",
   2004        "  float: right;\n",
   2005        "  font-size: 1rem;\n",
   2006        "  line-height: 1em;\n",
   2007        "  font-family: monospace;\n",
   2008        "  background-color: var(--sklearn-color-background);\n",
   2009        "  border-radius: 1rem;\n",
   2010        "  height: 1rem;\n",
   2011        "  width: 1rem;\n",
   2012        "  text-decoration: none;\n",
   2013        "  /* unfitted */\n",
   2014        "  color: var(--sklearn-color-unfitted-level-1);\n",
   2015        "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
   2016        "}\n",
   2017        "\n",
   2018        "#sk-container-id-16 a.estimator_doc_link.fitted {\n",
   2019        "  /* fitted */\n",
   2020        "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
   2021        "  color: var(--sklearn-color-fitted-level-1);\n",
   2022        "}\n",
   2023        "\n",
   2024        "/* On hover */\n",
   2025        "#sk-container-id-16 a.estimator_doc_link:hover {\n",
   2026        "  /* unfitted */\n",
   2027        "  background-color: var(--sklearn-color-unfitted-level-3);\n",
   2028        "  color: var(--sklearn-color-background);\n",
   2029        "  text-decoration: none;\n",
   2030        "}\n",
   2031        "\n",
   2032        "#sk-container-id-16 a.estimator_doc_link.fitted:hover {\n",
   2033        "  /* fitted */\n",
   2034        "  background-color: var(--sklearn-color-fitted-level-3);\n",
   2035        "}\n",
   2036        "</style><div id=\"sk-container-id-16\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>AdaBoostClassifier(estimator=DecisionTreeClassifier(max_depth=1),\n",
   2037        "                   learning_rate=0.5, n_estimators=30, 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 sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-54\" type=\"checkbox\" ><label for=\"sk-estimator-id-54\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;AdaBoostClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.AdaBoostClassifier.html\">?<span>Documentation for AdaBoostClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>AdaBoostClassifier(estimator=DecisionTreeClassifier(max_depth=1),\n",
   2038        "                   learning_rate=0.5, n_estimators=30, random_state=10)</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-55\" type=\"checkbox\" ><label for=\"sk-estimator-id-55\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">estimator: DecisionTreeClassifier</label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier(max_depth=1)</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-56\" type=\"checkbox\" ><label for=\"sk-estimator-id-56\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;DecisionTreeClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.tree.DecisionTreeClassifier.html\">?<span>Documentation for DecisionTreeClassifier</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier(max_depth=1)</pre></div> </div></div></div></div></div></div></div></div></div>"
   2039       ],
   2040       "text/plain": [
   2041        "AdaBoostClassifier(estimator=DecisionTreeClassifier(max_depth=1),\n",
   2042        "                   learning_rate=0.5, n_estimators=30, random_state=10)"
   2043       ]
   2044      },
   2045      "execution_count": 77,
   2046      "metadata": {},
   2047      "output_type": "execute_result"
   2048     }
   2049    ],
   2050    "source": [
   2051     "# Use adaboosting with decision stumps (trees with a max of 1 depth)\n",
   2052     "\n",
   2053     "from sklearn.ensemble import AdaBoostClassifier\n",
   2054     "\n",
   2055     "ada_clf = AdaBoostClassifier(\n",
   2056     "    DecisionTreeClassifier(max_depth=1),\n",
   2057     "    n_estimators=30,\n",
   2058     "    learning_rate=.5,\n",
   2059     "    random_state=10\n",
   2060     ")\n",
   2061     "ada_clf.fit(X_train, y_train)"
   2062    ]
   2063   },
   2064   {
   2065    "cell_type": "code",
   2066    "execution_count": 78,
   2067    "metadata": {},
   2068    "outputs": [
   2069     {
   2070      "data": {
   2071       "text/plain": [
   2072        "0.904"
   2073       ]
   2074      },
   2075      "execution_count": 78,
   2076      "metadata": {},
   2077      "output_type": "execute_result"
   2078     }
   2079    ],
   2080    "source": [
   2081     "# That's insane!! Using only 30 split nodes this was able\n",
   2082     "# to get 90.4% accuracy!\n",
   2083     "\n",
   2084     "ada_clf.score(X_test, y_test)"
   2085    ]
   2086   },
   2087   {
   2088    "cell_type": "code",
   2089    "execution_count": 68,
   2090    "metadata": {},
   2091    "outputs": [
   2092     {
   2093      "data": {
   2094       "text/plain": [
   2095        "0.872"
   2096       ]
   2097      },
   2098      "execution_count": 68,
   2099      "metadata": {},
   2100      "output_type": "execute_result"
   2101     }
   2102    ],
   2103    "source": [
   2104     "# Let's compare that with a decision tree of the same size\n",
   2105     "# That's still pretty good but worse than the other one.\n",
   2106     "\n",
   2107     "dec_clf = DecisionTreeClassifier(random_state=10,max_leaf_nodes=30)\n",
   2108     "dec_clf.fit(X_train,y_train)\n",
   2109     "dec_clf.score(X_test,y_test)"
   2110    ]
   2111   }
   2112  ],
   2113  "metadata": {
   2114   "kernelspec": {
   2115    "display_name": "notebook",
   2116    "language": "python",
   2117    "name": "notebook"
   2118   },
   2119   "language_info": {
   2120    "codemirror_mode": {
   2121     "name": "ipython",
   2122     "version": 3
   2123    },
   2124    "file_extension": ".py",
   2125    "mimetype": "text/x-python",
   2126    "name": "python",
   2127    "nbconvert_exporter": "python",
   2128    "pygments_lexer": "ipython3",
   2129    "version": "3.11.2"
   2130   }
   2131  },
   2132  "nbformat": 4,
   2133  "nbformat_minor": 2
   2134 }