{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "81e0620e", "metadata": {}, "source": [ "Last updated: 16 Feb 2023\n", "\n", "# 👋 PyCaret Binary Classification Tutorial\n", "\n", "PyCaret is an open-source, low-code machine learning library in Python that automates machine learning workflows. It is an end-to-end machine learning and model management tool that exponentially speeds up the experiment cycle and makes you more productive.\n", "\n", "Compared with the other open-source machine learning libraries, PyCaret is an alternate low-code library that can be used to replace hundreds of lines of code with a few lines only. This makes experiments exponentially fast and efficient. PyCaret is essentially a Python wrapper around several machine learning libraries and frameworks, such as scikit-learn, XGBoost, LightGBM, CatBoost, spaCy, Optuna, Hyperopt, Ray, and a few more.\n", "\n", "The design and simplicity of PyCaret are inspired by the emerging role of citizen data scientists, a term first used by Gartner. Citizen Data Scientists are power users who can perform both simple and moderately sophisticated analytical tasks that would previously have required more technical expertise.\n" ] }, { "attachments": {}, "cell_type": "markdown", "id": "8116e19d", "metadata": {}, "source": [ "# 💻 Installation\n", "\n", "PyCaret is tested and supported on the following 64-bit systems:\n", "- Python 3.7 – 3.10\n", "- Python 3.9 for Ubuntu only\n", "- Ubuntu 16.04 or later\n", "- Windows 7 or later\n", "\n", "You can install PyCaret with Python's pip package manager:\n", "\n", "`pip install pycaret`\n", "\n", "PyCaret's default installation will not install all the extra dependencies automatically. For that you will have to install the full version:\n", "\n", "`pip install pycaret[full]`\n", "\n", "or depending on your use-case you may install one of the following variant:\n", "\n", "- `pip install pycaret[analysis]`\n", "- `pip install pycaret[models]`\n", "- `pip install pycaret[tuner]`\n", "- `pip install pycaret[mlops]`\n", "- `pip install pycaret[parallel]`\n", "- `pip install pycaret[test]`" ] }, { "cell_type": "code", "execution_count": 1, "id": "d7142a33", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'3.0.0'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# check installed version\n", "import pycaret\n", "pycaret.__version__" ] }, { "attachments": {}, "cell_type": "markdown", "id": "fb66e98d", "metadata": {}, "source": [ "# 🚀 Quick start" ] }, { "attachments": {}, "cell_type": "markdown", "id": "00347d44", "metadata": {}, "source": [ "PyCaret’s Classification Module is a supervised machine learning module that is used for classifying elements into groups. The goal is to predict the categorical class labels which are discrete and unordered. \n", "\n", "Some common use cases include predicting customer default (Yes or No), predicting customer churn (customer will leave or stay), the disease found (positive or negative). \n", "\n", "This module can be used for binary or multiclass problems. It provides several pre-processing features that prepare the data for modeling through the setup function. It has over 18 ready-to-use algorithms and several plots to analyze the performance of trained models.\n", "\n", "A typical workflow in PyCaret consist of following 5 steps in this order:\n", "\n", "## **Setup** ➡️ **Compare Models** ➡️ **Analyze Model** ➡️ **Prediction** ➡️ **Save Model**" ] }, { "cell_type": "code", "execution_count": 2, "id": "956dfdab", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Number of times pregnantPlasma glucose concentration a 2 hours in an oral glucose tolerance testDiastolic blood pressure (mm Hg)Triceps skin fold thickness (mm)2-Hour serum insulin (mu U/ml)Body mass index (weight in kg/(height in m)^2)Diabetes pedigree functionAge (years)Class variable
061487235033.60.627501
11856629026.60.351310
28183640023.30.672321
318966239428.10.167210
40137403516843.12.288331
\n", "
" ], "text/plain": [ " Number of times pregnant \\\n", "0 6 \n", "1 1 \n", "2 8 \n", "3 1 \n", "4 0 \n", "\n", " Plasma glucose concentration a 2 hours in an oral glucose tolerance test \\\n", "0 148 \n", "1 85 \n", "2 183 \n", "3 89 \n", "4 137 \n", "\n", " Diastolic blood pressure (mm Hg) Triceps skin fold thickness (mm) \\\n", "0 72 35 \n", "1 66 29 \n", "2 64 0 \n", "3 66 23 \n", "4 40 35 \n", "\n", " 2-Hour serum insulin (mu U/ml) \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 94 \n", "4 168 \n", "\n", " Body mass index (weight in kg/(height in m)^2) Diabetes pedigree function \\\n", "0 33.6 0.627 \n", "1 26.6 0.351 \n", "2 23.3 0.672 \n", "3 28.1 0.167 \n", "4 43.1 2.288 \n", "\n", " Age (years) Class variable \n", "0 50 1 \n", "1 31 0 \n", "2 32 1 \n", "3 21 0 \n", "4 33 1 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# loading sample dataset from pycaret dataset module\n", "from pycaret.datasets import get_data\n", "data = get_data('diabetes')" ] }, { "attachments": {}, "cell_type": "markdown", "id": "c00f6a4a", "metadata": {}, "source": [ "## Setup\n", "This function initializes the training environment and creates the transformation pipeline. Setup function must be called before executing any other function in PyCaret. It only has two required parameters i.e. `data` and `target`. All the other parameters are optional." ] }, { "cell_type": "code", "execution_count": 3, "id": "97f2c6c6", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 DescriptionValue
0Session id123
1TargetClass variable
2Target typeBinary
3Original data shape(768, 9)
4Transformed data shape(768, 9)
5Transformed train set shape(537, 9)
6Transformed test set shape(231, 9)
7Numeric features8
8PreprocessTrue
9Imputation typesimple
10Numeric imputationmean
11Categorical imputationmode
12Fold GeneratorStratifiedKFold
13Fold Number10
14CPU Jobs-1
15Use GPUFalse
16Log ExperimentFalse
17Experiment Nameclf-default-name
18USI52db
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# import pycaret classification and init setup\n", "from pycaret.classification import *\n", "s = setup(data, target = 'Class variable', session_id = 123)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "3c583864", "metadata": {}, "source": [ "Once the setup has been successfully executed it shows the information grid containing experiment level information. \n", "\n", "- **Session id:** A pseudo-random number distributed as a seed in all functions for later reproducibility. If no `session_id` is passed, a random number is automatically generated that is distributed to all functions.
\n", "
\n", "- **Target type:** Binary, Multiclass, or Regression. The Target type is automatically detected.
\n", "
\n", "- **Label Encoding:** When the Target variable is of type string (i.e. 'Yes' or 'No') instead of 1 or 0, it automatically encodes the label into 1 and 0 and displays the mapping (0 : No, 1 : Yes) for reference. In this tutorial, no label encoding is required since the target variable is of numeric type.
\n", "
\n", "- **Original data shape:** Shape of the original data prior to any transformations.
\n", "
\n", "- **Transformed train set shape :** Shape of transformed train set
\n", "
\n", "- **Transformed test set shape :** Shape of transformed test set
\n", "
\n", "- **Numeric features :** The number of features considered as numerical.
\n", "
\n", "- **Categorical features :** The number of features considered as categorical.
" ] }, { "attachments": {}, "cell_type": "markdown", "id": "ada19398", "metadata": {}, "source": [ "PyCaret has two set of API's that you can work with. (1) Functional (as seen above) and (2) Object Oriented API.\n", "\n", "With Object Oriented API instead of executing functions directly you will import a class and execute methods of class." ] }, { "cell_type": "code", "execution_count": 4, "id": "32ee91c9", "metadata": {}, "outputs": [], "source": [ "# import ClassificationExperiment and init the class\n", "from pycaret.classification import ClassificationExperiment\n", "exp = ClassificationExperiment()" ] }, { "cell_type": "code", "execution_count": 5, "id": "3ead9fb5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pycaret.classification.oop.ClassificationExperiment" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# check the type of exp\n", "type(exp)" ] }, { "cell_type": "code", "execution_count": 6, "id": "f05b8590", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 DescriptionValue
0Session id123
1TargetClass variable
2Target typeBinary
3Original data shape(768, 9)
4Transformed data shape(768, 9)
5Transformed train set shape(537, 9)
6Transformed test set shape(231, 9)
7Numeric features8
8PreprocessTrue
9Imputation typesimple
10Numeric imputationmean
11Categorical imputationmode
12Fold GeneratorStratifiedKFold
13Fold Number10
14CPU Jobs-1
15Use GPUFalse
16Log ExperimentFalse
17Experiment Nameclf-default-name
18USI0071
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# init setup on exp\n", "exp.setup(data, target = 'Class variable', session_id = 123)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "77213120", "metadata": {}, "source": [ "You can use any of the two method i.e. Functional or OOP and even switch back and forth between two set of API's. The choice of method will not impact the results and has been tested for consistency." ] }, { "attachments": {}, "cell_type": "markdown", "id": "f98dd435", "metadata": {}, "source": [ "## Compare Models\n", "\n", "This function trains and evaluates the performance of all the estimators available in the model library using cross-validation. The output of this function is a scoring grid with average cross-validated scores. Metrics evaluated during CV can be accessed using the `get_metrics` function. Custom metrics can be added or removed using `add_metric` and `remove_metric` function." ] }, { "cell_type": "code", "execution_count": 7, "id": "65a19df4", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCTT (Sec)
lrLogistic Regression0.76890.80470.56020.72080.62790.46410.47361.3810
ridgeRidge Classifier0.76700.00000.54970.72350.62210.45810.46900.0370
ldaLinear Discriminant Analysis0.76700.80550.55500.72020.62430.45940.46950.0500
rfRandom Forest Classifier0.74850.79110.52840.68110.59240.41500.42380.1940
nbNaive Bayes0.74270.79550.57020.65430.60430.41560.42150.0400
catboostCatBoost Classifier0.74100.79930.52780.66300.58510.40050.40780.0890
gbcGradient Boosting Classifier0.73730.79180.55500.64450.59310.40130.40590.0770
adaAda Boost Classifier0.73720.77990.52750.65850.57960.39260.40170.0870
etExtra Trees Classifier0.72990.77880.49650.65160.55960.37060.38020.1280
qdaQuadratic Discriminant Analysis0.72820.78940.52810.65580.57360.37850.39100.0510
lightgbmLight Gradient Boosting Machine0.71330.76450.53980.60360.56500.35340.35800.2440
knnK Neighbors Classifier0.70010.71640.50200.59820.54130.32090.32710.0570
dtDecision Tree Classifier0.69280.65120.51370.56360.53280.30700.30980.0460
xgboostExtreme Gradient Boosting0.68530.75160.49120.56200.52160.28870.29220.0520
dummyDummy Classifier0.65180.50000.00000.00000.00000.00000.00000.0380
svmSVM - Linear Kernel0.59540.00000.33950.40900.26710.07200.09120.0410
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/69 [00:00" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCTT (Sec)
lrLogistic Regression0.76890.80470.56020.72080.62790.46410.47360.0450
ridgeRidge Classifier0.76700.00000.54970.72350.62210.45810.46900.0330
ldaLinear Discriminant Analysis0.76700.80550.55500.72020.62430.45940.46950.0370
rfRandom Forest Classifier0.74850.79110.52840.68110.59240.41500.42380.1320
nbNaive Bayes0.74270.79550.57020.65430.60430.41560.42150.0360
catboostCatBoost Classifier0.74100.79930.52780.66300.58510.40050.40780.0340
gbcGradient Boosting Classifier0.73730.79180.55500.64450.59310.40130.40590.0730
adaAda Boost Classifier0.73720.77990.52750.65850.57960.39260.40170.0750
etExtra Trees Classifier0.72990.77880.49650.65160.55960.37060.38020.1320
qdaQuadratic Discriminant Analysis0.72820.78940.52810.65580.57360.37850.39100.0380
lightgbmLight Gradient Boosting Machine0.71330.76450.53980.60360.56500.35340.35800.0390
knnK Neighbors Classifier0.70010.71640.50200.59820.54130.32090.32710.0490
dtDecision Tree Classifier0.69280.65120.51370.56360.53280.30700.30980.0390
xgboostExtreme Gradient Boosting0.68530.75160.49120.56200.52160.28870.29220.0440
dummyDummy Classifier0.65180.50000.00000.00000.00000.00000.00000.0330
svmSVM - Linear Kernel0.59540.00000.33950.40900.26710.07200.09120.0310
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/69 [00:00#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "                   intercept_scaling=1, l1_ratio=None, max_iter=1000,\n",
       "                   multi_class='auto', n_jobs=None, penalty='l2',\n",
       "                   random_state=123, solver='lbfgs', tol=0.0001, verbose=0,\n",
       "                   warm_start=False)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, l1_ratio=None, max_iter=1000,\n", " multi_class='auto', n_jobs=None, penalty='l2',\n", " random_state=123, solver='lbfgs', tol=0.0001, verbose=0,\n", " warm_start=False)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# compare models using OOP\n", "exp.compare_models()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "340de1e2", "metadata": {}, "source": [ "Notice that the output between functional and OOP API is consistent. Rest of the functions in this notebook will only be shown using functional API only. " ] }, { "attachments": {}, "cell_type": "markdown", "id": "6a77ec0c", "metadata": {}, "source": [ "## Analyze Model" ] }, { "attachments": {}, "cell_type": "markdown", "id": "595ea108", "metadata": {}, "source": [ "You can use the `plot_model` function to analyzes the performance of a trained model on the test set. It may require re-training the model in certain cases." ] }, { "cell_type": "code", "execution_count": 9, "id": "0ec7fad6", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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9lqc2/j4+Kh9+/bWr3H//v01fPhw1axZU9OmTZOfn58WLFigdu3axbjg98iRIwoODlbHjh01ZcoUpUyZUh06dNDt27fl6empwMBASVJAQMAzvz/iMmzYMG3btk09evRQcHCwatSooVGjRlkD72m7d+9WkyZNrI8dMmSILl26pMaNG8eINkn6/PPPVaZMGQUFBalevXqaNWuWli1b9sKZChYsqEKFCmndunUxlq9evVrly5ePcfqdJG3ZskXt27dXsWLFNHXqVE2ePFm5c+fWoEGD9Msvvyhbtmwxvj7Rv5aeBPKlS5c0ZcoUdevWTSlTpozx3AMHDpSjo6P1e+PIkSMKCgpSixYtVL58+RfuC4Dkg1OYANjE48ePNWbMGFWpUkVjx461Lo/+6WVwcLC6d++u6dOny9nZWbNmzbK+kcyfP78aN278zOfeu3evihcvrvfee0+SVL58eb322mtydnaW9L/TKnLkyBHnKRaPHz/WlClTVLNmzRjBcP/+fa1evdp6JEOSatWqFevxWbJkUdOmTdWxY0frsrFjxypfvnyaPn269Y1VyZIlVbduXa1YsUJ+fn7x2ldvb2/r/klSt27d9NprrykkJEROTk6SpIoVK6pmzZqaNWuWevToob179ypXrlzy8/NTihQpVL58eTk6Our27duSpF9//VUPHjxQmzZtlD17duvXaNOmTbp37571eaNt27ZNP/30k8aNG6e6detKkipXrqw0adJo4sSJatasmQoVKiRJevjwoYKDg63PcffuXfXo0UPHjh1T8eLFY+3fzZs3FRERYXz9walTp7R8+XJ169ZNn376qXWWbNmyqXv37tq2bZuqVasmSQoPD9fKlSut18w4OjrK399fu3fvVu3atVW0aFFJ0htvvBGvU3D27t2rypUrW78WHh4ecnR0VObMmePcfuzYscqTJ49mzJhh/Z6oUqWKatWqpUmTJmnixInWbd9//321b99e0pM/140bN2rLli3P/XsQzdvbW/PmzYtxGtOaNWvUtm3bWNueOnVKvr6+MU4Zc3d3l4eHh/bs2aOSJUvG+Pq8+eab1u0ePnyoQYMGPfNUwCxZsmjAgAHq0qWLli1bprlz56pw4cLq1KnTC/cBQPLCEQgANnH27Fldu3ZN9erVi7H8jTfekLu7u/WUht27d6tq1aoxfgrt7u6u119//ZnP7eHhYT01atasWTp16pT8/f31zjvvGM92/fr1WHHQsmVLrVy5Uvb29tZl06ZN0/Lly7Vo0SK9//77sre3V8eOHdWrVy/rtQ/379/XL7/8omrVqslisViPWOTOnVsFChTQzp07472v0W/iou3evVvly5dXmjRprM/v5OSksmXL6qeffpIkVahQQWfPntW7776rwMBAHT58WPXr17eeklSyZEmlTp1ajRo10tChQ7V9+3YVKVJEXbp0iRUP0pM3zKlSpVKdOnViLG/QoIF1fbSCBQvGeI7oQLl//36cfwbRb6hNTtP5+2tFv3mPVrduXaVMmTLGaUOZMmWKccF99BveZ81iysPDQ0uXLlXr1q21YMEChYaGqn379vL09Iy17b1793T48GF5e3vH+El9unTpVL169Vin9Li7u8f4fY4cOaynbr3I06cx/fLLL7py5YrefvvtWNu2atVKI0aM0N27d3XkyBGtWbNG06dPl6QXnr6XIUOGF15H5OPjo9q1a6t///4KDQ3VmDFj5ODgYLQfAJIPjkAAsIlbt25JevJTyadlyZJFR48elSTduHEjzp/gxvW4aK1atVLatGm1YsUKjRkzRqNHj1ahQoXUt29fVahQwXi2Z/3k+O8KFy5s/Sl56dKl9fDhQ/Xv319OTk7WN7N37tzR48ePNXPmTM2cOTPWc6ROnTre+xp92s7fZ16zZk2cd9bJlCmTpCdv3h4/fqyvvvrKenrK66+/rs8//1w+Pj7KlSuXFixYoBkzZmj58uWaN2+e0qVLp6ZNm6pz584xrueQnlxsnDFjxlinqkSfFhMeHm5d9vRpSClSPPn5VVynRklS+vTplTZtWoWFhcW5XnryJjwqKkrp06e3HkV5+pScVKlSKWPGjM+dJXq/njWLqT59+ihHjhz67rvvNHjwYA0ePFju7u4aOHBgrDtFhYeHy2KxPPP7/+/zSlKaNGli/D5FihTGn8OQL18+FS1a1Ho3pjVr1qhKlSpKnz59rG1v3LihAQMGaOPGjbKzs1OePHlUtmxZSS/+3AfTmwX4+vpq/fr1yps3r/Lly2f0GADJCwEBwCYyZMggSfrzzz9jrbt27ZoyZswo6clPWuPa5vr168qfP3+cz50iRQr5+fnJz89P169f19atWxUUFKQOHTpo586dL/yJZ7p06SQp1gXON2/e1NGjR2P9NPjv+vbtq507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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot confusion matrix\n", "plot_model(best, plot = 'confusion_matrix')" ] }, { "cell_type": "code", "execution_count": 10, "id": "9fc4b9b1", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot AUC\n", "plot_model(best, plot = 'auc')" ] }, { "cell_type": "code", "execution_count": 11, "id": "bbc790e4", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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ry8NGzbEzc2N7t27s2fPnufuo2PHjkyfPp3w8HBq1KhhfHC3trZmzpw5+Pr60rp1a2xtbWnQoAHe3t4pPre3tzcTJ06kb9++PHz4kKpVq7Jo0aIUL/Dl5eXFpEmTuHDhgtk6Ks+qc+fO3L17l5EjR3Lnzh1Kly7NV199RbZs2YBHd/iZPHkyc+fOJWfOnAwYMAB3d/ckz1ejRg3atm2Lra0tAwYMSPTuS/EmTZrEuHHj6NChA+nTp6d69eoMHz4ceFSYmjt3LmPGjGHFihU4Ozvj6elpPN7JyZAhA/7+/kycOJGlS5dSoEABevTowfTp0zl58iRFihR56jkez+/QoUOf2l5eb82d36VZ6YLsDbnK5VtR5MuWCXfHtzXCRURE5DVkZdLYaBERecns37+fTz75hNOnT6fK+S5evMiVK1eoUKGCsW3MmDFERUXxxRdfpEofqeXYsWPAo7szvQj37t3j5MmTlChR4rWee52WlGPLU44tTzm2POXY8pRjy3tTcvwsv69pepGIiLz27ty5Q8eOHfnhhx+IiIhg69atfPfddzRo0CCtQxMRERGR15imF4mIyGuvRIkSjBw5kqlTp3L58mXy5cvHkCFDqFWrVlqHJiIiIiKvMRVdRETkpVO5cuVUm1oUr1WrVrRq1SpVzykiIiIikhxNLxIRERERERERsQAVXURERERERERELEBFFxERERERERERC1DRRURERERERETEAlR0ERERERERERGxABVdREREREREREQsQEUXERERERERERELUNFFRERERERERMQCVHQREREREREREbEAFV1ERERERERERCxARRcREREREREREQtQ0UVERERERERExAJUdBERERERERERsQAVXURERERERERELEBFFxERERERERERC1DRRURERERERETEAlR0ERERERERERGxABVdREREREREREQsQEUXERERERERERELUNFFRERERERERMQCVHQREREREREREbEAFV1ERERERERERCxARRcREREREREREQtQ0UVERERERERExAJUdBERERERERERsQAVXURERERERERELEBFFxERERERERERC1DRRURERERERETEAlR0ERERERERERGxABVdREREREREREQsQEUXERERERERERELUNFFRERERERERMQCVHQREREREREREbEAFV1ERERERERE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+lCzZs0Er7V4z/o6eVJy76P58+dn7ty57N27l8aNGzN9+nR8fHwSXbgdoF69esTFxdGoUSMiIyOTfZ8qUaIEfn5+LFiwgA8++IC5c+fi7+9PkSJFgEdFuEmTJr20t4xOK82d3+WUT1N29Xyfb/5Xnd293ueUT1MVXEREROS1YWV6nnH6Ymb79u24ubkZd6X4888/adu2LUeOHHmmdUhE5PVx4MABChYsaNxtJyYmhipVqhAYGGjcSUwkMfF3Znt8gXZLunfvHidPnqREiRKv9dzrtKQcW55ybHnKseUpx5anHFvem5LjZ/l97fluq8CjqRyLFy8mNDSUGTNmsH37dooVK0alSpWe95SvrFmzZrFr1y66du3K3bt38ff3x8PDQwUXkTfY9u3bOXLkCGPGjCFz5swsWbKELFmyGLeWFxERERGR199zTS86fvw4rVq1Ijw8nOPHj/Pw4UNOnjxJp06d+Omnn1I7xpfe5MmTCQ8Pp1mzZnTs2JECBQoY67qIyJupb9++ODo60rFjR5o2bUpISAgLFix4YbfkFRERERGRtPdcI10mT55Mp06d6N+/P66urgCMGzeOzJkzExAQYNyi+U1RtGhRFi9enNZhiMhLJEuWLEyaNCmtwxARERERkTT03CNdmjVrlmB7u3btCA4O/q8xiYiIiIiIiIi88p6r6GJjY8OdO3cSbL98+bJx+14RERERERERkTfZcxVd6taty/Tp07l165axLTg4GD8/P2rVqpVasYmIiIiIiIiIvLKeq+ji7e3N3bt3qVKlClFRUbRo0YLGjRtjbW3N4MGDUztGEREREREREZFXznMtpGtlZcXKlSvZt28fJ06cIC4ujvfee4/q1auTLt1z1XFERERERERERF4rz1V0adasGdOnT8fNzQ03N7fUjklERERERERE5JX3XMNSoqKiyJgxY2rHIiIiIiIiIiLy2niukS6ffPIJffr0oV27drz77rsJCjAVK1ZMleBERERERERERF5Vz1V0mTp1KgC+vr4J9llZWXHy5Mn/FpWIiIiIiIiIyCvuuYouO3bsSO04REREREREREReK89VdMmfP39qxyEiIiIiIiIi8lp57jVdkrNkyZLnCkZERERERERE5HWRKiNdYmJiOH/+PGfOnKF9+/apEpiIiIiIiIiIyKvsuYouEyZMSHR7YGAgf//9938KSERERERERETkdZAuNU/WtGlTtmzZkpqnFBERERERERF5JaVq0eXIkSNYW1un5ilFRERERERERF5JqbaQ7p07dzh9+jRt27b9z0GJiIiIiIiIiLzqnqvoki9fPqysrMy22djY8L///Y8mTZqkSmAiIiIiIiIiIq+y5yq69O3blzx58pAunfnspJiYGE6cOIGLi0uqBCciIiIiIiIi8qp6rjVd6tSpw40bNxJsDw8Px8vL67/GJCIiIiIiIiLyykvxSJfly5ezcOFCAEwmEx9++GGCkS63bt0iX758qRuhiIiIiIiIiMgrKMVFlxYtWnD9+nVMJhOBgYE0aNCAzJkzm7XJnDkz77//fqoHKSIiIiIiIiLyqklx0SVTpkz07t0bACsrKzp37kymTJksFpiIiIiIiIiIyKvsuRbS7d27NzExMVy5coXY2Fjg0ZSjhw8fcuzYMd3BSERERERERETeeM9VdPn555/x9vbm33//TbAvY8aMKrqIiIiIiIiIyBvvue5eNHXqVEqWLMm8efPImDEjs2bNYujQoWTJkgV/f//UjlFERERERERE5JXzXCNdzp07x/jx4ylevDglSpTA1tYWLy8vbG1t+eqrr6hbt25qxykiIiIiIiIi8kp5rpEu1tbW2NnZAeDg4MCZM2cAqFKlCsHBwakXnYiIiIiIiIjIK+q5ii7FihVj586dABQuXJjff/8dgL///jv1IhMREREREREReYU91/Sirl270rdvX2xsbGjcuDEBAQF07dqV06dPU6VKldSOUURERERERETklfNcI13q1q3LmjVrKFu2LHnz5mXBggVYW1tTp04dxo4dm9oxioiIiIiIiIi8cp5rpAtAqVKlAHj48CGVKlWiUqVKqRaUiIiIiIiIiMir7rlGugCsWLECDw8PypYty8WLFxk9ejSzZ89OzdhERERERERERF5Zz1V02bhxI1OmTKF58+bY2NgAjxbUnTt3LgsXLkzVAEVEREREREREXkXPVXRZuHAhw4YNo0+fPqRL9+gUn3zyCSNHjmTVqlWpGqCIiIiIiIiIyKvouYouoaGhVKhQIcH2ypUrc/ny5f8clIi8Gjw8PHBycsLJyYnixYvj6urKxx9/zN69e83aOTk5sX///v/c3759+wgODk5RWx8fH3x8fAAICAjAy8vrmft7/ByJ8fDwICgo6JnPmxp9vylMJhNe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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot feature importance\n", "plot_model(best, plot = 'feature')" ] }, { "cell_type": "code", "execution_count": 105, "id": "da718984", "metadata": {}, "outputs": [], "source": [ "# check docstring to see available plots \n", "# help(plot_model)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "6bd66179", "metadata": {}, "source": [ "An alternate to `plot_model` function is `evaluate_model`. It can only be used in Notebook since it uses ipywidget." ] }, { "cell_type": "code", "execution_count": 13, "id": "c75f07a8", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e2af835870b542fd8a945516257705b3", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(ToggleButtons(description='Plot Type:', icons=('',), options=(('Pipeline Plot', 'pipelin…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "evaluate_model(best)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "ab3d2f1e", "metadata": {}, "source": [ "___" ] }, { "attachments": {}, "cell_type": "markdown", "id": "954cbeff", "metadata": {}, "source": [ "## Prediction\n", "The `predict_model` function returns `prediction_label` and `prediction_score` (probability of the predicted class) as new columns in dataframe. When data is `None` (default), it uses the test set (created during the setup function) for scoring." ] }, { "cell_type": "code", "execution_count": 14, "id": "87c1a007", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Logistic Regression0.75760.85680.53090.70490.60560.43560.4447
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# predict on test set\n", "holdout_pred = predict_model(best)" ] }, { "cell_type": "code", "execution_count": 15, "id": "5c01ac77", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Number of times pregnantPlasma glucose concentration a 2 hours in an oral glucose tolerance testDiastolic blood pressure (mm Hg)Triceps skin fold thickness (mm)2-Hour serum insulin (mu U/ml)Body mass index (weight in kg/(height in m)^2)Diabetes pedigree functionAge (years)Class variableprediction_labelprediction_score
5376114880027.7999990.24766000.8037
5381977015018.2000010.14721000.9648
5392907017027.2999990.08522000.9393
540210558409434.9000020.22525000.7998
54111138760033.2000010.42035010.6391
\n", "
" ], "text/plain": [ " Number of times pregnant \\\n", "537 6 \n", "538 1 \n", "539 2 \n", "540 2 \n", "541 11 \n", "\n", " Plasma glucose concentration a 2 hours in an oral glucose tolerance test \\\n", "537 114 \n", "538 97 \n", "539 90 \n", "540 105 \n", "541 138 \n", "\n", " Diastolic blood pressure (mm Hg) Triceps skin fold thickness (mm) \\\n", "537 88 0 \n", "538 70 15 \n", "539 70 17 \n", "540 58 40 \n", "541 76 0 \n", "\n", " 2-Hour serum insulin (mu U/ml) \\\n", "537 0 \n", "538 0 \n", "539 0 \n", "540 94 \n", "541 0 \n", "\n", " Body mass index (weight in kg/(height in m)^2) \\\n", "537 27.799999 \n", "538 18.200001 \n", "539 27.299999 \n", "540 34.900002 \n", "541 33.200001 \n", "\n", " Diabetes pedigree function Age (years) Class variable \\\n", "537 0.247 66 0 \n", "538 0.147 21 0 \n", "539 0.085 22 0 \n", "540 0.225 25 0 \n", "541 0.420 35 0 \n", "\n", " prediction_label prediction_score \n", "537 0 0.8037 \n", "538 0 0.9648 \n", "539 0 0.9393 \n", "540 0 0.7998 \n", "541 1 0.6391 " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# show predictions df\n", "holdout_pred.head()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "d4baf825", "metadata": {}, "source": [ "The same function works for predicting the labels on unseen dataset. Let's create a copy of original data and drop the `Class variable`. We can then use the new data frame without labels for scoring." ] }, { "cell_type": "code", "execution_count": 16, "id": "fb1cb86d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Number of times pregnantPlasma glucose concentration a 2 hours in an oral glucose tolerance testDiastolic blood pressure (mm Hg)Triceps skin fold thickness (mm)2-Hour serum insulin (mu U/ml)Body mass index (weight in kg/(height in m)^2)Diabetes pedigree functionAge (years)
061487235033.60.62750
11856629026.60.35131
28183640023.30.67232
318966239428.10.16721
40137403516843.12.28833
\n", "
" ], "text/plain": [ " Number of times pregnant \\\n", "0 6 \n", "1 1 \n", "2 8 \n", "3 1 \n", "4 0 \n", "\n", " Plasma glucose concentration a 2 hours in an oral glucose tolerance test \\\n", "0 148 \n", "1 85 \n", "2 183 \n", "3 89 \n", "4 137 \n", "\n", " Diastolic blood pressure (mm Hg) Triceps skin fold thickness (mm) \\\n", "0 72 35 \n", "1 66 29 \n", "2 64 0 \n", "3 66 23 \n", "4 40 35 \n", "\n", " 2-Hour serum insulin (mu U/ml) \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 94 \n", "4 168 \n", "\n", " Body mass index (weight in kg/(height in m)^2) Diabetes pedigree function \\\n", "0 33.6 0.627 \n", "1 26.6 0.351 \n", "2 23.3 0.672 \n", "3 28.1 0.167 \n", "4 43.1 2.288 \n", "\n", " Age (years) \n", "0 50 \n", "1 31 \n", "2 32 \n", "3 21 \n", "4 33 " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# copy data and drop Class variable\n", "\n", "new_data = data.copy()\n", "new_data.drop('Class variable', axis=1, inplace=True)\n", "new_data.head()" ] }, { "cell_type": "code", "execution_count": 17, "id": "c5803df9", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Number of times pregnantPlasma glucose concentration a 2 hours in an oral glucose tolerance testDiastolic blood pressure (mm Hg)Triceps skin fold thickness (mm)2-Hour serum insulin (mu U/ml)Body mass index (weight in kg/(height in m)^2)Diabetes pedigree functionAge (years)prediction_labelprediction_score
061487235033.5999980.6275010.6939
11856629026.6000000.3513100.9419
28183640023.2999990.6723210.7975
318966239428.1000000.1672100.9453
40137403516843.0999982.2883310.8393
\n", "
" ], "text/plain": [ " Number of times pregnant \\\n", "0 6 \n", "1 1 \n", "2 8 \n", "3 1 \n", "4 0 \n", "\n", " Plasma glucose concentration a 2 hours in an oral glucose tolerance test \\\n", "0 148 \n", "1 85 \n", "2 183 \n", "3 89 \n", "4 137 \n", "\n", " Diastolic blood pressure (mm Hg) Triceps skin fold thickness (mm) \\\n", "0 72 35 \n", "1 66 29 \n", "2 64 0 \n", "3 66 23 \n", "4 40 35 \n", "\n", " 2-Hour serum insulin (mu U/ml) \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 94 \n", "4 168 \n", "\n", " Body mass index (weight in kg/(height in m)^2) Diabetes pedigree function \\\n", "0 33.599998 0.627 \n", "1 26.600000 0.351 \n", "2 23.299999 0.672 \n", "3 28.100000 0.167 \n", "4 43.099998 2.288 \n", "\n", " Age (years) prediction_label prediction_score \n", "0 50 1 0.6939 \n", "1 31 0 0.9419 \n", "2 32 1 0.7975 \n", "3 21 0 0.9453 \n", "4 33 1 0.8393 " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# predict model on new_data\n", "predictions = predict_model(best, data = new_data)\n", "predictions.head()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "e4384735", "metadata": {}, "source": [ "## Save Model" ] }, { "attachments": {}, "cell_type": "markdown", "id": "cd63f053", "metadata": {}, "source": [ "Finally, you can save the entire pipeline on disk for later use, using pycaret's `save_model` function." ] }, { "cell_type": "code", "execution_count": 18, "id": "4181de41", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Transformation Pipeline and Model Successfully Saved\n" ] }, { "data": { "text/plain": [ "(Pipeline(memory=FastMemory(location=C:\\Users\\owner\\AppData\\Local\\Temp\\joblib),\n", " steps=[('clean_column_names',\n", " TransformerWrapper(exclude=None, include=None,\n", " transformer=CleanColumnNames(match='[\\\\]\\\\[\\\\,\\\\{\\\\}\\\\\"\\\\:]+'))),\n", " ('numerical_imputer',\n", " TransformerWrapper(exclude=None,\n", " include=['Number of times pregnant',\n", " 'Plasma glucose concentration a 2 '\n", " 'hours in an oral glu...\n", " fill_value=None,\n", " missing_values=nan,\n", " strategy='most_frequent',\n", " verbose='deprecated'))),\n", " ('trained_model',\n", " LogisticRegression(C=1.0, class_weight=None, dual=False,\n", " fit_intercept=True, intercept_scaling=1,\n", " l1_ratio=None, max_iter=1000,\n", " multi_class='auto', n_jobs=None,\n", " penalty='l2', random_state=123,\n", " solver='lbfgs', tol=0.0001, verbose=0,\n", " warm_start=False))],\n", " verbose=False),\n", " 'my_first_pipeline.pkl')" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# save pipeline\n", "save_model(best, 'my_first_pipeline')" ] }, { "cell_type": "code", "execution_count": 19, "id": "40ed5152", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Transformation Pipeline and Model Successfully Loaded\n" ] }, { "data": { "text/html": [ "
Pipeline(memory=FastMemory(location=C:\\Users\\owner\\AppData\\Local\\Temp\\joblib),\n",
       "         steps=[('clean_column_names',\n",
       "                 TransformerWrapper(exclude=None, include=None,\n",
       "                                    transformer=CleanColumnNames(match='[\\\\]\\\\[\\\\,\\\\{\\\\}\\\\"\\\\:]+'))),\n",
       "                ('numerical_imputer',\n",
       "                 TransformerWrapper(exclude=None,\n",
       "                                    include=['Number of times pregnant',\n",
       "                                             'Plasma glucose concentration a 2 '\n",
       "                                             'hours in an oral glu...\n",
       "                                                              fill_value=None,\n",
       "                                                              missing_values=nan,\n",
       "                                                              strategy='most_frequent',\n",
       "                                                              verbose='deprecated'))),\n",
       "                ('trained_model',\n",
       "                 LogisticRegression(C=1.0, class_weight=None, dual=False,\n",
       "                                    fit_intercept=True, intercept_scaling=1,\n",
       "                                    l1_ratio=None, max_iter=1000,\n",
       "                                    multi_class='auto', n_jobs=None,\n",
       "                                    penalty='l2', random_state=123,\n",
       "                                    solver='lbfgs', tol=0.0001, verbose=0,\n",
       "                                    warm_start=False))],\n",
       "         verbose=False)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "Pipeline(memory=FastMemory(location=C:\\Users\\owner\\AppData\\Local\\Temp\\joblib),\n", " steps=[('clean_column_names',\n", " TransformerWrapper(exclude=None, include=None,\n", " transformer=CleanColumnNames(match='[\\\\]\\\\[\\\\,\\\\{\\\\}\\\\\"\\\\:]+'))),\n", " ('numerical_imputer',\n", " TransformerWrapper(exclude=None,\n", " include=['Number of times pregnant',\n", " 'Plasma glucose concentration a 2 '\n", " 'hours in an oral glu...\n", " fill_value=None,\n", " missing_values=nan,\n", " strategy='most_frequent',\n", " verbose='deprecated'))),\n", " ('trained_model',\n", " LogisticRegression(C=1.0, class_weight=None, dual=False,\n", " fit_intercept=True, intercept_scaling=1,\n", " l1_ratio=None, max_iter=1000,\n", " multi_class='auto', n_jobs=None,\n", " penalty='l2', random_state=123,\n", " solver='lbfgs', tol=0.0001, verbose=0,\n", " warm_start=False))],\n", " verbose=False)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# load pipeline\n", "loaded_best_pipeline = load_model('my_first_pipeline')\n", "loaded_best_pipeline" ] }, { "attachments": {}, "cell_type": "markdown", "id": "b2c7d62e", "metadata": {}, "source": [ "# 👇 Detailed function-by-function overview" ] }, { "attachments": {}, "cell_type": "markdown", "id": "e05937f5", "metadata": {}, "source": [ "## ✅ Setup\n", "This function initializes the experiment in PyCaret and creates the transformation pipeline based on all the parameters passed in the function. Setup function must be called before executing any other function. It takes two required parameters: `data` and `target`. All the other parameters are optional and are used for configuring data preprocessing pipeline." ] }, { "cell_type": "code", "execution_count": 20, "id": "24e503be", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 DescriptionValue
0Session id123
1TargetClass variable
2Target typeBinary
3Original data shape(768, 9)
4Transformed data shape(768, 9)
5Transformed train set shape(537, 9)
6Transformed test set shape(231, 9)
7Numeric features8
8PreprocessTrue
9Imputation typesimple
10Numeric imputationmean
11Categorical imputationmode
12Fold GeneratorStratifiedKFold
13Fold Number10
14CPU Jobs-1
15Use GPUFalse
16Log ExperimentFalse
17Experiment Nameclf-default-name
18USI038a
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# init setup function\n", "s = setup(data, target = 'Class variable', session_id = 123)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "924d198b", "metadata": {}, "source": [ "To access all the variables created by the setup function such as transformed dataset, random_state, etc. you can use `get_config` method." ] }, { "cell_type": "code", "execution_count": 21, "id": "76128b08", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'USI',\n", " 'X',\n", " 'X_test',\n", " 'X_test_transformed',\n", " 'X_train',\n", " 'X_train_transformed',\n", " 'X_transformed',\n", " '_available_plots',\n", " '_ml_usecase',\n", " 'data',\n", " 'dataset',\n", " 'dataset_transformed',\n", " 'exp_id',\n", " 'exp_name_log',\n", " 'fix_imbalance',\n", " 'fold_generator',\n", " 'fold_groups_param',\n", " 'fold_shuffle_param',\n", " 'gpu_n_jobs_param',\n", " 'gpu_param',\n", " 'html_param',\n", " 'idx',\n", " 'is_multiclass',\n", " 'log_plots_param',\n", " 'logging_param',\n", " 'memory',\n", " 'n_jobs_param',\n", " 'pipeline',\n", " 'seed',\n", " 'target_param',\n", " 'test',\n", " 'test_transformed',\n", " 'train',\n", " 'train_transformed',\n", " 'variable_and_property_keys',\n", " 'variables',\n", " 'y',\n", " 'y_test',\n", " 'y_test_transformed',\n", " 'y_train',\n", " 'y_train_transformed',\n", " 'y_transformed'}" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# check all available config\n", "get_config()" ] }, { "cell_type": "code", "execution_count": 22, "id": "dbc43292", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Number of times pregnantPlasma glucose concentration a 2 hours in an oral glucose tolerance testDiastolic blood pressure (mm Hg)Triceps skin fold thickness (mm)2-Hour serum insulin (mu U/ml)Body mass index (weight in kg/(height in m)^2)Diabetes pedigree functionAge (years)
013.0152.090.033.029.026.7999990.73143.0
10.0104.064.037.064.033.5999980.51022.0
25.0137.0108.00.00.048.7999990.22737.0
30.0111.065.00.00.024.6000000.66031.0
46.0105.070.032.068.030.7999990.12237.0
...........................
53210.0179.070.00.00.035.0999980.20037.0
5330.0100.088.060.0110.046.7999990.96231.0
5341.089.076.034.037.031.2000010.19223.0
5351.0121.078.039.074.039.0000000.26128.0
5360.0140.065.026.0130.042.5999980.43124.0
\n", "

537 rows × 8 columns

\n", "
" ], "text/plain": [ " Number of times pregnant \\\n", "0 13.0 \n", "1 0.0 \n", "2 5.0 \n", "3 0.0 \n", "4 6.0 \n", ".. ... \n", "532 10.0 \n", "533 0.0 \n", "534 1.0 \n", "535 1.0 \n", "536 0.0 \n", "\n", " Plasma glucose concentration a 2 hours in an oral glucose tolerance test \\\n", "0 152.0 \n", "1 104.0 \n", "2 137.0 \n", "3 111.0 \n", "4 105.0 \n", ".. ... \n", "532 179.0 \n", "533 100.0 \n", "534 89.0 \n", "535 121.0 \n", "536 140.0 \n", "\n", " Diastolic blood pressure (mm Hg) Triceps skin fold thickness (mm) \\\n", "0 90.0 33.0 \n", "1 64.0 37.0 \n", "2 108.0 0.0 \n", "3 65.0 0.0 \n", "4 70.0 32.0 \n", ".. ... ... \n", "532 70.0 0.0 \n", "533 88.0 60.0 \n", "534 76.0 34.0 \n", "535 78.0 39.0 \n", "536 65.0 26.0 \n", "\n", " 2-Hour serum insulin (mu U/ml) \\\n", "0 29.0 \n", "1 64.0 \n", "2 0.0 \n", "3 0.0 \n", "4 68.0 \n", ".. ... \n", "532 0.0 \n", "533 110.0 \n", "534 37.0 \n", "535 74.0 \n", "536 130.0 \n", "\n", " Body mass index (weight in kg/(height in m)^2) \\\n", "0 26.799999 \n", "1 33.599998 \n", "2 48.799999 \n", "3 24.600000 \n", "4 30.799999 \n", ".. ... \n", "532 35.099998 \n", "533 46.799999 \n", "534 31.200001 \n", "535 39.000000 \n", "536 42.599998 \n", "\n", " Diabetes pedigree function Age (years) \n", "0 0.731 43.0 \n", "1 0.510 22.0 \n", "2 0.227 37.0 \n", "3 0.660 31.0 \n", "4 0.122 37.0 \n", ".. ... ... \n", "532 0.200 37.0 \n", "533 0.962 31.0 \n", "534 0.192 23.0 \n", "535 0.261 28.0 \n", "536 0.431 24.0 \n", "\n", "[537 rows x 8 columns]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# lets access X_train_transformed\n", "get_config('X_train_transformed')" ] }, { "cell_type": "code", "execution_count": 23, "id": "ef9cd061", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The current seed is: 123\n", "The new seed is: 786\n" ] } ], "source": [ "# another example: let's access seed\n", "print(\"The current seed is: {}\".format(get_config('seed')))\n", "\n", "# now lets change it using set_config\n", "set_config('seed', 786)\n", "print(\"The new seed is: {}\".format(get_config('seed')))" ] }, { "attachments": {}, "cell_type": "markdown", "id": "7afbe41d", "metadata": {}, "source": [ "All the preprocessing configurations and experiment settings/parameters are passed into the `setup` function. To see all available parameters, check the docstring:" ] }, { "cell_type": "code", "execution_count": 24, "id": "2885a14f", "metadata": {}, "outputs": [], "source": [ "# help(setup)" ] }, { "cell_type": "code", "execution_count": 25, "id": "34ae0fce", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 DescriptionValue
0Session id123
1TargetClass variable
2Target typeBinary
3Original data shape(768, 9)
4Transformed data shape(768, 9)
5Transformed train set shape(537, 9)
6Transformed test set shape(231, 9)
7Numeric features8
8PreprocessTrue
9Imputation typesimple
10Numeric imputationmean
11Categorical imputationmode
12NormalizeTrue
13Normalize methodminmax
14Fold GeneratorStratifiedKFold
15Fold Number10
16CPU Jobs-1
17Use GPUFalse
18Log ExperimentFalse
19Experiment Nameclf-default-name
20USIf18d
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# init setup with normalize = True\n", "\n", "s = setup(data, target = 'Class variable', session_id = 123,\n", " normalize = True, normalize_method = 'minmax')" ] }, { "cell_type": "code", "execution_count": 26, "id": "04204ae7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqAAAAHTCAYAAAD4Yqo3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAqHElEQVR4nO3df3RU9Z3/8ddAfk1EWg0kR8AlSmQbIAwhKWx3ZVGLR7BRIIACLq6LlayCtAe6uEgLVKRUQO1WUcBWRFH5jdTqsVZdbbsiWQMJCwE2EYNpA5pUKdoZMkHu9w+W+TqEHzNw855c8nycwznNnTv5fCZvhz5zZ0h8juM4AgAAAIy0S/QGAAAA0LYQoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAU0mJ3kCstm/fLsdxlJycnOitAAAA4BSamprk8/mUn59/xvM8cwXUcRxZ/tImx3EUDodN14S7mKH3MUNvY37exwy9z3qGsfaaZ66AnrjymZeXZ7JeMBjU7t27lZOTo/T0dJM14S5m6H3M0NuYn/cxQ++znuH//M//xHSeZ66AAgAA4MJAgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMEWAAgAAwBQBCgAAAFMEKAAAAEwRoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAVFKiN9CaDXihUlJlorfRor58eEKitwAAANoYroACAADAFAEKAAAAUwQoAAAATBGgAAAAMEWAAgAAwBQBCgAAAFMEKAAAAEwRoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMEWAAgAAwNQ5B2g4HFZRUZG2bt0aOVZXV6e77rpLgUBA119/vV599dWo+/z617/WkCFDFAgENHnyZH366afnvnMAAAB40jkFaGNjo6ZNm6aqqqrIsaNHj6qkpERJSUnatGmT7rzzTs2YMUP/+7//K0nasWOHZs2apSlTpmjNmjU6fPiwZs6c6c6jAAAAgGckxXuH6upqTZ8+XY7jRB1/5513dODAAb344ovq0KGDrrzySv3ud7/T9u3b1bNnT61atUrDhg3TiBEjJEkLFy7Utddeq9raWl1++eWuPBgAAAC0fnFfAS0tLdXAgQO1Zs2aZse/9a1vqUOHDpFjTzzxhG699VZJUkVFhQoLCyO3XXbZZerSpYsqKirOde8AAADwoLivgI4fP/6Ux2tra9W1a1ctXrxYmzdv1iWXXKKpU6dqyJAhkqRPPvlEmZmZUffJyMjQwYMHz2HbAAAA8Kq4A/R0gsGgNm3apBtvvFFLly7V1q1bNXXqVK1Zs0Z5eXk6cuSIUlJSou6TkpKicDgc8xqO4ygYDLq15TMKhUIm6ySa1dczEU7MsK3M8kLEDL2N+XkfM/Q+6xk6jiOfz3fW81wL0Pbt2+vrX/+65s6dq3bt2ql37956//33tXbtWuXl5Sk1NbVZbIbDYfn9/pjXaGpq0u7du93aMqQ28fWsqalJ9BZwnpihtzE/72OG3mc5w5MvOJ6KawGamZkpn8+ndu3+/9tKr7jiCu3du1eSlJWVpYaGhqj7NDQ0qHPnzjGvkZycrJycHHc2fBbHv1OoNFkrkXJzcxO9hRYTCoVUU1Oj7OzsuL7RQevBDL2N+XkfM/Q+6xlWV1fHdJ5rARoIBPTkk0/qyy+/VPv27SVJH3zwgbp27Rq5vaysTMXFxZKkAwcO6MCBAwoEAjGv4fP5lJ6e7taWIbWJr6ff728Tj/NCxgy9jfl5HzP0PqsZxvLyu+Tib0IqKirSsWPH9OMf/1j79+/X888/r9///ve65ZZbJEnjxo3T5s2btW7dOu3Zs0czZszQNddcw49gAgAAaGNcC9AOHTpoxYoV2rdvn4qKivTss8/q0UcfVe/evSVJ+fn5euCBB7RkyRKNGzdOX/va17RgwQK3lgcAAIBHnNdL8Cfe33lCTk6OVq1addrzi4uLIy/BAwAAoG1y7QooAAAAEAsCFAAAAKYIUAAAAJgiQAEAAGCKAAUAAIApAhQAAACmCFAAAACYIkABAABgigAFAACAKQIUAAAApghQAAAAmCJAAQAAYIoABQAAgCkCFAAAAKYIUAAAAJgiQAEAAGCKAAUAAIApAhQAAACmCFAAAACYIkABAABgigAFAACAKQIUAAAApghQAAAAmCJAAQAAYIoABQAAgCkCFAAAAKYIUAAAAJgiQAEAAGCKAAUAAIApAhQAAACmCFAAAACYIkABAABgigAFAACAKQIUAAAApghQAAAAmCJAAQAAYOqcAzQcDquoqEhbt25tdtvnn3+uQYMGaePGjVHHf/3rX2vIkCEKBAKaPHmyPv3003NdHgAAAB51TgHa2NioadOmqaqq6pS3L1q0SJ988knUsR07dmjWrFmaMmWK1qxZo8OHD2vmzJnnsjwAAAA8LCneO1RXV2v69OlyHOeUt7///vt677331Llz56jjq1at0rBhwzRixAhJ0sKFC3XttdeqtrZWl19+efw7BwAAgCfFfQW0tLRUAwcO1Jo1a5rdFg6H9aMf/UizZ89WSkpK1G0VFRUqLCyMfHzZZZepS5cuqqioOIdtAwAAwKvivgI6fvz40962dOlS9erVS1dffXWz2z755BNlZmZGHcvIyNDBgwdjXttxHAWDwdg3ex5CoZDJOolm9fVMhBMzbCuzvBAxQ29jft7HDL3PeoaO48jn8531vLgD9HSqq6u1evVq/epXvzrl7UeOHGl2VTQlJUXhcDjmNZqamrR79+7z2ieitYWvZ01NTaK3gPPEDL2N+XkfM/Q+yxme3Hun4kqAOo6jH/7wh5o6dao6dep0ynNSU1ObxWY4HJbf7495neTkZOXk5JzXXmN1/DuFSpO1Eik3NzfRW2gxoVBINTU1ys7Ojuu/M7QezNDbmJ/3MUPvs55hdXV1TOe5EqB1dXXavn279u7dq4ceekjS8Qc8Z84cvfrqq/rFL36hrKwsNTQ0RN2voaGh2T9WOhOfz6f09HQ3toz/0xa+nn6/v008zgsZM/Q25ud9zND7rGYYy8vvkksBmpWVpddffz3q2IQJEzRhwgTdfPPNkqRAIKCysjIVFxdLkg4cOKADBw4oEAi4sQUAAAB4hCsBmpSUpO7duzc7lpGRoaysLEnSuHHjNGHCBPXr1095eXmaP3++rrnmGn4EEwAAQBvj2j9COpv8/Hw98MAD+vnPf66//OUv+od/+AfNmzfPankAAAC0EucVoHv37j3tbW+99VazY8XFxZGX4AEAANA2nfPvggcAAADOBQEKAAAAUwQoAAAATBGgAAAAMEWAAgAAwBQBCgAAAFMEKAAAAEwRoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMEWAAgAAwFRSojeAxGo//blEb6FFlY7vlegtAACAk3AFFAAAAKYIUAAAAJgiQAEAAGCKAAUAAIApAhQAAACmCFAAAACYIkABAABgigAFAACAKQIUAAAApghQAAAAmCJAAQAAYIoABQAAgCkCFAAAAKYIUAAAAJgiQAEAAGCKAAUAAIApAhQAAACmzjlAw+GwioqKtHXr1six8vJyjR07Vvn5+brhhhu0bt26qPu8++67KioqUiAQ0O23367a2tpz3zkAAAA86ZwCtLGxUdOmTVNVVVXkWH19ve666y4NGDBAmzZt0tSpUzVv3jy9/fbbkqS6ujpNnjxZxcXFWr9+vS699FLdc889chzHlQcCAAAAb4g7QKurq3XLLbfoo48+ijr+xhtvqFOnTpo2bZqys7P1ne98RyNGjNDLL78sSVq3bp369OmjiRMn6qqrrtKCBQv0pz/9SaWlpe48EgAAAHhC3AFaWlqqgQMHas2aNVHHBw0apAULFjQ7/4svvpAkVVRUqLCwMHLc7/erd+/eKi8vj3cLAAAA8LCkeO8wfvz4Ux7v1q2bunXrFvn4z3/+s1555RXde++9ko6/RJ+ZmRl1n4yMDB08eDDeLQAAAMDD4g7QWBw5ckT33nuvOnXqpFtvvVWSFAqFlJKSEnVeSkqKwuFwzJ/XcRwFg0FX93o6oVDIZB20PGbpXSdmxwy9ifl5HzP0PusZOo4jn8931vNcD9C//vWvuueee1RTU6MXXnhBfr9fkpSamtosNsPhsDp27Bjz525qatLu3btd3S8ufDU1NYneAs4TM/Q25ud9zND7LGd48gXHU3E1QL/44gt997vf1UcffaSVK1cqOzs7cltWVpYaGhqizm9oaFBubm7Mnz85OVk5OTlubfeMjn+nUGmyFlpWdnZ25BsheEsoFFJNTQ0z9Cjm533M0PusZ1hdXR3Tea4F6LFjxzRlyhT98Y9/1HPPPacePXpE3R4IBFRWVhb5OBQKqbKyUlOmTIl5DZ/Pp/T0dLe2jDbC7/fz343HMUNvY37exwy9z2qGsbz8Lrn4m5DWr1+vrVu36sEHH1THjh1VX1+v+vp6HTp0SJI0atQobdu2TcuXL1dVVZVmzpypbt26aeDAgW5tAQAAAB7g2hXQ3/zmNzp27JhKSkqijg8YMEDPPfecunXrpscee0w/+clPtGTJEuXn52vJkiUxlzIAAAAuDOcVoHv37o3871/+8pdnPX/w4MEaPHjw+SwJAAAAj3PtJXgAAAAgFgQoAAAATBGgAAAAMEWAAgAAwBQBCgAAAFMEKAAAAEwRoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMEWAAgAAwBQBCgAAAFMEKAAAAEwRoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMEWAAgAAwBQBCgAAAFMEKAAAAEwRoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADA1DkHaDgcVlFRkbZu3Ro5VltbqzvuuEP9+vXTjTfeqD/84Q9R93n33XdVVFSkQCCg22+/XbW1tee+cwAAAHjSOQVoY2Ojpk2bpqqqqsgxx3E0efJkderUSRs2bNDw4cM1ZcoU1dXVSZLq6uo0efJkFRcXa/369br00kt1zz33yHEcdx4JAAAAPCHuAK2urtYtt9yijz76KOr4e++9p9raWj3wwAPq0aOHSkpK1K9fP23YsEGStG7dOvXp00cTJ07UVVddpQULFuhPf/qTSktL3XkkAAAA8IS4A7S0tFQDBw7UmjVroo5XVFSoV69eSk9PjxwrKChQeXl55PbCwsLIbX6/X717947cDgAAgLYhKd47jB8//pTH6+vrlZmZGXUsIyNDBw8ejOn2WDiOo2AwGOeOz00oFDJZBy2PWXrXidkxQ29ift7HDL3PeoaO48jn8531vLgD9HRCoZBSUlKijqWkpCgcDsd0eyyampq0e/fu898s2pSamppEbwHniRl6G/PzPmbofZYzPLn3TsW1AE1NTdWhQ4eijoXDYaWlpUVuPzk2w+GwOnbsGPMaycnJysnJOe+9xuL4dwqVJmuhZWVnZ8vv9yd6GzgHoVBINTU1zNCjmJ/3MUPvs55hdXV1TOe5FqBZWVnNFm1oaIi87J6VlaWGhoZmt+fm5sa8hs/ni3qPKRALv9/Pfzcexwy9jfl5HzP0PqsZxvLyu+TiD6IPBALatWuXjhw5EjlWVlamQCAQub2srCxyWygUUmVlZeR2AAAAtA2uBeiAAQN02WWXaebMmaqqqtLy5cu1Y8cOjR49WpI0atQobdu2TcuXL1dVVZVmzpypbt26aeDAgW5tAQAAAB7gWoC2b99eTzzxhOrr61VcXKxf/epXWrJkibp06SJJ6tatmx577DFt2LBBo0eP1qFDh7RkyZKYL9UCAADgwnBe7wHdu3dv1Mfdu3fXqlWrTnv+4MGDNXjw4PNZEgAAAB7n2hVQAAAAIBYEKAAAAEwRoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMEWAAgAAwBQBCgAAAFMEKAAAAEwRoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMEWAAgAAwBQBCgAAAFMEKAAAAEwRoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMOVqgB44cEAlJSXq37+/rrvuOj3zzDOR2yorKzVmzBgFAgGNGjVKO3fudHNpAAAAeISrAfr9739f6enp2rhxo+6//3797Gc/029/+1sFg0FNmjRJhYWF2rhxo/Lz81VSUqJgMOjm8gAAAPAA1wL0L3/5i8rLy3X33XcrOztbQ4YM0aBBg7Rlyxa9+uqrSk1N1YwZM9SjRw/NmjVLF110kV577TW3lgcAAIBHJLn1idLS0uT3+7Vx40ZNnz5dtbW12rZtm77//e+roqJCBQUF8vl8kiSfz6f+/furvLxcxcXFbm0BaGbAC5WSKhO9jRbz5cMTEr0FAADi5lqApqamavbs2Zo3b56effZZffnllyouLtaYMWP05ptvKicnJ+r8jIwMVVVVxbWG4zhmL9uHQiGTdYDzcaG/jeXE85DnozcxP+9jht5nPUPHcSIXHM/EtQCVpA8++EDXXnut/uVf/kVVVVWaN2+evvWtbykUCiklJSXq3JSUFIXD4bg+f1NTk3bv3u3mlgFPayvPh5qamkRvAeeB+XkfM/Q+yxme3Hyn4lqAbtmyRevXr9c777yjtLQ05eXl6eOPP9aTTz6pyy+/vFlshsNhpaWlxbVGcnJysyupLeX4dwoX7ku3uDDk5uYmegstKhQKqaamRtnZ2fL7/YneDuLE/LyPGXqf9Qyrq6tjOs+1AN25c6e6d+8eFZW9evXS0qVLVVhYqIaGhqjzGxoalJmZGdcaPp9P6enpruwXuBC0leeD3+9vM4/1QsT8vI8Zep/VDGN5+V1y8V/BZ2Zmav/+/VFXOvft26du3bopEAho+/btchxH0vH3B2zbtk2BQMCt5QEAAOARrgXoddddp+TkZP3whz/Uhx9+qLfeektLly7VhAkTNHToUB0+fFjz589XdXW15s+fr1AopGHDhrm1PAAAADzCtQC9+OKL9cwzz6i+vl6jR4/WggULdPfdd+vWW29Vhw4dtGzZMpWVlam4uFgVFRVavnw5l/MBAADaIFf/FXxOTo5WrFhxytv69u2rTZs2ubkcAAAAPMjVX8UJAAAAnA0BCgAAAFMEKAAAAEwRoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMEWAAgAAwBQBCgAAAFMEKAAAAEwRoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMEWAAgAAwBQBCgAAAFMEKAAAAEwRoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMOVqgIbDYf34xz/WN7/5Tf393/+9HnnkETmOI0mqrKzUmDFjFAgENGrUKO3cudPNpQEAAOARrgbogw8+qHfffVe//OUv9fDDD2vt2rVas2aNgsGgJk2apMLCQm3cuFH5+fkqKSlRMBh0c3kAAAB4QJJbn+jQoUPasGGDVqxYob59+0qSJk6cqIqKCiUlJSk1NVUzZsyQz+fTrFmz9Lvf/U6vvfaaiouL3doCAAAAPMC1K6BlZWXq0KGDBgwYEDk2adIkLViwQBUVFSooKJDP55Mk+Xw+9e/fX+Xl5W4tDwAAAI9w7QpobW2tunbtqpdeeklLly5VU1OTiouLdffdd6u+vl45OTlR52dkZKiqqiquNRzHMXvZPhQKmawDnI8L/W0sJ56HPB+9ifl5HzP0PusZOo4TueB4Jq4FaDAY1P79+7V69WotWLBA9fX1mj17tvx+v0KhkFJSUqLOT0lJUTgcjmuNpqYm7d69260tA57XVp4PNTU1id4CzgPz8z5m6H2WMzy5+U7FtQBNSkrSF198oYcfflhdu3aVJNXV1enFF19U9+7dm8VmOBxWWlpaXGskJyc3u5LaUo5/p1BpshZwrnJzcxO9hRYVCoVUU1Oj7Oxs+f3+RG8HcWJ+3scMvc96htXV1TGd51qAdu7cWampqZH4lKQrrrhCBw4c0IABA9TQ0BB1fkNDgzIzM+Naw+fzKT093ZX9AheCtvJ88Pv9beaxXoiYn/cxQ++zmmEsL79LLv4jpEAgoMbGRn344YeRY/v27VPXrl0VCAS0ffv2yM8EdRxH27ZtUyAQcGt5AAAAeIRrAXrllVfqmmuu0cyZM7Vnzx79/ve/1/LlyzVu3DgNHTpUhw8f1vz581VdXa358+crFApp2LBhbi0PAAAAj3DtJXhJWrx4sebNm6dx48bJ7/frtttu04QJE+Tz+bRs2TLNmTNHa9eu1d/+7d9q+fLlXM4HcFYDXqjUhfx+7C8fnpDoLQCAOVcD9OKLL9bChQtPeVvfvn21adMmN5cDAACAB7n6qzgBAACAsyFAAQAAYIoABQAAgCkCFAAAAKYIUAAAAJgiQAEAAGCKAAUAAIApAhQAAACmCFAAAACYIkABAABgigAFAACAKQIUAAAApghQAAAAmCJAAQAAYIoABQAAgCkCFAAAAKYIUAAAAJgiQAEAAGCKAAUAAIApAhQAAACmCFAAAACYIkABAABgigAFAACAKQIUAAAApghQAAAAmCJAAQAAYIoABQAAgCkCFAAAAKYIUAAAAJgiQAEAAGCKAAUAAIApAhQAAACmCFAAAACYIkABAABgigAFAACAqRYL0EmTJunf//3fIx9XVlZqzJgxCgQCGjVqlHbu3NlSSwMAAKAVa5EAfeWVV/TOO+9EPg4Gg5o0aZIKCwu1ceNG5efnq6SkRMFgsCWWBwAAQCvmeoAeOnRICxcuVF5eXuTYq6++qtTUVM2YMUM9evTQrFmzdNFFF+m1115ze3kAAAC0cq4H6EMPPaThw4crJycncqyiokIFBQXy+XySJJ/Pp/79+6u8vNzt5QEAANDKJbn5ybZs2aL3339fL7/8subOnRs5Xl9fHxWkkpSRkaGqqqq4Pr/jOGYv24dCIZN1gPNxob+NpS08Dy/kGZ6YX1uY44WKGXqf9Qwdx4lccDwT1wK0sbFRc+bM0ezZs5WWlhZ1WygUUkpKStSxlJQUhcPhuNZoamrS7t27z3uvwIWC54P3XfyjDYneQosqHd9LNTU1id4GzhMz9D7LGZ7cfKfiWoA+/vjj6tOnjwYNGtTsttTU1GaxGQ6Hm4Xq2SQnJze7ktpSjn+nUGmyFnCucnNzE72FFsXz8MKQnZ0tv9+f6G3gHIRCIdXU1DBDD7OeYXV1dUznuRagr7zyihoaGpSfny9JkeD8zW9+o6KiIjU0NESd39DQoMzMzLjW8Pl8Sk9Pd2fDwAWA5wO8wO/389+qxzFD77OaYSwvv0suBuhzzz2no0ePRj5evHixJOkHP/iB/vu//1tPPfVU5H0BjuNo27Zt+td//Ve3lgcAAIBHuBagXbt2jfr4oosukiR1795dGRkZevjhhzV//nyNHTtWq1evVigU0rBhw9xaHgAAAB5h8qs4O3TooGXLlqmsrEzFxcWqqKjQ8uXLuZwPAADQBrn6Y5i+6qc//WnUx3379tWmTZtaajkAAAB4hMkVUAAAAOAEAhQAAACmCFAAAACYIkABAABgigAFAACAKQIUAAAApghQAAAAmCJAAQAAYIoABQAAgCkCFAAAAKYIUAAAAJgiQAEAAGAqKdEbAHDu2k9/LtFbAAAgblwBBQAAgCkCFAAAAKYIUAAAAJgiQAEAAGCKAAUAAIApAhQAAACmCFAAAACYIkABAABgigAFAACAKQIUAAAApghQAAAAmCJAAQAAYIoABQAAgCkCFAAAAKYIUAAAAJgiQAEAAGCKAAUAAIApAhQAAACmCFAAAACYIkABAABgigAFAACAKQIUAAAApghQAAAAmHI1QD/++GNNnTpVAwYM0KBBg7RgwQI1NjZKkmpra3XHHXeoX79+uvHGG/WHP/zBzaUBAADgEa4FqOM4mjp1qkKhkJ5//nk9+uij+s///E/97Gc/k+M4mjx5sjp16qQNGzZo+PDhmjJliurq6txaHgAAAB6R5NYn2rdvn8rLy/Vf//Vf6tSpkyRp6tSpeuihh/SP//iPqq2t1erVq5Wenq4ePXpoy5Yt2rBhg+699163tgAAAAAPcO0KaOfOnfWLX/wiEp8nfPHFF6qoqFCvXr2Unp4eOV5QUKDy8nK3lgcAAIBHuHYFtGPHjho0aFDk42PHjmnVqlX6u7/7O9XX1yszMzPq/IyMDB08eDCuNRzHUTAYdGW/ZxMKhUzWAYALHX+feteJ2TFD77KeoeM48vl8Zz3PtQA92aJFi1RZWan169frmWeeUUpKStTtKSkpCofDcX3OpqYm7d69281tAgBaWE1NTaK3gPPEDL3PcoYnN9+ptEiALlq0SCtXrtSjjz6qnj17KjU1VYcOHYo6JxwOKy0tLa7Pm5ycrJycHBd3enrHv1OoNFkLAC5k2dnZ8vv9id4GzkEoFFJNTQ0z9DDrGVZXV8d0nusBOm/ePL344otatGiRbrjhBklSVlZWsw01NDQ0e1n+bHw+X9T7SAEArZ/f7+fvbo9jht5nNcNYXn6XXP45oI8//rhWr16tRx55RN/5zncixwOBgHbt2qUjR45EjpWVlSkQCLi5PAAAADzAtQD94IMP9MQTT+iuu+5SQUGB6uvrI38GDBigyy67TDNnzlRVVZWWL1+uHTt2aPTo0W4tDwAAAI9w7SX4N998U19++aWefPJJPfnkk1G37d27V0888YRmzZql4uJide/eXUuWLFGXLl3cWh4AAAAe4VqATpo0SZMmTTrt7d27d9eqVavcWg4AAAAe5ep7QAEAAICzIUABAABgigAFAACAKQIUAAAApghQAAAAmGqx3wUPAEBb0H76c4neQosqHd8r0VvABYgroAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMEWAAgAAwBQBCgAAAFMEKAAAAEwRoAAAADCVlOgNAAAuXANeqJRUmehtAGhluAIKAAAAUwQoAAAATBGgAAAAMEWAAgAAwBQBCgAAAFMEKAAAAEwRoAAAADBFgAIAAMAUAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMGUaoI2Njbr//vtVWFioq6++Wk8//bTl8gAAAGgFkiwXW7hwoXbu3KmVK1eqrq5O9913n7p06aKhQ4dabgMAAAAJZBagwWBQ69at01NPPaXevXurd+/eqqqq0vPPP0+AAgAAtCFmAbpnzx4dPXpU+fn5kWMFBQVaunSpjh07pnbteDsqAACtzYAXKiVVJnobOA+l43slegvNmAVofX29LrnkEqWkpESOderUSY2NjTp06JAuvfTSM96/qalJjuNox44dLb1VSZLjONp0c47JWgAAAC2pqqpKPp+vxddpamqKaR2zAA2FQlHxKSnycTgcPuv9TzwYiy/eiXWuuLSDyVoAAAAXAp/P17oCNDU1tVlonvg4LS3trPf/6kv3AAAA8C6zN15mZWXps88+09GjRyPH6uvrlZaWpo4dO1ptAwAAAAlmFqC5ublKSkpSeXl55FhZWZny8vL4B0gAAABtiFn5+f1+jRgxQnPnztWOHTv0xhtv6Omnn9btt99utQUAAAC0Aj7HcRyrxUKhkObOnavXX39dHTp00J133qk77rjDankAAAC0AqYBCgAAAPDmSwAAAJgiQAEAAGCKAAUAAICpNh2gjY2Nuv/++1VYWKirr75aTz/99GnPrays1JgxYxQIBDRq1Cjt3LnTcKc4nXhm+Pbbb2v48OHKz8/XTTfdpDfffNNwpzideGZ4wh//+Efl5+dr69atBjvEmcQzv71792rcuHHq27evbrrpJr333nuGO8XpxDPD3/72txo2bJjy8/M1btw47dq1y3CnOJtwOKyioqIz/t3YWnqmTQfowoULtXPnTq1cuVJz5szR448/rtdee63ZecFgUJMmTVJhYaE2btyo/Px8lZSUKBgMJmDX+KpYZ7hnzx5NmTJFo0aN0ksvvaSxY8fqe9/7nvbs2ZOAXeOrYp3hV82dO5fnXysR6/w+//xzTZw4UTk5OXr55Zd1/fXXa8qUKfrzn/+cgF3jq2KdYVVVlaZPn66SkhJt3rxZubm5KikpUSgUSsCucbLGxkZNmzZNVVVVpz2nVfWM00b99a9/dfLy8pz33nsvcmzJkiXOP/3TPzU7d926dc51113nHDt2zHEcxzl27Jhz/fXXOxs2bDDbL5qLZ4aLFi1y7rzzzqhjEydOdB555JEW3ydOL54ZnrB582Zn7NixTs+ePaPuB3vxzG/lypXOkCFDnKNHj0aOFRcXO2+//bbJXnFq8cxwxYoVzsiRIyMff/75507Pnj2dHTt2mOwVp1dVVeXcfPPNzk033XTGvxtbU8+02Suge/bs0dGjR6N+x3xBQYEqKip07NixqHMrKipUUFAgn88nSfL5fOrfv3/Ub3WCvXhmOHLkSP3gBz9o9jk+//zzFt8nTi+eGUrSZ599pkWLFumBBx6w3CZOI575lZaW6tvf/rbat28fObZhwwYNHjzYbL9oLp4Zfv3rX1d1dbXKysp07Ngxbdy4UR06dNDf/M3fWG8bJyktLdXAgQO1Zs2aM57XmnomyXzFVqK+vl6XXHKJUlJSIsc6deqkxsZGHTp0SJdeemnUuTk5OVH3z8jIOONlbrS8eGbYo0ePqPtWVVVpy5YtGjt2rNl+0Vw8M5Skn/70pxo5cqSuuuoq663iFOKZX21trfr27asf/ehHeuutt9S1a1fdd999KigoSMTW8X/imeGNN96ot956S+PHj1f79u3Vrl07LVu2TF/72tcSsXV8xfjx42M6rzX1TJu9AhoKhaKecJIiH4fD4ZjOPfk82Ipnhl/16aef6t5771X//v317W9/u0X3iDOLZ4bvvvuuysrKdM8995jtD2cWz/yCwaCWL1+uzp0766mnntI3v/lN3XnnnTpw4IDZftFcPDP87LPPVF9fr9mzZ2vt2rUaPny4Zs6cyft4PaQ19UybDdDU1NRmX/ATH6elpcV07snnwVY8MzyhoaFB//zP/yzHcfTzn/9c7dq12adAqxDrDI8cOaLZs2drzpw5PO9akXieg+3bt1dubq6mTp2qXr166d/+7d+UnZ2tzZs3m+0XzcUzw8WLF6tnz5667bbb1KdPH82bN09+v18bNmww2y/OT2vqmTb7/75ZWVn67LPPdPTo0cix+vp6paWlqWPHjs3ObWhoiDrW0NCgzMxMk73i1OKZoSR9/PHHuu222xQOh/Xss882e3kX9mKd4Y4dO1RbW6upU6cqPz8/8n61u+66S7NnzzbfN46L5znYuXNnXXnllVHHsrOzuQKaYPHMcNeuXfrGN74R+bhdu3b6xje+obq6OrP94vy0pp5pswGam5urpKSkqDfelpWVKS8vr9lVsUAgoO3bt8txHEmS4zjatm2bAoGA5ZZxknhmGAwG9d3vflft2rXTqlWrlJWVZbxbnEqsM+zbt69ef/11vfTSS5E/kvTggw/qe9/7nvGucUI8z8F+/fpp7969Ucf27dunrl27WmwVpxHPDDMzM/XBBx9EHfvwww/VrVs3i63CBa2pZ9psgPr9fo0YMUJz587Vjh079MYbb+jpp5/W7bffLun4d4BHjhyRJA0dOlSHDx/W/PnzVV1drfnz5ysUCmnYsGGJfAhtXjwzXLZsmT766CM99NBDkdvq6+v5V/AJFusM09LS1L1796g/0vHv5jMyMhL5ENq0eJ6DY8eO1d69e/XYY49p//79+o//+A/V1tZq+PDhiXwIbV48M7zlllu0du1avfTSS9q/f78WL16suro6jRw5MpEPAWfRanvG/Ac/tSLBYNCZMWOG069fP+fqq692VqxYEbmtZ8+eUT8Xq6KiwhkxYoSTl5fnjB492tm1a1cCdoyTxTrDG264wenZs2ezP/fdd1+Cdo4T4nkefhU/B7R1iGd+77//vjNy5EinT58+zvDhw53S0tIE7Bgni2eGa9eudYYOHer069fPGTdunLNz584E7BhncvLfja21Z3yO83/XYQEAAAADbfYleAAAACQGAQoAAABTBCgAAABMEaAAAAAwRYACAADAFAEKAAAAUwQoAAAATBGgAAAAMEWAAgAAwBQBCgAAAFMEKAAAAEwRoAAAADD1/wBD+nOfxByShQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# lets check the X_train_transformed to see effect of params passed\n", "get_config('X_train_transformed')['Number of times pregnant'].hist()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "d28a3e4e", "metadata": {}, "source": [ "Notice that all the values are between 0 and 1 - that is because we passed `normalize=True` in the `setup` function. If you don't remember how it compares to actual data, no problem - we can also access non-transformed values using `get_config` and then compare. See below and notice the range of values on x-axis and compare it with histogram above." ] }, { "cell_type": "code", "execution_count": 27, "id": "68cc1c63", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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23Ts2NHs2LEj4DhtaM/56nppjDEjRoww8+bNC+hNaWlptft47733THJysvnkk09Mdna2ufzyy81DDz0UqodQJ1TXx/379wf0b/369aZz587mww8/rHYf3377renevXvAfYqLi4Oqo8EG0YMHD5rExMSAg3j27NnmxhtvrDJ36dKl5tJLL/U/2SsrK02/fv3M8uXLQ1ZvXZaXl2c6duxoioqK/GNvvfWW6dmzZ5W55eXlJiEhweTn54eyxLAyadIkM2vWrF+d99RTTwUcr6WlpSYpKSngmMb/N3fuXNO3b99qf+kpKCgwF1xwgSkrK7NQWd2Um5trrrrqKnPllVcG/KD66quvTNeuXQN+Eb/55pvN008/Xe1+/vrXv5q77rrLf3vnzp3m/PPPNzt27Di1D6AOqamXr732munfv3/A3Pvvv99MnDix2v18+eWX5uKLLz7l9dZlNfXSGGN69eplVq1aVav9DBs2LOCY/eabb0yXLl1qDK71zfH6+EsjR440d955Z437WbJkibnuuutOqpYGe2l+y5YtOnToUMB32CcnJys7O1uVlZUBc7Ozs5WcnCyXyyVJcrlc6tatW8C3RDVkLVq00AsvvKDmzZsHjB84cKDK3Pz8fLlcLp199tmhKi/sbNu2TXFxcb86Lzs7WykpKf7bbrdbnTp14risRklJiZ5//nlNmjRJkZGRVbbn5eWpdevWioqKslBd3bR27Vr16NFDixcvDhjPzs7WhRdeqJiYGP9YcnJyjcfdscdp69at1aZNG2VnZ5+Suuuimnp59G1Mx6rutVM6cpyec845p6TGcFFTLw8cOKA9e/bU6rXz8OHD+u677wKOy65du6qiokJbtmxxuuQ6qaY+/tLXX3+tb775RhMnTqxxTl5eXq16fjwRJ3XvMFZUVKQzzzwz4IdS8+bNVV5erpKSEp111lkBc+Pj4wPuHxsbq9zc3JDVW5c1bdpUvXr18t+urKzUwoUL9fvf/77K3Pz8fDVp0kSTJ0/W2rVr9dvf/lbjx49X7969Q1lynWWM0fbt2/XFF19o3rx5Onz4sPr3768JEyZUCVBFRUVq2bJlwFhsbKx2794dypLDwuuvv66WLVuqf//+1W7ftm2bGjdurNGjR2vjxo0655xzNHnyZHXp0iXEldYdw4YNq3Y82ONu7969Df44ramX7dq1U7t27fy3//Wvf+mdd97R+PHjq52/bds2eb1eDR8+XNu3b1dCQoLuueeeBhVOa+rltm3b5HK5NHfuXH3++edq1qyZ/vSnP+maa66pMnf//v0qLy8POC4jIiLUrFmzBnNc1tTHX8rIyNA111yj1q1b1zhn27ZtOnTokAYPHqw9e/YoJSVF6enpVZ7zx9Ngz4h6vd4qP9iP3vb5fLWae+w8HDFz5kzl5OToL3/5S5Vt+fn5KisrU8+ePfXCCy+od+/eGjNmjL777jsLldY9O3fu9B9vTz31lO666y699dZbmjFjRpW5HJe1Y4zR0qVLdeONN9Y4Z/v27dq3b5+GDBmijIwMdejQQTfffLN27doVwkrDQ7DHXVlZGcdpLZSVlWn8+PFq3ry5rrvuumrn5Ofna9++fRozZozmzJmj6OhojRgxosYzqA3J0att5557rjIyMjRkyBDdf//9+vDDD6vMLSsrkySOy+MoLCzU6tWrNXz48OPOy8/P14EDB5Senq4nn3xSe/fu1e23367Dhw/Xeq0Ge0Y0KiqqygF39HZ0dHSt5h47D0dC6CuvvKInn3xSHTt2rLL9jjvu0PDhw3XGGWdIki644AJt2rRJS5YsUWJiYqjLrXPatm2rNWvW6IwzzpDL5VJCQoIqKyv117/+Venp6WrUqJF/bk3HZdOmTUNddp323Xffac+ePbriiitqnDN16lSVlZWpSZMmkqQpU6Zo3bp1evPNN3X77beHqtSwEBUVpZKSkoCx470e1nScut3uU1Vi2Dl48KDuuOMOFRQU6LXXXquxN/Pnz1dFRYVOP/10SdLjjz+u3r1769NPP9WVV14ZypLrnIEDB+qSSy5Rs2bNJB352VJQUKDXX39d/fr1C5h79C04HJc1e//995WQkFDlavCx3nnnHblcLv/z/+mnn1bPnj2VnZ2tbt261WqtBntGtFWrVvr555916NAh/1hRUZGio6Or/CBv1aqViouLA8aKi4uDOvXcEEydOlUvvfSSZs6cqcsuu6zaOaeddpo/hB517rnnas+ePaEoMSw0a9bM/35kSerQoYPKy8u1b9++gHk1HZctWrQISZ3hYtWqVUpJSaly3P1SRESEP4RK8p9Z4bisKtjXQ47T4ztw4IBuueUW5ebm6pVXXjnu++0iIyP9IVQ6EqjatWvHcaojz9mjIfSomp7DzZo1U1RUVMBxeejQIZWUlHBc/p9Vq1bpP//zP391ntvtDvglNDY2Vs2aNQvqmGywQTQhIUEREREBb7DPzMxUYmKiTjstsC0ej0fr16+XMUbSkUt969atk8fjCWXJddqzzz6rRYsW6Yknnjjumae7775b6enpAWNbtmzRueeee6pLDAurVq1Sjx49Aj7PbvPmzWrWrFnA+5alI8dlZmam/7bX61VOTg7H5TE2bNjwq7+ZDx8+XM8++6z/dmVlpbZu3cpxWQ2Px6NNmzb5L29KR147azrujj1Od+3apV27dnGc6shxNm7cOP3zn//UggULdN5559U41xijvn37asWKFf6x0tJS/fDDDxynkv7nf/5HI0aMCBir6WfLaaedpsTExIDjMisrSxERETV+znBDYozRd99996uvmwcOHNDvfvc7rV692j+2Z88e/fzzz0Edkw02iLrdbg0cOFBTpkzRhg0b9NFHH+nFF1/0f2hrUVGR/4W2f//+2r9/v6ZNm6a8vDxNmzZNXq9XAwYMsPkQ6oxt27Zpzpw5uu2225ScnKyioiL/Pymwl5deeqneeustvfHGG/rhhx/07LPPKjMz87jv32tIkpKSFBUVpfvuu0/5+fn67LPPNGPGDN166606fPiwioqK/JeTBg0apHXr1ikjI0O5ublKT09Xu3btgv8w4XouNze3yuWlY3t56aWX6uWXX9bHH3+s/Px8Pfzww/r3v/9d7R86NHTdu3dX69atlZ6ertzcXGVkZGjDhg0aPHiwpCOXN4uKivzvERs6dKjefPNNLV26VFu2bNHkyZPVp08fPjlD0rJly7RmzRo98sgjatq0qf918+hbH37ZS5fLpT59+uiZZ57RmjVrlJubq8mTJ+u3v/0tf+wp6ZJLLtE333yj+fPna8eOHXrttdf0xhtvaOTIkZKOvC/06M8k6cgf68yfP18fffSRNmzYoClTpujaa6/l0rykH3/8UQcPHqz2svwv+9ikSRMlJydr+vTp2rBhgzZt2qS//OUv6tWrl84///zaL3hSH/4U5kpLS83kyZNN165dTc+ePc1LL73k39axY8eAzwnNzs42AwcONImJiWbw4MFm06ZNFiqum+bNm2c6duxY7T9jqvZyyZIl5o9//KPp3Lmzueaaa8zatWttlV4nff/992bEiBGma9eu5uKLLzbPPPOMqaysNIWFhVU+7+0f//iH+eMf/2i6dOlibr755gb12Yy1lZiYaD7//POAsWN7WVlZaZ577jnTp08f07lzZ3PDDTeYrVu32ii3Tjr2uCsoKDA33HCD6dy5s7niiivMl19+6d+2evVq07FjR1NYWOgfW758uendu7fp2rWrGTt2rPnpp59CWn9d8stejhw5strXzaOfD3xsL8vKysz06dPNxRdfbDwejxk9erTZuXOntcdi27HH5YcffmiuvPJKk5iYaPr372/ef/99/7bly5f7fyYdNW/ePHPRRReZ5ORkk56e3mA/R/jYPmZlZZmOHTtW+5nLx/axpKTE3H333aZHjx4mKSnJ3HnnnaakpCSo9V3G/N/1ZgAAACCEGuyleQAAANhFEAUAAIAVBFEAAABYQRAFAACAFQRRAAAAWEEQBQAAgBUEUQAAAFhBEAUAAIAVBFEAAABYQRAFAACAFQRRAAAAWEEQBQAAgBX/D3Qvs1NC4yLxAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "get_config('X_train')['Number of times pregnant'].hist()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "b3776fbf", "metadata": {}, "source": [ "___" ] }, { "attachments": {}, "cell_type": "markdown", "id": "36b8b803", "metadata": {}, "source": [ "## ✅ Compare Models\n", "This function trains and evaluates the performance of all estimators available in the model library using cross-validation. The output of this function is a scoring grid with average cross-validated scores. Metrics evaluated during CV can be accessed using the `get_metrics` function. Custom metrics can be added or removed using `add_metric` and `remove_metric` function." ] }, { "cell_type": "code", "execution_count": 28, "id": "a3350418", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCTT (Sec)
ridgeRidge Classifier0.77080.00000.53920.73530.62030.46180.47440.0340
lrLogistic Regression0.76890.80680.49590.76140.59680.44530.46730.0360
ldaLinear Discriminant Analysis0.76700.80550.55500.72020.62430.45940.46950.0340
svmSVM - Linear Kernel0.75210.00000.50700.73630.57960.41540.43980.0340
rfRandom Forest Classifier0.74850.79170.53360.67840.59460.41640.42450.1340
nbNaive Bayes0.74270.79570.57020.65430.60430.41560.42150.0390
catboostCatBoost Classifier0.74100.79940.52780.66300.58510.40050.40780.0430
gbcGradient Boosting Classifier0.73730.79200.55500.64450.59310.40130.40590.0730
adaAda Boost Classifier0.73720.77990.52750.65850.57960.39260.40170.0690
etExtra Trees Classifier0.72990.77880.49650.65160.55960.37060.38020.1330
qdaQuadratic Discriminant Analysis0.72820.78940.52810.65580.57360.37850.39100.0360
lightgbmLight Gradient Boosting Machine0.71130.76530.51810.60360.55330.34270.34790.0480
knnK Neighbors Classifier0.70020.74330.48600.59650.53110.31420.32100.0570
dtDecision Tree Classifier0.69470.65260.51370.56650.53430.31030.31300.0380
xgboostExtreme Gradient Boosting0.68530.75220.49120.56200.52160.28870.29220.0390
dummyDummy Classifier0.65180.50000.00000.00000.00000.00000.00000.0380
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/69 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NameReferenceTurbo
ID
lrLogistic Regressionsklearn.linear_model._logistic.LogisticRegressionTrue
knnK Neighbors Classifiersklearn.neighbors._classification.KNeighborsCl...True
nbNaive Bayessklearn.naive_bayes.GaussianNBTrue
dtDecision Tree Classifiersklearn.tree._classes.DecisionTreeClassifierTrue
svmSVM - Linear Kernelsklearn.linear_model._stochastic_gradient.SGDC...True
rbfsvmSVM - Radial Kernelsklearn.svm._classes.SVCFalse
gpcGaussian Process Classifiersklearn.gaussian_process._gpc.GaussianProcessC...False
mlpMLP Classifiersklearn.neural_network._multilayer_perceptron....False
ridgeRidge Classifiersklearn.linear_model._ridge.RidgeClassifierTrue
rfRandom Forest Classifiersklearn.ensemble._forest.RandomForestClassifierTrue
qdaQuadratic Discriminant Analysissklearn.discriminant_analysis.QuadraticDiscrim...True
adaAda Boost Classifiersklearn.ensemble._weight_boosting.AdaBoostClas...True
gbcGradient Boosting Classifiersklearn.ensemble._gb.GradientBoostingClassifierTrue
ldaLinear Discriminant Analysissklearn.discriminant_analysis.LinearDiscrimina...True
etExtra Trees Classifiersklearn.ensemble._forest.ExtraTreesClassifierTrue
xgboostExtreme Gradient Boostingxgboost.sklearn.XGBClassifierTrue
lightgbmLight Gradient Boosting Machinelightgbm.sklearn.LGBMClassifierTrue
catboostCatBoost Classifiercatboost.core.CatBoostClassifierTrue
dummyDummy Classifiersklearn.dummy.DummyClassifierTrue
\n", "" ], "text/plain": [ " Name \\\n", "ID \n", "lr Logistic Regression \n", "knn K Neighbors Classifier \n", "nb Naive Bayes \n", "dt Decision Tree Classifier \n", "svm SVM - Linear Kernel \n", "rbfsvm SVM - Radial Kernel \n", "gpc Gaussian Process Classifier \n", "mlp MLP Classifier \n", "ridge Ridge Classifier \n", "rf Random Forest Classifier \n", "qda Quadratic Discriminant Analysis \n", "ada Ada Boost Classifier \n", "gbc Gradient Boosting Classifier \n", "lda Linear Discriminant Analysis \n", "et Extra Trees Classifier \n", "xgboost Extreme Gradient Boosting \n", "lightgbm Light Gradient Boosting Machine \n", "catboost CatBoost Classifier \n", "dummy Dummy Classifier \n", "\n", " Reference Turbo \n", "ID \n", "lr sklearn.linear_model._logistic.LogisticRegression True \n", "knn sklearn.neighbors._classification.KNeighborsCl... True \n", "nb sklearn.naive_bayes.GaussianNB True \n", "dt sklearn.tree._classes.DecisionTreeClassifier True \n", "svm sklearn.linear_model._stochastic_gradient.SGDC... True \n", "rbfsvm sklearn.svm._classes.SVC False \n", "gpc sklearn.gaussian_process._gpc.GaussianProcessC... False \n", "mlp sklearn.neural_network._multilayer_perceptron.... False \n", "ridge sklearn.linear_model._ridge.RidgeClassifier True \n", "rf sklearn.ensemble._forest.RandomForestClassifier True \n", "qda sklearn.discriminant_analysis.QuadraticDiscrim... True \n", "ada sklearn.ensemble._weight_boosting.AdaBoostClas... True \n", "gbc sklearn.ensemble._gb.GradientBoostingClassifier True \n", "lda sklearn.discriminant_analysis.LinearDiscrimina... True \n", "et sklearn.ensemble._forest.ExtraTreesClassifier True \n", "xgboost xgboost.sklearn.XGBClassifier True \n", "lightgbm lightgbm.sklearn.LGBMClassifier True \n", "catboost catboost.core.CatBoostClassifier True \n", "dummy sklearn.dummy.DummyClassifier True " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# check available models\n", "models()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "f588f54b", "metadata": {}, "source": [ "You can use the `include` and `exclude` parameter in the `compare_models` to train only select model or exclude specific models from training by passing the model id's in `exclude` parameter." ] }, { "cell_type": "code", "execution_count": 30, "id": "f2a7e578", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCTT (Sec)
rfRandom Forest Classifier0.74850.79170.53360.67840.59460.41640.42450.1200
catboostCatBoost Classifier0.74100.79940.52780.66300.58510.40050.40780.0410
gbcGradient Boosting Classifier0.73730.79200.55500.64450.59310.40130.40590.0780
etExtra Trees Classifier0.72990.77880.49650.65160.55960.37060.38020.1300
lightgbmLight Gradient Boosting Machine0.71130.76530.51810.60360.55330.34270.34790.0460
dtDecision Tree Classifier0.69470.65260.51370.56650.53430.31030.31300.0360
xgboostExtreme Gradient Boosting0.68530.75220.49120.56200.52160.28870.29220.0420
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/33 [00:00#sk-container-id-3 {color: black;background-color: white;}#sk-container-id-3 pre{padding: 0;}#sk-container-id-3 div.sk-toggleable {background-color: white;}#sk-container-id-3 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-3 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-3 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-3 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-3 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-3 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-3 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-3 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-3 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-3 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-3 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-3 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-3 div.sk-item {position: relative;z-index: 1;}#sk-container-id-3 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-3 div.sk-item::before, #sk-container-id-3 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-3 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-3 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-3 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-3 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-3 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-3 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-3 div.sk-label-container {text-align: center;}#sk-container-id-3 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-3 div.sk-text-repr-fallback {display: none;}
RandomForestClassifier(bootstrap=True, ccp_alpha=0.0, class_weight=None,\n",
       "                       criterion='gini', max_depth=None, max_features='sqrt',\n",
       "                       max_leaf_nodes=None, max_samples=None,\n",
       "                       min_impurity_decrease=0.0, min_samples_leaf=1,\n",
       "                       min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
       "                       n_estimators=100, n_jobs=-1, oob_score=False,\n",
       "                       random_state=123, verbose=0, warm_start=False)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "RandomForestClassifier(bootstrap=True, ccp_alpha=0.0, class_weight=None,\n", " criterion='gini', max_depth=None, max_features='sqrt',\n", " max_leaf_nodes=None, max_samples=None,\n", " min_impurity_decrease=0.0, min_samples_leaf=1,\n", " min_samples_split=2, min_weight_fraction_leaf=0.0,\n", " n_estimators=100, n_jobs=-1, oob_score=False,\n", " random_state=123, verbose=0, warm_start=False)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compare_tree_models" ] }, { "attachments": {}, "cell_type": "markdown", "id": "af9ae6cd", "metadata": {}, "source": [ "The function above has return trained model object as an output. The scoring grid is only displayed and not returned. If you need access to the scoring grid you can use `pull` function to access the dataframe." ] }, { "cell_type": "code", "execution_count": 32, "id": "fc529e25", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ModelAccuracyAUCRecallPrec.F1KappaMCCTT (Sec)
rfRandom Forest Classifier0.74850.79170.53360.67840.59460.41640.42450.120
catboostCatBoost Classifier0.74100.79940.52780.66300.58510.40050.40780.041
gbcGradient Boosting Classifier0.73730.79200.55500.64450.59310.40130.40590.078
etExtra Trees Classifier0.72990.77880.49650.65160.55960.37060.38020.130
lightgbmLight Gradient Boosting Machine0.71130.76530.51810.60360.55330.34270.34790.046
dtDecision Tree Classifier0.69470.65260.51370.56650.53430.31030.31300.036
xgboostExtreme Gradient Boosting0.68530.75220.49120.56200.52160.28870.29220.042
\n", "
" ], "text/plain": [ " Model Accuracy AUC Recall Prec. \\\n", "rf Random Forest Classifier 0.7485 0.7917 0.5336 0.6784 \n", "catboost CatBoost Classifier 0.7410 0.7994 0.5278 0.6630 \n", "gbc Gradient Boosting Classifier 0.7373 0.7920 0.5550 0.6445 \n", "et Extra Trees Classifier 0.7299 0.7788 0.4965 0.6516 \n", "lightgbm Light Gradient Boosting Machine 0.7113 0.7653 0.5181 0.6036 \n", "dt Decision Tree Classifier 0.6947 0.6526 0.5137 0.5665 \n", "xgboost Extreme Gradient Boosting 0.6853 0.7522 0.4912 0.5620 \n", "\n", " F1 Kappa MCC TT (Sec) \n", "rf 0.5946 0.4164 0.4245 0.120 \n", "catboost 0.5851 0.4005 0.4078 0.041 \n", "gbc 0.5931 0.4013 0.4059 0.078 \n", "et 0.5596 0.3706 0.3802 0.130 \n", "lightgbm 0.5533 0.3427 0.3479 0.046 \n", "dt 0.5343 0.3103 0.3130 0.036 \n", "xgboost 0.5216 0.2887 0.2922 0.042 " ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compare_tree_models_results = pull()\n", "compare_tree_models_results" ] }, { "attachments": {}, "cell_type": "markdown", "id": "05a72fc2", "metadata": {}, "source": [ "By default `compare_models` return the single best performing model based on the metric defined in the `sort` parameter. Let's change our code to return 3 top models based on `Recall`." ] }, { "cell_type": "code", "execution_count": 33, "id": "1066dd07", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCTT (Sec)
nbNaive Bayes0.74270.79570.57020.65430.60430.41560.42150.0430
gbcGradient Boosting Classifier0.73730.79200.55500.64450.59310.40130.40590.0710
ldaLinear Discriminant Analysis0.76700.80550.55500.72020.62430.45940.46950.0330
ridgeRidge Classifier0.77080.00000.53920.73530.62030.46180.47440.0340
rfRandom Forest Classifier0.74850.79170.53360.67840.59460.41640.42450.1190
qdaQuadratic Discriminant Analysis0.72820.78940.52810.65580.57360.37850.39100.0370
catboostCatBoost Classifier0.74100.79940.52780.66300.58510.40050.40780.0400
adaAda Boost Classifier0.73720.77990.52750.65850.57960.39260.40170.0670
lightgbmLight Gradient Boosting Machine0.71130.76530.51810.60360.55330.34270.34790.0450
dtDecision Tree Classifier0.69470.65260.51370.56650.53430.31030.31300.0340
svmSVM - Linear Kernel0.75210.00000.50700.73630.57960.41540.43980.0340
etExtra Trees Classifier0.72990.77880.49650.65160.55960.37060.38020.1290
lrLogistic Regression0.76890.80680.49590.76140.59680.44530.46730.0410
xgboostExtreme Gradient Boosting0.68530.75220.49120.56200.52160.28870.29220.0390
knnK Neighbors Classifier0.70020.74330.48600.59650.53110.31420.32100.0570
dummyDummy Classifier0.65180.50000.00000.00000.00000.00000.00000.0550
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/71 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NameDisplay NameScore FunctionScorerTargetArgsGreater is BetterMulticlassCustom
ID
accAccuracyAccuracy<function accuracy_score at 0x000002E242711280>accuracypred{}TrueTrueFalse
aucAUCAUC<function roc_auc_score at 0x000002E24270B0D0>make_scorer(roc_auc_score, needs_proba=True, e...pred_proba{'average': 'weighted', 'multi_class': 'ovr'}TrueTrueFalse
recallRecallRecall<pycaret.internal.metrics.BinaryMulticlassScor...make_scorer(recall_score, average=weighted)pred{'average': 'weighted'}TrueTrueFalse
precisionPrecisionPrec.<pycaret.internal.metrics.BinaryMulticlassScor...make_scorer(precision_score, average=weighted)pred{'average': 'weighted'}TrueTrueFalse
f1F1F1<pycaret.internal.metrics.BinaryMulticlassScor...make_scorer(f1_score, average=weighted)pred{'average': 'weighted'}TrueTrueFalse
kappaKappaKappa<function cohen_kappa_score at 0x000002E242711...make_scorer(cohen_kappa_score)pred{}TrueTrueFalse
mccMCCMCC<function matthews_corrcoef at 0x000002E242711...make_scorer(matthews_corrcoef)pred{}TrueTrueFalse
\n", "" ], "text/plain": [ " Name Display Name \\\n", "ID \n", "acc Accuracy Accuracy \n", "auc AUC AUC \n", "recall Recall Recall \n", "precision Precision Prec. \n", "f1 F1 F1 \n", "kappa Kappa Kappa \n", "mcc MCC MCC \n", "\n", " Score Function \\\n", "ID \n", "acc \n", "auc \n", "recall \n", "Scorer make_scorer(custom_metric)\n", "Target pred\n", "Args {}\n", "Greater is Better True\n", "Multiclass True\n", "Custom True\n", "Name: custom_metric, dtype: object" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create a custom function\n", "import numpy as np\n", "\n", "def custom_metric(y, y_pred):\n", " tp = np.where((y_pred==1) & (y==1), (100), 0)\n", " fp = np.where((y_pred==1) & (y==0), -5, 0)\n", " return np.sum([tp,fp])\n", "\n", "# add metric to PyCaret\n", "add_metric('custom_metric', 'Custom Metric', custom_metric)" ] }, { "cell_type": "code", "execution_count": 38, "id": "e4740319", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCCustom MetricTT (Sec)
ridgeRidge Classifier0.77080.00000.53920.73530.62030.46180.4744991.50000.0340
lrLogistic Regression0.76890.80680.49590.76140.59680.44530.4673915.00000.0390
ldaLinear Discriminant Analysis0.76700.80550.55500.72020.62430.45940.46951019.00000.0470
svmSVM - Linear Kernel0.75210.00000.50700.73630.57960.41540.4398929.50000.0330
rfRandom Forest Classifier0.74850.79170.53360.67840.59460.41640.4245976.00000.1230
nbNaive Bayes0.74270.79570.57020.65430.60430.41560.42151041.00000.0410
catboostCatBoost Classifier0.74100.79940.52780.66300.58510.40050.4078964.50000.0400
gbcGradient Boosting Classifier0.73730.79200.55500.64450.59310.40130.40591011.00000.0720
adaAda Boost Classifier0.73720.77990.52750.65850.57960.39260.4017963.50000.0690
etExtra Trees Classifier0.72990.77880.49650.65160.55960.37060.3802904.50000.1370
qdaQuadratic Discriminant Analysis0.72820.78940.52810.65580.57360.37850.3910961.00000.0360
lightgbmLight Gradient Boosting Machine0.71130.76530.51810.60360.55330.34270.3479937.50000.0450
knnK Neighbors Classifier0.70020.74330.48600.59650.53110.31420.3210877.50000.0530
dtDecision Tree Classifier0.69470.65260.51370.56650.53430.31030.3130923.50000.0330
xgboostExtreme Gradient Boosting0.68530.75220.49120.56200.52160.28870.2922883.00000.0400
dummyDummy Classifier0.65180.50000.00000.00000.00000.00000.00000.00000.0410
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/69 [00:00#sk-container-id-4 {color: black;background-color: white;}#sk-container-id-4 pre{padding: 0;}#sk-container-id-4 div.sk-toggleable {background-color: white;}#sk-container-id-4 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-4 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-4 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-4 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-4 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-4 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-4 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-4 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-4 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-4 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-4 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-4 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-4 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-4 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-4 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-4 div.sk-item {position: relative;z-index: 1;}#sk-container-id-4 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-4 div.sk-item::before, #sk-container-id-4 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-4 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-4 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-4 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-4 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-4 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-4 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-4 div.sk-label-container {text-align: center;}#sk-container-id-4 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-4 div.sk-text-repr-fallback {display: none;}
RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True, fit_intercept=True,\n",
       "                max_iter=None, normalize='deprecated', positive=False,\n",
       "                random_state=123, solver='auto', tol=0.001)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True, fit_intercept=True,\n", " max_iter=None, normalize='deprecated', positive=False,\n", " random_state=123, solver='auto', tol=0.001)" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# now let's run compare_models again\n", "compare_models()" ] }, { "cell_type": "code", "execution_count": 39, "id": "6ee60c4e", "metadata": {}, "outputs": [], "source": [ "# remove custom metric\n", "remove_metric('custom_metric')" ] }, { "attachments": {}, "cell_type": "markdown", "id": "9e6c47cb", "metadata": {}, "source": [ "## ✅ Experiment Logging\n", "PyCaret integrates with many different type of experiment loggers (default = 'mlflow'). To turn on experiment tracking in PyCaret you can set `log_experiment` and `experiment_name` parameter. It will automatically track all the metrics, hyperparameters, and artifacts based on the defined logger." ] }, { "cell_type": "code", "execution_count": 40, "id": "1af63fd0", "metadata": {}, "outputs": [], "source": [ "# from pycaret.classification import *\n", "# s = setup(data, target = 'Class variable', log_experiment='mlflow', experiment_name='diabetes_experiment')" ] }, { "cell_type": "code", "execution_count": 41, "id": "42cd6120", "metadata": {}, "outputs": [], "source": [ "# compare models\n", "# best = compare_models()" ] }, { "cell_type": "code", "execution_count": 42, "id": "adc82ce5", "metadata": {}, "outputs": [], "source": [ "# start mlflow server on localhost:5000\n", "# !mlflow ui" ] }, { "attachments": {}, "cell_type": "markdown", "id": "a06f9df7", "metadata": {}, "source": [ "By default PyCaret uses `MLFlow` logger that can be changed using `log_experiment` parameter. Following loggers are available:\n", " \n", " - mlflow\n", " - wandb\n", " - comet_ml\n", " - dagshub\n", " \n", "Other logging related parameters that you may find useful are:\n", "\n", "- experiment_custom_tags\n", "- log_plots\n", "- log_data\n", "- log_profile\n", "\n", "For more information check out the docstring of the `setup` function." ] }, { "cell_type": "code", "execution_count": 43, "id": "2f8b6aa1", "metadata": {}, "outputs": [], "source": [ "# help(setup)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "6ce0b555", "metadata": {}, "source": [ "## ✅ Create Model\n", "This function trains and evaluates the performance of a given estimator using cross-validation. The output of this function is a scoring grid with CV scores by fold. Metrics evaluated during CV can be accessed using the `get_metrics` function. Custom metrics can be added or removed using `add_metric` and `remove_metric` function. All the available models can be accessed using the models function." ] }, { "cell_type": "code", "execution_count": 44, "id": "837cebfa", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NameReferenceTurbo
ID
lrLogistic Regressionsklearn.linear_model._logistic.LogisticRegressionTrue
knnK Neighbors Classifiersklearn.neighbors._classification.KNeighborsCl...True
nbNaive Bayessklearn.naive_bayes.GaussianNBTrue
dtDecision Tree Classifiersklearn.tree._classes.DecisionTreeClassifierTrue
svmSVM - Linear Kernelsklearn.linear_model._stochastic_gradient.SGDC...True
rbfsvmSVM - Radial Kernelsklearn.svm._classes.SVCFalse
gpcGaussian Process Classifiersklearn.gaussian_process._gpc.GaussianProcessC...False
mlpMLP Classifiersklearn.neural_network._multilayer_perceptron....False
ridgeRidge Classifiersklearn.linear_model._ridge.RidgeClassifierTrue
rfRandom Forest Classifiersklearn.ensemble._forest.RandomForestClassifierTrue
qdaQuadratic Discriminant Analysissklearn.discriminant_analysis.QuadraticDiscrim...True
adaAda Boost Classifiersklearn.ensemble._weight_boosting.AdaBoostClas...True
gbcGradient Boosting Classifiersklearn.ensemble._gb.GradientBoostingClassifierTrue
ldaLinear Discriminant Analysissklearn.discriminant_analysis.LinearDiscrimina...True
etExtra Trees Classifiersklearn.ensemble._forest.ExtraTreesClassifierTrue
xgboostExtreme Gradient Boostingxgboost.sklearn.XGBClassifierTrue
lightgbmLight Gradient Boosting Machinelightgbm.sklearn.LGBMClassifierTrue
catboostCatBoost Classifiercatboost.core.CatBoostClassifierTrue
dummyDummy Classifiersklearn.dummy.DummyClassifierTrue
\n", "
" ], "text/plain": [ " Name \\\n", "ID \n", "lr Logistic Regression \n", "knn K Neighbors Classifier \n", "nb Naive Bayes \n", "dt Decision Tree Classifier \n", "svm SVM - Linear Kernel \n", "rbfsvm SVM - Radial Kernel \n", "gpc Gaussian Process Classifier \n", "mlp MLP Classifier \n", "ridge Ridge Classifier \n", "rf Random Forest Classifier \n", "qda Quadratic Discriminant Analysis \n", "ada Ada Boost Classifier \n", "gbc Gradient Boosting Classifier \n", "lda Linear Discriminant Analysis \n", "et Extra Trees Classifier \n", "xgboost Extreme Gradient Boosting \n", "lightgbm Light Gradient Boosting Machine \n", "catboost CatBoost Classifier \n", "dummy Dummy Classifier \n", "\n", " Reference Turbo \n", "ID \n", "lr sklearn.linear_model._logistic.LogisticRegression True \n", "knn sklearn.neighbors._classification.KNeighborsCl... True \n", "nb sklearn.naive_bayes.GaussianNB True \n", "dt sklearn.tree._classes.DecisionTreeClassifier True \n", "svm sklearn.linear_model._stochastic_gradient.SGDC... True \n", "rbfsvm sklearn.svm._classes.SVC False \n", "gpc sklearn.gaussian_process._gpc.GaussianProcessC... False \n", "mlp sklearn.neural_network._multilayer_perceptron.... False \n", "ridge sklearn.linear_model._ridge.RidgeClassifier True \n", "rf sklearn.ensemble._forest.RandomForestClassifier True \n", "qda sklearn.discriminant_analysis.QuadraticDiscrim... True \n", "ada sklearn.ensemble._weight_boosting.AdaBoostClas... True \n", "gbc sklearn.ensemble._gb.GradientBoostingClassifier True \n", "lda sklearn.discriminant_analysis.LinearDiscrimina... True \n", "et sklearn.ensemble._forest.ExtraTreesClassifier True \n", "xgboost xgboost.sklearn.XGBClassifier True \n", "lightgbm lightgbm.sklearn.LGBMClassifier True \n", "catboost catboost.core.CatBoostClassifier True \n", "dummy sklearn.dummy.DummyClassifier True " ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# check all the available models\n", "models()" ] }, { "cell_type": "code", "execution_count": 45, "id": "16641cab", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.81480.90230.57890.84620.68750.56240.5828
10.83330.79700.63160.85710.72730.61120.6260
20.85190.93830.63160.92310.75000.64990.6736
30.72220.77590.42110.66670.51610.33500.3524
40.83330.90830.57890.91670.70970.60100.6322
50.68520.67370.42110.57140.48480.26560.2720
60.72220.78200.47370.64290.54550.35200.3605
70.75470.84600.33330.85710.48000.35790.4263
80.73580.69520.44440.66670.53330.35920.3736
90.73580.74920.44440.66670.53330.35920.3736
Mean0.76890.80680.49590.76140.59680.44530.4673
Std0.05570.08570.09700.12360.10240.13530.1379
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/4 [00:00\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AccuracyAUCRecallPrec.F1KappaMCC
Fold
00.81480.90230.57890.84620.68750.56240.5828
10.83330.79700.63160.85710.72730.61120.6260
20.85190.93830.63160.92310.75000.64990.6736
30.72220.77590.42110.66670.51610.33500.3524
40.83330.90830.57890.91670.70970.60100.6322
50.68520.67370.42110.57140.48480.26560.2720
60.72220.78200.47370.64290.54550.35200.3605
70.75470.84600.33330.85710.48000.35790.4263
80.73580.69520.44440.66670.53330.35920.3736
90.73580.74920.44440.66670.53330.35920.3736
Mean0.76890.80680.49590.76140.59680.44530.4673
Std0.05570.08570.09700.12360.10240.13530.1379
\n", "
" ], "text/plain": [ " Accuracy AUC Recall Prec. F1 Kappa MCC\n", "Fold \n", "0 0.8148 0.9023 0.5789 0.8462 0.6875 0.5624 0.5828\n", "1 0.8333 0.7970 0.6316 0.8571 0.7273 0.6112 0.6260\n", "2 0.8519 0.9383 0.6316 0.9231 0.7500 0.6499 0.6736\n", "3 0.7222 0.7759 0.4211 0.6667 0.5161 0.3350 0.3524\n", "4 0.8333 0.9083 0.5789 0.9167 0.7097 0.6010 0.6322\n", "5 0.6852 0.6737 0.4211 0.5714 0.4848 0.2656 0.2720\n", "6 0.7222 0.7820 0.4737 0.6429 0.5455 0.3520 0.3605\n", "7 0.7547 0.8460 0.3333 0.8571 0.4800 0.3579 0.4263\n", "8 0.7358 0.6952 0.4444 0.6667 0.5333 0.3592 0.3736\n", "9 0.7358 0.7492 0.4444 0.6667 0.5333 0.3592 0.3736\n", "Mean 0.7689 0.8068 0.4959 0.7614 0.5968 0.4453 0.4673\n", "Std 0.0557 0.0857 0.0970 0.1236 0.1024 0.1353 0.1379" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lr_results = pull()\n", "print(type(lr_results))\n", "lr_results" ] }, { "cell_type": "code", "execution_count": 47, "id": "148a74c4", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.81010.85260.57140.83720.67920.55100.5713
10.74860.79210.50000.68890.57940.40650.4172
20.74860.78040.41940.74290.53610.38150.4108
Mean0.76910.80840.49690.75630.59830.44640.4664
Std0.02900.03170.06210.06130.05990.07470.0742
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/4 [00:00" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.79630.88720.47370.90000.62070.49920.5472
10.81480.80300.57890.84620.68750.56240.5828
20.85190.93530.57891.00000.73330.64060.6865
30.70370.76840.36840.63640.46670.28120.3013
40.85190.90380.57891.00000.73330.64060.6865
50.68520.67370.42110.57140.48480.26560.2720
60.72220.76240.47370.64290.54550.35200.3605
70.75470.83020.33330.85710.48000.35790.4263
80.73580.69520.33330.75000.46150.31930.3654
90.75470.75870.44440.72730.55170.39610.4189
Mean0.76710.80180.45850.79310.57650.43150.4647
Std0.05610.08280.09220.14370.10390.13600.1440
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/4 [00:00#sk-container-id-5 {color: black;background-color: white;}#sk-container-id-5 pre{padding: 0;}#sk-container-id-5 div.sk-toggleable {background-color: white;}#sk-container-id-5 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-5 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-5 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-5 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-5 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-5 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-5 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-5 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-5 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-5 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-5 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-5 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-5 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-5 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-5 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-5 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-5 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-5 div.sk-item {position: relative;z-index: 1;}#sk-container-id-5 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-5 div.sk-item::before, #sk-container-id-5 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-5 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-5 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-5 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-5 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-5 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-5 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-5 div.sk-label-container {text-align: center;}#sk-container-id-5 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-5 div.sk-text-repr-fallback {display: none;}
LogisticRegression(C=0.5, class_weight=None, dual=False, fit_intercept=True,\n",
       "                   intercept_scaling=1, l1_ratio=0.15, max_iter=1000,\n",
       "                   multi_class='auto', n_jobs=None, penalty='l2',\n",
       "                   random_state=123, solver='lbfgs', tol=0.0001, verbose=0,\n",
       "                   warm_start=False)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LogisticRegression(C=0.5, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, l1_ratio=0.15, max_iter=1000,\n", " multi_class='auto', n_jobs=None, penalty='l2',\n", " random_state=123, solver='lbfgs', tol=0.0001, verbose=0,\n", " warm_start=False)" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# train logistic regression with specific model parameters\n", "create_model('lr', C = 0.5, l1_ratio = 0.15)" ] }, { "cell_type": "code", "execution_count": 49, "id": "b85af29b", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
  AccuracyAUCRecallPrec.F1KappaMCC
SplitFold       
CV-Train00.76600.81460.50000.74340.59790.44170.4589
10.77640.82590.50000.77780.60870.46230.4845
20.77020.81380.50000.75680.60220.44990.4690
30.79090.82960.54170.79130.64310.50250.5205
40.77640.81420.50600.77270.61150.46400.4845
50.78880.84030.54170.78450.64080.49830.5154
60.78260.82420.52380.77880.62630.48120.5000
70.77480.81850.51480.76320.61480.46410.4820
80.78100.83870.52660.77390.62680.47960.4974
90.78510.83400.52660.78760.63120.48790.5076
CV-Val00.81480.90230.57890.84620.68750.56240.5828
10.83330.79700.63160.85710.72730.61120.6260
20.85190.93830.63160.92310.75000.64990.6736
30.72220.77590.42110.66670.51610.33500.3524
40.83330.90830.57890.91670.70970.60100.6322
50.68520.67370.42110.57140.48480.26560.2720
60.72220.78200.47370.64290.54550.35200.3605
70.75470.84600.33330.85710.48000.35790.4263
80.73580.69520.44440.66670.53330.35920.3736
90.73580.74920.44440.66670.53330.35920.3736
CV-TrainMean0.77920.82540.51810.77300.62030.47310.4920
Std0.00750.00960.01560.01410.01490.01910.0188
CV-ValMean0.76890.80680.49590.76140.59680.44530.4673
Std0.05570.08570.09700.12360.10240.13530.1379
Trainnan0.77650.82480.51870.76380.61780.46800.4855
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/4 [00:00#sk-container-id-6 {color: black;background-color: white;}#sk-container-id-6 pre{padding: 0;}#sk-container-id-6 div.sk-toggleable {background-color: white;}#sk-container-id-6 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-6 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-6 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-6 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-6 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-6 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-6 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-6 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-6 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-6 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-6 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-6 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-6 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-6 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-6 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-6 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-6 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-6 div.sk-item {position: relative;z-index: 1;}#sk-container-id-6 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-6 div.sk-item::before, #sk-container-id-6 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-6 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-6 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-6 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-6 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-6 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-6 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-6 div.sk-label-container {text-align: center;}#sk-container-id-6 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-6 div.sk-text-repr-fallback {display: none;}
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "                   intercept_scaling=1, l1_ratio=None, max_iter=1000,\n",
       "                   multi_class='auto', n_jobs=None, penalty='l2',\n",
       "                   random_state=123, solver='lbfgs', tol=0.0001, verbose=0,\n",
       "                   warm_start=False)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, l1_ratio=None, max_iter=1000,\n", " multi_class='auto', n_jobs=None, penalty='l2',\n", " random_state=123, solver='lbfgs', tol=0.0001, verbose=0,\n", " warm_start=False)" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# train lr and return train score as well alongwith CV\n", "create_model('lr', return_train_score=True)" ] }, { "cell_type": "code", "execution_count": 50, "id": "3b9d9ac6", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.72220.90230.21051.00000.34780.25690.3839
10.74070.79700.26321.00000.41670.31650.4336
20.70370.93830.15791.00000.27270.19550.3292
30.70370.77590.21050.80000.33330.21880.2998
40.70370.90830.15791.00000.27270.19550.3292
50.68520.67370.21050.66670.32000.18180.2331
60.72220.78200.31580.75000.44440.29810.3477
70.69810.84600.11111.00000.20000.14170.2761
80.71700.69520.22220.80000.34780.23480.3138
90.69810.74920.16670.75000.27270.17030.2476
Mean0.70950.80680.20260.87670.32280.22100.3194
Std0.01520.08570.05540.12810.06900.05310.0575
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/4 [00:00#sk-container-id-7 {color: black;background-color: white;}#sk-container-id-7 pre{padding: 0;}#sk-container-id-7 div.sk-toggleable {background-color: white;}#sk-container-id-7 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-7 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-7 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-7 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-7 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-7 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-7 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-7 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-7 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-7 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-7 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-7 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-7 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-7 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-7 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-7 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-7 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-7 div.sk-item {position: relative;z-index: 1;}#sk-container-id-7 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-7 div.sk-item::before, #sk-container-id-7 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-7 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-7 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-7 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-7 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-7 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-7 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-7 div.sk-label-container {text-align: center;}#sk-container-id-7 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-7 div.sk-text-repr-fallback {display: none;}
CustomProbabilityThresholdClassifier(C=1.0, class_weight=None,\n",
       "                                     classifier=LogisticRegression(C=1.0,\n",
       "                                                                   class_weight=None,\n",
       "                                                                   dual=False,\n",
       "                                                                   fit_intercept=True,\n",
       "                                                                   intercept_scaling=1,\n",
       "                                                                   l1_ratio=None,\n",
       "                                                                   max_iter=1000,\n",
       "                                                                   multi_class='auto',\n",
       "                                                                   n_jobs=None,\n",
       "                                                                   penalty='l2',\n",
       "                                                                   random_state=123,\n",
       "                                                                   solver='lbfgs',\n",
       "                                                                   tol=0.0001,\n",
       "                                                                   verbose=0,\n",
       "                                                                   warm_start=False),\n",
       "                                     dual=False, fit_intercept=True,\n",
       "                                     intercept_scaling=1, l1_ratio=None,\n",
       "                                     max_iter=1000, multi_class='auto',\n",
       "                                     n_jobs=None, penalty='l2',\n",
       "                                     probability_threshold=0.66,\n",
       "                                     random_state=123, solver='lbfgs',\n",
       "                                     tol=0.0001, verbose=0, warm_start=False)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "CustomProbabilityThresholdClassifier(C=1.0, class_weight=None,\n", " classifier=LogisticRegression(C=1.0,\n", " class_weight=None,\n", " dual=False,\n", " fit_intercept=True,\n", " intercept_scaling=1,\n", " l1_ratio=None,\n", " max_iter=1000,\n", " multi_class='auto',\n", " n_jobs=None,\n", " penalty='l2',\n", " random_state=123,\n", " solver='lbfgs',\n", " tol=0.0001,\n", " verbose=0,\n", " warm_start=False),\n", " dual=False, fit_intercept=True,\n", " intercept_scaling=1, l1_ratio=None,\n", " max_iter=1000, multi_class='auto',\n", " n_jobs=None, penalty='l2',\n", " probability_threshold=0.66,\n", " random_state=123, solver='lbfgs',\n", " tol=0.0001, verbose=0, warm_start=False)" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# change the probability threshold of classifier from 0.5 to 0.66\n", "create_model('lr', probability_threshold = 0.66)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "08634e9e", "metadata": {}, "source": [ "Some other parameters that you might find very useful in `create_model` are:\n", "\n", "- cross_validation\n", "- engine\n", "- fit_kwargs\n", "- groups\n", "\n", "You can check the docstring of the function for more info." ] }, { "cell_type": "code", "execution_count": 51, "id": "3fb32c74", "metadata": {}, "outputs": [], "source": [ "# help(create_model)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "d5378836", "metadata": {}, "source": [ "## ✅ Tune Model\n", "\n", "This function tunes the hyperparameters of the model. The output of this function is a scoring grid with cross-validated scores by fold. The best model is selected based on the metric defined in optimize parameter. Metrics evaluated during cross-validation can be accessed using the `get_metrics` function. Custom metrics can be added or removed using `add_metric` and `remove_metric` function." ] }, { "cell_type": "code", "execution_count": 52, "id": "402597f2", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.72220.67740.52630.62500.57140.36820.3711
10.72220.70150.63160.60000.61540.39820.3985
20.74070.70380.57890.64710.61110.41760.4190
30.59260.50530.21050.36360.26670.01160.0125
40.77780.76840.73680.66670.70000.52420.5259
50.62960.59400.47370.47370.47370.18800.1880
60.62960.56990.36840.46670.41180.14690.1491
70.83020.77700.61110.84620.70970.59400.6098
80.66040.60790.44440.50000.47060.22190.2227
90.64150.62060.55560.47620.51280.23190.2336
Mean0.69470.65260.51370.56650.53430.31030.3130
Std0.07200.08340.14100.13100.12920.17140.1739
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/4 [00:00" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.85190.81350.68420.86670.76470.65880.6686
10.75930.69400.47370.75000.58060.42360.4456
20.75930.77820.84210.61540.71110.51320.5318
30.70370.65110.47370.60000.52940.31750.3223
40.83330.76320.52631.00000.68970.59020.6470
50.62960.58200.42110.47060.44440.16800.1685
60.72220.66540.47370.64290.54550.35200.3605
70.73580.62460.27780.83330.41670.29730.3725
80.66040.56750.27780.50000.35710.15120.1633
90.71700.66430.50000.60000.54550.34240.3454
Mean0.73720.68040.49500.68790.55850.38140.4026
Std0.06530.07820.16080.16110.12580.15870.1654
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/7 [00:00#sk-container-id-8 {color: black;background-color: white;}#sk-container-id-8 pre{padding: 0;}#sk-container-id-8 div.sk-toggleable {background-color: white;}#sk-container-id-8 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-8 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-8 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-8 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-8 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-8 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-8 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-8 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-8 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-8 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-8 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-8 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-8 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-8 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-8 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-8 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-8 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-8 div.sk-item {position: relative;z-index: 1;}#sk-container-id-8 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-8 div.sk-item::before, #sk-container-id-8 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-8 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-8 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-8 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-8 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-8 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-8 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-8 div.sk-label-container {text-align: center;}#sk-container-id-8 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-8 div.sk-text-repr-fallback {display: none;}
DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',\n",
       "                       max_depth=None, max_features=None, max_leaf_nodes=None,\n",
       "                       min_impurity_decrease=0.0, min_samples_leaf=1,\n",
       "                       min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
       "                       random_state=123, splitter='best')
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',\n", " max_depth=None, max_features=None, max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_samples_leaf=1,\n", " min_samples_split=2, min_weight_fraction_leaf=0.0,\n", " random_state=123, splitter='best')" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt" ] }, { "cell_type": "code", "execution_count": 55, "id": "31e050ff", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.75930.80080.73680.63640.68290.49060.4940
10.66670.74440.52630.52630.52630.26920.2692
20.75930.82410.52630.71430.60610.43840.4490
30.66670.62930.42110.53330.47060.23220.2357
40.83330.89620.68420.81250.74290.62090.6259
50.66670.65340.57890.52380.55000.28630.2872
60.62960.67590.31580.46150.37500.12480.1293
70.77360.76980.61110.68750.64710.48120.4830
80.64150.68170.44440.47060.45710.18990.1900
90.75470.74370.61110.64710.62860.44570.4461
Mean0.71510.74190.54560.60130.56870.35790.3610
Std0.06530.07960.12030.11000.10780.15080.1517
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/7 [00:00" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.85190.81350.68420.86670.76470.65880.6686
10.75930.69400.47370.75000.58060.42360.4456
20.75930.77820.84210.61540.71110.51320.5318
30.70370.65110.47370.60000.52940.31750.3223
40.83330.76320.52631.00000.68970.59020.6470
50.62960.58200.42110.47060.44440.16800.1685
60.72220.66540.47370.64290.54550.35200.3605
70.73580.62460.27780.83330.41670.29730.3725
80.66040.56750.27780.50000.35710.15120.1633
90.71700.66430.50000.60000.54550.34240.3454
Mean0.73720.68040.49500.68790.55850.38140.4026
Std0.06530.07820.16080.16110.12580.15870.1654
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/7 [00:00#sk-container-id-9 {color: black;background-color: white;}#sk-container-id-9 pre{padding: 0;}#sk-container-id-9 div.sk-toggleable {background-color: white;}#sk-container-id-9 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-9 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-9 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-9 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-9 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-9 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-9 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-9 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-9 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-9 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-9 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-9 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-9 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-9 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-9 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-9 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-9 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-9 div.sk-item {position: relative;z-index: 1;}#sk-container-id-9 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-9 div.sk-item::before, #sk-container-id-9 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-9 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-9 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-9 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-9 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-9 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-9 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-9 div.sk-label-container {text-align: center;}#sk-container-id-9 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-9 div.sk-text-repr-fallback {display: none;}
DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',\n",
       "                       max_depth=1, max_features=1.0, max_leaf_nodes=None,\n",
       "                       min_impurity_decrease=0.01, min_samples_leaf=6,\n",
       "                       min_samples_split=5, min_weight_fraction_leaf=0.0,\n",
       "                       random_state=123, splitter='best')
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',\n", " max_depth=1, max_features=1.0, max_leaf_nodes=None,\n", " min_impurity_decrease=0.01, min_samples_leaf=6,\n", " min_samples_split=5, min_weight_fraction_leaf=0.0,\n", " random_state=123, splitter='best')" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# model object\n", "tuned_dt" ] }, { "cell_type": "code", "execution_count": 58, "id": "7d5e49ca", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
RandomizedSearchCV(cv=StratifiedKFold(n_splits=10, random_state=None, shuffle=False),\n",
       "                   error_score=nan,\n",
       "                   estimator=Pipeline(memory=FastMemory(location=C:\\Users\\owner\\AppData\\Local\\Temp\\joblib),\n",
       "                                      steps=[('clean_column_names',\n",
       "                                              TransformerWrapper(exclude=None,\n",
       "                                                                 include=None,\n",
       "                                                                 transformer=CleanColumnNames(match='[\\\\]\\\\[\\\\,\\\\{\\\\}\\\\"\\\\:]+'))),\n",
       "                                             ('numerical_imputer',\n",
       "                                              Tra...\n",
       "                                        'actual_estimator__max_features': [1.0,\n",
       "                                                                           'sqrt',\n",
       "                                                                           'log2'],\n",
       "                                        'actual_estimator__min_impurity_decrease': [0,\n",
       "                                                                                    0.0001,\n",
       "                                                                                    0.001,\n",
       "                                                                                    0.01,\n",
       "                                                                                    0.0002,\n",
       "                                                                                    0.002,\n",
       "                                                                                    0.02,\n",
       "                                                                                    0.0005,\n",
       "                                                                                    0.005,\n",
       "                                                                                    0.05,\n",
       "                                                                                    0.1,\n",
       "                                                                                    0.2,\n",
       "                                                                                    0.3,\n",
       "                                                                                    0.4,\n",
       "                                                                                    0.5],\n",
       "                                        'actual_estimator__min_samples_leaf': [2,\n",
       "                                                                               3,\n",
       "                                                                               4,\n",
       "                                                                               5,\n",
       "                                                                               6],\n",
       "                                        'actual_estimator__min_samples_split': [2,\n",
       "                                                                                5,\n",
       "                                                                                7,\n",
       "                                                                                9,\n",
       "                                                                                10]},\n",
       "                   pre_dispatch='2*n_jobs', random_state=123, refit=False,\n",
       "                   return_train_score=False, scoring='accuracy', verbose=1)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "RandomizedSearchCV(cv=StratifiedKFold(n_splits=10, random_state=None, shuffle=False),\n", " error_score=nan,\n", " estimator=Pipeline(memory=FastMemory(location=C:\\Users\\owner\\AppData\\Local\\Temp\\joblib),\n", " steps=[('clean_column_names',\n", " TransformerWrapper(exclude=None,\n", " include=None,\n", " transformer=CleanColumnNames(match='[\\\\]\\\\[\\\\,\\\\{\\\\}\\\\\"\\\\:]+'))),\n", " ('numerical_imputer',\n", " Tra...\n", " 'actual_estimator__max_features': [1.0,\n", " 'sqrt',\n", " 'log2'],\n", " 'actual_estimator__min_impurity_decrease': [0,\n", " 0.0001,\n", " 0.001,\n", " 0.01,\n", " 0.0002,\n", " 0.002,\n", " 0.02,\n", " 0.0005,\n", " 0.005,\n", " 0.05,\n", " 0.1,\n", " 0.2,\n", " 0.3,\n", " 0.4,\n", " 0.5],\n", " 'actual_estimator__min_samples_leaf': [2,\n", " 3,\n", " 4,\n", " 5,\n", " 6],\n", " 'actual_estimator__min_samples_split': [2,\n", " 5,\n", " 7,\n", " 9,\n", " 10]},\n", " pre_dispatch='2*n_jobs', random_state=123, refit=False,\n", " return_train_score=False, scoring='accuracy', verbose=1)" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# tuner object\n", "tuner" ] }, { "attachments": {}, "cell_type": "markdown", "id": "0a33c70b", "metadata": {}, "source": [ "The default search algorithm is `RandomizedSearchCV` from `sklearn`. This can be changed by using `search_library` and `search_algorithm` parameter." ] }, { "cell_type": "code", "execution_count": 59, "id": "31e33547", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.75930.78200.52630.71430.60610.43840.4490
10.77780.78950.63160.70590.66670.50080.5025
20.72220.78800.36840.70000.48280.31700.3476
30.68520.56620.42110.57140.48480.26560.2720
40.79630.82330.68420.72220.70270.54790.5484
50.66670.68050.52630.52630.52630.26920.2692
60.68520.69400.42110.57140.48480.26560.2720
70.83020.85080.66670.80000.72730.60550.6108
80.66040.63890.61110.50000.55000.28160.2853
90.64150.68490.44440.47060.45710.18990.1900
Mean0.72250.72980.53010.62820.56890.36810.3747
Std0.06150.08590.10800.10730.09490.13560.1352
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/7 [00:00" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.74070.83830.52630.66670.58820.40280.4088
10.79630.77970.73680.70000.71790.55870.5591
20.75930.76690.47370.75000.58060.42360.4456
30.72220.78420.52630.62500.57140.36820.3711
40.81480.84210.73680.73680.73680.59400.5940
50.68520.67590.42110.57140.48480.26560.2720
60.70370.76770.52630.58820.55560.33440.3355
70.79250.84050.44440.88890.59260.47340.5245
80.67920.66590.50000.52940.51430.27510.2754
90.67920.65080.33330.54550.41380.21030.2224
Mean0.73730.76120.52250.66020.57560.39060.4009
Std0.04880.06950.12120.10600.09240.11950.1221
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/6 [00:00#sk-container-id-11 {color: black;background-color: white;}#sk-container-id-11 pre{padding: 0;}#sk-container-id-11 div.sk-toggleable {background-color: white;}#sk-container-id-11 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-11 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-11 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-11 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-11 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-11 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-11 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-11 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-11 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-11 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-11 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-11 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-11 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-11 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-11 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-11 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-11 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-11 div.sk-item {position: relative;z-index: 1;}#sk-container-id-11 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-11 div.sk-item::before, #sk-container-id-11 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-11 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-11 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-11 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-11 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-11 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-11 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-11 div.sk-label-container {text-align: center;}#sk-container-id-11 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-11 div.sk-text-repr-fallback {display: none;}
BaggingClassifier(base_estimator=DecisionTreeClassifier(ccp_alpha=0.0,\n",
       "                                                        class_weight=None,\n",
       "                                                        criterion='gini',\n",
       "                                                        max_depth=None,\n",
       "                                                        max_features=None,\n",
       "                                                        max_leaf_nodes=None,\n",
       "                                                        min_impurity_decrease=0.0,\n",
       "                                                        min_samples_leaf=1,\n",
       "                                                        min_samples_split=2,\n",
       "                                                        min_weight_fraction_leaf=0.0,\n",
       "                                                        random_state=123,\n",
       "                                                        splitter='best'),\n",
       "                  bootstrap=True, bootstrap_features=False, max_features=1.0,\n",
       "                  max_samples=1.0, n_estimators=10, n_jobs=None,\n",
       "                  oob_score=False, random_state=123, verbose=0,\n",
       "                  warm_start=False)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "BaggingClassifier(base_estimator=DecisionTreeClassifier(ccp_alpha=0.0,\n", " class_weight=None,\n", " criterion='gini',\n", " max_depth=None,\n", " max_features=None,\n", " max_leaf_nodes=None,\n", " min_impurity_decrease=0.0,\n", " min_samples_leaf=1,\n", " min_samples_split=2,\n", " min_weight_fraction_leaf=0.0,\n", " random_state=123,\n", " splitter='best'),\n", " bootstrap=True, bootstrap_features=False, max_features=1.0,\n", " max_samples=1.0, n_estimators=10, n_jobs=None,\n", " oob_score=False, random_state=123, verbose=0,\n", " warm_start=False)" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# ensemble with bagging\n", "ensemble_model(dt, method = 'Bagging')" ] }, { "cell_type": "code", "execution_count": 62, "id": "79279394", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.72220.68950.57890.61110.59460.38360.3839
10.72220.67740.52630.62500.57140.36820.3711
20.75930.74210.68420.65000.66670.47850.4788
30.61110.54360.31580.42860.36360.09280.0950
40.81480.82110.84210.69570.76190.61260.6201
50.59260.56540.47370.42860.45000.12780.1282
60.66670.62260.47370.52940.50000.25120.2520
70.79250.74840.61110.73330.66670.51780.5223
80.66040.62140.50000.50000.50000.24290.2429
90.67920.63570.50000.52940.51430.27510.2754
Mean0.70210.66670.55060.57310.55890.33500.3370
Std0.06980.08200.13420.10080.11170.15980.1613
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/6 [00:00#sk-container-id-12 {color: black;background-color: white;}#sk-container-id-12 pre{padding: 0;}#sk-container-id-12 div.sk-toggleable {background-color: white;}#sk-container-id-12 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-12 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-12 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-12 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-12 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-12 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-12 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-12 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-12 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-12 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-12 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-12 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-12 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-12 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-12 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-12 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-12 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-12 div.sk-item {position: relative;z-index: 1;}#sk-container-id-12 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-12 div.sk-item::before, #sk-container-id-12 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-12 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-12 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-12 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-12 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-12 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-12 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-12 div.sk-label-container {text-align: center;}#sk-container-id-12 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-12 div.sk-text-repr-fallback {display: none;}
AdaBoostClassifier(algorithm='SAMME.R',\n",
       "                   base_estimator=DecisionTreeClassifier(ccp_alpha=0.0,\n",
       "                                                         class_weight=None,\n",
       "                                                         criterion='gini',\n",
       "                                                         max_depth=None,\n",
       "                                                         max_features=None,\n",
       "                                                         max_leaf_nodes=None,\n",
       "                                                         min_impurity_decrease=0.0,\n",
       "                                                         min_samples_leaf=1,\n",
       "                                                         min_samples_split=2,\n",
       "                                                         min_weight_fraction_leaf=0.0,\n",
       "                                                         random_state=123,\n",
       "                                                         splitter='best'),\n",
       "                   learning_rate=1.0, n_estimators=10, random_state=123)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "AdaBoostClassifier(algorithm='SAMME.R',\n", " base_estimator=DecisionTreeClassifier(ccp_alpha=0.0,\n", " class_weight=None,\n", " criterion='gini',\n", " max_depth=None,\n", " max_features=None,\n", " max_leaf_nodes=None,\n", " min_impurity_decrease=0.0,\n", " min_samples_leaf=1,\n", " min_samples_split=2,\n", " min_weight_fraction_leaf=0.0,\n", " random_state=123,\n", " splitter='best'),\n", " learning_rate=1.0, n_estimators=10, random_state=123)" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# ensemble with boosting\n", "ensemble_model(dt, method = 'Boosting')" ] }, { "attachments": {}, "cell_type": "markdown", "id": "d0fa1ce2", "metadata": {}, "source": [ "Some other parameters that you might find very useful in `ensemble_model` are:\n", "\n", "- choose_better\n", "- n_estimators\n", "- groups\n", "- fit_kwargs\n", "- probability_threshold\n", "- return_train_score\n", "\n", "You can check the docstring of the function for more info." ] }, { "cell_type": "code", "execution_count": 63, "id": "78130ed1", "metadata": {}, "outputs": [], "source": [ "# help(ensemble_model)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "ea8a9a4e", "metadata": {}, "source": [ "## ✅ Blend Models" ] }, { "attachments": {}, "cell_type": "markdown", "id": "2ede29c4", "metadata": {}, "source": [ "This function trains a Soft Voting / Majority Rule classifier for select models passed in the estimator_list parameter. The output of this function is a scoring grid with CV scores by fold. Metrics evaluated during CV can be accessed using the `get_metrics` function. Custom metrics can be added or removed using `add_metric` and `remove_metric` function." ] }, { "cell_type": "code", "execution_count": 64, "id": "61a7a1c5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[GaussianNB(priors=None, var_smoothing=1e-09),\n", " GradientBoostingClassifier(ccp_alpha=0.0, criterion='friedman_mse', init=None,\n", " learning_rate=0.1, loss='log_loss', max_depth=3,\n", " max_features=None, max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_samples_leaf=1,\n", " min_samples_split=2, min_weight_fraction_leaf=0.0,\n", " n_estimators=100, n_iter_no_change=None,\n", " random_state=123, subsample=1.0, tol=0.0001,\n", " validation_fraction=0.1, verbose=0,\n", " warm_start=False),\n", " LinearDiscriminantAnalysis(covariance_estimator=None, n_components=None,\n", " priors=None, shrinkage=None, solver='svd',\n", " store_covariance=False, tol=0.0001)]" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# top 3 models based on recall\n", "best_recall_models_top3" ] }, { "cell_type": "code", "execution_count": 65, "id": "04f65f2f", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.79630.89320.68420.72220.70270.54790.5484
10.77780.81200.63160.70590.66670.50080.5025
20.87040.93380.68420.92860.78790.69760.7145
30.70370.78650.47370.60000.52940.31750.3223
40.87040.89620.68420.92860.78790.69760.7145
50.70370.66920.47370.60000.52940.31750.3223
60.74070.78050.68420.61900.65000.44490.4463
70.77360.86670.44440.80000.57140.43420.4688
80.66040.68890.44440.50000.47060.22190.2227
90.69810.72860.44440.57140.50000.28860.2933
Mean0.75950.80560.56490.69760.61960.44690.4555
Std0.06830.08680.11030.14070.11040.15750.1616
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/6 [00:00#sk-container-id-13 {color: black;background-color: white;}#sk-container-id-13 pre{padding: 0;}#sk-container-id-13 div.sk-toggleable {background-color: white;}#sk-container-id-13 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-13 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-13 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-13 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-13 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-13 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-13 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-13 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-13 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-13 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-13 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-13 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-13 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-13 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-13 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-13 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-13 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-13 div.sk-item {position: relative;z-index: 1;}#sk-container-id-13 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-13 div.sk-item::before, #sk-container-id-13 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-13 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-13 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-13 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-13 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-13 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-13 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-13 div.sk-label-container {text-align: center;}#sk-container-id-13 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-13 div.sk-text-repr-fallback {display: none;}
VotingClassifier(estimators=[('Naive Bayes',\n",
       "                              GaussianNB(priors=None, var_smoothing=1e-09)),\n",
       "                             ('Gradient Boosting Classifier',\n",
       "                              GradientBoostingClassifier(ccp_alpha=0.0,\n",
       "                                                         criterion='friedman_mse',\n",
       "                                                         init=None,\n",
       "                                                         learning_rate=0.1,\n",
       "                                                         loss='log_loss',\n",
       "                                                         max_depth=3,\n",
       "                                                         max_features=None,\n",
       "                                                         max_leaf_nodes=None,\n",
       "                                                         min_impurity_decrease=0.0,\n",
       "                                                         min_samples_leaf=1,\n",
       "                                                         min_samples_split=2,\n",
       "                                                         min_wei...\n",
       "                                                         n_iter_no_change=None,\n",
       "                                                         random_state=123,\n",
       "                                                         subsample=1.0,\n",
       "                                                         tol=0.0001,\n",
       "                                                         validation_fraction=0.1,\n",
       "                                                         verbose=0,\n",
       "                                                         warm_start=False)),\n",
       "                             ('Linear Discriminant Analysis',\n",
       "                              LinearDiscriminantAnalysis(covariance_estimator=None,\n",
       "                                                         n_components=None,\n",
       "                                                         priors=None,\n",
       "                                                         shrinkage=None,\n",
       "                                                         solver='svd',\n",
       "                                                         store_covariance=False,\n",
       "                                                         tol=0.0001))],\n",
       "                 flatten_transform=True, n_jobs=-1, verbose=False,\n",
       "                 voting='soft', weights=None)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "VotingClassifier(estimators=[('Naive Bayes',\n", " GaussianNB(priors=None, var_smoothing=1e-09)),\n", " ('Gradient Boosting Classifier',\n", " GradientBoostingClassifier(ccp_alpha=0.0,\n", " criterion='friedman_mse',\n", " init=None,\n", " learning_rate=0.1,\n", " loss='log_loss',\n", " max_depth=3,\n", " max_features=None,\n", " max_leaf_nodes=None,\n", " min_impurity_decrease=0.0,\n", " min_samples_leaf=1,\n", " min_samples_split=2,\n", " min_wei...\n", " n_iter_no_change=None,\n", " random_state=123,\n", " subsample=1.0,\n", " tol=0.0001,\n", " validation_fraction=0.1,\n", " verbose=0,\n", " warm_start=False)),\n", " ('Linear Discriminant Analysis',\n", " LinearDiscriminantAnalysis(covariance_estimator=None,\n", " n_components=None,\n", " priors=None,\n", " shrinkage=None,\n", " solver='svd',\n", " store_covariance=False,\n", " tol=0.0001))],\n", " flatten_transform=True, n_jobs=-1, verbose=False,\n", " voting='soft', weights=None)" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# blend top 3 models\n", "blend_models(best_recall_models_top3)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "9e788c9c", "metadata": {}, "source": [ "Some other parameters that you might find very useful in `blend_models` are:\n", "\n", "- choose_better\n", "- method\n", "- weights\n", "- fit_kwargs\n", "- probability_threshold\n", "- return_train_score\n", "\n", "You can check the docstring of the function for more info." ] }, { "cell_type": "code", "execution_count": 66, "id": "99b549a6", "metadata": {}, "outputs": [], "source": [ "# help(blend_models)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "e76969b0", "metadata": {}, "source": [ "## ✅ Stack Models" ] }, { "attachments": {}, "cell_type": "markdown", "id": "55909804", "metadata": {}, "source": [ "This function trains a meta-model over select estimators passed in the estimator_list parameter. The output of this function is a scoring grid with CV scores by fold. Metrics evaluated during CV can be accessed using the `get_metrics` function. Custom metrics can be added or removed using `add_metric` and `remove_metric` function." ] }, { "cell_type": "code", "execution_count": 67, "id": "201c681e", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.81480.90230.63160.80000.70590.57350.5820
10.79630.79700.63160.75000.68570.53670.5410
20.87040.92330.68420.92860.78790.69760.7145
30.70370.78350.47370.60000.52940.31750.3223
40.85190.89920.63160.92310.75000.64990.6736
50.68520.67220.42110.57140.48480.26560.2720
60.72220.79100.52630.62500.57140.36820.3711
70.75470.86670.38890.77780.51850.37760.4184
80.69810.68100.44440.57140.50000.28860.2933
90.73580.71900.50000.64290.56250.37750.3836
Mean0.76330.80350.53330.71900.60960.44530.4572
Std0.06280.08790.09890.13000.10610.14790.1514
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/6 [00:00#sk-container-id-14 {color: black;background-color: white;}#sk-container-id-14 pre{padding: 0;}#sk-container-id-14 div.sk-toggleable {background-color: white;}#sk-container-id-14 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-14 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-14 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-14 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-14 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-14 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-14 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-14 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-14 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-14 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-14 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-14 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-14 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-14 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-14 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-14 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-14 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-14 div.sk-item {position: relative;z-index: 1;}#sk-container-id-14 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-14 div.sk-item::before, #sk-container-id-14 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-14 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-14 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-14 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-14 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-14 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-14 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-14 div.sk-label-container {text-align: center;}#sk-container-id-14 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-14 div.sk-text-repr-fallback {display: none;}
StackingClassifier(cv=5,\n",
       "                   estimators=[('Naive Bayes',\n",
       "                                GaussianNB(priors=None, var_smoothing=1e-09)),\n",
       "                               ('Gradient Boosting Classifier',\n",
       "                                GradientBoostingClassifier(ccp_alpha=0.0,\n",
       "                                                           criterion='friedman_mse',\n",
       "                                                           init=None,\n",
       "                                                           learning_rate=0.1,\n",
       "                                                           loss='log_loss',\n",
       "                                                           max_depth=3,\n",
       "                                                           max_features=None,\n",
       "                                                           max_leaf_nodes=None,\n",
       "                                                           min_impurity_decrease=0.0,\n",
       "                                                           min_samples_leaf=1,\n",
       "                                                           min_samples_split=2,...\n",
       "                                                           solver='svd',\n",
       "                                                           store_covariance=False,\n",
       "                                                           tol=0.0001))],\n",
       "                   final_estimator=LogisticRegression(C=1.0, class_weight=None,\n",
       "                                                      dual=False,\n",
       "                                                      fit_intercept=True,\n",
       "                                                      intercept_scaling=1,\n",
       "                                                      l1_ratio=None,\n",
       "                                                      max_iter=1000,\n",
       "                                                      multi_class='auto',\n",
       "                                                      n_jobs=None, penalty='l2',\n",
       "                                                      random_state=123,\n",
       "                                                      solver='lbfgs',\n",
       "                                                      tol=0.0001, verbose=0,\n",
       "                                                      warm_start=False),\n",
       "                   n_jobs=-1, passthrough=True, stack_method='auto', verbose=0)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "StackingClassifier(cv=5,\n", " estimators=[('Naive Bayes',\n", " GaussianNB(priors=None, var_smoothing=1e-09)),\n", " ('Gradient Boosting Classifier',\n", " GradientBoostingClassifier(ccp_alpha=0.0,\n", " criterion='friedman_mse',\n", " init=None,\n", " learning_rate=0.1,\n", " loss='log_loss',\n", " max_depth=3,\n", " max_features=None,\n", " max_leaf_nodes=None,\n", " min_impurity_decrease=0.0,\n", " min_samples_leaf=1,\n", " min_samples_split=2,...\n", " solver='svd',\n", " store_covariance=False,\n", " tol=0.0001))],\n", " final_estimator=LogisticRegression(C=1.0, class_weight=None,\n", " dual=False,\n", " fit_intercept=True,\n", " intercept_scaling=1,\n", " l1_ratio=None,\n", " max_iter=1000,\n", " multi_class='auto',\n", " n_jobs=None, penalty='l2',\n", " random_state=123,\n", " solver='lbfgs',\n", " tol=0.0001, verbose=0,\n", " warm_start=False),\n", " n_jobs=-1, passthrough=True, stack_method='auto', verbose=0)" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# stack models\n", "stack_models(best_recall_models_top3)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "af78cda8", "metadata": {}, "source": [ "Some other parameters that you might find very useful in `stack_models` are:\n", "\n", "- choose_better\n", "- meta_model\n", "- method\n", "- restack\n", "- probability_threshold\n", "- return_train_score\n", "\n", "You can check the docstring of the function for more info." ] }, { "cell_type": "code", "execution_count": 68, "id": "3305e597", "metadata": {}, "outputs": [], "source": [ "# help(stack_models)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "279a3127", "metadata": {}, "source": [ "## ✅ Plot Model" ] }, { "attachments": {}, "cell_type": "markdown", "id": "862bd3e9", "metadata": {}, "source": [ "This function analyzes the performance of a trained model on the hold-out set. It may require re-training the model in certain cases." ] }, { "cell_type": "code", "execution_count": 69, "id": "9c8da9b4", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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aQAAAMAAgjQAAABgAEEaAAAAMIAgDQAAABhAkAYAAAAMIEgDAAAABhCkAQAAAAMI0gAAAIABBGkAAADAAII0AAAAYABBGgAAADCAIA0AAAAYQJAGAAAADCBIAwAAAAYQpAEAAAADCNIAAACAAQRpAAAAwACCNAAAAHKNlJQUDR8+XLVq1VLDhg21aNGi69b9448/1KFDB1WtWlVPP/20Dh48eFP7IkgDAAAg15g8ebIOHjyoJUuWaNSoUZo9e7Y2bdqUpV5iYqJ69uypWrVqae3atapevbp69eqlxMTEG94XQRoAAAC5QmJiolavXq0333xTISEhatq0qXr06KHly5dnqbthwwa5u7tr8ODBKlWqlN588015e3tnG7qvhyANAACAXOHw4cOyWq2qXr26o6xmzZrat2+fbDabU919+/apZs2aMplMkiSTyaQaNWpo7969N7w/gjQAAAByhcjISOXLl09ubm6OssDAQKWkpOjy5ctZ6ubPn9+pLCAgQOfPn7/h/Vn+p94akJaWJrvdrphNG+70rpFLxRw4IEkK2v9pDvcEucUBzincYpnnlMatzNmOINdITU11jKTeTVJTpczT/Va2eVUu/ldJSUlOIVqS43FqauoN1b223r+540H6bvxHBwAAuJeYTKa7LlNdG0pvXbs33ra7u3uWIJz52MPD44bqXlvv39zxIH31nBUAAADkDuXKlcvpLqhAgQKKiYmR1WqVxZIRcyMjI+Xh4aE8efJkqRsVFeVUFhUVlWW6x79hjjQAAAByhQoVKshisThdMBgWFqbKlSvLbHaOvVWrVtWePXtkt9slSXa7Xbt371bVqlVveH8EaQAAAOQKnp6eatu2rUJDQ7V//3598803WrRokbp27SopY3Q6OTlZktSiRQvFxsZq/PjxOnr0qMaPH6+kpCS1bNnyhvdnsmfGcAAAAOAel5SUpNDQUH399dfy8fFR9+7d9cILL0jKmH4yceJEtWvXTpK0f/9+jRo1Sn/99ZfKlSun0aNHq2LFije8L4I0AAAAYABTOwAAAAADCNIAAACAAQRpAAAAwACCNAAAAGAAQRqAE64/BnCv4v0LdxpBGoAkyWazScq47SwfRvgvnCO4W5w/f147d+6UpLvultnI/QjSAJSUlKR+/fppw4YNkgjTuL7U1FRJnCO4O9hsNm3btk3vv/++/vrrL0lS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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot class report\n", "plot_model(best, plot = 'class_report')" ] }, { "cell_type": "code", "execution_count": 70, "id": "952b6f24", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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41b4Cxcu6LHHHtPp06dztNu1a5eef/55Y/nOO+9UjRo1rnn/fHx89OGHHxplKVavXq2ePXs6jHS0l5GRoUWLFql3797GSOHixYvrww8/LNL72l8I+eyzz3IdoX306FE9/PDDCg8Pd3je/lhq166dcUwePnxYb7/9dq6B7cmTJx3OI3fccYfx2P44mjhxotauXZtrn7/99lvj+1WqVClTR+x26tTJmBzv1KlTGjZsWK517r/55hv98ccfkjK/r1n7Zv9579ixQ8uXL8+xblpamqZOnaoPPvjA4fncLgpmXayTlOPnUxgDBgwwSsfs2bNHw4YNy/VcvHz5cr300kvG8pAhQ4yLKDebWrVqacCAAcby33//neOiqJubm5555hljeeLEifrmm29yhNfJycl66623jO+pq6trgROpfvXVV/rhhx9yPL97924NGzbMuMD0wgsv5CjpMnz4cGPU8jfffJPr+To9PV2fffaZUafeyclJY8eOzbdPBbnS4wwAAPw3MdEhAOCy9e3bVz///LMRAM2cOVPdunVTzZo1C7W+t7e33nvvPQ0ZMkSpqan67bfftGXLFt1xxx0qUaKEQkJC9OeffyopKUmVK1fOd9Ty4MGDtWbNGu3atUvnz5/Xgw8+qA4dOqhu3bpKS0vT5s2bjVvjvby8jADHfoRXlk8//VS9evVSRESEwsPD9eCDD+q2225Tw4YNZbPZdPToUa1evdoYEVZQ2NetWzfFx8frvffek9Vq1bZt29SzZ0/Vrl1bzZo1U6lSpZSWlqZTp05p48aNRjArZY5+mzFjRpEmoXJyctKAAQOM0XlLly7Vvn371KFDB5UoUUKRkZHauXOnQ9ju6uqq9PR0paSkKCUlxZjcKygoSMOGDTO2NWnSJC1cuFCtWrVScHCw0tLSdODAAa1fv94IP/r06eMw6q5Pnz5asGCBDh8+rJiYGPXq1UutW7dWzZo1FRgYqMjISK1fv96oB+7m5nbFIUlReXp6auLEierfv78SExN18OBB3X333erQoYNq166t1NRU7d+/32HCynLlyl1WPfXL1bJlS33yySd68cUXlZKSoiNHjmjgwIGqXLmyWrRooeDgYGVkZCg8PFybNm1yqMkdFBSkadOmOdRyL4wBAwYY35udO3eqS5cu6ty5s8qUKaPY2Fjt27dP27dvN4IyNzc34wJITEyMUcPc3d1dY8aM0ciRIyVlXpxZtWqV2rVrp7Jly0rKrJW7Zs0apaamSsq8QGRfnuD2229X27ZttW7dOqWlpWnIkCFq3Lix6tevr5IlSyo2Nlbbtm0zLno4OTlp9OjRRZ4U8ko4Ozvrk08+UZ8+fRQbG6u//vpLXbp00e23365KlSopMTFRf/31l1F72cXFRe+8847x/c6a0PDo0aOy2WwaOnSo2rRpo7p168rDw0Ph4eFavXq1MYr60s/7UvY/799//12+vr4qXbq0atSoUagR80FBQfroo4/01FNPyWKxaNWqVQ77k5ycrM2bNzuUeWnZsqWGDh162Z/hjWDYsGFasmSJzp49Kynzd0LW76UsDz30kLZv367ffvtNGRkZev/99zV37ly1a9dOgYGBOnPmjFavXq2IiAhjnVGjRuV7x0vWz/PNN9/U/Pnz1bZtW7m5uWnfvn1au3atEXp36tRJvXr1yrF+q1atNHToUE2aNElS5vn6l19+UceOHVWiRAldvHhRq1evdhhh/8wzzziMuL4cV3qcAQCA/yZCaQDAZcu61blXr17KyMiQxWLRG2+8oTlz5hS6xmTLli31zTff6Nlnn1V0dLTOnz9vjODKUrFiRU2cOFHdunXLcztubm766quv9Oyzz2rr1q1KT0/XihUrctSFHjRokCIjI/Xbb79JUq6BVXBwsBYsWKDnn39eu3btUkZGhtavX59rLepq1appwoQJqly5cr772b9/f9WqVUvvvPOOMQnVoUOHHCYGs+fs7KwHH3xQL774YpEC6SyDBw/W4cOHjdGYYWFh+v7773O08/f311tvvaUffvjBqBm7b98+h/qkQ4YMUXx8vKZPn66MjAydPn0611HEzs7O6tu3r1555RWH593d3TV9+nQ9/fTTxgWMDRs2OAS8WUqUKKF3333X4f3NUrduXc2dO1fPP/+8jh8/LovFouXLl+c6WrVx48aaMGGCAgMDTe3jHXfcoUqVKuntt9/W9u3bJWWWkcnvgk2XLl302muvXVYZi3vuuUcHDx7UtGnTJGWWqcmtlI6Xl5defPFF7du3Tz///LOkzOPIvkb4Pffco+joaL3//vuyWCyKiIgwailf6s4778wxEljKLPMzfPhw47u4a9cuo2SEvWLFimnMmDEOJYLMUrVqVf3www8aOnSoTpw4odjYWOMzsefr66v//e9/6ty5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r8OHDxeqbWHalStXTm+99daVduuyUFMaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApiGUBgAAAAAAAACYhlAaAAAAAAAAAGAaQmkAAAAAAAAAgGkIpQEAAAAAAAAApnG93h0AAAAAAAAAgNw0kmS93p3Ihcv17sBNjpHSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTEEoDAAAAAAAAAExDKA0AAAAAAAAAMA2hNAAAAAAAAADANITSAAAAAAAAAADTuF7vDgAAAAAAAAAAcjp8+LCmT5+uLVu2KCoqSv7+/qpfv7769eundu3aXfZ29+7dq2+//Vbbt29XZGSkPD09Vb16dd19993q06eP3N3dr+Je5EQoDQAAAAAAAAA3mJUrV2r48OGyWCzGcxEREVq9erVWr16tRx55RK+++mqRt/vdd9/p/fffl9VqNZ6zWCzatWuXdu3apV9//VXTp09XYGDgVdmP3FC+AwAAAAAAAABuIAcOHNDIkSNlsVjUoEEDzZo1S5s3b9aCBQvUuXNnSdKsWbM0e/bsIm1348aNeu+992S1WlW1alVNmTJF69at02+//aZHHnlEzs7O2r9/v0aMGHEtdstAKA0AAAAAAAAAN5CJEycqJSVFlSpV0syZM9W8eXMFBASoQYMGmjx5srp27SpJ+uyzz5SQkFDo7X711Vey2WwqWbKkZs+erdtvv12lSpVSrVq19Oqrr2rIkCGSpM2bN2vnzp3XZN8kQmkAAAAAAAAAuGEcP35ca9askSQ9+eSTKlasmMPrTk5OGj16tJydnRUTE6Ply5cXett79uyRJHXu3DnX8hx9+/bN0fZaIJQGAAAAAAAAgBvEunXrJGWGzx07dsy1TXBwsOrUqSNJWrFiRaG37eycGQenp6fn+rqrq2uOttcCoTQAAAAAAAAA3CAOHjwoSSpbtmy+kw3WrVtXkrR///5Cb7thw4aSpNWrVys6OjrH6z/99JPxuEmTJoXeblERSgMAAAAAAADADSI8PFySVL58+XzblS1bVpJ07ty5PEc+X+q5556Th4eHLl68qAEDBmjNmjW6cOGCjh07pk8++USfffaZJKlnz56qX7/+FexF/lwLbgIAAAAAAAAAMEPWCObixYvn287X11eSZLPZFBcXl++o6iy33HKLvvnmG/3vf//T/v379eSTTzq87u/vr6effloDBgy4zN4XDiOlAQAAAAAAAOAGkZqaKkny8PDIt52np6fxOC0trdDbT0hIyDF5Ypb4+Hjt2bPHGK19rRBKAwAAAAAAAMANwsXF5Zpt++uvv9aQIUO0detWde3aVb/88ov27t2rTZs26YMPPlBQUJAWLVqkvn376sSJE9esH4TSAAAAAAAAAHCD8PLyklTw6OeUlBTjcUGjqiXpxIkT+uijjyRJffr00cSJE1W3bl25u7srMDBQ3bt317x581SyZElFRETorbfeuoK9yB+hNAAAAAAAAADcILJqRcfHx+fbLi4uTlLmyOqC6k9L0k8//SSr1SpPT0+9+OKLubYJDg7WU089JUnavHmzQkJCitDzwiOUBgAAAAAAAIAb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AQAAAAAAAADXASOlAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJjG9Xp3AAAAAAAAAAByE1S7mHyK+V3vbuSQUKGYoq93J25ijJQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpC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TEMoDQAAAAAAAAAwDaE0AAAAAAAAAMA0hNIAAAAAAAAAANMQSgMAAAAAAAAATEMoDQAAAAAAAAAwDaE0AAAAAAAAAMA0hNIAAAAAAAAAANPYK3sAAAAAAAAAAFCkoIZSQGUPogipkmIqexDVFzOlAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoAAAAAAAAAYBpCaQAAAAAAAACAaQilAQAAAAAAAACmIZQGAAAAAAAAAJiGUBoA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PB5PZQ8BAExDKA0AAApwu91KT0+v7GEAAACc8zwej3bu3ClJslgsBNMAzhuE0gAAwOB0OjV06FDNnDlTqamplT0cANVcTk6O4uLiJDEDEACKsmDBAr322mv6448/JOUG0263u0CbUz8DwLnAXtkDAAAAVYPL5dKYMWO0YcMGbd++XX5+frrhhhsUEBBQ2UMDUA1lZ2fr9ttvV0REhJ544gnVrVtXHo9HFoulsocGAFXGrl27tHz5clmtVo0ePVrt2rWT1Zo7f/Do0aOKjIyU1Wrl+gngnMNMaQAAIElKSUlRSEiIateurYyMDL3yyiv69ttvmTENoEKWLl2qjRs3auPGjXr33Xd18OBBXk0HgHycTqe2b98ut9uttWvX6v3339eGDRskSYsWLdKoUaP0zTffSBKBNIBzDqE0AACQ2+1WSEiIHn/8cfXu3Vs1atRQdna2Jk6cSDANoEKaNGkiX19fHT9+XPPnzyeYBoBTOBwODRs2TA0bNlRaWppWr16t6dOn66OPPtK9996rnTt3av369YqJiansoQLAGUcoDZwjeLgDUBH5rx0ul0sRERG65557dNVVVxFMAzgtPj4+stvtslgsSk5O1oIFCwimAeAU7du31/jx49WoUSNlZGRo0aJFmjRpkiSpXbt26tq1q8LDwyt5lABw5hFKA+eIvNe5cnJyCnzPAx+A4jidTt17771asWKFrFarrFYrwTSAMyYkJESBgYGyWCyyWq1KTk7Wb7/9RjANAPl4eXnp4osv1qRJkxQVFaXs7GxJUnBwsLp3765rr71WDoeDxQ4BnHNY6BCopvIvdLF7925t375d8+fPV2Zmplq1aqULL7xQffr0ofYYgCI5nU71799f+/fv165duzRx4kR17NixUDAtSfPmzVNcXJwmTpwoSbrxxhtZ/BBAqY4dO6bU1FRZLBY1bNhQMTExSkxM1KJFiyRJ9957r+rVq8fiXQDOew6HQ/v379eRI0eM7zIyMvTnn39qy5YtatWqFYsdAjjnWDxMTwCqnfw3I8uWLdN//vMfHT9+XCkpKUYbi8Wiu+++W4888khlDRNAFRYfH6/LL79cTqdTFotFkZGRmjRpki6++GJ5PB653W7ZbDYdP35c7733nhFMe3l5aezYsQTTAAooKij5888/NXDgQEnSyJEj1bp1az333HNKSkpSaGioevbsSTAN4LyV/7p3+PBhjRkzRtu2bVOTJk2UkpKi2NhY+fr66pJLLtHo0aPVrl27QvsBQHVG+Q6gGsq7CVm+fLlGjRqlv//+WykpKXI4HPLx8ZGUe7MydepUvfjii8YrYAAg5S5qGBYWpvnz56tOnTryeDyKjY3V448/rrVr1xqv2lPKA0BpnE6npk6dqgMHDkiS8aOWlDtT2s/PT5LUrFkz9erVS2PHjlVQUJASEhK0aNEiSnkAOC/lD5Y3bNig//73v+rbt69GjhypoUOH6rnnnlOTJk2UkZGh1atX6/3339fGjRslieslgHMG5TuAamrbtm0aP368PB6PmjVrpgsvvFA33HCDkpOT9eOPP2r+/PnyeDyaOXOmJGns2LFyOByVPGoAVUFe4BwZGanPPvtMt912m44cOWIE03kzpinlAaAkTqdTo0eP1sqVK7Vnzx698sorslgsRtCyePFipaeny8fHR61atZKPj4+uvvpqWa1WTZgwwQimJUp5ADi/5L9OPvbYY0pNTVWDBg303//+Vw0aNJAk2Ww2vfzyy9q9e7dWr14tScaM6bxgmuslgOqMmdJANeNyuSTl3sDExcWpWbNmGjlypJ555hldcskluuKKKzR58mTdddddxirNM2fO1CuvvCKn01mZQwdQhdhsNuXk5CgyMlKff/65oqKiJIkZ0wDKJDs7W6NGjdLKlSsVHBysrKwsHT161Ph7Wlqa9u/fL0mqU6eOAgIC5PF45Ofnp759++rJJ59kxjSA89qOHTuMQFqSUlNTtXv3buPvnTt31v/93/+pcePGzJgGcE4ilAaqgaJuNubPny+3260uXbroqquukq+vrzwejxFaP/rooxo6dKhq1KghSZo1axbBNIAC7HY7wTSAcvN4PHrttde0atUq+fj4aMCAAXr44YcVGRlptPH391fdunUlSd26dVOtWrWMGX2+vr4E0wDOO6de1/bv32/cP9WpU0cTJkxQx44djb/b7XZ16tSp1GA67/kvT14JJQCo6gilgWog7yFuyZIl+ve//62jR4/K7XYrNDRUI0eONAJpi8Uim81m3Ijce++9uu222wimARSLYBpAeaWnp+uPP/6QJPn4+Kh///6Kjo4u1O7f//63Ro8erebNm0sqGMgQTAM4X61evVq///67sRZQeHi4Pv74Y3Xv3l2hoaEF2pYUTG/YsEFS7ttvaWlp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AfJ4POrcubPxRm3+kh6pqan6/PPPdezYMQUHB6tfv34FynoAwPmAUBo4i3x8fPTOO+/oscce06ZNm+R2uzV8+HAjmPZ4PKpRo4auv/56xcbGasWKFdqxY4emTp2q3bt3a9iwYapVq5ak3DqvycnJ+uabb/Tdd98pOTlZ9erVM14NK64GNYBzS3x8vL7++mu5XC41aNBAgwYN0lVXXSUvLy+5XC7Vr19f0dHRBR5s8h6AXC6XvLy8NGLECE2cOFHHjx/X5s2btXnz5gLHCAsL03vvvad69epV0lkCAABUjvyB9JYtW/Tbb7/pt99+U0JCghISEtSmTRs1btxYt9xyi6KjoxUQEKCaNWtq6NChSktL019//aXffvtNycnJio2N1Q033GC8uWaxWJSYmKiffvpJ8+fPV05OjiIjI9W1a1dJvJkG4Pxi8Zz6LgmAMybvF/HDhw/rwQcf1JYtWyTl3mzkBdN5lixZohkzZmjlypVyuVzy9vZWYGCgrr32Wvn5+clms2nBggWKiYlRUlKSHA6HPv30U1100UUlLowI4Nyya9cujRgxQvHx8erXr59efvll2e32UmsWStLatWsVFhamevXq6f333zfeush7tTQ4OFjR0dF6+eWX1bBhQ7NPDQAAoMpYsmSJxo8fr9TUVGVmZspms8nlchn3TY0aNVLLli01ZswY1atXT0lJSZozZ44+//xz7d69W1arVVarVddcc41atWqlWrVqKT09Xd9++60OHDigmJgYeXt769NPP1Xbtm15pgNw3iGUBs6y4oJpm82madOmFQim161bpx9++MGYBSlJXl5eys7ONkp4OBwO1apVS5MmTVLbtm15xQs4z0ydOlWvv/66HA6HpkyZossuu6xM14EPP/xQS5YsUUZGht599105HA7t2bNHM2bMUHZ2try9vdW9e3d169aNmoYAAOC89vvvv+vOO++UJDkcDkVERCg4OFgOh0M7d+6U0+mU2+2WzWZTgwYN9NZbb6lRo0ZKTEzUsmXLNGvWLG3atMnoz+FwyO12y2KxKDs7WxaLRTVr1tSbb76pdu3a8UwH4LxEKA2YIDs7W15eXmWaMX3ixAmtX79eU6ZM0fHjx5WQkGD8rUmTJurWrZtuvvlmNW7cmJsX4Dz0yiuv6JNPPpHdbteHH36ozp07lzqzJisrS3fddZfWrl2roKAgvf322+rUqZOJowYAAKgeDh48qDFjxmjHjh1q3bq1rr76at1yyy3y9/eX1WrV77//rvXr12vq1KnKycmRJIWHh+vTTz9Vo0aNlJmZqRMnTmjy5MlatWqVjh49WqD/6OhotWvXTiNHjlSzZs14pgNw3iKUBk5D/iAoPj5eKSkpWrRokbKystS2bVvVrl1b0dHRkso2YzrvX0eLxaKEhATFx8dr586d8vLykq+vry6++GLZbLYSX9UHcG776KOPNGnSJEnSAw88oPvuu6/E9nnXip9//llPPfWU0tPTdeONN2rChAmFHoK4rgAAgPPNqfc/a9as0ZgxY+R2u/XII4/opptuksPhMBael3LLoy1btkz333+/srOzJUkXXnihpkyZojp16hh97dixQ3v37tWhQ4dktVoVHBysXr16ydvb21gMkXsvAOcrFjoEKij/DcTGjRv16aefasOGDcYv4UFBQfLx8dH777+vFi1aGDXI6tSpo7feessIpl0uV4HFD/PqlIWGhio0NFSNGjUqcFy32y1J3LwA56nw8HBje9euXUpNTS3xoSbvu2bNmsnX11fp6elKTU2VVHgxHa4rAADgfJJ/jt6OHTsUHh6uffv2KSkpSU2bNtWAAQPkcDjk8XiMQFrKvYe67LLL9PHHH+uOO+5Qdna29uzZo08++USPPfaYvLy8ZLPZ1Lx5czVv3rzY43LvBeB8xjsiQAXkD3+WLl2q++67T/PmzdPRo0dlt9vlcDiUnJysBg0aqEWLFsZ+pwbTrVq1kpQbNA8fPlxr1641VmYuDq92Aee3nj17qnPnzpKkuXPn6qeffpIkY9GdorjdbkVFRalWrVqScq8jvCgFAADOdxaLxXijbMSIEZoyZYp2794tSWrUqJG8vb3ldDqLXUz64osv1ptvvim73a6srCxt2LBBSUlJstlsBe61Tr3vIowGAEJpoELyB9KjRo1SQkKC6tatq169eun555/Xww8/rD59+uiFF16QJOOVLik3mM7JySkymB4xYoTWrl0rq9VqzIgGcH459d/9vM95DzOBgYHq3LmzvLy8JEnPPvus5s2bJ6n4YNpqterIkSPav3+/JCk0NJSHIQAAcN7zeDxKSUnR448/rsTERK1atUorV66UJGNmtMPhKHLfvMlC3bt317Bhw2S1WrVt2zZ99dVXkgoGz9x3AUBhhNJABW3evFlPP/20JKlNmzYaNWqUXn31VQ0YMEAjR47UW2+9pbp160qSER7lhUt5NzinBtMul0sjRozQunXrCKaB80j+INlqtSonJ0cZGRk6fvy4kpOTJZ18mLFarRo+fLhat25t7PPkk09q7ty5Bdq53W6j3/j4eH3xxRdKTU1VZGSkrrjiikLHBQAAON9YLBYFBgbq888/V2BgoA4cOKCDBw9Kkvbs2aOEhAS5XK4S+/D29i6wcP3hw4fP6pgB4FzBQodAMYqr8+XxeOR2u/XGG29oxowZCg0N1T333KMbb7xR3t7exoKGeVJTU7V582atXbtWCQkJatasmdq1a6dmzZoZbQ4fPqwHHnhAW7duNb6bOXOmOnbseJbPEkBly7/Y4J9//ql169bp22+/VVpamuLj4xUQEKBevXqpffv26tevn/GjVnJysoYMGaK//vrL6Ovpp5/W1VdfrbCwMOO7o0eP6scff9RXX32l/fv3q3PnznrttdcK1KYGAAA4X+U9v23ZskVDhw5VZmambDabvLy8NG3aNF100UWFFofOk7+s4w033KAdO3boggsu0A8//CC73V6gDjUAoCBCaeAUd911lwYNGqQ+ffoUu3BYSkqKbr75Zu3fv19du3bVO++8I19f3wKB9IkTJ7R3715NnDhRhw4dUkJCgrF/x44dNXDgQF133XXGd4cPH9ajjz6qTZs2SSKUBs4H+a8xP//8s958803FxcUpIyNDdrtdOTk5Rtvg4GC1atVKr732mkJCQiRJf//9t+6//37t2bPHaHfZZZepcePGatKkibKzs/X111/r8OHDiouLU0REhGbOnKn69eubeZoAAABVWl7ovHnzZg0bNkyZmZmSpBYtWujtt99WnTp1in02dLlcysnJ0fXXX699+/apc+fOmjZtmslnAADVD6E0kM+oUaO0dOlSSdI777yj3r17F9nujz/+0O23366cnBw9+uijuuOOOwrcpCxfvlw//PCDli9frvj4+CL76Ny5s55++mk1atRIOTk5stvtOnjwoB599FGNHTtWHTt2LPYXeQDVX/5rxvfff68nnnhCUu4roM2aNVPz5s2VnJys2NhY48cqSWrSpIleeeUVXXjhhZJyS3OMGTNGmzdvltPpNNrZ7Xa53W7jOhIdHa23335bjRo1Mu8kAQAAqpCiguW87/ImGOUPpgMDA9WnTx89/PDD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hw/L6/UqLCxMAQEBV/Q8AFydfi6Y/rl2QgAAAFczi8Uii8WiLVu2aNSoUYqPj5f02wfTgwYNMntMz549W8uXLzfbOwIArixCaVyVrFarSkpKlJqaqoSEBJ08eVI//vijpJ9abERERGjChAlyOp06ffq0Nm7cqIULF5p34n2hUHl5uSwWiwoLC7V69Wrl5OTI6XTqtttuk8QQMgCX50LB9PDhwyXpF7UTAgAAuJodOHBAEydOVFpamtavX68lS5ZI+mXB9Ouvv66IiAiVl5fr0KFDlwymBw4caAbTs2bN0rJly5STk3PlTxAA6jhCaVwVfFXQkvT9999r/vz5Gjp0qB566CENHTpU9913n0aMGKH4+HglJydLqgh9+vXrpwceeECBgYE6deqU1q9fr1dffVVJSUlmKOTn56eCggKtWbNGH374oYqKitSsWTP17t1bEo92Abh8vmC6fv36kqSvv/5amZmZ1XxUAAAA1c/pdOruu++WVLHGW758+S8Opjt27KiJEycqODhYbrdbBw8e1Ouvv649e/ZI+vlg+oMPPqBiGgCuMItROc0DaiHDMMxezjt37tSLL76onJwcFRcXX/BipUePHoqNjdVDDz0kSTp06JBWrlypNWvWqLCwUFarVTabTUOGDFGDBg0UFBSkTz75RCdOnFBOTo4cDocWLVqkrl27nvXeAHC59u7dqyeeeEILFy5UmzZtqvtwAAAAaoT09HS98847Wr16taSKKugHH3xQcXFxknTJgYTp6ekaOXKk0tLSzHWhy+XSn/70J/Xs2VPST2vJgoICLViwQBs3blRGRoZsNptGjhypxx57TA0bNqyakwWAOoZQGleNHTt2aMyYMTIMQ40bN1ZERIT69u0rm82mnTt36uTJkzpy5IgkKSQkRPfee6+efvppSdLx48f16aef6u2331Z+fr6kn+6e+/708/NTaGiopk2bpq5duzKRGcBvqqSkhD71AACgzqq8vqr89fHjxzVv3rzLCqaff/55rVmzRq1bt9bJkydVVFSkTp06aeHChXI6nWe93hdMf/TRRzp27JicTqc++eQTNW7c+EqfOgDUSfbqPgDgt5CYmKjJkyfLMAy5XC4NGjRIgwcPNi80hg0bpuTkZE2dOlUHDhxQdna2kpOTlZKSoujoaIWHh2vYsGG6+eab9Y9//EPHjh3TDz/8IKni7nl0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XHPNWdvZ7XZ5PB4FBwdr9uzZmjhxolJTUyVJb775prZs2aLIyEhFRUXJ4/Ho448/1smTJ5Wbm6vAwEDNmDFD7dq1o0oaAAAAAKpA7969NXjwYK1fv155eXln/S46OlpdunTRs88+q6CgIPPnJSUlCggIUExMjJKTk+VwOMyB9wCA2odQGjWS1+tVVlaW7Ha7UlJStHjxYvMu+IUuPHytN6KiorRo0SKNHz9eSUlJcrvdSkxMVGJioqSfhmP4+/urZcuWevPNN9WlSxcmMgMAAABAFWnQoIGeeOIJxcTEaPHixfJ4PAoICFC/fv102223qWPHjrLZbPJ4POZaLyAgQAUFBUpMTJTb7VZYWJhatGhR3acCALhMFsPXzAmoYYqKirRlyxa98sor5oALi8Wit99+W/37979gZbPvoqWkpETvvfee/v3vf+uLL744a5t27drpd7/7ne699161bduWQBoAAAAAqkleXp7ZazokJMT8udvtlt1uN9drBQUFWrp0qebPny+r1aonnnhCcXFxrOcAoJYilEaNVlxcrI8++kh///vflZ+fL0lq0aKF5s6dq5iYmEsG016vV16vV19//bVKS0tVUFAgp9OpHj16yOFwyOFw0LIDAAAAAGoA3zpOOn/wfV5enj788EOtWrVKBw8e1LXXXquZM2cqIiKiug4XAPArEUqjRjj37nbli5CioiJ9/PHHZjDt7++v3r1769lnn1VERMRlBcuE0QAAAABQ82zZskXLli3T0KFDFRoaKq/Xq/j4eCUkJCgjI0P16tXTokWL1KlTJ9Z1AFCLEUqj2px7AeF2u1VSUqLS0lI5HI6zhloUFBRoy5YtevXVV3XmzBk1bNhQ/fv317hx4xQeHs7FCAAAAADUct9//72mTJmi7777Tg0aNFBBQYHsdrvKysokScHBwZo7d66uu+462nYAQC3HoENUi8ohclJSkj7//HN9/PHHKi4uVlFRkYKDgxUbG6tOnTqpf//+cjqduv322yVJr776qvLy8vT555/LYrHoj3/8I8E0AAAAANRyTqdTbrdbFovFnCtUVlamJk2aKDo6Ws8884yuvfZaAmkAuApQKY1qtX37dr3wwgsqKChQcXGx7Ha73G63+fvQ0FDddNNN+utf/yp/f3+VlJRoBfL8GAAABmFJREFU8+bNeu2113TmzBk1atRI/fr1I5gG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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# to control the scale of plot\n", "plot_model(best, plot = 'class_report', scale = 2)" ] }, { "cell_type": "code", "execution_count": 71, "id": "54389270", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Class Report.png'" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# to save the plot\n", "plot_model(best, plot = 'class_report', save=True)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "2fef279d", "metadata": {}, "source": [ "Some other parameters that you might find very useful in `plot_model` are:\n", "\n", "- fit_kwargs\n", "- plot_kwargs\n", "- groups\n", "- display_format\n", "\n", "You can check the docstring of the function for more info." ] }, { "cell_type": "code", "execution_count": 72, "id": "54b09b8e", "metadata": {}, "outputs": [], "source": [ "# help(plot_model)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "b724ca46", "metadata": {}, "source": [ "## ✅ Interpret Model" ] }, { "attachments": {}, "cell_type": "markdown", "id": "52f8fb33", "metadata": {}, "source": [ "This function analyzes the predictions generated from a trained model. Most plots in this function are implemented based on the SHAP (Shapley Additive exPlanations). For more info on this, please see https://shap.readthedocs.io/en/latest/" ] }, { "cell_type": "code", "execution_count": 73, "id": "6b6891b7", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.72220.83760.47370.64290.54550.35200.3605
10.75930.78650.73680.63640.68290.49060.4940
20.66670.83010.42110.53330.47060.23220.2357
30.68520.76390.52630.55560.54050.30140.3016
40.77780.84060.68420.68420.68420.51280.5128
50.64810.68870.36840.50000.42420.17920.1835
60.74070.73380.52630.66670.58820.40280.4088
70.84910.86030.61110.91670.73330.63390.6592
80.66040.69520.50000.50000.50000.24290.2429
90.60380.61590.33330.40000.36360.07940.0801
Mean0.71130.76530.51810.60360.55330.34270.3479
Std0.06890.07660.12350.13460.11410.16100.1655
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/4 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# interpret summary model\n", "interpret_model(lightgbm, plot = 'summary')" ] }, { "cell_type": "code", "execution_count": 75, "id": "824bafdc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "
\n", " Visualization omitted, Javascript library not loaded!
\n", " Have you run `initjs()` in this notebook? If this notebook was from another\n", " user you must also trust this notebook (File -> Trust notebook). If you are viewing\n", " this notebook on github the Javascript has been stripped for security. If you are using\n", " JupyterLab this error is because a JupyterLab extension has not yet been written.\n", "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# reason plot for test set observation 1\n", "interpret_model(lightgbm, plot = 'reason', observation = 1)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "ca7ce2b4", "metadata": {}, "source": [ "Some other parameters that you might find very useful in `interpret_model` are:\n", "\n", "- plot\n", "- feature\n", "- use_train_data\n", "- X_new_sample\n", "- y_new_sample\n", "- save\n", "\n", "You can check the docstring of the function for more info." ] }, { "cell_type": "code", "execution_count": 76, "id": "42595030", "metadata": {}, "outputs": [], "source": [ "# help(interpret_model)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "6704f489", "metadata": {}, "source": [ "## ✅ Calibrate Model" ] }, { "attachments": {}, "cell_type": "markdown", "id": "d9713f0d", "metadata": {}, "source": [ "This function calibrates the probability of a given model using isotonic or logistic regression. The output of this function is a scoring grid with CV scores by fold. Metrics evaluated during CV can be accessed using the `get_metrics` function. Custom metrics can be added or removed using `add_metric` and `remove_metric` function." ] }, { "cell_type": "code", "execution_count": 77, "id": "74d47dde", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# check calbiration of default dt\n", "plot_model(dt, plot = 'calibration')" ] }, { "cell_type": "code", "execution_count": 78, "id": "3d5bb544", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.70370.73380.15791.00000.27270.19550.3292
10.62960.67670.10530.40000.16670.02350.0322
20.66670.76770.05261.00000.10000.06720.1864
30.66670.69400.21050.57140.30770.14590.1774
40.64810.79620.00000.00000.00000.00000.0000
50.59260.60450.10530.28570.1538-0.0439-0.0534
60.72220.67520.21051.00000.34780.25690.3839
70.73580.74760.22221.00000.36360.27400.3984
80.62260.61510.11110.33330.1667-0.0038-0.0047
90.67920.56830.16670.60000.26090.13280.1774
Mean0.66670.68790.13420.61900.21400.10480.1627
Std0.04310.07120.06920.34740.11030.10740.1586
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/6 [00:00" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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SUxMpHDhwri5uWFkZJTqvpOv/9/+k9v+ezv9zVKJ5ITqQ33993Y7qL+/a9eufXI8yXLnzs369etZunQpe/fuZePGjZiZmdG6dWvGjBmDiYlJiuckX+u/r+ub10z28uVLAK1R0De9q7zhTUqlkrlz57J+/Xqio6MpUKAArq6umJqapjj3vyPzyT8PulqyqV27dixbtoy//vqLqlWrcvr0aX744Yd3np/8/SfH8anefG0BWrduzdKlSzl+/Di1atXir7/+0ozkJve/Z88e9uzZk+Ja/51glvwzGhkZqZNYhciuJGEVIgurWbMmZ8+eJS4u7q2JxB9//MHMmTP5888/sbS05Msvv6Rhw4YsX76cIkWKoFAoWL9+PcePH09Tv28mpgAhISHA+xOEqVOnsn//fubPn0/16tU1iVfybd7USE68Q0JCKF68uNax4OBgihQpkuprvUtYWFiKtpCQkLd+b58ST/HixZk9ezZJSUlcvnyZ7du3s2HDBooWLUqfPn1SnG9jYwOkLgm0srIC4IcffsDJySnF8bcl2P+1YsUK1qxZw8SJE/H29taUKSTXmL4pOUFMFhwcDOguYSxSpAienp7s3buXly9fYmFhQcOGDd95fvL3HxoaqjUKe+fOHV6+fEnlypWBlHcnPjT6nqxYsWK4urqyd+9eDAwMePXqFa1atdIct7S0pHr16lolMcmMjLR/7Sa/n8nvrxDi7aQkQIgsrFevXrx8+ZL58+enOBYcHMzq1atxdnbGxcWFq1evEhcXR79+/ShatCgKhQJAk6ymZYT1yJEjWo93795NgQIFcHR0fOdz/Pz8NMttJSerV69eJTQ0VGsG+Ju3lv+rYsWKmJiYpJg44+vrS2BgoKYe9FPcv39fa2JWUFAQFy9efGtindp4/vs97du3j6pVqxIcHIyhoSFubm5MmDABKyurd46Ym5iYYG9vz9OnTz/4PVSsWBFjY2OCgoKoUKGC5o+RkRFz585N1e1nPz8/nJ2dadeunSZZDQoK4vbt2ylm7B87dkzr8e7du1EoFHh6en6wn/961/vfvn17Tp06xa5du2jWrNlbP6AlS05IDx06pNX+ww8/MHXqVAAsLCx49uyZ1vHkUoLUaN26NcePH2f37t24u7trfTjx9PQkICCAsmXLal778uXLs2bNGg4cOKB1neQYChYsmOq+hciJZIRViCys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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# check calbiration of calibrated dt\n", "plot_model(calibrated_dt, plot = 'calibration')" ] }, { "attachments": {}, "cell_type": "markdown", "id": "fee2a997", "metadata": {}, "source": [ "Some other parameters that you might find very useful in `calibrate_model` are:\n", "\n", "- calibrate_fold\n", "- fit_kwargs\n", "- method\n", "- return_train_score\n", "- groups\n", "\n", "You can check the docstring of the function for more info." ] }, { "cell_type": "code", "execution_count": 80, "id": "30a5cb89", "metadata": {}, "outputs": [], "source": [ "# help(calibrate_model)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "9f57d0c8", "metadata": {}, "source": [ "## ✅ Get Leaderboard" ] }, { "attachments": {}, "cell_type": "markdown", "id": "ec63b67a", "metadata": {}, "source": [ "This function returns the leaderboard of all models trained in the current setup." ] }, { "cell_type": "code", "execution_count": 81, "id": "307a6e3c", "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | 0/76 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Model NameModelAccuracyAUCRecallPrec.F1KappaMCCCustom Metric
Index
0Logistic Regression(TransformerWrapper(exclude=None, include=None...0.76890.80680.49590.76140.59680.44530.4673NaN
1K Neighbors Classifier(TransformerWrapper(exclude=None, include=None...0.70020.74330.48600.59650.53110.31420.3210NaN
2Naive Bayes(TransformerWrapper(exclude=None, include=None...0.74270.79570.57020.65430.60430.41560.4215NaN
3Decision Tree Classifier(TransformerWrapper(exclude=None, include=None...0.69470.65260.51370.56650.53430.31030.3130NaN
4SVM - Linear Kernel(TransformerWrapper(exclude=None, include=None...0.75210.00000.50700.73630.57960.41540.4398NaN
.................................
70Decision Tree Classifier(TransformerWrapper(exclude=None, include=None...0.70210.66670.55060.57310.55890.33500.3370NaN
71Voting Classifier(TransformerWrapper(exclude=None, include=None...0.75950.80560.56490.69760.61960.44690.4555NaN
72Stacking Classifier(TransformerWrapper(exclude=None, include=None...0.76330.80350.53330.71900.60960.44530.4572NaN
73Light Gradient Boosting Machine(TransformerWrapper(exclude=None, include=None...0.71130.76530.51810.60360.55330.34270.3479NaN
74Decision Tree Classifier(TransformerWrapper(exclude=None, include=None...0.66670.68790.13420.61900.21400.10480.1627NaN
\n", "

75 rows × 10 columns

\n", "" ], "text/plain": [ " Model Name \\\n", "Index \n", "0 Logistic Regression \n", "1 K Neighbors Classifier \n", "2 Naive Bayes \n", "3 Decision Tree Classifier \n", "4 SVM - Linear Kernel \n", "... ... \n", "70 Decision Tree Classifier \n", "71 Voting Classifier \n", "72 Stacking Classifier \n", "73 Light Gradient Boosting Machine \n", "74 Decision Tree Classifier \n", "\n", " Model Accuracy AUC \\\n", "Index \n", "0 (TransformerWrapper(exclude=None, include=None... 0.7689 0.8068 \n", "1 (TransformerWrapper(exclude=None, include=None... 0.7002 0.7433 \n", "2 (TransformerWrapper(exclude=None, include=None... 0.7427 0.7957 \n", "3 (TransformerWrapper(exclude=None, include=None... 0.6947 0.6526 \n", "4 (TransformerWrapper(exclude=None, include=None... 0.7521 0.0000 \n", "... ... ... ... \n", "70 (TransformerWrapper(exclude=None, include=None... 0.7021 0.6667 \n", "71 (TransformerWrapper(exclude=None, include=None... 0.7595 0.8056 \n", "72 (TransformerWrapper(exclude=None, include=None... 0.7633 0.8035 \n", "73 (TransformerWrapper(exclude=None, include=None... 0.7113 0.7653 \n", "74 (TransformerWrapper(exclude=None, include=None... 0.6667 0.6879 \n", "\n", " Recall Prec. F1 Kappa MCC Custom Metric \n", "Index \n", "0 0.4959 0.7614 0.5968 0.4453 0.4673 NaN \n", "1 0.4860 0.5965 0.5311 0.3142 0.3210 NaN \n", "2 0.5702 0.6543 0.6043 0.4156 0.4215 NaN \n", "3 0.5137 0.5665 0.5343 0.3103 0.3130 NaN \n", "4 0.5070 0.7363 0.5796 0.4154 0.4398 NaN \n", "... ... ... ... ... ... ... \n", "70 0.5506 0.5731 0.5589 0.3350 0.3370 NaN \n", "71 0.5649 0.6976 0.6196 0.4469 0.4555 NaN \n", "72 0.5333 0.7190 0.6096 0.4453 0.4572 NaN \n", "73 0.5181 0.6036 0.5533 0.3427 0.3479 NaN \n", "74 0.1342 0.6190 0.2140 0.1048 0.1627 NaN \n", "\n", "[75 rows x 10 columns]" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# get leaderboard\n", "lb = get_leaderboard()\n", "lb" ] }, { "cell_type": "code", "execution_count": 82, "id": "f8a8b060", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Pipeline(memory=FastMemory(location=C:\\Users\\owner\\AppData\\Local\\Temp\\joblib),\n",
       "         steps=[('clean_column_names',\n",
       "                 TransformerWrapper(exclude=None, include=None,\n",
       "                                    transformer=CleanColumnNames(match='[\\\\]\\\\[\\\\,\\\\{\\\\}\\\\"\\\\:]+'))),\n",
       "                ('numerical_imputer',\n",
       "                 TransformerWrapper(exclude=None,\n",
       "                                    include=['Number of times pregnant',\n",
       "                                             'Plasma glucose concentration a 2 '\n",
       "                                             'hours in an oral glu...\n",
       "                                                              strategy='most_frequent',\n",
       "                                                              verbose='deprecated'))),\n",
       "                ('normalize',\n",
       "                 TransformerWrapper(exclude=None, include=None,\n",
       "                                    transformer=MinMaxScaler(clip=False,\n",
       "                                                             copy=True,\n",
       "                                                             feature_range=(0,\n",
       "                                                                            1)))),\n",
       "                ['trained_model',\n",
       "                 LinearDiscriminantAnalysis(covariance_estimator=None,\n",
       "                                            n_components=None, priors=None,\n",
       "                                            shrinkage=None, solver='svd',\n",
       "                                            store_covariance=False,\n",
       "                                            tol=0.0001)]],\n",
       "         verbose=False)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "Pipeline(memory=FastMemory(location=C:\\Users\\owner\\AppData\\Local\\Temp\\joblib),\n", " steps=[('clean_column_names',\n", " TransformerWrapper(exclude=None, include=None,\n", " transformer=CleanColumnNames(match='[\\\\]\\\\[\\\\,\\\\{\\\\}\\\\\"\\\\:]+'))),\n", " ('numerical_imputer',\n", " TransformerWrapper(exclude=None,\n", " include=['Number of times pregnant',\n", " 'Plasma glucose concentration a 2 '\n", " 'hours in an oral glu...\n", " strategy='most_frequent',\n", " verbose='deprecated'))),\n", " ('normalize',\n", " TransformerWrapper(exclude=None, include=None,\n", " transformer=MinMaxScaler(clip=False,\n", " copy=True,\n", " feature_range=(0,\n", " 1)))),\n", " ['trained_model',\n", " LinearDiscriminantAnalysis(covariance_estimator=None,\n", " n_components=None, priors=None,\n", " shrinkage=None, solver='svd',\n", " store_covariance=False,\n", " tol=0.0001)]],\n", " verbose=False)" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# select the best model based on F1\n", "lb.sort_values(by='F1', ascending=False)['Model'].iloc[0]" ] }, { "attachments": {}, "cell_type": "markdown", "id": "9ecf0bfa", "metadata": {}, "source": [ "Some other parameters that you might find very useful in `get_leaderboard` are:\n", "\n", "- finalize_models\n", "- fit_kwargs\n", "- model_only\n", "- groups\n", "\n", "You can check the docstring of the function for more info." ] }, { "cell_type": "code", "execution_count": 83, "id": "dc76f0a5", "metadata": {}, "outputs": [], "source": [ "# help(get_leaderboard)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "94669c72", "metadata": {}, "source": [ "## ✅ AutoML\n", "This function returns the best model out of all trained models in the current setup based on the optimize parameter. Metrics evaluated can be accessed using the `get_metrics` function." ] }, { "cell_type": "code", "execution_count": 84, "id": "01532054", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True, fit_intercept=True,\n",
       "                max_iter=None, normalize='deprecated', positive=False,\n",
       "                random_state=123, solver='auto', tol=0.001)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True, fit_intercept=True,\n", " max_iter=None, normalize='deprecated', positive=False,\n", " random_state=123, solver='auto', tol=0.001)" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "automl()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "248dcc7c", "metadata": {}, "source": [ "## ✅ Check Fairness" ] }, { "attachments": {}, "cell_type": "markdown", "id": "93813447", "metadata": {}, "source": [ "There are many approaches to conceptualizing fairness. The check_fairness function follows the approach known as group fairness, which asks: which groups of individuals are at risk for experiencing harm. `check_fairness` provides fairness-related metrics between different groups (also called sub-population)." ] }, { "cell_type": "code", "execution_count": 85, "id": "316e23cb", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Ridge Classifier0.74890.69020.49380.70180.57970.40830.4211
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SamplesAccuracyRecallPrecisionF1KappaMCCSelection Rate
Number of times pregnant
0270.8148150.6666670.5714290.6153850.4943820.4969290.259259
1490.7346940.1818180.3333330.2352940.0912980.0974430.122449
2270.8888890.51.00.6666670.6086960.6614380.111111
3210.7619050.50.80.6153850.4559590.4823820.238095
4230.6521740.3333330.3333330.3333330.0980390.0980390.26087
5210.7142860.3750.750.50.3297870.368630.190476
6180.7222220.5714290.6666670.6153850.40.4029110.333333
7130.6923080.51.00.6666670.4347830.5270460.307692
8120.6666670.3333331.00.50.3333330.4472140.166667
950.80.751.00.8571430.5454550.6123720.6
1070.7142860.80.80.80.30.30.714286
1120.51.00.50.6666670.00.01.0
1221.01.01.01.0NaN0.01.0
1321.01.01.01.01.01.00.5
1420.50.51.00.6666670.00.00.5
\n", "
" ], "text/plain": [ " Samples Accuracy Recall Precision F1 \\\n", "Number of times pregnant \n", "0 27 0.814815 0.666667 0.571429 0.615385 \n", "1 49 0.734694 0.181818 0.333333 0.235294 \n", "2 27 0.888889 0.5 1.0 0.666667 \n", "3 21 0.761905 0.5 0.8 0.615385 \n", "4 23 0.652174 0.333333 0.333333 0.333333 \n", "5 21 0.714286 0.375 0.75 0.5 \n", "6 18 0.722222 0.571429 0.666667 0.615385 \n", "7 13 0.692308 0.5 1.0 0.666667 \n", "8 12 0.666667 0.333333 1.0 0.5 \n", "9 5 0.8 0.75 1.0 0.857143 \n", "10 7 0.714286 0.8 0.8 0.8 \n", "11 2 0.5 1.0 0.5 0.666667 \n", "12 2 1.0 1.0 1.0 1.0 \n", "13 2 1.0 1.0 1.0 1.0 \n", "14 2 0.5 0.5 1.0 0.666667 \n", "\n", " Kappa MCC Selection Rate \n", "Number of times pregnant \n", "0 0.494382 0.496929 0.259259 \n", "1 0.091298 0.097443 0.122449 \n", "2 0.608696 0.661438 0.111111 \n", "3 0.455959 0.482382 0.238095 \n", "4 0.098039 0.098039 0.26087 \n", "5 0.329787 0.36863 0.190476 \n", "6 0.4 0.402911 0.333333 \n", "7 0.434783 0.527046 0.307692 \n", "8 0.333333 0.447214 0.166667 \n", "9 0.545455 0.612372 0.6 \n", "10 0.3 0.3 0.714286 \n", "11 0.0 0.0 1.0 \n", "12 NaN 0.0 1.0 \n", "13 1.0 1.0 0.5 \n", "14 0.0 0.0 0.5 " ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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fFh9+vRRnTp1NHHiROt5xOrVq6fhw4dbDzvdsWOHnn32We3evVtNmzZVz5495enpqTfffFP9+/dP1yg8deqUpkyZolatWqlt27aqX7++dd2XX36p0aNHq3r16nrmmWd048YNzZgxQ2+88Yb69eunUqVK6dlnn5XFYtGCBQu0Zs0a632vXbump59+WqtWrVKNGjXUt29fdejQQbGxsXrzzTc1d+7cdI9z9erVioiIUM2aNRUeHq5ChQopMjJSr776qs12S5cu1bBhw3T69Gk98cQTevLJJ3Xs2DH169dP33//vXW79evXq3///jp58qTat2+vZ555Rn/99ZdGjRqlJUuWZPcplCS1adNG//3vf9NdVCRtFlvbtm0zvN/Ro0fVvXt3bdu2TU2aNFG/fv1UokQJ/etf/9L//d//6datW5Kkrl27qlGjRpKk9u3ba/jw4TZx3njjDV2+fFnh4eEKDAzUgw8+mGG+7Oybs2fPqn///vr555/VsmVLPffccypbtqyWL1+uYcOGZXufDBw4UKdPn7Y2uz/77DM988wzunDhgnWfFS5cWJ9//nm6++7YsUPx8fHq0qVLljmaNWumhIQEPfPMM1q1apU1dpqaNWvq8ccfV+nSpa3LLly4oKeeekoffvihAgIC1K9fP1WtWlXvvPOOwsPDMzwkvH///tq9e7fatWunjh076tSpUxo1apTNDOBly5bpjTfekCT17NlT3bp107lz5/Tiiy9meT694cOHW081MGjQoAzPAViwYEG1a9dOf/75p/bv32+zLiUlRV9++aWqVKmioKAgSbcvWtSzZ0/t2bNHLVq0UJ8+fZSamqqIiAi99tprWe7TnLLn/TRz5ky98sorunr1qrp27arevXurfPny+uyzzxQeHq6bN29Kkvr27avatWtLkp555hnrjx85kdF75Nq1a3r22We1fPlyVapUSX379lVwcLDWrVunHj166M8//7TeP6fPLwAAuIMFAAA3NW/ePIufn59lw4YNGa4/dOiQpU6dOpagoCDLX3/9ZbFYLJaDBw9aatWqZenTp48lPj7euu3ly5ctrVu3ttSrV8+67Z49eyx+fn6WevXqWf7880+b2Gnr3njjDeuya9euWRo2bGhp0KCB5ciRI9blycnJljFjxlj8/PwsCxYssC5v0aKFxc/Pz7Jq1Sqb2OfPn7f4+flZ/Pz8LNu3b7cu3717t3X56tWr023/1FNPWZctXbrU4ufnZ1m3bp1N7AsXLljq1q1radasWbrH4u/vbzlw4IB1+dWrVy1NmjSx1KlTx3L9+nWLxWKxnDlzxlKnTh1L27ZtbfZJTEyMpX79+pYOHTpYLBaL5b///a+lbt26lnbt2lkuX75s3S4hIcHyzDPPWGrXrm05efKkJSsbNmyw+Pn5Wd59913L8ePHLX5+fpa5c+fabLN69WpLrVq1LBcvXrS88cYbFj8/P8uePXssFovFkpqaaunQoYMlMDDQcvjwYZv7TZs2Ld1+THs93bnP08bw6KOP2rxeLBaL5ZVXXrH4+flZjh07Zte+mTFjhsXPz8/yww8/2MQbPHiwxc/Pz/LLL79kuV/69Olj8fPzszzzzDOWmzdvWpevXbvW4ufnZxk9erR12dixYy1+fn6WqKgomxiDBg2yBAQEWOLi4rLMdfHiRUvr1q2trzs/Pz/L448/bhk/frzliy++sCQmJqa7z6BBgyy1atWy7Nq1y2b5ypUrLX5+fpaZM2dal6Xtw6eeespy48YN6/JPPvnE4ufnZ3nxxRetyxo1amRp1aqVJTk52bos7XXWrVs367KMnse0ffb3339nut3+/fstfn5+lsmTJ9uM+5tvvrH4+flZ5s+fb7FYLJb4+HhLkyZNLA8//LDl/Pnz1u1u3bplGTFihMXPz8/y9ddfZ7lf096zLVq0sMybNy/Dv7TX8Z2PMzvvp4sXL1pq165t6d27tyUlJcUm76BBgyx+fn6W3bt3p3sO0l7Hme3DNC1atLCEhIRYb2f1HomIiEj3PrNYLJYdO3ZY/Pz8LCNHjrQuy+7zCwAAMsdMQgCA29uxY4fmz59v/XvzzTc1cuRI9e7dWykpKRo7dqx1ptNHH30ki8WisWPHytfX1xqjVKlSGjRokBISEtId3tagQQOVK1cuW+P4+++/1bdvXwUEBFiXe3l5acKECfLx8dGGDRvS3a9NmzYZxqtYsaLNhTEaNGggSSpcuLDNYaKVKlVS2bJl9fvvv1uXhYWFafLkyelmit1///168MEHdfny5XT5GjZsqODgYOvtYsWKKTg4WCkpKbp48aIkadu2bUpJSdELL7xgs08qV66sV155Rd27d1dycrI++eQTJSUlaeTIkTbnbfTx8dHIkSOVmppqPcwxO2rXrq3KlSunOy9h2qHGd84UTXPw4EH98ssveuqpp1S3bl2bdaNGjVLBggW1cePGbOV/9NFHbV4vGcnuvklNTZV0+5DjO02fPl0//PCDatasma0xjR49WoUKFbLe7tmzp6pWraovv/zSOmM17fn/9NNPrdtdvnxZ33//vVq0aKESJUpkmaNChQratGmTXnrpJVWrVk2SdP78eW3YsEEjRozQE088of/85z/W7f/88099++23at68ebpzRPbp00f3339/hs977969VbhwYevt5s2bS5LNa9pisejy5cs2h8ved9992rp1qz744IMsH0d2NGjQQA8++KC++OIL6wxTSdbPg44dO0q6faXty5cva8CAAapUqZJ1uwIFCmjMmDGSlOH7PCO///67FixYkOFf2iHSkux6P3l7e2vWrFmaOHFiuquBN2zYUJJzLlZy93skJSVFmzZtUs2aNdW7d2+bbR9//HE1aNBA27dvtx6C7uznFwAAd8DVjQEAbu+rr77SV199Zb1dsGBBlSxZUs2aNVPv3r0VFhZmXXf06FFJtw/l/frrr23ipDXC7j7H3J2NgKycOHFC0v++iN+pdOnSqlq1qo4fP65r166pWLFi1rFm1OCSbjeX7pTWRLnvvvvSffkvVKiQrl69ar1dp04d1alTRzdu3NDBgwf166+/KiYmRocPH9avv/5q0wRJU6VKlXTL0saZdv6+tMd452HRae5sXB45ckTS7XOonTp1yma7tMNN02JlV5s2bbR8+XJFR0erRo0aunz5sn766Seb80HeKe25PnfunObPn59ufZEiRXTy5ElZLBZ5eHhkmTs7r4Hs7puuXbtq7dq1mjNnjlavXq1HH31Ujz76qJo1a2bTKMuKh4dHhnmCgoJ09uxZnTlzRrVr11aTJk10//33a9u2bRo/frw8PT21ZcsWpaSkqHPnztnKVbhwYQ0dOlRDhw7Vb7/9ph9++EH/+c9/9PXXX+vChQsaOnSoPvzwQ9WpU0fHjh2TxWJRXFxchvu8YMGC+u9//6s//vjD5nVftWpVm+3SXnd3Hp7/zDPPaNmyZWrfvr31nJnNmzdXYGBgth5HdnTs2FGLFi3Sjz/+qIcfflhJSUnasWOH6tWrZ30/pr22jx49muFj9PT0zPZru1GjRnr//ffvuZ0976dSpUqpY8eOSk1N1S+//KLTp0/r/PnzOnnypLWhm9aodqS7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lShRItfPLwAAuI3DjQEAsEOTJk0UHh6u999/X08++aSaN28ub29v7dixQ//973/Vs2dPNW7cOEexixYtqmnTpumll15Sz5491bp1a5UpU0Z79uzRL7/8otDQUA0aNMjBjyhjHTt2VGRkpLp3765WrVopJSVF3333nc6ePavSpUvr8uXLiouLs84Ay67q1atr+PDhmjdvnjp37qwWLVrIYrFoy5YtSkxMtDaNqlSpon/84x+aMWOGOnTooJYtW6pEiRL69ttvdfr0abVo0SJd8yU70q40HRUVpeDgYN13332Zbuvp6amZM2dq0KBB6tOnjx5//HE9+OCDOnLkiPbs2aNKlSpp9OjR1u3TDltevHixjh8/ruHDhztl3wwcOFBbt27Vyy+/rG3btqly5cr6/fff9eWXX6pcuXLq06fPPXMVKlRIR48eVY8ePdSkSROdOHFC33//vapVq6YXX3wx3fZPPvmkpk+frt9//10jRozI1uPx9PTUokWL9Nxzz1nPb9msWTOVLl1af/31l3bv3q2LFy+qf//+atGihfV+U6ZMUe/evTVq1Cg9+uijqlmzps6ePauvv/5aJUuW1KRJk7K3Q+/g7e2tkSNH6o033lCHDh3UunVr+fj4aN++fTp8+LA6d+5sbWxlJO25nTBhgpo1a6a+fftmum2ZMmXUtGlTffvttypcuLDNFcYlqXjx4nrjjTf08ssvq2vXrmrVqpXKly+vffv26dChQwoMDNTzzz9v92PMij3vp/bt2+vdd9/V5MmTtW/fPpUrV04nT57Ud999p1KlSumvv/6yacSl7ZsZM2aoadOmGj58uJo3b67y5ctr69atunbtmmrXrq2ff/5Zp06dkp+fn/773/9ma9yvvPKKfv75Z82cOVNfffWVgoKCrLNTvby8NG3aNBUoUCDXzy8AALiNmYQAANjp1Vdf1axZs3T//ffrk08+0ccff6yyZctq2rRpOWpg3KlNmzb64IMP1KxZM+3evVvr1q2TJI0dO1bvvfeeIYcaS9JLL72kESNGqECBAvrggw+0Y8cOVaxYUStWrNDQoUMlSd98802OYg8bNkxvvvmm7r//fm3evFmffvqpgoKCtHr1agUFBVm369+/v5YtW6batWvryy+/1L///W95eXlp3LhxmjdvnnUGkz0KFChgbdpkdsGSO4WGhmr9+vVq27atfvrpJ61atUoXLlxQeHi4/v3vf9s0Sdu3b6927drp/Pnz+uCDD/T777/bPb7s7JtKlSpp7dq1at++vY4cOaJ3331X+/btU6dOnbRu3bpMz7F4J29vb61cuVIlS5bUmjVrdPz4cT3zzDP64IMPVLx48XTblyxZ0nr+PHtms1avXl3btm3Tiy++qHLlymn79u1asWKFdu3apTp16mj58uXpri5drVo1bdy4UU8//bROnjypVatW6eTJk+rcubM++ugj1ahRI9v57xQeHq4333xTlSpV0pYtW7RmzRolJSVp/PjxmjZtWpb3HTp0qOrVq6fvv/9ea9asuWeutIZby5YtM7zidLt27bR69Wo1adJEu3fv1urVq3X9+nW98MILeu+996zn43Ok7L6f/P39tWzZMgUEBGjHjh1at26dLl26pJEjR2rz5s0qUKCAzXu/V69eatasmY4cOaL3339fN27ckLe3t95//321bt1aUVFRWrt2rYoVK6a1a9fadY7R0qVLa926dXr++ef1xx9/6P3339dPP/2kli1bat26dTY/yOTm+QUAALd5WJxxeTIAAADkG6mpqWrRooUqVqyoDz74wNXDAQAAgBMwkxAAAABZWr9+vS5evKinn37a1UMBAACAk3BOQgAAAGToxRdfVExMjE6cOKFq1arpySefdPWQAAAA4CTMJAQAAECGypQpo7NnzyooKEiLFi2yXuUXAAAA+Q/nJAQAAAAAAADcHDMJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJAQAAAAAAADdHkxAAAAAAAABwczQJ4dZ++eUXvfTSS2rWrJnq1q2rsLAwvfjiizpx4oSrh2a1ceNG1apVS7/99purhwIAyOPGjBmjWrVqKTIy0tVDAQDAqcLDw1WrVi2bv9q1a6tBgwbq1q2bNm/ebPiY7v7uFh4ervDwcMPHAeSUl6sHALjKqVOn9Mwzz6h+/fp69dVXVaZMGV28eFGrV6/W008/rVWrVql+/fquHiYAANly7do17dixQ35+fvr3v/+t/v37y8PDw9XDAgDAaerUqaNJkyZZb9+6dUsXL17Ue++9p7Fjx6pkyZJq3ry5C0cImAtNQritd999V6VKldLy5cvl5fW/t0KrVq3Utm1bLVq0SMuWLXPhCAEAyL7PPvtMkjRx4kQ999xz2rNnjx5++GEXjwoAAOcpWrRohhM7Hn30UT388MPauHEjTULADhxuDLd16dIlWSwWpaam2iwvXLiwJkyYoHbt2km6/WvUsmXL1KFDBwUFBal+/frq2bOn9uzZY73P/Pnz1bZtW23fvl0dOnRQYGCgOnfurJ9//llRUVHq0aOHgoKC1KFDB/3www8292vZsqV27dqltm3bql69enr66ae1d+/eLMf+008/qU+fPqpXr54aNWqkV155RZcvX7auT01N1ZtvvqmWLVuqbt26atmypebOnavk5GRH7DoAQB60YcMGPfzww2rSpIkqV66sDz/8MN02mzZtUteuXVWvXj099thjmjt3rpKSkqzro6Ki9Pzzz6tBgwZq0qSJRo8erT/++ENS5qe/aNmypcaNG2e9XatWLS1YsEDdunVTUFCQFixYIEnat2+fBgwYoIYNG1pr0/z5823q8PXr1/X666/rkUceUf369dW9e3d9/fXXkqSZM2cqKChI165ds8m/aNEihYSEKCEhIXc7EACQbxQqVEje3t7WGfWpqalatmyZWrdurbp16+qJJ57Q+++/n+5+96qTO3bsUK9evRQcHKy6deuqbdu2WrNmjWGPC3A2moRwW4899pguXLignj17as2aNTp9+rQsFoskqW3bturataskac6cOVq0aJGeeeYZvfPOO3r99dcVFxenUaNG2XwhuXjxombMmKGhQ4fq7bff1tWrVzVy5EiNHj1aPXr00MKFC2WxWPTSSy/p5s2b1vtdvnxZr7zyinr16qW3335bPj4+GjBggI4fP57huPft26d+/frJx8dHb731liZMmKAff/xRffv2tcZdvny51q5dq2HDhikyMlLPPvusVqxYocWLFztrdwIAXOjUqVM6fPiwunTpIknq0qWLvvrqK126dMm6zZo1a/TKK68oICBACxYs0ODBg/X+++/rjTfekCQdO3ZMffr0UWJiombNmqXJkyfryJEjGjBggFJSUuwaz5IlS9SxY0fNmzdPTzzxhE6cOKF+/fqpZMmSevPNN7V48WKFhoZqwYIF2rp1q6TbP8o9//zz+vTTTzVkyBAtWrRI1apV07Bhw/TTTz/pqaeeUmJiorZt22aTa/PmzWrfvr18fX1zsQcBAGZksViUkpJi/UtMTNSZM2c0fvx43bhxQ507d5YkRUREaN68eerUqZOWLFmitm3batq0aVq4cKE11r3q5Ndff61hw4YpICBAixYt0vz58/Xggw9qypQpOnjwoEseP+BoHG4Mt9WrVy/FxsZqxYoVmjJliiSpVKlSCgsLU9++fRUUFCRJ+vPPP/XSSy/ZnHC2UKFCGjFihE6ePGmd3p6QkKBJkybp0UcflSRFR0dr7ty5mjp1qp566ilJUnx8vEaOHKmzZ8/K39/fer+IiAjrF7smTZqoVatWWrZsmd5888104547d66qVq2qpUuXytPTU5JUr149Pfnkk9qwYYN69+6tH3/8UXXr1lX37t0lSY0aNZKvr6+KFSvm4L0IAMgLNmzYoJIlS6ply5aSpK5du2r+/Pn66KOPNHToUKWmpmrhwoVq1aqV9cuOdLsGff7550pOTtaSJUtUsmRJRUZGqlChQpKk8uXLa8yYMTp16pRd4wkNDVX//v2ttzdt2qSmTZtq9uzZKlDg9m/UzZo1086dO7V37149+eST+vbbb3Xw4EHrOKXbNfH8+fPas2ePhg8fruDgYG3evFk9evSQJB04cEAxMTGaMWNGznceAMC09u3bp4CAAJtlHh4e8vPz09tvv60WLVro7NmzWrdunUaPHq3BgwdLksLCwuTh4aGlS5eqV69eKlGixD3rZHR0tLp27aqJEyda1wcHB6tx48bau3ev6tWrZ8yDBpyIJiHc2qhRo9SvXz/t3r1bP/zwg/bu3atPP/1Un332mSZM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qLfffluHDh3SkSNHlJiYqMGDB+uhhx6ymV0o2c4kjImJ0enTp623//jjD/388896+OGHbXLs2LHD+t8Wi0VffvmlQkJC5O3trf3796t48eIaOHCgtUF448YN7d+/n6O5YBrMJASyqXnz5mrYsKFeeOEFvfDCC6pevboOHTqkefPm6ZFHHrEWgr59++q9996Tt7e3GjVqpIMHD2rt2rUaO3asChSw7cs3aNBAqampGjZsmAYPHqwiRYpo69atunbtWrrzGkpSjRo11LVrV82bN08JCQlq2LChjh8/rgULFqhx48Z65JFHDNkXAAAAAJCXeHl5afbs2eratatGjx6tBQsWWJc9//zzSkpK0saNG/X1119Lsr3QicVi0dChQ/XSSy/J09NTCxYsUIkSJRQeHm6TY9asWUpMTFTVqlW1fv16nT59WitXrpR0+2Ina9eu1YwZM9SiRQv9+eefWrFihS5dumQ9IgzI62gSAtlUoEABLVu2TG+//baWLl2qv/76SxUqVFD//v2tV7iSpH/84x8qU6aMPvzwQ73zzjuqVKmS/vnPf6pnz57pYpYvX17vvPOO3n77bU2cOFEJCQmqWbOm5s+fryZNmmQ4jqlTp6py5crasGGDli9frvLly6tv37564YUX0jUhAQAAAMBdVK1aVWPHjtXkyZO1fPlyzZ07VwsWLND//d//qUSJEqpfv77ef/99hYeH66efflKtWrUkSQ888ICef/55TZs2TQkJCWratKkWL16skiVL2sSPiIjQ0qVLdf78edWpU0eRkZHWC5507dpVv/32mzZs2KAPPvhAFSpUUPPmzdWrVy/985//1OnTp1W9enWjdwlgFw/LnXNsAQAAAAAA3MS4ceP0448/aufOnZlus3HjRo0fP15fffWVKlWqZODoAGMx7QgAAAAAAABwczQJAQAAAAAAADfH4cYAAAAAAACAm2MmIQAAAAAAAODmaBICAAAAAAAAbo4mIQAAAAAAAODmvFw9gMz8/PPPslgsKliwoKuHAgC4h+TkZHl4eCg4ONjVQ8mzqGsAYA7UtHujpgGAedhT1/LsTEKLxSJ7rqlisViUlJRk131yMiZn5jB7fCNyEN/1Ocwe34gcZo+fkxz2fma7o7xW1/Li64j45sth9vhG5DB7fCNy5LX41LR7y8k+ymvPs7vFNyKH2eMbkcPs8Y3IYfb4RuRwZl3LszMJ036VCgwMzNb28fHxOn78uGrUqKHChQs7ZUzOzmH2+EbkIL7rc5g9vhE5zB4/JzkOHz7slHHkJ3mtruXF1xHxHc/sj4F95Pr4RuTIa/Gpafdmb02T8t7z7G7xjchh9vhG5DB7fCNymD2+ETmcWdfy7ExCAAAAAAAAAMagSQgAAAAAAAC4uRw3CZOSktShQwft3bs3022OHTumHj16qF69eurevbuOHDmS03QAADgNNQ0AkJ9Q1wAAOZGjJmFiYqJGjx6tU6dOZbpNfHy8Bg8erNDQUG3cuFHBwcEaMmSI4uPjczxYAAAcjZoGAMhPqGsAgJyyu0kYHR2tp59+WufOnctyuy1btqhQoUIaO3asqlevrokTJ6pIkSLatm1bjgcLAIAjUdMAAPkJdQ0AkBt2X934xx9/VOPGjfXSSy+pfv36mW538OBBhYSEyMPDQ5Lk4eGhBg0aKCoqSt26dctWLovFku1fsxISEmz+dQZn5zB7fCNyEN/1Ocwe34gcZo+fkxwWi8X6eW8mRtY0KW/Vtbz4OiK++XKYPb4ROcwe34gceS2+WWualHe/q0l573l2t/hG5DB7fCNymD2+ETnMHt+IHM6sa3Y3CXv16pWt7WJjY1WjRg2bZWXKlMly2vvdkpOTdfz4cbvGFxMTY9f2OeGIHCcbzcl8XQbLav34cq5zpjHLPjJ7fHufY8n+59nZryNep/eWH54DR+Xw9va2O7erGVnTpLxZ18zyXiN+3s5h9vhG5DBL/CLJjTNeLik2g4+8GwUzP+edK+JnxZ59ZMaaJuX972qSed4L+TW+ETnMHt+IHGaPb0QOs8TfkVo8kzXFpTOX0y1tVeCqQ/JKzqlrdjcJsyshISHdILy9vZWUlJTtGAULFkxXvLLKFxMToypVqsjX19eusWaXI3Nk1iTKjL+/f67ySebbR2aPb+9zLNn/PDv7dcTr9N7yw3PgiBzR0dF25zUTR9Q0KW/VNbO914ifN3OYPb4ROcwW/9wh+7a3t+44O35G7N1H+b2mScZ/V0vLaab3Qn6Lb0QOs8c3IofZ4xuRw2zxdxz93a7t83pdc1qTsFChQumKTFJSknx8fLIdw8PDQ4ULF7Yrr6+vr933sZcROe7myHz5YR+ZPX5mnJ3TTPHzw+s0I2Z6DuzJYdbDsrLLETVNypt1LT+814jv+hxmj29EDrPHz4yZ6lp291F+r2mS676rSeZ/L5g9vhE5zB7fiBxmj29EDrPHz0xer2s5urpxdlSoUEGXLl2yWXbp0iWVL1/eWSkBAHAKahoAID+hrgEAMuK0JmG9evX0888/y2KxSLp9osQDBw6oXr16zkoJAIBTUNMAAPkJdQ0AkBGHNgljY2N18+ZNSVLbtm119epVTZ06VdHR0Zo6daoSEhLUrl07R6YEAMApqGkAgPyEugYAuBeHNgnDwsK0ZcsWSVLRokW1dOlS7d+/X926ddPBgwe1bNkylxzzDQCAvahpAID8hLoGALiXXF245OTJk1neDgoK0scff5ybFAAAGIKaBgDIT6hrAAB7Oe2chAAAAAAAAADMgSYhAAAAAAAA4OZoEgIAAAAAAABujiYhAAAAAAAA4OZoEgIAAAAAAABujiYhAAAAAAAA4OZoEgIAAAAAAABujiYhAAAAAAAA4OZoEgIAAAAAAABujiYhAAAAAAAA4OZoEgIAAAAAAABujiYhAAAAAAAA4OZoEgIAAAAAAABujiYhAAAAAAAA4OZoEgIAAAAAAABujiYhAAAAAAAA4OZoEgIAAAAAAABuzsvVAwAAAACMcGJPxv/rW0TSuUPpl9dukuLcAQEAAOQhzCQEAAAAAAAA3BxNQgAAAAAAAMDN0SQEAAAAAAAA3BxNQgAAAAAAAMDN2d0kTExM1IQJExQaGqqwsDBFRkZmuu327dvVrl07BQcH69lnn9XRo0dzNVgAAByJmgYAyE+oawCA3LC7SThr1iwdOXJEK1eu1KRJk7RgwQJt27Yt3XanTp3SmDFjNGTIEG3evFn+/v4aMmSIEhISHDJwAAByi5oGAMhPqGsAgNywq0kYHx+v9evXa+LEiQoICFDr1q01cOBArVmzJt2233//vWrUqKEuXbrooYce0ujRoxUbG6vo6GiHDR4AgJyipgEA8hPqGgAgt+xqEp44cUIpKSkKDg62LgsJCdHBgweVmppqs23JkiUVHR2t/fv3KzU1VRs3blTRokX10EMPOWbkAADkAjUNAJCfUNcAALnlZc/GsbGxKlWqlLy9va3LypYtq8TERMXFxal06dLW5e3bt9fOnTvVq1cveXp6qkCBAlq6dKlKlCiR7XwWi0Xx8fHZ2jZtarwzp8gbkSMz2d0PWckP+8js8e/FEc+z2ePnh9dpVszwHOQkh8VikYeHh9NzO5LRNU3KW3UtP7zXiO/6HGaPfy9mqGv5YR85O769+8iMNU3K29/VJPO/F8we34gcZo9vRA6zxzcih9nj30ter2t2NQkTEhJsio4k6+2kpCSb5VeuXFFsbKxee+011atXT2vXrtX48eP18ccfq0yZMtnKl5ycrOPHj9szRMXExNi1fU4YkeNu9u6Hk43mZL4ug2W1fnzZzhFlzdn7yOzxM2Pv82z2+Pn9dZqRvPYcODLH3fUhrzO6pkl5s67lh7pJfNfnMEv8InZub+/7tUhy40zzxp5Kv/xGwb12jihzptlHTo6fFXv2kdlqmmSO72qSeT4v8mt8I3KYPb4ROcwe34gc5olf3K6t83pds6tJWKhQoXQFJu22j4+PzfI5c+bIz89PvXv3liS9/vrrateunTZs2KDBgwdnK1/BggVVo0aNbG2bkJCgmJgYValSRb6+vtm6j70cmSOjBkhW/P3981T8zDj7eTBTfHufAynvPc9mj58Z3suOz2HGcxgZXdOkvFXXzFY3iZ83c5gt/rlD9m1v72eqs+NnhH10b/buIzPWNClvf1eTzPd5kd/iG5HD7PGNyGH2+EbkMFv8HUd/t2v7vF7X7GoSVqhQQVeuXFFKSoq8vG7fNTY2Vj4+Pipe3LZ7evToUYWHh1tvFyhQQLVr19aFCxeync/Dw0OFCxe2Z4jy9fW1+z72MiLH3Zydz9Hxnb2PzB4/M2Z7ns0en/ey43KY8bAso2ualDfrWn6om8R3fQ6zx8+MmT6z2Uf3lt19ZMaaJpnju5pk/s8Ls8c3IofZ4xuRw+zxjchh9viZyet1za4Ll/j7+8vLy0tRUVHWZfv371dgYKAKFLANVb58eZ0+fdpm2dmzZ1WpUiV7UgIA4BTUNABAfkJdAwDkll1NQl9fX3Xp0kURERE6dOiQduzYocjISPXt21fS7V+qbt68KUl6+umntW7dOm3atEm//vqr5syZowsXLqhr166OfxQAANiJmgYAyE+oawCA3LLrcGNJGj9+vCIiIvTcc8+paNGiGjFihNq0aSNJCgsL0/Tp09WtWze1b99eN27c0NKlS3Xx4kX5+/tr5cqVdp3gHQAAZ6KmAQDyE+oaACA37G4S+vr6aubMmZo5c2a6dSdP2p7+vkePHurRo0fORwcAgBNR0wAA+Ql1DQCQG3YdbgwAAAAAAAAg/7F7JiFglA88n8103ckMlvW6tdZ5gwEAAAAAAMjHmEkIAAAAAAAAuDmahAAAAAAAAICbo0kIAAAAAAAAuDmahAAAAAAAAICbo0kIAAAAAAAAuDmahAAAAAAAAICbo0kIAAAAAAAAuDmahAAAAAAAAICbo0kIAAAAAAAAuDmahAAAAAAAAICbo0kIAAAAAAAAuDmahAAAAAAAAICbo0kIAAAAAAAAuDmahAAAAAAAAICb83L1AABX+cDz2UzXncxgWa9ba503GAAwsRN7Mv/fiSKSzh1Kv7x2kxTnDQhOkdnzzHNsHJ6De2MfAQCQc8wkBAAAAAAAANwcTUIAAAAAAADAzdEkBAAAAAAAANwcTUIAAAAAAADAzdEkBAAAAAAAANwcTUIAAAAAAADAzdndJExMTNSECRMUGhqqsLAwRUZGZrrtyZMn9eyzzyooKEgdO3bUnj17cjVYAAAciZoGAMhPqGsAgNywu0k4a9YsHTlyRCtXrtSkSZO0YMECbdu2Ld12165d0/PPP68aNWro008/VevWrTV8+HD99ddfDhk4AAC5RU0DAOQn1DUAQG542bNxfHy81q9fr+XLlysgIEABAQE6deqU1qxZo7Zt29ps+/HHH6tw4cKKiIiQp6enRo4cqW+++UZHjhxR8+bNHfogAACwV16qaSf2ZFyOi0g6dyj98tpNUnKd02zYR/fGPgLcW16qawAAc7KrSXjixAmlpKQoODjYuiwkJERLlixRamqqChT438TEH3/8UY8//rg8PT2tyzZs2GDX4CwWi+Lj47O1bUJCgs2/zmBEjsxkdz+4Oj77KG/nIP5tvE4dn8NiscjDw8PpuR3J6Jom2VfXsuKIGK58H0jmeC84ex/xHNwb+yhvxzcihyvim7GmSXn7u5pkrs/U+Ud/z2RNce3IYN2IgIq5zpkfvs+aPb4ROcwe34gcZo9/L674/yN76ppdTcLY2FiVKlVK3t7e1mVly5ZVYmKi4uLiVLp0aevy8+fPKygoSP/85z+1c+dOVaxYUa+88opCQkKynS85OVnHjx+3Z4iKiYmxa/ucMCLH3ezdD66Ozz7KmzmIb4vXqWNz3FkbzMDomiZlXteK2Dl2Rz7Pjngf2Dt+yf7HYPZ9ZER8Z++j/PAcmH0fGfEcmP0xOCq+2WqaZI7vapJZPlOL27V1Xvy8c2UOs8c3IofZ4xuRwzzxzfF5kd26ZleTMCEhIV3gtNtJSUk2y+Pj47Vs2TL17dtXy5cv1+eff64BAwZo69atuv/++7OVr2DBgqpRo0a2xxYTE6MqVarI19c3W/exlyNznLRze39//zwVPzPso5zHNyKHu8XPDK9Tx+eIjo62O6+rGV3TpMzrWkaHgmbFEe8FR74P7B2/ZP9jMPs+MiK+s/dRfngOzL6PjHgOzP4YHBHfjDVNytvf1dLGZ5bP1IxmC2YlL37euSKH2eMbkcPs8Y3IYbb4Zvi8sKeu2dUkLFSoULoCk3bbx8fHZrmnp6f8/f01cuRISVKdOnX0/fffa/PmzRo6dGi28nl4eKhw4cL2DFG+vr5238deRuS4m7PzOTo++yhv5iC+LV6njsthxsOyjK5pUs7qWkYc+Ty74n0gmeu94Ox9xHNwb+yjvBnfiByuiG/GmiaZ47ualD8/U832eWf254B95Pr4RuQwe/zMuOLzwp66ZtfVjStUqKArV64oJeV/J7qOjY2Vj4+Pihe3nWJZrlw5VatWzWZZlSpV9N///teelAAAOAU1DQCQn1DXAAC5ZVeT0N/fX15eXoqKirIu279/vwIDA21OhCtJ9evX18mTtgexnTlzRhUr5v6krgAA5BY1DQCQn1DXAAC5Zdfhxr6+vurSpYsiIiI0bdo0/fnnn4qMjNT06dMl3f6lqlixYvLx8VHPnj21evVqzZ8/X506ddKmTZt0/vx5de7cOdeD/sDz2UzXZXRurV631uY6JwAgf8krNQ0AAEegrgEAcsuumYSSNH78eAUEBOi5557T5MmTNWLECLVp00aSFBYWpi1btkiSKlasqHfeeUe7du1Shw4dtGvXLi1btkwVKlRw7CMAACCHqGkAgPyEugYAyA27ZhJKt3+hmjlzpmbOnJlu3d1T1kNCQrRx48acjw4AACeipgEA8hPqGgAgN+yeSQgAAAAAAAAgf6FJCAAAAAAAALg5uw83BgAAAAAAgOvM3HcqkzXFtePo7+mWvtKwpnMHhHyBmYQAAAAAAACAm6NJCAAAAAAAALg5moQAAAAAAACAm6NJCAAAAAAAALg5moQAAAAAAACAm6NJCAAAAAAAALg5moQAAAAAAACAm/Ny9QAAwJk+8Hw203UnM1jW69Za5w0GgNs6sSfj/+UqIuncoYzvU7tJivMGlAfZu4/cbf8AAAA4G01CAAAAAIBDzNx3Kou1xbXj6O/plr7SsKbzBgQAyDYONwYAAAAAAADcHE1CAAAAAAAAwM3RJAQAAAAAAADcHE1CAAAAAAAAwM3RJAQAAAAAAADcHFc3BgAAAADAIJlfATrjqz9LXAEagDGYSQgAAAAAAAC4OZqEAAAAAAAAgJujSQgAAAAAAAC4Oc5JCAAAAAAA3Iq954bkvJBwB3bPJExMTNSECRMUGhqqsLAwRUZG3vM+v/32m4KDg7V3794cDRIAAGegpgEA8hPqGgAgN+yeSThr1iwdOXJEK1eu1IULF/TKK6/ogQceUNu2bTO9T0REhOLj43M1UAAAHI2aBgDIT6hrAIDcsKtJGB8fr/Xr12v58uUKCAhQQECATp06pTVr1mRaeD755BPduHHDIYMFAMBRqGkAgPyEugYAyC27Djc+ceKEUlJSFBwcbF0WEhKigwcPKjU1Nd32V65c0ezZszVlypTcjxQAAAeipgEA8hPqGgAgt+yaSRgbG6tSpUrJ29vbuqxs2bJKTExUXFycSpcubbP9jBkz1LVrV9WsmbMTfFosFodMfXfU9PmEhASbf43k7EMA2Eeuj29EDuK7PofZ42eWw2KxyMPDw+m5Hcnomiblrbrmys9ryRzvBfaRe8c3IofZ4xuRwxXxzVjTJPN+V5PM/5ltlveas/eR2ePfixmeg6yY5Tu/2ePfiyteR/bUNbuahAkJCTZFR5L1dlJSks3y//znP9q/f78+++wze1LYSE5O1vHjx3N8/zSOiHGnmJgYh8bLDkc/BmfHZx/lzRzEd30Os8fPKsfd9SGvM7qmSZnXtSJ2xnHk8+yIz2t7xy/Z/xjYR47P4W7xjchh9vhG5DBLfLPVNCkvfVcrbnesvPaZbe9jsH/8+WEfOTf+jtTM9lFx6czlDNe0KnDVzizOfp4zZ47XadbM8DoyJr45XkfZrWt2NQkLFSqUrsCk3fbx8bEuu3nzpl577TVNmjTJZrm9ChYsqBo1aqRbftLOOP7+/jkew50SEhIUExOjKlWqyNfXN1exnP0Y2Efmi29EDneLb0QOs8d3VI7o6Gi787qa0TVNyryunTtkXxxHfGY78vPa3vFL9j8G9pHjc7hbfCNymD2+ETnMEN+MNU3KO9/Vdhz93e5Yee0z297HYO/488M+cnZ8I/aRs5/njJjpdZoZM72OjIhvhteRPXXNriZhhQoVdOXKFaWkpMjL6/ZdY2Nj5ePjo+LF/9c9PXTokM6fP6+RI0fa3H/QoEHq0qVLts974eHhocKFC9szxAw5IsadfH19HR7zXpydj33k+vhG5CC+63OYPX5mOcx4WJbRNU3Km3XNFZ/XkrneC+wj94xvRA6zxzcihyvim7GmSeb9riaZ/zPbbO81Z+8j6ua95YfXqdlfR/nhdZrdx2BPXbOrSejv7y8vLy9FRUUpNDRUkrR//34FBgaqQIH/XQMlKChIX375pc1927RpozfeeEPNmjWzJyUAAE5BTQMA5CfUNQBAbtnVJPT19VWXLl0UERGhadOm6c8//1RkZKSmT58u6fYvVcWKFZOPj48qV66c7v4VKlRQmTJlHDNyAABygZoGAMhPqGsAgNwqcO9NbI0fP14BAQF67rnnNHnyZI0YMUJt2rSRJIWFhWnLli0OHyQAAM5ATQMA5CfUNQBAbtg1k1C6/QvVzJkzNXPmzHTrTp7M/PT3Wa0DAMAVqGkAgPyEugYAyA27ZxICAAAAAAAAyF9oEgIAAAAAAABujiYhAAAAAAAA4OZoEgIAAAAAAABuzu4Ll7iDDzyfzXJ9Rqf17XVrrXMGk0exjwAA+cmJPRn/L1ERSecOpV9eu0mKcwcEAABMbea+U5msKa4dR39Pt/SVhjWdOyAgG2gSAgAAAACAbKMBBuRPHG4MAAAAAAAAuDmahAAAAAAAAICbo0kIAAAAAAAAuDmahAAAAAAAAICb48IlAAAAAAAAsMEFatwPMwkBAAAAAAAAN0eTEAAAAAAAAHBzNAkBAAAAAAAAN0eTEAAAAAAAAHBzNAkBAAAAAAAAN0eTEAAAAAAAAHBzNAkBAAAAAAAAN0eTEAAAAAAAAHBzNAkBAAAAAAAAN0eTEAAAAAAAAHBzXq4eAAAAcK4TezIu90UknTuUfnntJinOHRAAAACAPIeZhAAAAAAAAICbs7tJmJiYqAkTJig0NFRhYWGKjIzMdNuvv/5anTt3VnBwsDp27KivvvoqV4MFAMCRqGkAgPyEugYAyA27m4SzZs3SkSNHtHLlSk2aNEkLFizQtm3b0m134sQJDR8+XN27d9emTZvUs2dPjRo1SidOnHDIwAEAyC1qGgAgP6GuAQByw65zEsbHx2v9+vVavny5AgICFBAQoFOnTmnNmjVq27atzbafffaZmjRpor59+0qSKleurJ07d2rr1q2qXbu24x4BAAA5QE0DAOQn1DUAQG7Z1SQ8ceKEUlJSFBwcbF0WEhKiJUuWKDU1VQUK/G9iYteuXZWcnJwuxrVr17Kdz2KxKD4+3p4hZsgRMVydw+zxjchh9vhG5CC+63OYPX5mOSwWizw8PJye25GMrmmSeeoa7zXXxzciB/Fdn8Ps8Y3I4Yr4Zqxpknm/q0mOeZ4TEhJs/jWSWd5r7CPiO5sZXqeufB9IrtlH9tQ1u5qEsbGxKlWqlLy9va3LypYtq8TERMXFxal06dLW5dWrV7e576lTp/TDDz+oZ8+e2c6XnJys48eP2zPEDDkihqtzmD2+ETnMHt+IHMR3fQ6zx88qx521wQyMrmlS5nWtiJ1jt/d5zmvxjchh9vhG5HC3+EbkMHt8I3KYJb7ZapqUl76rFbd77I78/5eYmBgHRLHvMdg/fvaRo+MbkcP94huVI2OOeZ0aEd8c+yi7dc2uJmFCQkK6wGm3k5KSMr3f5cuXNWLECDVo0ECPP/54tvMVLFhQNWrUSLf8ZLYj3Obv72/X9vbGNyKH2eMbkcPs8Y3I4W7xjchh9viOyhEdHW13XlczuqZJmde1c4fsCmP385zX4huRw+zxjcjhbvGNyGH2+EbkMEN8M9Y0Ke98V9tx9Pdsx0iTk9fq3RISEhQTE6MqVarI19c3V7HsfQz2jp995Pj4RuRwt/hG5bibI1+nRsQ3wz6yp67Z1SQsVKhQugKTdtvHxyfD+1y6dEn9+/eXxWLRvHnzbKa534uHh4cKFy5szxAz5IgYrs5h9vhG5DB7fCNyEN/1OcweP7McZjwsy+iaJpmnrvFec318I3IQ3/U5zB7fiByuiG/GmiaZ97ua5Njn2dfX15DX/p3M9l5jHxHfDDmc/Tp1xftAcs0+sqeu2fXtpkKFCrpy5YpSUlKsy2JjY+Xj46PixdNPsfzjjz/Uu3dvJSUladWqVTZT3AEAcCVqGgAgP6GuAQByy64mob+/v7y8vBQVFWVdtn//fgUGBqb71Sk+Pl4DBw5UgQIFtHr1alWoUMEhAwYAwBGoaQCA/IS6BgDILbuahL6+vurSpYsiIiJ06NAh7dixQ5GRkerbt6+k279U3bx5U5K0dOlSnTt3TjNnzrSui42NtftKkAAAOAM1DQCQn1DXAAC5Zdc5CSVp/PjxioiI0HPPPaeiRYtqxIgRatOmjSQpLCxM06dPV7du3fTFF1/o5s2b6tGjh839u3btqhkzZjhm9AAA5AI1DQCQn1DXAAC5YXeT0NfXVzNnzrT+6nSnkyf/d43Mbdu25W5kAAA4GTUNAJCfUNcAALlh32UZAQAAAAAAAOQ7NAkBAAAAAAAAN0eTEAAAAAAAAHBzNAkBAAAAAAAAN0eTEAAAAAAAAHBzNAkBAAAAAAAAN0eTEAAAAAAAAHBzNAkBAAAAAAAAN0eTEAAAAAAAAHBzNAkBAAAAAAAAN+fl6gEAAAAAAADHmbnvVCZrimvH0d/TLX2lYU3nDgiAKdAkBAAAAACYBg0wAHAODjcGAAAAAAAA3BxNQgAAAAAAAMDN0SQEAAAAAAAA3BxNQgAAAAAAAMDN0SQEAAAAAAAA3BxNQgAAAAAAAMDN0SQEAAAAAAAA3BxNQgAAAAAAAMDN0SQEAAAAAAAA3BxNQgAAAAAAAMDN2d0kTExM1IQJExQaGqqwsDBFRkZmuu2xY8fUo0cP1atXT927d9eRI0dyNVgAAByJmgYAyE+oawCA3LC7SThr1iwdOXJEK1eu1KRJk7RgwQJt27Yt3Xbx8fEaPHiwQkNDtXHjRgUHB2vIkCGKj493yMABAMgtahoAID+hrgEAcsOuJmF8fLzWr1+viRMnKiAgQK1bt9bAgQO1Zs2adNtu2bJFhQoV0tixY1W9enVNnDhRRYoUybBIAQBgNGoaACA/oa4BAHLLribhiRMnlJKSouDgYOuykJAQHTx4UKmpqTbbHjx4UCEhIfLw8JAkeXh4qEGDBoqKisr9qAEAyCVqGgAgP6GuAQByy8NisViyu/EXX3yhKVOm6Pvvv7cuO336tNq3b68ffvhBpUuXti4fOnSoatSooZdfftm6bPbs2Tp16pSWLVt2z1wHDhyQxWJRwYIF0627EROb3SFLkopUKWfX9vbGNyKH2eMbkcPs8Y3I4W7xjchh9viOypGcnGz9gmEWRtY0Keu6lpIUY9fYvbyr2LV9XotvRA6zxzcih7vFNyKH2eMbkcMM8c1Y06S8813t7//X3p3Hx3S3/x9/h4gktGpNtWqLIoIklhKi2ii1L/WlaLkVRREUrbV2JfatWmotehe1taitti5uitoaW2JfSuwlm8j5/eFnaiQhM5lMMub1fDz6qDnnM9f1OWcmLnPlc87ExVs89xxurhaNtzSHo8e3Rw5Hj2+PHM4W3145HmcYhuLj4+Xq6mr6RYYt2Tq+I5wjS+qaRbOLjo6Wm5ub2baHj+Pi4lI09vFxyXn0t1qPy14kX4rnbI20jm+PHI4e3x45HD2+PXI4enx75HD0+LbK4eLikiZFPC3Zs6ZJT65rWbIWSXEcazh6fHvkcPT49sjh6PHtkcPR49sjhyPEd8SaJmWcz2ovZE3cOLS1tM7h6PHtkcPR49sjh6PHt1eOx7m4uCT6+ykjx3eEc2RJXbOoSZg1a9ZEhePhY3d39xSNfXxcch5dJg8AgK3Zs6ZJ1DUAQNrisxoAILUsuiehl5eXbty4ofj4f5dTRkZGyt3dXc8//3yisVevXjXbdvXqVeXLl/arYgAAeBpqGgDgWUJdAwCklkVNQh8fH7m6uprd0Hbv3r0qU6aMMmUyD+Xn56c///xTD295aBiG9u3bJz8/v9TPGgCAVKKmAQCeJdQ1AEBqWdQk9PDwUOPGjTV06FAdPHhQmzdv1ty5c9WmTRtJD35TFRMTI0mqXbu2bt++rVGjRik8PFyjRo1SdHS06tSpY/ujAADAQtQ0AMCzhLoGAEgti77dWHpwk9uhQ4dq48aNyp49u9q3b6+2bdtKkkqUKKHRo0frnXfekSQdPHhQQ4YMUUREhEqUKKFhw4apVKlSNj8IAACsQU0DADxLqGsAgNSwuEkIAAAAAAAA4Nli0eXGAAAAAAAAAJ49NAkBAAAAAAAAJ0eTEAAAAAAAAHByNAkBAAAAAAAAJ0eTEAAAAABgczdu3NDly5d1+/bt9J5KhhcfH6+bN2+m9zRSxTAM3bhxI72n4XTu37+vmzdvKjIyUtHR0ek9HTg4moQAAAAAAJvYuHGj2rRpI39/f1WpUkVvvPGGKlWqpICAALVu3VqbN29O7yk+UVxcnMaNG6fq1aurXLly6tatmyIiIszGXL16VT4+PlbnWLt2rYYPH64NGzbIMAyNHDlS5cqVU2BgoKpWrapFixal9jCSVK5cOZ07dy7VcXr06KE7d+6YHt+7d0+ff/65AgICVKVKFQUGBmru3LmpyrF06VINHDhQ0oPm4/z581W7dm35+/urXr16Wrx4sdWxS5UqpdDQUN27dy9Vc3yazZs3a+TIkVqxYoUkac2aNapXr54CAgLUoEEDLVu2LNXxW7RoIT8/PwUGBur1119XuXLlVKVKFfXs2VN//fWXLQ4DTsY1vScAAAAAAHB88+bN0/Tp09WhQwd169ZNuXPnlpubm+Li4nT16lXt2bNH/fr1U48ePdS6dev0nm6SJk6cqK1bt+rTTz+VYRhatGiRmjZtqvHjx+utt94yjTMMw6r4c+bM0ZdffqnAwEANGTJEq1at0pEjRzRu3DgVK1ZMhw4d0vjx4xUVFaWOHTtaHL9///7J7nvYAM2WLZskafTo0VYdw8aNGzV48GBlz55dkjR16lRt3LhRY8eOlbe3t8LCwjRu3DjFxMSoS5cuFsefNGmSli5dqnbt2kmSvvzySy1cuFCdO3dWkSJFFBERoS+++EK3b9/WRx99ZHH8hIQEbdmyRVu2bFGfPn1Us2ZNi2M8zYIFCzR58mRVq1ZN69ev1549e7RhwwZ9+OGH8vHx0cmTJzVhwgTFxMRY9bOwcuVKjRkzRh06dFCXLl106dIlzZ8/Xy1atFDhwoW1bds2vffee5oyZYqqV69u8+PDs8vFsPZvNwAAAAAA/r9q1appyJAhZs20x23evFkjRozQ9u3brcrxxx9/pHhsxYoVLY5fvXp1TZw4UeXLl5f0oBk4duxYLVy4UOPGjVOdOnV09epVVatWTUeOHLE4fnBwsIYOHarXX39de/fu1fvvv6+vvvrKrJGzfft2ffbZZ9qxY4fF8Tt27KgdO3aobNmy8vb2Ntv3448/Kjg4ONVNwpIlS+q3335T7ty5JUk1a9ZU3759zV731BxDUFCQxo8fr8qVK0uS3nrrLfXr188s/i+//KL+/fvr119/tTi+j4+Ptm7dqtWrV2v27Nny8vJS69atVbduXT333HMWx0tKjRo1NGDAANWoUUMnT55U3bp1NWbMGDVu3Ng0ZsuWLQoNDdWGDRssjv/2229rwIABZu+bM2fO6P3339f27duVKVMmLVu2TN98841+/PFHq4/j77//1vfff6/9+/fr8uXLiouLk7u7u/LmzSt/f3/93//9n1588UWr49vD9u3btWbNGv3zzz+qUqWK3n33XWXNmtW0/9atWwoJCdE333xjVfyLFy/q4MGDKlu2rF566SVt2rRJCxcu1I0bN+Tt7a3OnTurZMmStjocMx07dtTIkSOVL18+m8VkJSEAAAASMQxDLi4u6T0Nm3nWjgfIiGJiYlSgQIEnjvHy8tI///xjdY7hw4crPDxc0pNX87m4uFjVxIuJidELL7xgFqdv377KlCmTPvnkE7m6uiogIMDiuA/duHFDhQsXliSVL19e+fPnV548eczGFChQwOp7y82aNUtr167VuHHjFBgYqK5du8rNzU2StH79en3yySd65ZVXrJ6/9OCcPPr3aaZMmRK97gULFtTdu3etih8XF2dapShJWbJkUd68ec3G5M2b1+pzZBiGsmTJok6dOqlFixb69ttvNWvWLI0YMUIVK1ZUuXLl5O3trRw5cqhq1apW5bh586ZeffVVSQ/ORebMmVW8eHGzMUWLFtX169etin/9+nV5eXmZbcuXL5+uXbumGzduKHfu3KpcubI+//xzq+JL0m+//aZu3brJ399f5cuXT3Jl8Lx58/TFF1+YGroZzbJlyzRy5Eg1atRIHh4emjp1qr777jvNnDnT9HNw7949i3758KgdO3aoa9eu8vT0VFxcnLp27aqpU6eqWbNm8vb21uHDh9W8eXNNnTpVb7zxhlU5Vq1aley+Xbt2ac2aNcqVK5ckmTWhrcVKQsACrVu31u7duxUQEKDvvvsuyTEff/yx1q1bpyZNmmjMmDGm7Tt37tTixYt14MAB3b59Wy+++KKCg4PVoUMH02/hHmXpeACAYzh+/Li+/PJL7d69W7du3dILL7ygChUqWPWb5n79+mn37t3asmWLzeZ3+/ZtjRw5Us2aNTOtwnl4KdTChQttlic5D2vto1xcXOTp6anChQvrP//5jxo1amRRzL179+qrr77S119/bcupAnjMgAEDFBYWpkGDBsnf31+urv+uSUlISND+/fs1ZMgQlS5d2upVbHFxcerVq5fOnz+vJUuWmK0IsoXu3bsrNjZWo0ePNn3wfmjEiBFasmSJOnbsqC+//NKqJmT79u2VJ08eDRkyRJ6enon2X7lyRQMGDJCnp6emTp1q9XHcunVLoaGh2rt3r4YMGaIqVaooICBAP/zwQ6qbhCVLllRwcLBeffVVFSlSRL/88ouyZs1qakjFxsZq4MCBunHjhubMmWNx/GHDhmnnzp0aOXKkKlSooFWrVmnp0qWaOHGiXnzxRZ05c0b9+vVToUKFzD5vpZSPj49+/fXXRJ+pDh48qF9//VUHDx7U8ePHdf36de3fv9/i+JLUuXNnZcuWTR999JGWL1+u7777TsHBwRo9erTc3NwUHx+vQYMGKTIy0qpz1L17d125ckUTJkzQyy+/rNjYWA0fPly7du3S5s2bdevWLY0bN05nzpyxunbXr19fDRs2fOJl77NmzdKPP/5o9WpFPz8/xcXFpWisNT9vderUUUhIiOrWrStJunbtmkJCQnT27FktWLBA3t7eqVoZ3LhxYzVu3Fht27bVsmXLNHjwYA0ePFgtW7Y0jVm8eLH++9//as2aNRbHl6TXX39dkZGRypMnj7JkyWK279KlS8qXL58yZ84sFxcX/fzzz1bleBRNQsACrVu31p49e2QYhrZt25ZoaXVUVJSqVKmi6Ohosybh+PHjNXv2bNWuXVu1a9fWCy+8oGPHjunrr79W1qxZtWjRIuXPn98Ux9LxAADHcOLECTVv3lz+/v5q3ry5cufOrb///luLFi3S0aNH9c0338jf3z/F8dKiSbhr1y61adNG33zzjSpVqiRJplU7xYoVs1me5LRu3Vp37tzRkCFDTNvu37+vv//+W/Pnz9fBgwc1a9Ysi+6xlBbnCUBicXFxCg0N1ffff6/79+/rhRdeMK08unnzplxdXdWoUSP1799f7u7uqcrTvHlzBQYGqm/fvjY8Auny5cvq3r27Dh48qNmzZydaSTZ9+nR9+eWXSkhIsKqpcPbsWXXs2FGlSpXSxIkTzfZt3rxZISEhKl26tGbMmJFo9Zw1du7cqaFDh6p06dL6+eef9eOPP6a6Sbh582aFh4crIiJCEREROnXqlGJiYrRr1y49//zzqlSpkjw8PDRnzpxElzynRFxcnOkLP5577jm9/PLLOn36tO7evausWbMqNjZW1atX1/jx481WHKbU45dLp4W///5bPXr00IEDB+Th4aHBgwcrIiJC33//vQoXLqwzZ87I1dVV8+fPt+ocXb9+XV26dNGBAweUK1cu3b59W3nz5tXUqVNVunRptWrVStHR0Zo0aZJp5aqlAgICtHz5chUtWjTZMeHh4WratKkOHDhgVY4zZ86oU6dOcnd314ABA5449rXXXrM4fkBAgFavXq2CBQuatsXGxqpjx46KiIjQokWLlD17dqubhH5+flq7dq0KFCig+Ph4+fn5afny5Wa/9D1z5owaN26sP//80+L4knTnzh2NHTtWu3btMjX8Hz0+WzT+zRgAUuz999833nnnHaNs2bLGvHnzEu1fs2aNUblyZaNatWpG3759TduKFy+e5PhTp04Z/v7+RteuXc1iWDIeAOA4+vfvb7z55pvGvXv3zLbfvXvXqFatmvHhhx9aFK9v377Gm2++acspGv/73/+M4sWLG//73/9sGjel3n//feP9999Pct/t27cNX19fo3v37hbFTIvzBCB5UVFRxr59+4wNGzYYq1atMn766Sdj3759RnR0tM1yhIeHG99++63N4j0uIiLCuH37drK5Z86caXXshIQE48qVK4m2X7161di/f79x//59q2MnJTY21hg/frwRHBxsXLx40aaxH7pw4YLpz7/88otx586dVMe8efOm8fPPPxvz5883ZsyYYcycOdNYuXKlcfLkyVTFXbFihREbG5vq+aXErVu3zHL9/vvvxtdff22sXr3a+Oeff1Id/9ChQ8a6deuM3bt3m+W5efNmqmO3bdvW+PTTT42YmJgk98fGxhoff/xxsjU7pS5evGgEBgYaS5cuTVWcpLz77rvGpEmTEm2/e/eu8e677xpBQUHGtm3bjJIlS1oVv2HDhsaCBQtMj8+cOZPodR0/frzRvHlzq+I/6o8//jDq1Klj9OnTx7h27ZphGIbh7+9vnD17NtWxH8VKQsACDy+3ypkzp65cuZLokuOuXbsqb9682rFjh1577TWNGTNGjRo1Unx8vNasWZPkvZC+/fZbRUdHq127dnJxcbF4PADAcXTs2FEnTpzQhg0bTPeIemj9+vWmlegPbd68WTNmzNCJEyf0/PPPq06dOurVq5fpErWkVsgtW7ZM8+fP15kzZ5QnTx41bdpUXbp0UebMmU1jtm/fri+//FJHjx5V9uzZFRwcrD59+ujIkSNq06aNadxrr72mhQsXJrrcODY2VrNnz9aPP/6oCxcuKH/+/Pq///s/dejQQZkyZZL0oGYWLFhQhQoV0rfffqtr167J19dXAwYMUNmyZZM9R0+6tDkuLk6VK1fW66+/rsmTJ0t6sJpi2rRp2rZtmyIjI+Xp6amKFSuqf//+KlCggPr166eVK1eaYowePVrvvPOOYmNjNWXKFK1du1bXrl1TkSJF9NFHH5kuSQIAwJmdP39eXbt21blz5+Tr66t8+fKZVgZHRkYqLCxM+fPn14wZM2yyOnX79u0aMWKEjWb/wP79+9WxY0flzZtXo0ePNvv3x507d9StWzft3r1bhmFYtZLwl19+UUhIiN59991E3yy+Z88effbZZ7p69arm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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# check fairness\n", "check_fairness(best, sensitive_features = ['Number of times pregnant'])" ] }, { "attachments": {}, "cell_type": "markdown", "id": "726b2986", "metadata": {}, "source": [ "## ✅ Dashboard\n", "The dashboard function generates the interactive dashboard for a trained model. The dashboard is implemented using `ExplainerDashboard`. For more information check out [Explainer Dashboard.](explainerdashboard.readthedocs.io)" ] }, { "cell_type": "code", "execution_count": 86, "id": "ca75507d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Note: model_output=='probability', so assuming that raw shap output of DecisionTreeClassifier is in probability space...\n", "Generating self.shap_explainer = shap.TreeExplainer(model)\n", "Building ExplainerDashboard..\n", "The explainer object has no decision_trees property. so setting decision_trees=False...\n", "Warning: calculating shap interaction values can be slow! Pass shap_interaction=False to remove interactions tab.\n", "Generating layout...\n", "Calculating shap values...\n", "Calculating prediction probabilities...\n", "Calculating metrics...\n", "Calculating confusion matrices...\n", "Calculating classification_dfs...\n", "Calculating roc auc curves...\n", "Calculating pr auc curves...\n", "Calculating liftcurve_dfs...\n", "Calculating shap interaction values... (this may take a while)\n", "Reminder: TreeShap computational complexity is O(TLD^2), where T is the number of trees, L is the maximum number of leaves in any tree and D the maximal depth of any tree. So reducing these will speed up the calculation.\n", "Calculating dependencies...\n", "Calculating permutation importances (if slow, try setting n_jobs parameter)...\n", "Calculating predictions...\n", "Calculating pred_percentiles...\n", "Reminder: you can store the explainer (including calculated dependencies) with explainer.dump('explainer.joblib') and reload with e.g. ClassifierExplainer.from_file('explainer.joblib')\n", "Registering callbacks...\n", "Starting ExplainerDashboard inline (terminate it with ExplainerDashboard.terminate(8050))\n" ] }, { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# dashboard function\n", "dashboard(dt, display_format ='inline')" ] }, { "attachments": {}, "cell_type": "markdown", "id": "58fd3e5a", "metadata": {}, "source": [ "## ✅Create App\n", "This function creates a basic gradio app for inference." ] }, { "cell_type": "code", "execution_count": 89, "id": "5cf989d3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running on local URL: http://127.0.0.1:7860\n", "\n", "To create a public link, set `share=True` in `launch()`.\n" ] }, { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create gradio app\n", "create_app(best)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "a2d8e21d", "metadata": {}, "source": [ "## ✅ Create API\n", "This function takes an input model and creates a POST API for inference." ] }, { "cell_type": "code", "execution_count": 90, "id": "978413c9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "API successfully created. This function only creates a POST API, it doesn't run it automatically. To run your API, please run this command --> !python my_first_api.py\n" ] } ], "source": [ "# create api\n", "create_api(best, api_name = 'my_first_api')" ] }, { "cell_type": "code", "execution_count": 91, "id": "68e539aa", "metadata": {}, "outputs": [], "source": [ "# !python my_first_api.py" ] }, { "cell_type": "code", "execution_count": 92, "id": "a3de3327", "metadata": {}, "outputs": [], "source": [ "# check out the .py file created with this magic command\n", "# %load my_first_api.py" ] }, { "attachments": {}, "cell_type": "markdown", "id": "1023f7df", "metadata": {}, "source": [ "## ✅ Create Docker\n", "This function creates a `Dockerfile` and `requirements.txt` for productionalizing API end-point." ] }, { "cell_type": "code", "execution_count": 93, "id": "452ced14", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Writing requirements.txt\n", "Writing Dockerfile\n", "Dockerfile and requirements.txt successfully created.\n", " To build image you have to run --> !docker image build -f \"Dockerfile\" -t IMAGE_NAME:IMAGE_TAG .\n", " \n" ] } ], "source": [ "create_docker('my_first_api')" ] }, { "cell_type": "code", "execution_count": 94, "id": "301e1fa5", "metadata": {}, "outputs": [], "source": [ "# check out the DockerFile file created with this magic command\n", "# %load DockerFile" ] }, { "cell_type": "code", "execution_count": 95, "id": "ca1e9ef7", "metadata": {}, "outputs": [], "source": [ "# check out the requirements file created with this magic command\n", "# %load requirements.txt" ] }, { "attachments": {}, "cell_type": "markdown", "id": "e27c212b", "metadata": {}, "source": [ "## ✅ Finalize Model\n", "This function trains a given model on the entire dataset including the hold-out set." ] }, { "cell_type": "code", "execution_count": 96, "id": "65225684", "metadata": {}, "outputs": [], "source": [ "final_best = finalize_model(best)" ] }, { "cell_type": "code", "execution_count": 97, "id": "80d17fec", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Pipeline(memory=FastMemory(location=C:\\Users\\owner\\AppData\\Local\\Temp\\joblib),\n",
       "         steps=[('clean_column_names',\n",
       "                 TransformerWrapper(exclude=None, include=None,\n",
       "                                    transformer=CleanColumnNames(match='[\\\\]\\\\[\\\\,\\\\{\\\\}\\\\"\\\\:]+'))),\n",
       "                ('numerical_imputer',\n",
       "                 TransformerWrapper(exclude=None,\n",
       "                                    include=['Number of times pregnant',\n",
       "                                             'Plasma glucose concentration a 2 '\n",
       "                                             'hours in an oral glu...\n",
       "                                                              verbose='deprecated'))),\n",
       "                ('normalize',\n",
       "                 TransformerWrapper(exclude=None, include=None,\n",
       "                                    transformer=MinMaxScaler(clip=False,\n",
       "                                                             copy=True,\n",
       "                                                             feature_range=(0,\n",
       "                                                                            1)))),\n",
       "                ('actual_estimator',\n",
       "                 RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True,\n",
       "                                 fit_intercept=True, max_iter=None,\n",
       "                                 normalize='deprecated', positive=False,\n",
       "                                 random_state=123, solver='auto', tol=0.001))],\n",
       "         verbose=False)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "Pipeline(memory=FastMemory(location=C:\\Users\\owner\\AppData\\Local\\Temp\\joblib),\n", " steps=[('clean_column_names',\n", " TransformerWrapper(exclude=None, include=None,\n", " transformer=CleanColumnNames(match='[\\\\]\\\\[\\\\,\\\\{\\\\}\\\\\"\\\\:]+'))),\n", " ('numerical_imputer',\n", " TransformerWrapper(exclude=None,\n", " include=['Number of times pregnant',\n", " 'Plasma glucose concentration a 2 '\n", " 'hours in an oral glu...\n", " verbose='deprecated'))),\n", " ('normalize',\n", " TransformerWrapper(exclude=None, include=None,\n", " transformer=MinMaxScaler(clip=False,\n", " copy=True,\n", " feature_range=(0,\n", " 1)))),\n", " ('actual_estimator',\n", " RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True,\n", " fit_intercept=True, max_iter=None,\n", " normalize='deprecated', positive=False,\n", " random_state=123, solver='auto', tol=0.001))],\n", " verbose=False)" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "final_best" ] }, { "attachments": {}, "cell_type": "markdown", "id": "b4693f88", "metadata": {}, "source": [ "## ✅ Convert Model\n", "This function transpiles the trained machine learning model's decision function in different programming languages such as Python, C, Java, Go, C#, etc. It is very useful if you want to deploy models into environments where you can't install your normal Python stack to support model inference." ] }, { "cell_type": "code", "execution_count": 98, "id": "dbe0e9fe", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "public class Model {\n", " public static double score(double[] input) {\n", " return -2.4222329408494767 + input[0] * 0.5943492729771869 + input[1] * 2.3273354603187455 + input[2] * -0.41637843900032867 + input[3] * 0.10259178891131746 + input[4] * -0.3134524281639536 + input[5] * 1.4903417391961826 + input[6] * 0.5019685413792472 + input[7] * 0.12389520576261319;\n", " }\n", "}\n", "\n" ] } ], "source": [ "# transpiles learned function to java\n", "print(convert_model(best, language = 'java'))" ] }, { "attachments": {}, "cell_type": "markdown", "id": "ed00202c", "metadata": {}, "source": [ "## ✅ Deploy Model\n", "This function deploys the entire ML pipeline on the cloud.\n", "\n", "**AWS:** When deploying model on AWS S3, environment variables must be configured using the command-line interface. To configure AWS environment variables, type `aws configure` in terminal. The following information is required which can be generated using the Identity and Access Management (IAM) portal of your amazon console account:\n", "\n", "- AWS Access Key ID\n", "- AWS Secret Key Access\n", "- Default Region Name (can be seen under Global settings on your AWS console)\n", "- Default output format (must be left blank)\n", "\n", "**GCP:** To deploy a model on Google Cloud Platform ('gcp'), the project must be created using the command-line or GCP console. Once the project is created, you must create a service account and download the service account key as a JSON file to set environment variables in your local environment. Learn more about it: https://cloud.google.com/docs/authentication/production\n", "\n", "**Azure:** To deploy a model on Microsoft Azure ('azure'), environment variables for the connection string must be set in your local environment. Go to settings of storage account on Azure portal to access the connection string required.\n", "AZURE_STORAGE_CONNECTION_STRING (required as environment variable)\n", "Learn more about it: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python?toc=%2Fpython%2Fazure%2FTOC.json" ] }, { "cell_type": "code", "execution_count": 99, "id": "40b20a18", "metadata": {}, "outputs": [], "source": [ "# deploy model on aws s3\n", "# deploy_model(best, model_name = 'my_first_platform_on_aws',\n", "# platform = 'aws', authentication = {'bucket' : 'pycaret-test'})" ] }, { "cell_type": "code", "execution_count": 100, "id": "9e236516", "metadata": {}, "outputs": [], "source": [ "# load model from aws s3\n", "# loaded_from_aws = load_model(model_name = 'my_first_platform_on_aws', platform = 'aws',\n", "# authentication = {'bucket' : 'pycaret-test'})\n", "\n", "# loaded_from_aws" ] }, { "attachments": {}, "cell_type": "markdown", "id": "e169ae86", "metadata": {}, "source": [ "## ✅ Save / Load Model\n", "This function saves the transformation pipeline and a trained model object into the current working directory as a pickle file for later use." ] }, { "cell_type": "code", "execution_count": 101, "id": "bc5cf24a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Transformation Pipeline and Model Successfully Saved\n" ] }, { "data": { "text/plain": [ "(Pipeline(memory=FastMemory(location=C:\\Users\\owner\\AppData\\Local\\Temp\\joblib),\n", " steps=[('clean_column_names',\n", " TransformerWrapper(exclude=None, include=None,\n", " transformer=CleanColumnNames(match='[\\\\]\\\\[\\\\,\\\\{\\\\}\\\\\"\\\\:]+'))),\n", " ('numerical_imputer',\n", " TransformerWrapper(exclude=None,\n", " include=['Number of times pregnant',\n", " 'Plasma glucose concentration a 2 '\n", " 'hours in an oral glu...\n", " verbose='deprecated'))),\n", " ('normalize',\n", " TransformerWrapper(exclude=None, include=None,\n", " transformer=MinMaxScaler(clip=False,\n", " copy=True,\n", " feature_range=(0,\n", " 1)))),\n", " ('trained_model',\n", " RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True,\n", " fit_intercept=True, max_iter=None,\n", " normalize='deprecated', positive=False,\n", " random_state=123, solver='auto', tol=0.001))],\n", " verbose=False),\n", " 'my_first_model.pkl')" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# save model\n", "save_model(best, 'my_first_model')" ] }, { "cell_type": "code", "execution_count": 102, "id": "e8478d34", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Transformation Pipeline and Model Successfully Loaded\n" ] }, { "data": { "text/html": [ "
Pipeline(memory=FastMemory(location=C:\\Users\\owner\\AppData\\Local\\Temp\\joblib),\n",
       "         steps=[('clean_column_names',\n",
       "                 TransformerWrapper(exclude=None, include=None,\n",
       "                                    transformer=CleanColumnNames(match='[\\\\]\\\\[\\\\,\\\\{\\\\}\\\\"\\\\:]+'))),\n",
       "                ('numerical_imputer',\n",
       "                 TransformerWrapper(exclude=None,\n",
       "                                    include=['Number of times pregnant',\n",
       "                                             'Plasma glucose concentration a 2 '\n",
       "                                             'hours in an oral glu...\n",
       "                                                              verbose='deprecated'))),\n",
       "                ('normalize',\n",
       "                 TransformerWrapper(exclude=None, include=None,\n",
       "                                    transformer=MinMaxScaler(clip=False,\n",
       "                                                             copy=True,\n",
       "                                                             feature_range=(0,\n",
       "                                                                            1)))),\n",
       "                ('trained_model',\n",
       "                 RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True,\n",
       "                                 fit_intercept=True, max_iter=None,\n",
       "                                 normalize='deprecated', positive=False,\n",
       "                                 random_state=123, solver='auto', tol=0.001))],\n",
       "         verbose=False)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "Pipeline(memory=FastMemory(location=C:\\Users\\owner\\AppData\\Local\\Temp\\joblib),\n", " steps=[('clean_column_names',\n", " TransformerWrapper(exclude=None, include=None,\n", " transformer=CleanColumnNames(match='[\\\\]\\\\[\\\\,\\\\{\\\\}\\\\\"\\\\:]+'))),\n", " ('numerical_imputer',\n", " TransformerWrapper(exclude=None,\n", " include=['Number of times pregnant',\n", " 'Plasma glucose concentration a 2 '\n", " 'hours in an oral glu...\n", " verbose='deprecated'))),\n", " ('normalize',\n", " TransformerWrapper(exclude=None, include=None,\n", " transformer=MinMaxScaler(clip=False,\n", " copy=True,\n", " feature_range=(0,\n", " 1)))),\n", " ('trained_model',\n", " RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True,\n", " fit_intercept=True, max_iter=None,\n", " normalize='deprecated', positive=False,\n", " random_state=123, solver='auto', tol=0.001))],\n", " verbose=False)" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# load model\n", "loaded_from_disk = load_model('my_first_model')\n", "loaded_from_disk" ] }, { "attachments": {}, "cell_type": "markdown", "id": "de5eee8c", "metadata": {}, "source": [ "## ✅ Save / Load Experiment\n", "This function saves all the experiment variables on disk, allowing to later resume without rerunning the setup function." ] }, { "cell_type": "code", "execution_count": 103, "id": "6a3c61b6", "metadata": {}, "outputs": [], "source": [ "# save experiment\n", "save_experiment('my_experiment')" ] }, { "cell_type": "code", "execution_count": 104, "id": "83252c09", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 DescriptionValue
0Session id123
1TargetClass variable
2Target typeBinary
3Original data shape(768, 9)
4Transformed data shape(768, 9)
5Transformed train set shape(537, 9)
6Transformed test set shape(231, 9)
7Numeric features8
8PreprocessTrue
9Imputation typesimple
10Numeric imputationmean
11Categorical imputationmode
12NormalizeTrue
13Normalize methodminmax
14Fold GeneratorStratifiedKFold
15Fold Number10
16CPU Jobs-1
17Use GPUFalse
18Log ExperimentFalse
19Experiment Nameclf-default-name
20USI3e8a
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# load experiment from disk\n", "exp_from_disk = load_experiment('my_experiment', data=data)" ] }, { "cell_type": "code", "execution_count": null, "id": "ac030246", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "pycaretrc5", "language": "python", "name": "pycaretrc5" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.15" } }, "nbformat": 4, "nbformat_minor": 5 }