Shivashankar/Drug-Classification
0
1{2 "cells": [3 {4 "cell_type": "code",5 "execution_count": 1,6 "metadata": {},7 "outputs": [8 {9 "data": {10 "text/html": [11 "<div>\n",12 "<style scoped>\n",13 " .dataframe tbody tr th:only-of-type {\n",14 " vertical-align: middle;\n",15 " }\n",16 "\n",17 " .dataframe tbody tr th {\n",18 " vertical-align: top;\n",19 " }\n",20 "\n",21 " .dataframe thead th {\n",22 " text-align: right;\n",23 " }\n",24 "</style>\n",25 "<table border=\"1\" class=\"dataframe\">\n",26 " <thead>\n",27 " <tr style=\"text-align: right;\">\n",28 " <th></th>\n",29 " <th>Age</th>\n",30 " <th>Sex</th>\n",31 " <th>BP</th>\n",32 " <th>Cholesterol</th>\n",33 " <th>Na_to_K</th>\n",34 " <th>Drug</th>\n",35 " </tr>\n",36 " </thead>\n",37 " <tbody>\n",38 " <tr>\n",39 " <th>176</th>\n",40 " <td>48</td>\n",41 " <td>M</td>\n",42 " <td>HIGH</td>\n",43 " <td>NORMAL</td>\n",44 " <td>10.446</td>\n",45 " <td>drugA</td>\n",46 " </tr>\n",47 " <tr>\n",48 " <th>119</th>\n",49 " <td>61</td>\n",50 " <td>F</td>\n",51 " <td>HIGH</td>\n",52 " <td>HIGH</td>\n",53 " <td>25.475</td>\n",54 " <td>DrugY</td>\n",55 " </tr>\n",56 " <tr>\n",57 " <th>65</th>\n",58 " <td>68</td>\n",59 " <td>F</td>\n",60 " <td>NORMAL</td>\n",61 " <td>NORMAL</td>\n",62 " <td>27.050</td>\n",63 " <td>DrugY</td>\n",64 " </tr>\n",65 " </tbody>\n",66 "</table>\n",67 "</div>"68 ],69 "text/plain": [70 " Age Sex BP Cholesterol Na_to_K Drug\n",71 "176 48 M HIGH NORMAL 10.446 drugA\n",72 "119 61 F HIGH HIGH 25.475 DrugY\n",73 "65 68 F NORMAL NORMAL 27.050 DrugY"74 ]75 },76 "execution_count": 1,77 "metadata": {},78 "output_type": "execute_result"79 }80 ],81 "source": [82 "import pandas as pd\n",83 "\n",84 "drug_df = pd.read_csv(\"Data/drug.csv\")\n",85 "drug_df = drug_df.sample(frac=1)\n",86 "drug_df.head(3)"87 ]88 },89 {90 "cell_type": "code",91 "execution_count": 2,92 "metadata": {},93 "outputs": [],94 "source": [95 "from sklearn.model_selection import train_test_split\n",96 "\n",97 "X = drug_df.drop(\"Drug\", axis=1).values\n",98 "y = drug_df.Drug.values\n",99 "\n",100 "X_train, X_test, y_train, y_test = train_test_split(\n",101 " X, y, test_size=0.3, random_state=125\n",102 ")"103 ]104 },105 {106 "cell_type": "code",107 "execution_count": 3,108 "metadata": {},109 "outputs": [110 {111 "data": {112 "text/html": [113 "<style>#sk-container-id-1 {\n",114 " /* Definition of color scheme common for light and dark mode */\n",115 " --sklearn-color-text: black;\n",116 " --sklearn-color-line: gray;\n",117 " /* Definition of color scheme for unfitted estimators */\n",118 " --sklearn-color-unfitted-level-0: #fff5e6;\n",119 " --sklearn-color-unfitted-level-1: #f6e4d2;\n",120 " --sklearn-color-unfitted-level-2: #ffe0b3;\n",121 " --sklearn-color-unfitted-level-3: chocolate;\n",122 " /* Definition of color scheme for fitted estimators */\n",123 " --sklearn-color-fitted-level-0: #f0f8ff;\n",124 " --sklearn-color-fitted-level-1: #d4ebff;\n",125 " --sklearn-color-fitted-level-2: #b3dbfd;\n",126 " --sklearn-color-fitted-level-3: cornflowerblue;\n",127 "\n",128 " /* Specific color for light theme */\n",129 " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",130 " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",131 " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",132 " --sklearn-color-icon: #696969;\n",133 "\n",134 " @media (prefers-color-scheme: dark) {\n",135 " /* Redefinition of color scheme for dark theme */\n",136 " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",137 " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",138 " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",139 " --sklearn-color-icon: #878787;\n",140 " }\n",141 "}\n",142 "\n",143 "#sk-container-id-1 {\n",144 " color: var(--sklearn-color-text);\n",145 "}\n",146 "\n",147 "#sk-container-id-1 pre {\n",148 " padding: 0;\n",149 "}\n",150 "\n",151 "#sk-container-id-1 input.sk-hidden--visually {\n",152 " border: 0;\n",153 " clip: rect(1px 1px 1px 1px);\n",154 " clip: rect(1px, 1px, 1px, 1px);\n",155 " height: 1px;\n",156 " margin: -1px;\n",157 " overflow: hidden;\n",158 " padding: 0;\n",159 " position: absolute;\n",160 " width: 1px;\n",161 "}\n",162 "\n",163 "#sk-container-id-1 div.sk-dashed-wrapped {\n",164 " border: 1px dashed var(--sklearn-color-line);\n",165 " margin: 0 0.4em 0.5em 0.4em;\n",166 " box-sizing: border-box;\n",167 " padding-bottom: 0.4em;\n",168 " background-color: var(--sklearn-color-background);\n",169 "}\n",170 "\n",171 "#sk-container-id-1 div.sk-container {\n",172 " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",173 " but bootstrap.min.css set `[hidden] { display: none !important; }`\n",174 " so we also need the `!important` here to be able to override the\n",175 " default hidden behavior on the sphinx rendered scikit-learn.org.\n",176 " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",177 " display: inline-block !important;\n",178 " position: relative;\n",179 "}\n",180 "\n",181 "#sk-container-id-1 div.sk-text-repr-fallback {\n",182 " display: none;\n",183 "}\n",184 "\n",185 "div.sk-parallel-item,\n",186 "div.sk-serial,\n",187 "div.sk-item {\n",188 " /* draw centered vertical line to link estimators */\n",189 " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",190 " background-size: 2px 100%;\n",191 " background-repeat: no-repeat;\n",192 " background-position: center center;\n",193 "}\n",194 "\n",195 "/* Parallel-specific style estimator block */\n",196 "\n",197 "#sk-container-id-1 div.sk-parallel-item::after {\n",198 " content: \"\";\n",199 " width: 100%;\n",200 " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",201 " flex-grow: 1;\n",202 "}\n",203 "\n",204 "#sk-container-id-1 div.sk-parallel {\n",205 " display: flex;\n",206 " align-items: stretch;\n",207 " justify-content: center;\n",208 " background-color: var(--sklearn-color-background);\n",209 " position: relative;\n",210 "}\n",211 "\n",212 "#sk-container-id-1 div.sk-parallel-item {\n",213 " display: flex;\n",214 " flex-direction: column;\n",215 "}\n",216 "\n",217 "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",218 " align-self: flex-end;\n",219 " width: 50%;\n",220 "}\n",221 "\n",222 "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",223 " align-self: flex-start;\n",224 " width: 50%;\n",225 "}\n",226 "\n",227 "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",228 " width: 0;\n",229 "}\n",230 "\n",231 "/* Serial-specific style estimator block */\n",232 "\n",233 "#sk-container-id-1 div.sk-serial {\n",234 " display: flex;\n",235 " flex-direction: column;\n",236 " align-items: center;\n",237 " background-color: var(--sklearn-color-background);\n",238 " padding-right: 1em;\n",239 " padding-left: 1em;\n",240 "}\n",241 "\n",242 "\n",243 "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",244 "clickable and can be expanded/collapsed.\n",245 "- Pipeline and ColumnTransformer use this feature and define the default style\n",246 "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",247 "*/\n",248 "\n",249 "/* Pipeline and ColumnTransformer style (default) */\n",250 "\n",251 "#sk-container-id-1 div.sk-toggleable {\n",252 " /* Default theme specific background. It is overwritten whether we have a\n",253 " specific estimator or a Pipeline/ColumnTransformer */\n",254 " background-color: var(--sklearn-color-background);\n",255 "}\n",256 "\n",257 "/* Toggleable label */\n",258 "#sk-container-id-1 label.sk-toggleable__label {\n",259 " cursor: pointer;\n",260 " display: block;\n",261 " width: 100%;\n",262 " margin-bottom: 0;\n",263 " padding: 0.5em;\n",264 " box-sizing: border-box;\n",265 " text-align: center;\n",266 "}\n",267 "\n",268 "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",269 " /* Arrow on the left of the label */\n",270 " content: \"▸\";\n",271 " float: left;\n",272 " margin-right: 0.25em;\n",273 " color: var(--sklearn-color-icon);\n",274 "}\n",275 "\n",276 "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",277 " color: var(--sklearn-color-text);\n",278 "}\n",279 "\n",280 "/* Toggleable content - dropdown */\n",281 "\n",282 "#sk-container-id-1 div.sk-toggleable__content {\n",283 " max-height: 0;\n",284 " max-width: 0;\n",285 " overflow: hidden;\n",286 " text-align: left;\n",287 " /* unfitted */\n",288 " background-color: var(--sklearn-color-unfitted-level-0);\n",289 "}\n",290 "\n",291 "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",292 " /* fitted */\n",293 " background-color: var(--sklearn-color-fitted-level-0);\n",294 "}\n",295 "\n",296 "#sk-container-id-1 div.sk-toggleable__content pre {\n",297 " margin: 0.2em;\n",298 " border-radius: 0.25em;\n",299 " color: var(--sklearn-color-text);\n",300 " /* unfitted */\n",301 " background-color: var(--sklearn-color-unfitted-level-0);\n",302 "}\n",303 "\n",304 "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",305 " /* unfitted */\n",306 " background-color: var(--sklearn-color-fitted-level-0);\n",307 "}\n",308 "\n",309 "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",310 " /* Expand drop-down */\n",311 " max-height: 200px;\n",312 " max-width: 100%;\n",313 " overflow: auto;\n",314 "}\n",315 "\n",316 "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",317 " content: \"▾\";\n",318 "}\n",319 "\n",320 "/* Pipeline/ColumnTransformer-specific style */\n",321 "\n",322 "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",323 " color: var(--sklearn-color-text);\n",324 " background-color: var(--sklearn-color-unfitted-level-2);\n",325 "}\n",326 "\n",327 "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",328 " background-color: var(--sklearn-color-fitted-level-2);\n",329 "}\n",330 "\n",331 "/* Estimator-specific style */\n",332 "\n",333 "/* Colorize estimator box */\n",334 "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",335 " /* unfitted */\n",336 " background-color: var(--sklearn-color-unfitted-level-2);\n",337 "}\n",338 "\n",339 "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",340 " /* fitted */\n",341 " background-color: var(--sklearn-color-fitted-level-2);\n",342 "}\n",343 "\n",344 "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",345 "#sk-container-id-1 div.sk-label label {\n",346 " /* The background is the default theme color */\n",347 " color: var(--sklearn-color-text-on-default-background);\n",348 "}\n",349 "\n",350 "/* On hover, darken the color of the background */\n",351 "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",352 " color: var(--sklearn-color-text);\n",353 " background-color: var(--sklearn-color-unfitted-level-2);\n",354 "}\n",355 "\n",356 "/* Label box, darken color on hover, fitted */\n",357 "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",358 " color: var(--sklearn-color-text);\n",359 " background-color: var(--sklearn-color-fitted-level-2);\n",360 "}\n",361 "\n",362 "/* Estimator label */\n",363 "\n",364 "#sk-container-id-1 div.sk-label label {\n",365 " font-family: monospace;\n",366 " font-weight: bold;\n",367 " display: inline-block;\n",368 " line-height: 1.2em;\n",369 "}\n",370 "\n",371 "#sk-container-id-1 div.sk-label-container {\n",372 " text-align: center;\n",373 "}\n",374 "\n",375 "/* Estimator-specific */\n",376 "#sk-container-id-1 div.sk-estimator {\n",377 " font-family: monospace;\n",378 " border: 1px dotted var(--sklearn-color-border-box);\n",379 " border-radius: 0.25em;\n",380 " box-sizing: border-box;\n",381 " margin-bottom: 0.5em;\n",382 " /* unfitted */\n",383 " background-color: var(--sklearn-color-unfitted-level-0);\n",384 "}\n",385 "\n",386 "#sk-container-id-1 div.sk-estimator.fitted {\n",387 " /* fitted */\n",388 " background-color: var(--sklearn-color-fitted-level-0);\n",389 "}\n",390 "\n",391 "/* on hover */\n",392 "#sk-container-id-1 div.sk-estimator:hover {\n",393 " /* unfitted */\n",394 " background-color: var(--sklearn-color-unfitted-level-2);\n",395 "}\n",396 "\n",397 "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",398 " /* fitted */\n",399 " background-color: var(--sklearn-color-fitted-level-2);\n",400 "}\n",401 "\n",402 "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",403 "\n",404 "/* Common style for \"i\" and \"?\" */\n",405 "\n",406 ".sk-estimator-doc-link,\n",407 "a:link.sk-estimator-doc-link,\n",408 "a:visited.sk-estimator-doc-link {\n",409 " float: right;\n",410 " font-size: smaller;\n",411 " line-height: 1em;\n",412 " font-family: monospace;\n",413 " background-color: var(--sklearn-color-background);\n",414 " border-radius: 1em;\n",415 " height: 1em;\n",416 " width: 1em;\n",417 " text-decoration: none !important;\n",418 " margin-left: 1ex;\n",419 " /* unfitted */\n",420 " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",421 " color: var(--sklearn-color-unfitted-level-1);\n",422 "}\n",423 "\n",424 ".sk-estimator-doc-link.fitted,\n",425 "a:link.sk-estimator-doc-link.fitted,\n",426 "a:visited.sk-estimator-doc-link.fitted {\n",427 " /* fitted */\n",428 " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",429 " color: var(--sklearn-color-fitted-level-1);\n",430 "}\n",431 "\n",432 "/* On hover */\n",433 "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",434 ".sk-estimator-doc-link:hover,\n",435 "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",436 ".sk-estimator-doc-link:hover {\n",437 " /* unfitted */\n",438 " background-color: var(--sklearn-color-unfitted-level-3);\n",439 " color: var(--sklearn-color-background);\n",440 " text-decoration: none;\n",441 "}\n",442 "\n",443 "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",444 ".sk-estimator-doc-link.fitted:hover,\n",445 "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",446 ".sk-estimator-doc-link.fitted:hover {\n",447 " /* fitted */\n",448 " background-color: var(--sklearn-color-fitted-level-3);\n",449 " color: var(--sklearn-color-background);\n",450 " text-decoration: none;\n",451 "}\n",452 "\n",453 "/* Span, style for the box shown on hovering the info icon */\n",454 ".sk-estimator-doc-link span {\n",455 " display: none;\n",456 " z-index: 9999;\n",457 " position: relative;\n",458 " font-weight: normal;\n",459 " right: .2ex;\n",460 " padding: .5ex;\n",461 " margin: .5ex;\n",462 " width: min-content;\n",463 " min-width: 20ex;\n",464 " max-width: 50ex;\n",465 " color: var(--sklearn-color-text);\n",466 " box-shadow: 2pt 2pt 4pt #999;\n",467 " /* unfitted */\n",468 " background: var(--sklearn-color-unfitted-level-0);\n",469 " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",470 "}\n",471 "\n",472 ".sk-estimator-doc-link.fitted span {\n",473 " /* fitted */\n",474 " background: var(--sklearn-color-fitted-level-0);\n",475 " border: var(--sklearn-color-fitted-level-3);\n",476 "}\n",477 "\n",478 ".sk-estimator-doc-link:hover span {\n",479 " display: block;\n",480 "}\n",481 "\n",482 "/* \"?\"-specific style due to the `<a>` HTML tag */\n",483 "\n",484 "#sk-container-id-1 a.estimator_doc_link {\n",485 " float: right;\n",486 " font-size: 1rem;\n",487 " line-height: 1em;\n",488 " font-family: monospace;\n",489 " background-color: var(--sklearn-color-background);\n",490 " border-radius: 1rem;\n",491 " height: 1rem;\n",492 " width: 1rem;\n",493 " text-decoration: none;\n",494 " /* unfitted */\n",495 " color: var(--sklearn-color-unfitted-level-1);\n",496 " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",497 "}\n",498 "\n",499 "#sk-container-id-1 a.estimator_doc_link.fitted {\n",500 " /* fitted */\n",501 " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",502 " color: var(--sklearn-color-fitted-level-1);\n",503 "}\n",504 "\n",505 "/* On hover */\n",506 "#sk-container-id-1 a.estimator_doc_link:hover {\n",507 " /* unfitted */\n",508 " background-color: var(--sklearn-color-unfitted-level-3);\n",509 " color: var(--sklearn-color-background);\n",510 " text-decoration: none;\n",511 "}\n",512 "\n",513 "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",514 " /* fitted */\n",515 " background-color: var(--sklearn-color-fitted-level-3);\n",516 "}\n",517 "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[('preprocessing',\n",518 " ColumnTransformer(transformers=[('encoder', OrdinalEncoder(),\n",519 " [1, 2, 3]),\n",520 " ('num_imputer',\n",521 " SimpleImputer(strategy='median'),\n",522 " [0, 4]),\n",523 " ('num_scaler',\n",524 " StandardScaler(), [0, 4])])),\n",525 " ('model',\n",526 " RandomForestClassifier(n_estimators=10, random_state=125))])</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-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> Pipeline<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[('preprocessing',\n",527 " ColumnTransformer(transformers=[('encoder', OrdinalEncoder(),\n",528 " [1, 2, 3]),\n",529 " ('num_imputer',\n",530 " SimpleImputer(strategy='median'),\n",531 " [0, 4]),\n",532 " ('num_scaler',\n",533 " StandardScaler(), [0, 4])])),\n",534 " ('model',\n",535 " RandomForestClassifier(n_estimators=10, random_state=125))])</pre></div> </div></div><div class=\"sk-serial\"><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-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> preprocessing: ColumnTransformer<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.compose.ColumnTransformer.html\">?<span>Documentation for preprocessing: ColumnTransformer</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>ColumnTransformer(transformers=[('encoder', OrdinalEncoder(), [1, 2, 3]),\n",536 " ('num_imputer',\n",537 " SimpleImputer(strategy='median'), [0, 4]),\n",538 " ('num_scaler', StandardScaler(), [0, 4])])</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-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">encoder</label><div class=\"sk-toggleable__content fitted\"><pre>[1, 2, 3]</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-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> OrdinalEncoder<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.OrdinalEncoder.html\">?<span>Documentation for OrdinalEncoder</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>OrdinalEncoder()</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\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-5\" type=\"checkbox\" ><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">num_imputer</label><div class=\"sk-toggleable__content fitted\"><pre>[0, 4]</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-6\" type=\"checkbox\" ><label for=\"sk-estimator-id-6\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> SimpleImputer<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>SimpleImputer(strategy='median')</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\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-7\" type=\"checkbox\" ><label for=\"sk-estimator-id-7\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">num_scaler</label><div class=\"sk-toggleable__content fitted\"><pre>[0, 4]</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-8\" type=\"checkbox\" ><label for=\"sk-estimator-id-8\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> StandardScaler<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-9\" type=\"checkbox\" ><label for=\"sk-estimator-id-9\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> 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(n_estimators=10, random_state=125)</pre></div> </div></div></div></div></div></div>"539 ],540 "text/plain": [541 "Pipeline(steps=[('preprocessing',\n",542 " ColumnTransformer(transformers=[('encoder', OrdinalEncoder(),\n",543 " [1, 2, 3]),\n",544 " ('num_imputer',\n",545 " SimpleImputer(strategy='median'),\n",546 " [0, 4]),\n",547 " ('num_scaler',\n",548 " StandardScaler(), [0, 4])])),\n",549 " ('model',\n",550 " RandomForestClassifier(n_estimators=10, random_state=125))])"551 ]552 },553 "execution_count": 3,554 "metadata": {},555 "output_type": "execute_result"556 }557 ],558 "source": [559 "from sklearn.compose import ColumnTransformer\n",560 "from sklearn.ensemble import RandomForestClassifier\n",561 "from sklearn.impute import SimpleImputer\n",562 "from sklearn.pipeline import Pipeline\n",563 "from sklearn.preprocessing import OrdinalEncoder, StandardScaler\n",564 "\n",565 "cat_col = [1,2,3]\n",566 "num_col = [0,4]\n",567 "\n",568 "transform = ColumnTransformer(\n",569 " [\n",570 " (\"encoder\", OrdinalEncoder(), cat_col),\n",571 " (\"num_imputer\", SimpleImputer(strategy=\"median\"), num_col),\n",572 " (\"num_scaler\", StandardScaler(), num_col),\n",573 " ]\n",574 ")\n",575 "pipe = Pipeline(\n",576 " steps=[\n",577 " (\"preprocessing\", transform),\n",578 " (\"model\", RandomForestClassifier(n_estimators=10, random_state=125)),\n",579 " ]\n",580 ")\n",581 "pipe.fit(X_train, y_train)"582 ]583 },584 {585 "cell_type": "code",586 "execution_count": 4,587 "metadata": {},588 "outputs": [589 {590 "name": "stdout",591 "output_type": "stream",592 "text": [593 "Accuracy: 90.0% F1: 0.85\n"594 ]595 }596 ],597 "source": [598 "from sklearn.metrics import accuracy_score, f1_score\n",599 "\n",600 "predictions = pipe.predict(X_test)\n",601 "accuracy = accuracy_score(y_test, predictions)\n",602 "f1 = f1_score(y_test, predictions, average=\"macro\")\n",603 "\n",604 "print(\"Accuracy: \", str(round(accuracy, 2) * 100) + \"%\", \"F1: \", round(f1, 2))"605 ]606 },607 {608 "cell_type": "code",609 "execution_count": 5,610 "metadata": {},611 "outputs": [],612 "source": [613 "# Write metrics to file\n",614 "with open(\"Results/metrics.txt\", \"w\") as outfile:\n",615 " outfile.write(f\"\\nAccuracy = {round(accuracy,2)}, F1 Score = {round(f1,2)}.\")"616 ]617 },618 {619 "cell_type": "code",620 "execution_count": 6,621 "metadata": {},622 "outputs": [623 {624 "data": {625 "image/png": "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4YKCUx5EREQkGUcoiIiILEUrIPlGElb6+HIWFERERBYihBZC4tNCpR5vLiwoiIiILEUI6SMMXENBREREtoojFERERJYiTLCGwkpHKFhQEBERWYpWCygkroGw0jUUnPIgIiIiyThCQUREZCmc8iAiIiKphFYLIXHKw1ovG+WUBxEREUnGEQoiIiJL4ZQHERERSaYVgMI2CwpOeRAREZFkHKEgIiKyFCEASL0PhXWOULCgICIishChFRASpzwECwoiIqKnnNBC+ggFLxslIiIiGXzyySeoV68eHB0d0bZtW/z0008m/wwWFERERBYitMIkmzG2bNmCSZMmYebMmTh58iRefPFFhIWF4dq1ayY9NxYUREREliK0ptmMsGzZMowYMQIjR45EkyZNsHz5cgQEBGD16tUmPTWuoTCB8gUypSiRfL8SIjKCtljuCKoE7b1CuUOwauX5scRiR1P8nihFCQAgJydHr12lUkGlUum1FRcXIyEhAR988IFee/fu3XHkyBFpgTyABYUJ5ObmAgB+xi6ZIyF6ytySO4AqYrzcAVQNubm5cHd3N0vf1apVg5+fH36+aZrfE66urggICNBrmzt3LiIiIvTabt++DY1GA19fX712X19f3Lx50ySxlGNBYQI1a9ZEamoq1Go1FAqF3OEAKKtcAwICkJqaCjc3N7nDsVrMk2GYp8djjgxjjXkSQiA3Nxc1a9Y022c4OjriypUrKC42zaiaEKLC75sHRyfu9+C+DzteKhYUJmBnZ4fatWvLHcZDubm5Wc0/WmvGPBmGeXo85sgw1pYnc41M3M/R0RGOjo5m/5z71ahRA/b29hVGI9LT0yuMWkjFRZlEREQ2qlq1amjbti3279+v175//348//zzJv0sjlAQERHZsMmTJ+Of//wngoOD0bFjR3z22We4du0aRo8ebdLPYUFho1QqFebOnVvpnBoxT4Zinh6POTIM82R5AwcOxJ07d/Cvf/0LaWlpaNasGXbt2oU6deqY9HMUwlpvCk5ERERVBtdQEBERkWQsKIiIiEgyFhREREQkGQsKshkhISGYNGmS3GFYNebIMMyTYZgnuh8LCisyfPhwKBQKKBQKKJVK+Pr6IjQ0FOvXr4dWa9zDYJ7EiBEj0Lx58wp3ctu1axeUSiVOnDhh9hiqknv37sHT0xNeXl64d++e3OFYlZiYGN13WaFQ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1nB0dERwcPBDH8X9OMuWLUPz5s3h4uKCgIAAjB07Fnl5eRX227FjBxo1agRHR0eEhoYiNTVV7/3vvvsObdu2haOjI+rXr4958+ahtLTU6HiIyHgsKIgszMnJCSUlJbrXFy9exNatW/H111/rphxeeeUV3Lx5E7t27UJCQgLatGmDl156CXfv3gUAbN26FXPnzsX8+fNx4sQJ+Pv7P/bZB9OnT8fChQsxe/ZsnD17Fps2bYKvry+AsqIAAA4cOIC0tDRs27YNALB27VrMnDkT8+fPR1JSEhYsWIDZs2cjNjYWAJCfn49evXohKCgICQkJiIiIwNSpU43OiZ2dHVasWIHff/8dsbGxOHjwIN577z29fQoKCjB//nzExsbil19+QU5ODgYNGqR7f+/evRgyZAgmTJiAs2fP4tNPP0VMTIyuaCIiM5P51t9ENm3YsGGib9++utfHjh0T1atXFwMGDBBCCDF37lyhVCpFenq6bp8ffvhBuLm5icLCQr2+GjRoID799FMhhBAdO3YUo0eP1nu/Q4cOomXLlg/97JycHKFSqcTatWsfGueVK1cEAHHy5Em99oCAALFp0ya9tg8//FB07NhRCCHEp59+Kry8vER+fr7u/dWrVz+0r/s96lHX5bZu3SqqV6+ue13+OPSjR4/q2pKSkgQAcezYMSGEEC+++KJYsGCBXj+ff/658Pf3170GILZv3/7IzyWiJ8c1FERmtnPnTri6uqK0tBQlJSXo27cvVq5cqXu/Tp068Pb21r1OSEhAXl4eqlevrtfPvXv3cOnSJQBAUlISRo8erfd+x44dcejQoYfGkJSUhKKiIrz00ksGx52RkYHU1FSMGDEC4eHhuvbS0lLd+oykpCS0bNkSzs7OenEY69ChQ1iwYAHOnj2LnJwclJaWorCwEPn5+XBxcQEAODg4IDg4WHdM48aN4eHhgaSkJLRv3x4JCQk4fvy43oiERqNBYWEhCgoK9GIkItNjQUFkZl27dsXq1auhVCpRs2bNCosuy39hltNqtfD390dcXFyFvp700kknJyejj9FqtQDKpj06dOig9569vT0AQJjg2YJXr17FP/7xD4wePRoffvghvLy88PPPP2PEiBF6U0NA2WWfDypv02q1mDdvHl577bUK+zg6OkqOk4gqx4KCyMxcXFwQGBho8P5t2rTBzZs34eDggLp16z50nyZNmuDo0aMYOnSoru3o0aOP7LNhw4ZwcnLCDz/8gJEjR1Z4v1q1agDK/kdfztfXF7Vq1cLly5fxxhtvPLTfpk2b4vPPP8e9e/d0RUtlcTzMiRMnUFpaiqVLl8LOrmxZ19atWyvsV1paihMnTqB9+/YAgOTkZGRlZaFx48YAyvKWnJxsVK6JyHRYUBBZmZdffhkdO3ZEv379sHDhQgQFBeHPP//Erl270K9fPwQHB2PixIkYNmwYgoOD8cILL2Djxo34448/UL9+/Yf26ejoiPfffx/vvfceqlWrhk6dOiEjIwN//PEHRowYAR8fHzg5OWHPnj2oXbs2HB0d4e7ujoiICEyYMAFubm4ICwtDUVERTpw4gczMTEyePBmDBw/GzJkzMWLECMyaNQspKSlYsmSJUefboEEDlJaWYuXKlejduzd++eUXrFmzpsJ+SqUS48ePx4oVK6BUKvHOO+/gueee0xUYc+bMQa9evRAQEID+/fvDzs4Op0+fxpkzZxAZGWn8XwQRGYVXeRBZGYVCgV27dqFz585466230KhRIwwaNAgpKSm6qzIGDhyIOXPm4P3330fbtm1x9epVjBkzptJ+Z8+ejSlTpmDOnDlo0qQJBg4ciPT0dABl6xNWrFiBTz/9FDVr1kTfvn0BACNHjsR///tfxMTEoHnz5ujSpQtiYmJ0l5m6urriu+++w9mzZ9G6dWvMnDkTCxcuNOp8W7VqhWXLlmHhwoVo1qwZNm7ciKioqAr7OTs74/3338fgwYPRsWNHODk54YsvvtC936NHD+zcuRP79+9Hu3bt8Nxzz2HZsmWoU6eOUfEQ0ZNRCFNMghIREdFTjSMUREREJBkLCiIiIpKMBQURERFJxoKCiIiIJGNBQURERJKxoCAiIiLJWFAQERGRZCwoiIiISDIWFERERCQZCwoiIiKSjAUFERERSfb/ATtyGPrNamVlAAAAAElFTkSuQmCC",626 "text/plain": [627 "<Figure size 640x480 with 2 Axes>"628 ]629 },630 "metadata": {},631 "output_type": "display_data"632 }633 ],634 "source": [635 "import matplotlib.pyplot as plt\n",636 "from sklearn.metrics import ConfusionMatrixDisplay, confusion_matrix\n",637 "\n",638 "predictions = pipe.predict(X_test)\n",639 "cm = confusion_matrix(y_test, predictions, labels=pipe.classes_)\n",640 "disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=pipe.classes_)\n",641 "disp.plot()\n",642 "plt.savefig(\"Results/model_results.png\", dpi=120)"643 ]644 },645 {646 "cell_type": "code",647 "execution_count": 7,648 "metadata": {},649 "outputs": [],650 "source": [651 "import skops.io as sio\n",652 "\n",653 "sio.dump(pipe, \"Model/drug_pipeline.skops\")"654 ]655 },656 {657 "cell_type": "code",658 "execution_count": 8,659 "metadata": {},660 "outputs": [661 {662 "data": {663 "text/html": [664 "<style>#sk-container-id-2 {\n",665 " /* Definition of color scheme common for light and dark mode */\n",666 " --sklearn-color-text: black;\n",667 " --sklearn-color-line: gray;\n",668 " /* Definition of color scheme for unfitted estimators */\n",669 " --sklearn-color-unfitted-level-0: #fff5e6;\n",670 " --sklearn-color-unfitted-level-1: #f6e4d2;\n",671 " --sklearn-color-unfitted-level-2: #ffe0b3;\n",672 " --sklearn-color-unfitted-level-3: chocolate;\n",673 " /* Definition of color scheme for fitted estimators */\n",674 " --sklearn-color-fitted-level-0: #f0f8ff;\n",675 " --sklearn-color-fitted-level-1: #d4ebff;\n",676 " --sklearn-color-fitted-level-2: #b3dbfd;\n",677 " --sklearn-color-fitted-level-3: cornflowerblue;\n",678 "\n",679 " /* Specific color for light theme */\n",680 " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",681 " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",682 " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",683 " --sklearn-color-icon: #696969;\n",684 "\n",685 " @media (prefers-color-scheme: dark) {\n",686 " /* Redefinition of color scheme for dark theme */\n",687 " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",688 " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",689 " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",690 " --sklearn-color-icon: #878787;\n",691 " }\n",692 "}\n",693 "\n",694 "#sk-container-id-2 {\n",695 " color: var(--sklearn-color-text);\n",696 "}\n",697 "\n",698 "#sk-container-id-2 pre {\n",699 " padding: 0;\n",700 "}\n",701 "\n",702 "#sk-container-id-2 input.sk-hidden--visually {\n",703 " border: 0;\n",704 " clip: rect(1px 1px 1px 1px);\n",705 " clip: rect(1px, 1px, 1px, 1px);\n",706 " height: 1px;\n",707 " margin: -1px;\n",708 " overflow: hidden;\n",709 " padding: 0;\n",710 " position: absolute;\n",711 " width: 1px;\n",712 "}\n",713 "\n",714 "#sk-container-id-2 div.sk-dashed-wrapped {\n",715 " border: 1px dashed var(--sklearn-color-line);\n",716 " margin: 0 0.4em 0.5em 0.4em;\n",717 " box-sizing: border-box;\n",718 " padding-bottom: 0.4em;\n",719 " background-color: var(--sklearn-color-background);\n",720 "}\n",721 "\n",722 "#sk-container-id-2 div.sk-container {\n",723 " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",724 " but bootstrap.min.css set `[hidden] { display: none !important; }`\n",725 " so we also need the `!important` here to be able to override the\n",726 " default hidden behavior on the sphinx rendered scikit-learn.org.\n",727 " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",728 " display: inline-block !important;\n",729 " position: relative;\n",730 "}\n",731 "\n",732 "#sk-container-id-2 div.sk-text-repr-fallback {\n",733 " display: none;\n",734 "}\n",735 "\n",736 "div.sk-parallel-item,\n",737 "div.sk-serial,\n",738 "div.sk-item {\n",739 " /* draw centered vertical line to link estimators */\n",740 " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",741 " background-size: 2px 100%;\n",742 " background-repeat: no-repeat;\n",743 " background-position: center center;\n",744 "}\n",745 "\n",746 "/* Parallel-specific style estimator block */\n",747 "\n",748 "#sk-container-id-2 div.sk-parallel-item::after {\n",749 " content: \"\";\n",750 " width: 100%;\n",751 " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",752 " flex-grow: 1;\n",753 "}\n",754 "\n",755 "#sk-container-id-2 div.sk-parallel {\n",756 " display: flex;\n",757 " align-items: stretch;\n",758 " justify-content: center;\n",759 " background-color: var(--sklearn-color-background);\n",760 " position: relative;\n",761 "}\n",762 "\n",763 "#sk-container-id-2 div.sk-parallel-item {\n",764 " display: flex;\n",765 " flex-direction: column;\n",766 "}\n",767 "\n",768 "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",769 " align-self: flex-end;\n",770 " width: 50%;\n",771 "}\n",772 "\n",773 "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",774 " align-self: flex-start;\n",775 " width: 50%;\n",776 "}\n",777 "\n",778 "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",779 " width: 0;\n",780 "}\n",781 "\n",782 "/* Serial-specific style estimator block */\n",783 "\n",784 "#sk-container-id-2 div.sk-serial {\n",785 " display: flex;\n",786 " flex-direction: column;\n",787 " align-items: center;\n",788 " background-color: var(--sklearn-color-background);\n",789 " padding-right: 1em;\n",790 " padding-left: 1em;\n",791 "}\n",792 "\n",793 "\n",794 "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",795 "clickable and can be expanded/collapsed.\n",796 "- Pipeline and ColumnTransformer use this feature and define the default style\n",797 "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",798 "*/\n",799 "\n",800 "/* Pipeline and ColumnTransformer style (default) */\n",801 "\n",802 "#sk-container-id-2 div.sk-toggleable {\n",803 " /* Default theme specific background. It is overwritten whether we have a\n",804 " specific estimator or a Pipeline/ColumnTransformer */\n",805 " background-color: var(--sklearn-color-background);\n",806 "}\n",807 "\n",808 "/* Toggleable label */\n",809 "#sk-container-id-2 label.sk-toggleable__label {\n",810 " cursor: pointer;\n",811 " display: block;\n",812 " width: 100%;\n",813 " margin-bottom: 0;\n",814 " padding: 0.5em;\n",815 " box-sizing: border-box;\n",816 " text-align: center;\n",817 "}\n",818 "\n",819 "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",820 " /* Arrow on the left of the label */\n",821 " content: \"▸\";\n",822 " float: left;\n",823 " margin-right: 0.25em;\n",824 " color: var(--sklearn-color-icon);\n",825 "}\n",826 "\n",827 "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",828 " color: var(--sklearn-color-text);\n",829 "}\n",830 "\n",831 "/* Toggleable content - dropdown */\n",832 "\n",833 "#sk-container-id-2 div.sk-toggleable__content {\n",834 " max-height: 0;\n",835 " max-width: 0;\n",836 " overflow: hidden;\n",837 " text-align: left;\n",838 " /* unfitted */\n",839 " background-color: var(--sklearn-color-unfitted-level-0);\n",840 "}\n",841 "\n",842 "#sk-container-id-2 div.sk-toggleable__content.fitted {\n",843 " /* fitted */\n",844 " background-color: var(--sklearn-color-fitted-level-0);\n",845 "}\n",846 "\n",847 "#sk-container-id-2 div.sk-toggleable__content pre {\n",848 " margin: 0.2em;\n",849 " border-radius: 0.25em;\n",850 " color: var(--sklearn-color-text);\n",851 " /* unfitted */\n",852 " background-color: var(--sklearn-color-unfitted-level-0);\n",853 "}\n",854 "\n",855 "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",856 " /* unfitted */\n",857 " background-color: var(--sklearn-color-fitted-level-0);\n",858 "}\n",859 "\n",860 "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",861 " /* Expand drop-down */\n",862 " max-height: 200px;\n",863 " max-width: 100%;\n",864 " overflow: auto;\n",865 "}\n",866 "\n",867 "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",868 " content: \"▾\";\n",869 "}\n",870 "\n",871 "/* Pipeline/ColumnTransformer-specific style */\n",872 "\n",873 "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",874 " color: var(--sklearn-color-text);\n",875 " background-color: var(--sklearn-color-unfitted-level-2);\n",876 "}\n",877 "\n",878 "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",879 " background-color: var(--sklearn-color-fitted-level-2);\n",880 "}\n",881 "\n",882 "/* Estimator-specific style */\n",883 "\n",884 "/* Colorize estimator box */\n",885 "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",886 " /* unfitted */\n",887 " background-color: var(--sklearn-color-unfitted-level-2);\n",888 "}\n",889 "\n",890 "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",891 " /* fitted */\n",892 " background-color: var(--sklearn-color-fitted-level-2);\n",893 "}\n",894 "\n",895 "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",896 "#sk-container-id-2 div.sk-label label {\n",897 " /* The background is the default theme color */\n",898 " color: var(--sklearn-color-text-on-default-background);\n",899 "}\n",900 "\n",901 "/* On hover, darken the color of the background */\n",902 "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",903 " color: var(--sklearn-color-text);\n",904 " background-color: var(--sklearn-color-unfitted-level-2);\n",905 "}\n",906 "\n",907 "/* Label box, darken color on hover, fitted */\n",908 "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",909 " color: var(--sklearn-color-text);\n",910 " background-color: var(--sklearn-color-fitted-level-2);\n",911 "}\n",912 "\n",913 "/* Estimator label */\n",914 "\n",915 "#sk-container-id-2 div.sk-label label {\n",916 " font-family: monospace;\n",917 " font-weight: bold;\n",918 " display: inline-block;\n",919 " line-height: 1.2em;\n",920 "}\n",921 "\n",922 "#sk-container-id-2 div.sk-label-container {\n",923 " text-align: center;\n",924 "}\n",925 "\n",926 "/* Estimator-specific */\n",927 "#sk-container-id-2 div.sk-estimator {\n",928 " font-family: monospace;\n",929 " border: 1px dotted var(--sklearn-color-border-box);\n",930 " border-radius: 0.25em;\n",931 " box-sizing: border-box;\n",932 " margin-bottom: 0.5em;\n",933 " /* unfitted */\n",934 " background-color: var(--sklearn-color-unfitted-level-0);\n",935 "}\n",936 "\n",937 "#sk-container-id-2 div.sk-estimator.fitted {\n",938 " /* fitted */\n",939 " background-color: var(--sklearn-color-fitted-level-0);\n",940 "}\n",941 "\n",942 "/* on hover */\n",943 "#sk-container-id-2 div.sk-estimator:hover {\n",944 " /* unfitted */\n",945 " background-color: var(--sklearn-color-unfitted-level-2);\n",946 "}\n",947 "\n",948 "#sk-container-id-2 div.sk-estimator.fitted:hover {\n",949 " /* fitted */\n",950 " background-color: var(--sklearn-color-fitted-level-2);\n",951 "}\n",952 "\n",953 "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",954 "\n",955 "/* Common style for \"i\" and \"?\" */\n",956 "\n",957 ".sk-estimator-doc-link,\n",958 "a:link.sk-estimator-doc-link,\n",959 "a:visited.sk-estimator-doc-link {\n",960 " float: right;\n",961 " font-size: smaller;\n",962 " line-height: 1em;\n",963 " font-family: monospace;\n",964 " background-color: var(--sklearn-color-background);\n",965 " border-radius: 1em;\n",966 " height: 1em;\n",967 " width: 1em;\n",968 " text-decoration: none !important;\n",969 " margin-left: 1ex;\n",970 " /* unfitted */\n",971 " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",972 " color: var(--sklearn-color-unfitted-level-1);\n",973 "}\n",974 "\n",975 ".sk-estimator-doc-link.fitted,\n",976 "a:link.sk-estimator-doc-link.fitted,\n",977 "a:visited.sk-estimator-doc-link.fitted {\n",978 " /* fitted */\n",979 " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",980 " color: var(--sklearn-color-fitted-level-1);\n",981 "}\n",982 "\n",983 "/* On hover */\n",984 "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",985 ".sk-estimator-doc-link:hover,\n",986 "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",987 ".sk-estimator-doc-link:hover {\n",988 " /* unfitted */\n",989 " background-color: var(--sklearn-color-unfitted-level-3);\n",990 " color: var(--sklearn-color-background);\n",991 " text-decoration: none;\n",992 "}\n",993 "\n",994 "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",995 ".sk-estimator-doc-link.fitted:hover,\n",996 "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",997 ".sk-estimator-doc-link.fitted:hover {\n",998 " /* fitted */\n",999 " background-color: var(--sklearn-color-fitted-level-3);\n",1000 " color: var(--sklearn-color-background);\n",1001 " text-decoration: none;\n",1002 "}\n",1003 "\n",1004 "/* Span, style for the box shown on hovering the info icon */\n",1005 ".sk-estimator-doc-link span {\n",1006 " display: none;\n",1007 " z-index: 9999;\n",1008 " position: relative;\n",1009 " font-weight: normal;\n",1010 " right: .2ex;\n",1011 " padding: .5ex;\n",1012 " margin: .5ex;\n",1013 " width: min-content;\n",1014 " min-width: 20ex;\n",1015 " max-width: 50ex;\n",1016 " color: var(--sklearn-color-text);\n",1017 " box-shadow: 2pt 2pt 4pt #999;\n",1018 " /* unfitted */\n",1019 " background: var(--sklearn-color-unfitted-level-0);\n",1020 " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",1021 "}\n",1022 "\n",1023 ".sk-estimator-doc-link.fitted span {\n",1024 " /* fitted */\n",1025 " background: var(--sklearn-color-fitted-level-0);\n",1026 " border: var(--sklearn-color-fitted-level-3);\n",1027 "}\n",1028 "\n",1029 ".sk-estimator-doc-link:hover span {\n",1030 " display: block;\n",1031 "}\n",1032 "\n",1033 "/* \"?\"-specific style due to the `<a>` HTML tag */\n",1034 "\n",1035 "#sk-container-id-2 a.estimator_doc_link {\n",1036 " float: right;\n",1037 " font-size: 1rem;\n",1038 " line-height: 1em;\n",1039 " font-family: monospace;\n",1040 " background-color: var(--sklearn-color-background);\n",1041 " border-radius: 1rem;\n",1042 " height: 1rem;\n",1043 " width: 1rem;\n",1044 " text-decoration: none;\n",1045 " /* unfitted */\n",1046 " color: var(--sklearn-color-unfitted-level-1);\n",1047 " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",1048 "}\n",1049 "\n",1050 "#sk-container-id-2 a.estimator_doc_link.fitted {\n",1051 " /* fitted */\n",1052 " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",1053 " color: var(--sklearn-color-fitted-level-1);\n",1054 "}\n",1055 "\n",1056 "/* On hover */\n",1057 "#sk-container-id-2 a.estimator_doc_link:hover {\n",1058 " /* unfitted */\n",1059 " background-color: var(--sklearn-color-unfitted-level-3);\n",1060 " color: var(--sklearn-color-background);\n",1061 " text-decoration: none;\n",1062 "}\n",1063 "\n",1064 "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",1065 " /* fitted */\n",1066 " background-color: var(--sklearn-color-fitted-level-3);\n",1067 "}\n",1068 "</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[('preprocessing',\n",1069 " ColumnTransformer(transformers=[('encoder', OrdinalEncoder(),\n",1070 " [1, 2, 3]),\n",1071 " ('num_imputer',\n",1072 " SimpleImputer(strategy='median'),\n",1073 " [0, 4]),\n",1074 " ('num_scaler',\n",1075 " StandardScaler(), [0, 4])])),\n",1076 " ('model',\n",1077 " RandomForestClassifier(n_estimators=10, random_state=125))])</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-10\" type=\"checkbox\" ><label for=\"sk-estimator-id-10\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> Pipeline<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[('preprocessing',\n",1078 " ColumnTransformer(transformers=[('encoder', OrdinalEncoder(),\n",1079 " [1, 2, 3]),\n",1080 " ('num_imputer',\n",1081 " SimpleImputer(strategy='median'),\n",1082 " [0, 4]),\n",1083 " ('num_scaler',\n",1084 " StandardScaler(), [0, 4])])),\n",1085 " ('model',\n",1086 " RandomForestClassifier(n_estimators=10, random_state=125))])</pre></div> </div></div><div class=\"sk-serial\"><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-11\" type=\"checkbox\" ><label for=\"sk-estimator-id-11\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> preprocessing: ColumnTransformer<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.compose.ColumnTransformer.html\">?<span>Documentation for preprocessing: ColumnTransformer</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>ColumnTransformer(transformers=[('encoder', OrdinalEncoder(), [1, 2, 3]),\n",1087 " ('num_imputer',\n",1088 " SimpleImputer(strategy='median'), [0, 4]),\n",1089 " ('num_scaler', StandardScaler(), [0, 4])])</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-12\" type=\"checkbox\" ><label for=\"sk-estimator-id-12\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">encoder</label><div class=\"sk-toggleable__content fitted\"><pre>[1, 2, 3]</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-13\" type=\"checkbox\" ><label for=\"sk-estimator-id-13\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> OrdinalEncoder<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.OrdinalEncoder.html\">?<span>Documentation for OrdinalEncoder</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>OrdinalEncoder()</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\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-14\" type=\"checkbox\" ><label for=\"sk-estimator-id-14\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">num_imputer</label><div class=\"sk-toggleable__content fitted\"><pre>[0, 4]</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-15\" type=\"checkbox\" ><label for=\"sk-estimator-id-15\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> SimpleImputer<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.impute.SimpleImputer.html\">?<span>Documentation for SimpleImputer</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>SimpleImputer(strategy='median')</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\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-16\" type=\"checkbox\" ><label for=\"sk-estimator-id-16\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">num_scaler</label><div class=\"sk-toggleable__content fitted\"><pre>[0, 4]</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-17\" type=\"checkbox\" ><label for=\"sk-estimator-id-17\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> StandardScaler<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-18\" type=\"checkbox\" ><label for=\"sk-estimator-id-18\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> 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(n_estimators=10, random_state=125)</pre></div> </div></div></div></div></div></div>"1090 ],1091 "text/plain": [1092 "Pipeline(steps=[('preprocessing',\n",1093 " ColumnTransformer(transformers=[('encoder', OrdinalEncoder(),\n",1094 " [1, 2, 3]),\n",1095 " ('num_imputer',\n",1096 " SimpleImputer(strategy='median'),\n",1097 " [0, 4]),\n",1098 " ('num_scaler',\n",1099 " StandardScaler(), [0, 4])])),\n",1100 " ('model',\n",1101 " RandomForestClassifier(n_estimators=10, random_state=125))])"1102 ]1103 },1104 "execution_count": 8,1105 "metadata": {},1106 "output_type": "execute_result"1107 }1108 ],1109 "source": [1110 "sio.load(\"Model/drug_pipeline.skops\", trusted=True)"1111 ]1112 }1113 ],1114 "metadata": {1115 "kernelspec": {1116 "display_name": "PY312",1117 "language": "python",1118 "name": "python3"1119 },1120 "language_info": {1121 "codemirror_mode": {1122 "name": "ipython",1123 "version": 31124 },1125 "file_extension": ".py",1126 "mimetype": "text/x-python",1127 "name": "python",1128 "nbconvert_exporter": "python",1129 "pygments_lexer": "ipython3",1130 "version": "3.9.18"1131 }1132 },1133 "nbformat": 4,1134 "nbformat_minor": 21135}1136 