7060 lines
706 KiB
Plaintext
7060 lines
706 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "ff8cc602-e733-4a31-bf46-a31087511fe0",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Predict sales - sports companies"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "415e466a-1a71-4150-bff7-2f8904766df4",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Importations"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"id": "b5aaf421-850a-4a86-8e99-2c1f0723bd6c",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"import numpy as np\n",
|
||
"import os\n",
|
||
"import s3fs\n",
|
||
"import re\n",
|
||
"from sklearn.linear_model import LogisticRegression\n",
|
||
"from sklearn.ensemble import RandomForestClassifier\n",
|
||
"from sklearn.metrics import accuracy_score, confusion_matrix, classification_report, recall_score\n",
|
||
"from sklearn.utils import class_weight\n",
|
||
"from sklearn.neighbors import KNeighborsClassifier\n",
|
||
"from sklearn.pipeline import Pipeline\n",
|
||
"from sklearn.compose import ColumnTransformer\n",
|
||
"from sklearn.preprocessing import OneHotEncoder\n",
|
||
"from sklearn.impute import SimpleImputer\n",
|
||
"from sklearn.model_selection import GridSearchCV\n",
|
||
"from sklearn.preprocessing import StandardScaler, MaxAbsScaler, MinMaxScaler\n",
|
||
"from sklearn.metrics import make_scorer, f1_score, balanced_accuracy_score\n",
|
||
"import seaborn as sns\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"from sklearn.metrics import roc_curve, auc, precision_recall_curve, average_precision_score\n",
|
||
"from sklearn.exceptions import ConvergenceWarning, DataConversionWarning\n",
|
||
"from sklearn.naive_bayes import GaussianNB\n",
|
||
"\n",
|
||
"import pickle\n",
|
||
"import warnings"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c2f44070-451e-4109-9a08-3b80011d610f",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Load data "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"id": "b5f8135f-b6e7-4d6d-b8e1-da185b944aff",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Create filesystem object\n",
|
||
"S3_ENDPOINT_URL = \"https://\" + os.environ[\"AWS_S3_ENDPOINT\"]\n",
|
||
"fs = s3fs.S3FileSystem(client_kwargs={'endpoint_url': S3_ENDPOINT_URL})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"id": "2668a243-4ff8-40c6-9de2-5c9c07bcf714",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def load_train_test():\n",
|
||
" BUCKET = \"projet-bdc2324-team1/Generalization/sport\"\n",
|
||
" File_path_train = BUCKET + \"/Train_set.csv\"\n",
|
||
" File_path_test = BUCKET + \"/Test_set.csv\"\n",
|
||
" \n",
|
||
" with fs.open( File_path_train, mode=\"rb\") as file_in:\n",
|
||
" dataset_train = pd.read_csv(file_in, sep=\",\")\n",
|
||
" # dataset_train['y_has_purchased'] = dataset_train['y_has_purchased'].fillna(0)\n",
|
||
"\n",
|
||
" with fs.open(File_path_test, mode=\"rb\") as file_in:\n",
|
||
" dataset_test = pd.read_csv(file_in, sep=\",\")\n",
|
||
" # dataset_test['y_has_purchased'] = dataset_test['y_has_purchased'].fillna(0)\n",
|
||
" \n",
|
||
" return dataset_train, dataset_test"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"id": "13eba3e1-3ea5-435b-8b05-6d7d5744cbe2",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/tmp/ipykernel_1481/2459610029.py:7: DtypeWarning: Columns (38) have mixed types. Specify dtype option on import or set low_memory=False.\n",
|
||
" dataset_train = pd.read_csv(file_in, sep=\",\")\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"customer_id 0\n",
|
||
"nb_tickets 0\n",
|
||
"nb_purchases 0\n",
|
||
"total_amount 0\n",
|
||
"nb_suppliers 0\n",
|
||
"vente_internet_max 0\n",
|
||
"purchase_date_min 0\n",
|
||
"purchase_date_max 0\n",
|
||
"time_between_purchase 0\n",
|
||
"nb_tickets_internet 0\n",
|
||
"street_id 0\n",
|
||
"structure_id 222825\n",
|
||
"mcp_contact_id 70874\n",
|
||
"fidelity 0\n",
|
||
"tenant_id 0\n",
|
||
"is_partner 0\n",
|
||
"deleted_at 224213\n",
|
||
"gender 0\n",
|
||
"is_email_true 0\n",
|
||
"opt_in 0\n",
|
||
"last_buying_date 66139\n",
|
||
"max_price 66139\n",
|
||
"ticket_sum 0\n",
|
||
"average_price 66023\n",
|
||
"average_purchase_delay 66139\n",
|
||
"average_price_basket 66139\n",
|
||
"average_ticket_basket 66139\n",
|
||
"total_price 116\n",
|
||
"purchase_count 0\n",
|
||
"first_buying_date 66139\n",
|
||
"country 23159\n",
|
||
"gender_label 0\n",
|
||
"gender_female 0\n",
|
||
"gender_male 0\n",
|
||
"gender_other 0\n",
|
||
"country_fr 23159\n",
|
||
"nb_campaigns 0\n",
|
||
"nb_campaigns_opened 0\n",
|
||
"time_to_open 123159\n",
|
||
"y_has_purchased 0\n",
|
||
"dtype: int64"
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"dataset_train, dataset_test = load_train_test()\n",
|
||
"dataset_train.isna().sum()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"id": "e46622e7-0fc1-43f8-a7e7-34a5e90068b2",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def features_target_split(dataset_train, dataset_test):\n",
|
||
" \"\"\"\n",
|
||
" features_l = ['nb_tickets', 'nb_purchases', 'total_amount', 'nb_suppliers', 'vente_internet_max', 'purchase_date_min', 'purchase_date_max', \n",
|
||
" 'time_between_purchase', 'nb_tickets_internet', 'fidelity', 'is_email_true', 'opt_in', #'is_partner',\n",
|
||
" 'gender_female', 'gender_male', 'gender_other', 'nb_campaigns', 'nb_campaigns_opened']\n",
|
||
" \"\"\"\n",
|
||
"\n",
|
||
" # we suppress fidelity, time between purchase, and gender other (colinearity issue)\n",
|
||
" features_l = ['nb_tickets', 'nb_purchases', 'total_amount', 'nb_suppliers', 'vente_internet_max', \n",
|
||
" 'purchase_date_min', 'purchase_date_max', 'nb_tickets_internet', 'is_email_true', \n",
|
||
" 'opt_in', 'gender_female', 'gender_male', 'nb_campaigns', 'nb_campaigns_opened']\n",
|
||
" \n",
|
||
" X_train = dataset_train[features_l]\n",
|
||
" y_train = dataset_train[['y_has_purchased']]\n",
|
||
"\n",
|
||
" X_test = dataset_test[features_l]\n",
|
||
" y_test = dataset_test[['y_has_purchased']]\n",
|
||
" return X_train, X_test, y_train, y_test"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"id": "cec4f386-e643-4bd8-b8cd-8917d2c1b3d0",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Shape train : (224213, 14)\n",
|
||
"Shape test : (96096, 14)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"X_train, X_test, y_train, y_test = features_target_split(dataset_train, dataset_test)\n",
|
||
"print(\"Shape train : \", X_train.shape)\n",
|
||
"print(\"Shape test : \", X_test.shape)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c9e8edbd-7ff6-42f9-a8eb-10d27ca19c8a",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Logistic"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"id": "639b432a-c39c-4bf8-8ee2-e136d156e0dd",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"{0.0: 0.5837086520288036, 1.0: 3.486549107420539}"
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Compute Weights\n",
|
||
"weights = class_weight.compute_class_weight(class_weight = 'balanced', classes = np.unique(y_train['y_has_purchased']),\n",
|
||
" y = y_train['y_has_purchased'])\n",
|
||
"\n",
|
||
"weight_dict = {np.unique(y_train['y_has_purchased'])[i]: weights[i] for i in range(len(np.unique(y_train['y_has_purchased'])))}\n",
|
||
"weight_dict"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"id": "34644a00-85a5-41c9-98df-41178cb3ac69",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>nb_tickets</th>\n",
|
||
" <th>nb_purchases</th>\n",
|
||
" <th>total_amount</th>\n",
|
||
" <th>nb_suppliers</th>\n",
|
||
" <th>vente_internet_max</th>\n",
|
||
" <th>purchase_date_min</th>\n",
|
||
" <th>purchase_date_max</th>\n",
|
||
" <th>nb_tickets_internet</th>\n",
|
||
" <th>is_email_true</th>\n",
|
||
" <th>opt_in</th>\n",
|
||
" <th>gender_female</th>\n",
|
||
" <th>gender_male</th>\n",
|
||
" <th>nb_campaigns</th>\n",
|
||
" <th>nb_campaigns_opened</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>60.00</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>355.268981</td>\n",
|
||
" <td>355.268981</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>8.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>140.00</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>373.540289</td>\n",
|
||
" <td>219.262269</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>50.00</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>5.202442</td>\n",
|
||
" <td>5.202442</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>90.00</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>5.178958</td>\n",
|
||
" <td>5.178958</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>78.00</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>5.174039</td>\n",
|
||
" <td>5.174039</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>224208</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>34.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>224209</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>20.00</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>392.501030</td>\n",
|
||
" <td>392.501030</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>23.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>224210</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>8.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>224211</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>97.11</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>172.334074</td>\n",
|
||
" <td>172.334074</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>13.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>224212</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>224213 rows × 14 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" nb_tickets nb_purchases total_amount nb_suppliers \\\n",
|
||
"0 2.0 1.0 60.00 1.0 \n",
|
||
"1 8.0 3.0 140.00 1.0 \n",
|
||
"2 2.0 1.0 50.00 1.0 \n",
|
||
"3 3.0 1.0 90.00 1.0 \n",
|
||
"4 2.0 1.0 78.00 1.0 \n",
|
||
"... ... ... ... ... \n",
|
||
"224208 0.0 0.0 0.00 0.0 \n",
|
||
"224209 1.0 1.0 20.00 1.0 \n",
|
||
"224210 0.0 0.0 0.00 0.0 \n",
|
||
"224211 1.0 1.0 97.11 1.0 \n",
|
||
"224212 0.0 0.0 0.00 0.0 \n",
|
||
"\n",
|
||
" vente_internet_max purchase_date_min purchase_date_max \\\n",
|
||
"0 0.0 355.268981 355.268981 \n",
|
||
"1 0.0 373.540289 219.262269 \n",
|
||
"2 0.0 5.202442 5.202442 \n",
|
||
"3 0.0 5.178958 5.178958 \n",
|
||
"4 0.0 5.174039 5.174039 \n",
|
||
"... ... ... ... \n",
|
||
"224208 0.0 550.000000 550.000000 \n",
|
||
"224209 1.0 392.501030 392.501030 \n",
|
||
"224210 0.0 550.000000 550.000000 \n",
|
||
"224211 1.0 172.334074 172.334074 \n",
|
||
"224212 0.0 550.000000 550.000000 \n",
|
||
"\n",
|
||
" nb_tickets_internet is_email_true opt_in gender_female \\\n",
|
||
"0 0.0 True False 0 \n",
|
||
"1 0.0 True False 0 \n",
|
||
"2 0.0 True False 0 \n",
|
||
"3 0.0 True False 0 \n",
|
||
"4 0.0 True False 1 \n",
|
||
"... ... ... ... ... \n",
|
||
"224208 0.0 True False 0 \n",
|
||
"224209 1.0 True False 0 \n",
|
||
"224210 0.0 True True 0 \n",
|
||
"224211 1.0 True False 0 \n",
|
||
"224212 0.0 True False 0 \n",
|
||
"\n",
|
||
" gender_male nb_campaigns nb_campaigns_opened \n",
|
||
"0 1 0.0 0.0 \n",
|
||
"1 1 0.0 0.0 \n",
|
||
"2 1 0.0 0.0 \n",
|
||
"3 1 0.0 0.0 \n",
|
||
"4 0 0.0 0.0 \n",
|
||
"... ... ... ... \n",
|
||
"224208 1 34.0 3.0 \n",
|
||
"224209 1 23.0 6.0 \n",
|
||
"224210 1 8.0 4.0 \n",
|
||
"224211 1 13.0 5.0 \n",
|
||
"224212 1 4.0 4.0 \n",
|
||
"\n",
|
||
"[224213 rows x 14 columns]"
|
||
]
|
||
},
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"X_train"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 83,
|
||
"id": "295676df-36ac-43d8-8b31-49ff08efd6e7",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# preprocess data \n",
|
||
"# numeric features - standardize\n",
|
||
"# categorical features - encode\n",
|
||
"# encoded features - do nothing\n",
|
||
"\n",
|
||
"numeric_features = ['nb_tickets', 'nb_purchases', 'total_amount', 'nb_suppliers', 'vente_internet_max', \n",
|
||
" 'purchase_date_min', 'purchase_date_max', 'nb_tickets_internet', 'nb_campaigns', \n",
|
||
" 'nb_campaigns_opened' # , 'gender_male', 'gender_female'\n",
|
||
" ]\n",
|
||
"\n",
|
||
"numeric_transformer = Pipeline(steps=[\n",
|
||
" #(\"imputer\", SimpleImputer(strategy=\"mean\")), \n",
|
||
" (\"scaler\", StandardScaler()) \n",
|
||
"])\n",
|
||
"\n",
|
||
"categorical_features = ['opt_in', 'is_email_true'] \n",
|
||
"\n",
|
||
"# Transformer for the categorical features\n",
|
||
"categorical_transformer = Pipeline(steps=[\n",
|
||
" #(\"imputer\", SimpleImputer(strategy=\"most_frequent\")), # Impute missing values with the most frequent\n",
|
||
" (\"onehot\", OneHotEncoder(handle_unknown='ignore', sparse_output=False))\n",
|
||
"])\n",
|
||
"\n",
|
||
"preproc = ColumnTransformer(\n",
|
||
" transformers=[\n",
|
||
" (\"num\", numeric_transformer, numeric_features),\n",
|
||
" (\"cat\", categorical_transformer, categorical_features)\n",
|
||
" ]\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 80,
|
||
"id": "f46fb56e-c908-40b4-868f-9684d1ae01c2",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"nb_tickets 0\n",
|
||
"nb_purchases 0\n",
|
||
"total_amount 0\n",
|
||
"nb_suppliers 0\n",
|
||
"vente_internet_max 0\n",
|
||
"purchase_date_min 0\n",
|
||
"purchase_date_max 0\n",
|
||
"nb_tickets_internet 0\n",
|
||
"nb_campaigns 0\n",
|
||
"nb_campaigns_opened 0\n",
|
||
"dtype: int64"
|
||
]
|
||
},
|
||
"execution_count": 80,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"X_train[numeric_features].isna().sum()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"id": "e729781b-4d65-42c5-bdc5-82b4d653aaf0",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Set loss\n",
|
||
"balanced_scorer = make_scorer(balanced_accuracy_score)\n",
|
||
"recall_scorer = make_scorer(recall_score)\n",
|
||
"f1_scorer = make_scorer(f1_score)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 39,
|
||
"id": "a7ebbe6f-70ba-4276-be18-f10e7bfd7423",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def draw_confusion_matrix(y_test, y_pred):\n",
|
||
" conf_matrix = confusion_matrix(y_test, y_pred)\n",
|
||
" sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues', xticklabels=['Class 0', 'Class 1'], yticklabels=['Class 0', 'Class 1'])\n",
|
||
" plt.xlabel('Predicted')\n",
|
||
" plt.ylabel('Actual')\n",
|
||
" plt.title('Confusion Matrix')\n",
|
||
" plt.show()\n",
|
||
"\n",
|
||
"\n",
|
||
"def draw_roc_curve(X_test, y_test):\n",
|
||
" y_pred_prob = pipeline.predict_proba(X_test)[:, 1]\n",
|
||
"\n",
|
||
" # Calcul des taux de faux positifs (FPR) et de vrais positifs (TPR)\n",
|
||
" fpr, tpr, thresholds = roc_curve(y_test, y_pred_prob, pos_label=1)\n",
|
||
" \n",
|
||
" # Calcul de l'aire sous la courbe ROC (AUC)\n",
|
||
" roc_auc = auc(fpr, tpr)\n",
|
||
" \n",
|
||
" plt.figure(figsize = (14, 8))\n",
|
||
" plt.plot(fpr, tpr, label=\"ROC curve(area = %0.3f)\" % roc_auc)\n",
|
||
" plt.plot([0, 1], [0, 1], color=\"red\",label=\"Random Baseline\", linestyle=\"--\")\n",
|
||
" plt.grid(color='gray', linestyle='--', linewidth=0.5)\n",
|
||
" plt.xlabel('Taux de faux positifs (FPR)')\n",
|
||
" plt.ylabel('Taux de vrais positifs (TPR)')\n",
|
||
" plt.title('Courbe ROC : modèle logistique')\n",
|
||
" plt.legend(loc=\"lower right\")\n",
|
||
" plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 40,
|
||
"id": "2334eb51-e6ea-4fd0-89ce-f54cd474d332",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def draw_features_importance(pipeline, model):\n",
|
||
" coefficients = pipeline.named_steps['logreg'].coef_[0]\n",
|
||
" feature_names = pipeline.named_steps['logreg'].feature_names_in_\n",
|
||
" \n",
|
||
" # Tracer l'importance des caractéristiques\n",
|
||
" plt.figure(figsize=(10, 6))\n",
|
||
" plt.barh(feature_names, coefficients, color='skyblue')\n",
|
||
" plt.xlabel('Importance des caractéristiques')\n",
|
||
" plt.ylabel('Caractéristiques')\n",
|
||
" plt.title('Importance des caractéristiques dans le modèle de régression logistique')\n",
|
||
" plt.grid(True)\n",
|
||
" plt.show()\n",
|
||
"\n",
|
||
"def draw_prob_distribution(X_test):\n",
|
||
" y_pred_prob = pipeline.predict_proba(X_test)[:, 1]\n",
|
||
" plt.figure(figsize=(8, 6))\n",
|
||
" plt.hist(y_pred_prob, bins=10, range=(0, 1), color='blue', alpha=0.7)\n",
|
||
" \n",
|
||
" plt.xlim(0, 1)\n",
|
||
" plt.ylim(0, None)\n",
|
||
" \n",
|
||
" plt.title('Histogramme des probabilités pour la classe 1')\n",
|
||
" plt.xlabel('Probabilité')\n",
|
||
" plt.ylabel('Fréquence')\n",
|
||
" plt.grid(True)\n",
|
||
" plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 92,
|
||
"id": "83917b97-4d9b-4e3c-ba27-1e546ce885d3",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Hyperparameter\n",
|
||
"\n",
|
||
"param_c = np.logspace(-10, 4, 15, base=2)\n",
|
||
"# param_penalty_type = ['l1', 'l2', 'elasticnet']\n",
|
||
"param_penalty_type = ['l1']\n",
|
||
"param_grid = {'logreg__C': param_c,\n",
|
||
" 'logreg__penalty': param_penalty_type} "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 26,
|
||
"id": "3ae25049-920c-4a6d-a59d-c26e3b45dec6",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"1024"
|
||
]
|
||
},
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"2 ** 10"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 95,
|
||
"id": "ba4cde9f-a614-4a43-81b9-e16e78aa6c4c",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style>#sk-container-id-11 {\n",
|
||
" /* Definition of color scheme common for light and dark mode */\n",
|
||
" --sklearn-color-text: black;\n",
|
||
" --sklearn-color-line: gray;\n",
|
||
" /* Definition of color scheme for unfitted estimators */\n",
|
||
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
|
||
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
|
||
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
|
||
" --sklearn-color-unfitted-level-3: chocolate;\n",
|
||
" /* Definition of color scheme for fitted estimators */\n",
|
||
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
|
||
" --sklearn-color-fitted-level-1: #d4ebff;\n",
|
||
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
|
||
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
|
||
"\n",
|
||
" /* Specific color for light theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-icon: #696969;\n",
|
||
"\n",
|
||
" @media (prefers-color-scheme: dark) {\n",
|
||
" /* Redefinition of color scheme for dark theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-icon: #878787;\n",
|
||
" }\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 pre {\n",
|
||
" padding: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 input.sk-hidden--visually {\n",
|
||
" border: 0;\n",
|
||
" clip: rect(1px 1px 1px 1px);\n",
|
||
" clip: rect(1px, 1px, 1px, 1px);\n",
|
||
" height: 1px;\n",
|
||
" margin: -1px;\n",
|
||
" overflow: hidden;\n",
|
||
" padding: 0;\n",
|
||
" position: absolute;\n",
|
||
" width: 1px;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-dashed-wrapped {\n",
|
||
" border: 1px dashed var(--sklearn-color-line);\n",
|
||
" margin: 0 0.4em 0.5em 0.4em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" padding-bottom: 0.4em;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-container {\n",
|
||
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
|
||
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
|
||
" so we also need the `!important` here to be able to override the\n",
|
||
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
|
||
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
|
||
" display: inline-block !important;\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-text-repr-fallback {\n",
|
||
" display: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-parallel-item,\n",
|
||
"div.sk-serial,\n",
|
||
"div.sk-item {\n",
|
||
" /* draw centered vertical line to link estimators */\n",
|
||
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
|
||
" background-size: 2px 100%;\n",
|
||
" background-repeat: no-repeat;\n",
|
||
" background-position: center center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Parallel-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-parallel-item::after {\n",
|
||
" content: \"\";\n",
|
||
" width: 100%;\n",
|
||
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
|
||
" flex-grow: 1;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-parallel {\n",
|
||
" display: flex;\n",
|
||
" align-items: stretch;\n",
|
||
" justify-content: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-parallel-item {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-parallel-item:first-child::after {\n",
|
||
" align-self: flex-end;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-parallel-item:last-child::after {\n",
|
||
" align-self: flex-start;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-parallel-item:only-child::after {\n",
|
||
" width: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Serial-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-serial {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
" align-items: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" padding-right: 1em;\n",
|
||
" padding-left: 1em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"\n",
|
||
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
|
||
"clickable and can be expanded/collapsed.\n",
|
||
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
|
||
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
|
||
"*/\n",
|
||
"\n",
|
||
"/* Pipeline and ColumnTransformer style (default) */\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-toggleable {\n",
|
||
" /* Default theme specific background. It is overwritten whether we have a\n",
|
||
" specific estimator or a Pipeline/ColumnTransformer */\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable label */\n",
|
||
"#sk-container-id-11 label.sk-toggleable__label {\n",
|
||
" cursor: pointer;\n",
|
||
" display: block;\n",
|
||
" width: 100%;\n",
|
||
" margin-bottom: 0;\n",
|
||
" padding: 0.5em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 label.sk-toggleable__label-arrow:before {\n",
|
||
" /* Arrow on the left of the label */\n",
|
||
" content: \"▸\";\n",
|
||
" float: left;\n",
|
||
" margin-right: 0.25em;\n",
|
||
" color: var(--sklearn-color-icon);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 label.sk-toggleable__label-arrow:hover:before {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable content - dropdown */\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-toggleable__content {\n",
|
||
" max-height: 0;\n",
|
||
" max-width: 0;\n",
|
||
" overflow: hidden;\n",
|
||
" text-align: left;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-toggleable__content.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-toggleable__content pre {\n",
|
||
" margin: 0.2em;\n",
|
||
" border-radius: 0.25em;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-toggleable__content.fitted pre {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
|
||
" /* Expand drop-down */\n",
|
||
" max-height: 200px;\n",
|
||
" max-width: 100%;\n",
|
||
" overflow: auto;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
|
||
" content: \"▾\";\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Pipeline/ColumnTransformer-specific style */\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific style */\n",
|
||
"\n",
|
||
"/* Colorize estimator box */\n",
|
||
"#sk-container-id-11 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-label label.sk-toggleable__label,\n",
|
||
"#sk-container-id-11 div.sk-label label {\n",
|
||
" /* The background is the default theme color */\n",
|
||
" color: var(--sklearn-color-text-on-default-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover, darken the color of the background */\n",
|
||
"#sk-container-id-11 div.sk-label:hover label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Label box, darken color on hover, fitted */\n",
|
||
"#sk-container-id-11 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator label */\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-label label {\n",
|
||
" font-family: monospace;\n",
|
||
" font-weight: bold;\n",
|
||
" display: inline-block;\n",
|
||
" line-height: 1.2em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-label-container {\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific */\n",
|
||
"#sk-container-id-11 div.sk-estimator {\n",
|
||
" font-family: monospace;\n",
|
||
" border: 1px dotted var(--sklearn-color-border-box);\n",
|
||
" border-radius: 0.25em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" margin-bottom: 0.5em;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-estimator.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* on hover */\n",
|
||
"#sk-container-id-11 div.sk-estimator:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 div.sk-estimator.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
|
||
"\n",
|
||
"/* Common style for \"i\" and \"?\" */\n",
|
||
"\n",
|
||
".sk-estimator-doc-link,\n",
|
||
"a:link.sk-estimator-doc-link,\n",
|
||
"a:visited.sk-estimator-doc-link {\n",
|
||
" float: right;\n",
|
||
" font-size: smaller;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1em;\n",
|
||
" height: 1em;\n",
|
||
" width: 1em;\n",
|
||
" text-decoration: none !important;\n",
|
||
" margin-left: 1ex;\n",
|
||
" /* unfitted */\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted,\n",
|
||
"a:link.sk-estimator-doc-link.fitted,\n",
|
||
"a:visited.sk-estimator-doc-link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Span, style for the box shown on hovering the info icon */\n",
|
||
".sk-estimator-doc-link span {\n",
|
||
" display: none;\n",
|
||
" z-index: 9999;\n",
|
||
" position: relative;\n",
|
||
" font-weight: normal;\n",
|
||
" right: .2ex;\n",
|
||
" padding: .5ex;\n",
|
||
" margin: .5ex;\n",
|
||
" width: min-content;\n",
|
||
" min-width: 20ex;\n",
|
||
" max-width: 50ex;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" box-shadow: 2pt 2pt 4pt #999;\n",
|
||
" /* unfitted */\n",
|
||
" background: var(--sklearn-color-unfitted-level-0);\n",
|
||
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted span {\n",
|
||
" /* fitted */\n",
|
||
" background: var(--sklearn-color-fitted-level-0);\n",
|
||
" border: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link:hover span {\n",
|
||
" display: block;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
|
||
"\n",
|
||
"#sk-container-id-11 a.estimator_doc_link {\n",
|
||
" float: right;\n",
|
||
" font-size: 1rem;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1rem;\n",
|
||
" height: 1rem;\n",
|
||
" width: 1rem;\n",
|
||
" text-decoration: none;\n",
|
||
" /* unfitted */\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 a.estimator_doc_link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"#sk-container-id-11 a.estimator_doc_link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-11 a.estimator_doc_link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"</style><div id=\"sk-container-id-11\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet',\n",
|
||
" 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('logreg',\n",
|
||
" LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, solver='saga'))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-68\" type=\"checkbox\" ><label for=\"sk-estimator-id-68\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> Pipeline<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link \">i<span>Not fitted</span></span></label><div class=\"sk-toggleable__content \"><pre>Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet',\n",
|
||
" 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('logreg',\n",
|
||
" LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, solver='saga'))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-69\" type=\"checkbox\" ><label for=\"sk-estimator-id-69\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> preprocessor: ColumnTransformer<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.compose.ColumnTransformer.html\">?<span>Documentation for preprocessor: ColumnTransformer</span></a></label><div class=\"sk-toggleable__content \"><pre>ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler', StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases', 'total_amount',\n",
|
||
" 'nb_suppliers', 'vente_internet_max',\n",
|
||
" 'purchase_date_min', 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet', 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in', 'is_email_true'])])</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-70\" type=\"checkbox\" ><label for=\"sk-estimator-id-70\" class=\"sk-toggleable__label sk-toggleable__label-arrow \">num</label><div class=\"sk-toggleable__content \"><pre>['nb_tickets', 'nb_purchases', 'total_amount', 'nb_suppliers', 'vente_internet_max', 'purchase_date_min', 'purchase_date_max', 'nb_tickets_internet', 'nb_campaigns', 'nb_campaigns_opened']</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-71\" type=\"checkbox\" ><label for=\"sk-estimator-id-71\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> StandardScaler<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></label><div class=\"sk-toggleable__content \"><pre>StandardScaler()</pre></div> </div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-72\" type=\"checkbox\" ><label for=\"sk-estimator-id-72\" class=\"sk-toggleable__label sk-toggleable__label-arrow \">cat</label><div class=\"sk-toggleable__content \"><pre>['opt_in', 'is_email_true']</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-73\" type=\"checkbox\" ><label for=\"sk-estimator-id-73\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> OneHotEncoder<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.OneHotEncoder.html\">?<span>Documentation for OneHotEncoder</span></a></label><div class=\"sk-toggleable__content \"><pre>OneHotEncoder(handle_unknown='ignore', sparse_output=False)</pre></div> </div></div></div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-74\" type=\"checkbox\" ><label for=\"sk-estimator-id-74\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> LogisticRegression<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a></label><div class=\"sk-toggleable__content \"><pre>LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, solver='saga')</pre></div> </div></div></div></div></div></div>"
|
||
],
|
||
"text/plain": [
|
||
"Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet',\n",
|
||
" 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('logreg',\n",
|
||
" LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, solver='saga'))])"
|
||
]
|
||
},
|
||
"execution_count": 95,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Pipeline\n",
|
||
"pipeline = Pipeline(steps=[\n",
|
||
" ('preprocessor', preproc),\n",
|
||
" ('logreg', LogisticRegression(solver='saga', class_weight = weight_dict,\n",
|
||
" max_iter=5000)) \n",
|
||
"])\n",
|
||
"\n",
|
||
"pipeline.set_output(transform=\"pandas\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"id": "1e4c1be5-176d-4222-9b3c-fe27225afe36",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>nb_tickets</th>\n",
|
||
" <th>nb_purchases</th>\n",
|
||
" <th>total_amount</th>\n",
|
||
" <th>nb_suppliers</th>\n",
|
||
" <th>vente_internet_max</th>\n",
|
||
" <th>purchase_date_min</th>\n",
|
||
" <th>purchase_date_max</th>\n",
|
||
" <th>nb_tickets_internet</th>\n",
|
||
" <th>is_email_true</th>\n",
|
||
" <th>opt_in</th>\n",
|
||
" <th>gender_female</th>\n",
|
||
" <th>gender_male</th>\n",
|
||
" <th>nb_campaigns</th>\n",
|
||
" <th>nb_campaigns_opened</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>43000</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>14.0</td>\n",
|
||
" <td>12.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>183923</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>19.0</td>\n",
|
||
" <td>11.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>97373</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>66956</th>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>254.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>378.343062</td>\n",
|
||
" <td>370.453947</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>116487</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>83146</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>35.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>37.474040</td>\n",
|
||
" <td>37.474040</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>9.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>223586</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>23.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>56489</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>141236</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6999</th>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>20.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>171.446921</td>\n",
|
||
" <td>171.446921</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>10000 rows × 14 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" nb_tickets nb_purchases total_amount nb_suppliers \\\n",
|
||
"43000 0.0 0.0 0.0 0.0 \n",
|
||
"183923 0.0 0.0 0.0 0.0 \n",
|
||
"97373 0.0 0.0 0.0 0.0 \n",
|
||
"66956 7.0 2.0 254.0 1.0 \n",
|
||
"116487 0.0 0.0 0.0 0.0 \n",
|
||
"... ... ... ... ... \n",
|
||
"83146 1.0 1.0 35.0 1.0 \n",
|
||
"223586 0.0 0.0 0.0 0.0 \n",
|
||
"56489 0.0 0.0 0.0 0.0 \n",
|
||
"141236 0.0 0.0 0.0 0.0 \n",
|
||
"6999 2.0 1.0 20.0 1.0 \n",
|
||
"\n",
|
||
" vente_internet_max purchase_date_min purchase_date_max \\\n",
|
||
"43000 0.0 550.000000 550.000000 \n",
|
||
"183923 0.0 550.000000 550.000000 \n",
|
||
"97373 0.0 550.000000 550.000000 \n",
|
||
"66956 1.0 378.343062 370.453947 \n",
|
||
"116487 0.0 550.000000 550.000000 \n",
|
||
"... ... ... ... \n",
|
||
"83146 1.0 37.474040 37.474040 \n",
|
||
"223586 0.0 550.000000 550.000000 \n",
|
||
"56489 0.0 550.000000 550.000000 \n",
|
||
"141236 0.0 550.000000 550.000000 \n",
|
||
"6999 0.0 171.446921 171.446921 \n",
|
||
"\n",
|
||
" nb_tickets_internet is_email_true opt_in gender_female \\\n",
|
||
"43000 0.0 True True 0 \n",
|
||
"183923 0.0 True True 0 \n",
|
||
"97373 0.0 True False 0 \n",
|
||
"66956 7.0 True False 0 \n",
|
||
"116487 0.0 True False 1 \n",
|
||
"... ... ... ... ... \n",
|
||
"83146 1.0 True False 0 \n",
|
||
"223586 0.0 True True 0 \n",
|
||
"56489 0.0 True True 0 \n",
|
||
"141236 0.0 True False 0 \n",
|
||
"6999 0.0 True True 1 \n",
|
||
"\n",
|
||
" gender_male nb_campaigns nb_campaigns_opened \n",
|
||
"43000 1 14.0 12.0 \n",
|
||
"183923 1 19.0 11.0 \n",
|
||
"97373 0 7.0 2.0 \n",
|
||
"66956 1 0.0 0.0 \n",
|
||
"116487 0 5.0 0.0 \n",
|
||
"... ... ... ... \n",
|
||
"83146 1 9.0 3.0 \n",
|
||
"223586 1 23.0 1.0 \n",
|
||
"56489 1 4.0 0.0 \n",
|
||
"141236 1 6.0 0.0 \n",
|
||
"6999 0 0.0 0.0 \n",
|
||
"\n",
|
||
"[10000 rows x 14 columns]"
|
||
]
|
||
},
|
||
"execution_count": 24,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# reduce X_train to reduce the training time\n",
|
||
"\n",
|
||
"X_train_subsample = X_train.sample(n=10000, random_state=42)\n",
|
||
"y_train_subsample = y_train.loc[X_train_subsample.index]\n",
|
||
"X_train_subsample"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 41,
|
||
"id": "2b09c2cd-fd5c-49b3-be66-cec6c5ec1351",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>y_has_purchased</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>64466</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>141327</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>59999</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>26882</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>62952</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>141318</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>113838</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>184926</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>14617</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>21685</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>10000 rows × 1 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" y_has_purchased\n",
|
||
"64466 0.0\n",
|
||
"141327 0.0\n",
|
||
"59999 0.0\n",
|
||
"26882 0.0\n",
|
||
"62952 0.0\n",
|
||
"... ...\n",
|
||
"141318 0.0\n",
|
||
"113838 0.0\n",
|
||
"184926 0.0\n",
|
||
"14617 0.0\n",
|
||
"21685 0.0\n",
|
||
"\n",
|
||
"[10000 rows x 1 columns]"
|
||
]
|
||
},
|
||
"execution_count": 41,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"y_train_subsample"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 42,
|
||
"id": "6c33fcd8-17d8-4390-b836-faec9ada9acd",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style>#sk-container-id-3 {\n",
|
||
" /* Definition of color scheme common for light and dark mode */\n",
|
||
" --sklearn-color-text: black;\n",
|
||
" --sklearn-color-line: gray;\n",
|
||
" /* Definition of color scheme for unfitted estimators */\n",
|
||
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
|
||
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
|
||
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
|
||
" --sklearn-color-unfitted-level-3: chocolate;\n",
|
||
" /* Definition of color scheme for fitted estimators */\n",
|
||
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
|
||
" --sklearn-color-fitted-level-1: #d4ebff;\n",
|
||
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
|
||
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
|
||
"\n",
|
||
" /* Specific color for light theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-icon: #696969;\n",
|
||
"\n",
|
||
" @media (prefers-color-scheme: dark) {\n",
|
||
" /* Redefinition of color scheme for dark theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-icon: #878787;\n",
|
||
" }\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 pre {\n",
|
||
" padding: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 input.sk-hidden--visually {\n",
|
||
" border: 0;\n",
|
||
" clip: rect(1px 1px 1px 1px);\n",
|
||
" clip: rect(1px, 1px, 1px, 1px);\n",
|
||
" height: 1px;\n",
|
||
" margin: -1px;\n",
|
||
" overflow: hidden;\n",
|
||
" padding: 0;\n",
|
||
" position: absolute;\n",
|
||
" width: 1px;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-dashed-wrapped {\n",
|
||
" border: 1px dashed var(--sklearn-color-line);\n",
|
||
" margin: 0 0.4em 0.5em 0.4em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" padding-bottom: 0.4em;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-container {\n",
|
||
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
|
||
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
|
||
" so we also need the `!important` here to be able to override the\n",
|
||
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
|
||
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
|
||
" display: inline-block !important;\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-text-repr-fallback {\n",
|
||
" display: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-parallel-item,\n",
|
||
"div.sk-serial,\n",
|
||
"div.sk-item {\n",
|
||
" /* draw centered vertical line to link estimators */\n",
|
||
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
|
||
" background-size: 2px 100%;\n",
|
||
" background-repeat: no-repeat;\n",
|
||
" background-position: center center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Parallel-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-parallel-item::after {\n",
|
||
" content: \"\";\n",
|
||
" width: 100%;\n",
|
||
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
|
||
" flex-grow: 1;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-parallel {\n",
|
||
" display: flex;\n",
|
||
" align-items: stretch;\n",
|
||
" justify-content: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-parallel-item {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-parallel-item:first-child::after {\n",
|
||
" align-self: flex-end;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-parallel-item:last-child::after {\n",
|
||
" align-self: flex-start;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-parallel-item:only-child::after {\n",
|
||
" width: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Serial-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-serial {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
" align-items: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" padding-right: 1em;\n",
|
||
" padding-left: 1em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"\n",
|
||
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
|
||
"clickable and can be expanded/collapsed.\n",
|
||
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
|
||
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
|
||
"*/\n",
|
||
"\n",
|
||
"/* Pipeline and ColumnTransformer style (default) */\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-toggleable {\n",
|
||
" /* Default theme specific background. It is overwritten whether we have a\n",
|
||
" specific estimator or a Pipeline/ColumnTransformer */\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable label */\n",
|
||
"#sk-container-id-3 label.sk-toggleable__label {\n",
|
||
" cursor: pointer;\n",
|
||
" display: block;\n",
|
||
" width: 100%;\n",
|
||
" margin-bottom: 0;\n",
|
||
" padding: 0.5em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 label.sk-toggleable__label-arrow:before {\n",
|
||
" /* Arrow on the left of the label */\n",
|
||
" content: \"▸\";\n",
|
||
" float: left;\n",
|
||
" margin-right: 0.25em;\n",
|
||
" color: var(--sklearn-color-icon);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 label.sk-toggleable__label-arrow:hover:before {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable content - dropdown */\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-toggleable__content {\n",
|
||
" max-height: 0;\n",
|
||
" max-width: 0;\n",
|
||
" overflow: hidden;\n",
|
||
" text-align: left;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-toggleable__content.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-toggleable__content pre {\n",
|
||
" margin: 0.2em;\n",
|
||
" border-radius: 0.25em;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-toggleable__content.fitted pre {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
|
||
" /* Expand drop-down */\n",
|
||
" max-height: 200px;\n",
|
||
" max-width: 100%;\n",
|
||
" overflow: auto;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
|
||
" content: \"▾\";\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Pipeline/ColumnTransformer-specific style */\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific style */\n",
|
||
"\n",
|
||
"/* Colorize estimator box */\n",
|
||
"#sk-container-id-3 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-label label.sk-toggleable__label,\n",
|
||
"#sk-container-id-3 div.sk-label label {\n",
|
||
" /* The background is the default theme color */\n",
|
||
" color: var(--sklearn-color-text-on-default-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover, darken the color of the background */\n",
|
||
"#sk-container-id-3 div.sk-label:hover label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Label box, darken color on hover, fitted */\n",
|
||
"#sk-container-id-3 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator label */\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-label label {\n",
|
||
" font-family: monospace;\n",
|
||
" font-weight: bold;\n",
|
||
" display: inline-block;\n",
|
||
" line-height: 1.2em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-label-container {\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific */\n",
|
||
"#sk-container-id-3 div.sk-estimator {\n",
|
||
" font-family: monospace;\n",
|
||
" border: 1px dotted var(--sklearn-color-border-box);\n",
|
||
" border-radius: 0.25em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" margin-bottom: 0.5em;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-estimator.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* on hover */\n",
|
||
"#sk-container-id-3 div.sk-estimator:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 div.sk-estimator.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
|
||
"\n",
|
||
"/* Common style for \"i\" and \"?\" */\n",
|
||
"\n",
|
||
".sk-estimator-doc-link,\n",
|
||
"a:link.sk-estimator-doc-link,\n",
|
||
"a:visited.sk-estimator-doc-link {\n",
|
||
" float: right;\n",
|
||
" font-size: smaller;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1em;\n",
|
||
" height: 1em;\n",
|
||
" width: 1em;\n",
|
||
" text-decoration: none !important;\n",
|
||
" margin-left: 1ex;\n",
|
||
" /* unfitted */\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted,\n",
|
||
"a:link.sk-estimator-doc-link.fitted,\n",
|
||
"a:visited.sk-estimator-doc-link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Span, style for the box shown on hovering the info icon */\n",
|
||
".sk-estimator-doc-link span {\n",
|
||
" display: none;\n",
|
||
" z-index: 9999;\n",
|
||
" position: relative;\n",
|
||
" font-weight: normal;\n",
|
||
" right: .2ex;\n",
|
||
" padding: .5ex;\n",
|
||
" margin: .5ex;\n",
|
||
" width: min-content;\n",
|
||
" min-width: 20ex;\n",
|
||
" max-width: 50ex;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" box-shadow: 2pt 2pt 4pt #999;\n",
|
||
" /* unfitted */\n",
|
||
" background: var(--sklearn-color-unfitted-level-0);\n",
|
||
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted span {\n",
|
||
" /* fitted */\n",
|
||
" background: var(--sklearn-color-fitted-level-0);\n",
|
||
" border: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link:hover span {\n",
|
||
" display: block;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
|
||
"\n",
|
||
"#sk-container-id-3 a.estimator_doc_link {\n",
|
||
" float: right;\n",
|
||
" font-size: 1rem;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1rem;\n",
|
||
" height: 1rem;\n",
|
||
" width: 1rem;\n",
|
||
" text-decoration: none;\n",
|
||
" /* unfitted */\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 a.estimator_doc_link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"#sk-container-id-3 a.estimator_doc_link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-3 a.estimator_doc_link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"</style><div id=\"sk-container-id-3\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internetnb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('logreg',\n",
|
||
" LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, solver='saga'))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-15\" type=\"checkbox\" ><label for=\"sk-estimator-id-15\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> Pipeline<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link \">i<span>Not fitted</span></span></label><div class=\"sk-toggleable__content \"><pre>Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internetnb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('logreg',\n",
|
||
" LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, solver='saga'))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-16\" type=\"checkbox\" ><label for=\"sk-estimator-id-16\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> preprocessor: ColumnTransformer<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.compose.ColumnTransformer.html\">?<span>Documentation for preprocessor: ColumnTransformer</span></a></label><div class=\"sk-toggleable__content \"><pre>ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler', StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases', 'total_amount',\n",
|
||
" 'nb_suppliers', 'vente_internet_max',\n",
|
||
" 'purchase_date_min', 'purchase_date_max',\n",
|
||
" 'nb_tickets_internetnb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in', 'is_email_true'])])</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-17\" type=\"checkbox\" ><label for=\"sk-estimator-id-17\" class=\"sk-toggleable__label sk-toggleable__label-arrow \">num</label><div class=\"sk-toggleable__content \"><pre>['nb_tickets', 'nb_purchases', 'total_amount', 'nb_suppliers', 'vente_internet_max', 'purchase_date_min', 'purchase_date_max', 'nb_tickets_internetnb_campaigns', 'nb_campaigns_opened']</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-18\" type=\"checkbox\" ><label for=\"sk-estimator-id-18\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> StandardScaler<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></label><div class=\"sk-toggleable__content \"><pre>StandardScaler()</pre></div> </div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-19\" type=\"checkbox\" ><label for=\"sk-estimator-id-19\" class=\"sk-toggleable__label sk-toggleable__label-arrow \">cat</label><div class=\"sk-toggleable__content \"><pre>['opt_in', 'is_email_true']</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-20\" type=\"checkbox\" ><label for=\"sk-estimator-id-20\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> OneHotEncoder<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.OneHotEncoder.html\">?<span>Documentation for OneHotEncoder</span></a></label><div class=\"sk-toggleable__content \"><pre>OneHotEncoder(handle_unknown='ignore', sparse_output=False)</pre></div> </div></div></div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-21\" type=\"checkbox\" ><label for=\"sk-estimator-id-21\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> LogisticRegression<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a></label><div class=\"sk-toggleable__content \"><pre>LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, solver='saga')</pre></div> </div></div></div></div></div></div>"
|
||
],
|
||
"text/plain": [
|
||
"Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internetnb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('logreg',\n",
|
||
" LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, solver='saga'))])"
|
||
]
|
||
},
|
||
"execution_count": 42,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pipeline"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 43,
|
||
"id": "710ccccc-50c9-4aba-8cf1-11483dbbdd1c",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"{'logreg__C': array([9.765625e-04, 1.953125e-03, 3.906250e-03, 7.812500e-03,\n",
|
||
" 1.562500e-02, 3.125000e-02, 6.250000e-02, 1.250000e-01,\n",
|
||
" 2.500000e-01, 5.000000e-01, 1.000000e+00, 2.000000e+00,\n",
|
||
" 4.000000e+00, 8.000000e+00, 1.600000e+01]),\n",
|
||
" 'logreg__penalty': ['l1', 'l2', 'elasticnet']}"
|
||
]
|
||
},
|
||
"execution_count": 43,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"param_grid"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 46,
|
||
"id": "ab078cf8-0d4c-4b23-9f33-2483cf605b06",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"make_scorer(f1_score, response_method='predict')"
|
||
]
|
||
},
|
||
"execution_count": 46,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"f1_scorer"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 50,
|
||
"id": "8062169e-8305-42b0-aeff-8f714117da40",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>nb_tickets</th>\n",
|
||
" <th>nb_purchases</th>\n",
|
||
" <th>total_amount</th>\n",
|
||
" <th>nb_suppliers</th>\n",
|
||
" <th>vente_internet_max</th>\n",
|
||
" <th>purchase_date_min</th>\n",
|
||
" <th>purchase_date_max</th>\n",
|
||
" <th>nb_tickets_internet</th>\n",
|
||
" <th>is_email_true</th>\n",
|
||
" <th>opt_in</th>\n",
|
||
" <th>gender_female</th>\n",
|
||
" <th>gender_male</th>\n",
|
||
" <th>nb_campaigns</th>\n",
|
||
" <th>nb_campaigns_opened</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>64466</th>\n",
|
||
" <td>11.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>281.4</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>238.330591</td>\n",
|
||
" <td>30.285040</td>\n",
|
||
" <td>11.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>141327</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>59999</th>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>350.288926</td>\n",
|
||
" <td>350.288926</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>26882</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>62952</th>\n",
|
||
" <td>11.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>325.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>424.486781</td>\n",
|
||
" <td>237.282262</td>\n",
|
||
" <td>11.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>141318</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>16.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>113838</th>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>15.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>153.152945</td>\n",
|
||
" <td>90.277099</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>31.0</td>\n",
|
||
" <td>14.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>184926</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>18.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>14617</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>20.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>239.258970</td>\n",
|
||
" <td>239.258970</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>21685</th>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>88.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>240.355162</td>\n",
|
||
" <td>240.355162</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>10000 rows × 14 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" nb_tickets nb_purchases total_amount nb_suppliers \\\n",
|
||
"64466 11.0 4.0 281.4 1.0 \n",
|
||
"141327 0.0 0.0 0.0 0.0 \n",
|
||
"59999 2.0 1.0 0.0 1.0 \n",
|
||
"26882 0.0 0.0 0.0 0.0 \n",
|
||
"62952 11.0 3.0 325.0 1.0 \n",
|
||
"... ... ... ... ... \n",
|
||
"141318 0.0 0.0 0.0 0.0 \n",
|
||
"113838 3.0 2.0 15.0 1.0 \n",
|
||
"184926 0.0 0.0 0.0 0.0 \n",
|
||
"14617 1.0 1.0 20.0 1.0 \n",
|
||
"21685 4.0 1.0 88.0 1.0 \n",
|
||
"\n",
|
||
" vente_internet_max purchase_date_min purchase_date_max \\\n",
|
||
"64466 1.0 238.330591 30.285040 \n",
|
||
"141327 0.0 550.000000 550.000000 \n",
|
||
"59999 1.0 350.288926 350.288926 \n",
|
||
"26882 0.0 550.000000 550.000000 \n",
|
||
"62952 1.0 424.486781 237.282262 \n",
|
||
"... ... ... ... \n",
|
||
"141318 0.0 550.000000 550.000000 \n",
|
||
"113838 1.0 153.152945 90.277099 \n",
|
||
"184926 0.0 550.000000 550.000000 \n",
|
||
"14617 0.0 239.258970 239.258970 \n",
|
||
"21685 0.0 240.355162 240.355162 \n",
|
||
"\n",
|
||
" nb_tickets_internet is_email_true opt_in gender_female \\\n",
|
||
"64466 11.0 True False 1 \n",
|
||
"141327 0.0 True True 0 \n",
|
||
"59999 2.0 True False 1 \n",
|
||
"26882 0.0 True False 1 \n",
|
||
"62952 11.0 True False 0 \n",
|
||
"... ... ... ... ... \n",
|
||
"141318 0.0 True True 0 \n",
|
||
"113838 3.0 True True 0 \n",
|
||
"184926 0.0 True True 0 \n",
|
||
"14617 0.0 True True 0 \n",
|
||
"21685 0.0 True True 0 \n",
|
||
"\n",
|
||
" gender_male nb_campaigns nb_campaigns_opened \n",
|
||
"64466 0 0.0 0.0 \n",
|
||
"141327 0 10.0 0.0 \n",
|
||
"59999 0 0.0 0.0 \n",
|
||
"26882 0 4.0 1.0 \n",
|
||
"62952 0 0.0 0.0 \n",
|
||
"... ... ... ... \n",
|
||
"141318 0 16.0 1.0 \n",
|
||
"113838 1 31.0 14.0 \n",
|
||
"184926 1 18.0 0.0 \n",
|
||
"14617 1 0.0 0.0 \n",
|
||
"21685 1 0.0 0.0 \n",
|
||
"\n",
|
||
"[10000 rows x 14 columns]"
|
||
]
|
||
},
|
||
"execution_count": 50,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"X_train_subsample"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 86,
|
||
"id": "0270013a-6523-4cf8-8de0-569c0d1c5db5",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"warnings.filterwarnings('ignore')\n",
|
||
"warnings.filterwarnings(\"ignore\", category=ConvergenceWarning)\n",
|
||
"warnings.filterwarnings(\"ignore\", category=DataConversionWarning)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 88,
|
||
"id": "7a49d78a-5a9b-44a9-95cf-3fca1b3febfa",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Returned hyperparameter: {'logreg__C': 0.03125, 'logreg__penalty': 'l1'}\n",
|
||
"Best classification accuracy in train is: 0.47785817197986385\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# run the pipeline on the subsample\n",
|
||
"\n",
|
||
"logit_grid = GridSearchCV(pipeline, param_grid, cv=3, scoring = f1_scorer #, error_score=\"raise\"\n",
|
||
" )\n",
|
||
"logit_grid.fit(X_train_subsample, y_train_subsample)\n",
|
||
"\n",
|
||
"# print results\n",
|
||
"print('Returned hyperparameter: {}'.format(logit_grid.best_params_))\n",
|
||
"print('Best classification accuracy in train is: {}'.format(logit_grid.best_score_))\n",
|
||
"# print('Classification accuracy on test is: {}'.format(logit_grid.score(X_test, y_test)))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 89,
|
||
"id": "b1d5e71d-1078-4370-86e8-52b1ae378898",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([9.765625e-04, 1.953125e-03, 3.906250e-03, 7.812500e-03,\n",
|
||
" 1.562500e-02, 3.125000e-02, 6.250000e-02, 1.250000e-01,\n",
|
||
" 2.500000e-01, 5.000000e-01, 1.000000e+00, 2.000000e+00,\n",
|
||
" 4.000000e+00, 8.000000e+00, 1.600000e+01])"
|
||
]
|
||
},
|
||
"execution_count": 89,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"param_c"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 96,
|
||
"id": "cfe04739-fe9c-4802-9d34-885a8cfce0dc",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style>#sk-container-id-12 {\n",
|
||
" /* Definition of color scheme common for light and dark mode */\n",
|
||
" --sklearn-color-text: black;\n",
|
||
" --sklearn-color-line: gray;\n",
|
||
" /* Definition of color scheme for unfitted estimators */\n",
|
||
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
|
||
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
|
||
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
|
||
" --sklearn-color-unfitted-level-3: chocolate;\n",
|
||
" /* Definition of color scheme for fitted estimators */\n",
|
||
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
|
||
" --sklearn-color-fitted-level-1: #d4ebff;\n",
|
||
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
|
||
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
|
||
"\n",
|
||
" /* Specific color for light theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-icon: #696969;\n",
|
||
"\n",
|
||
" @media (prefers-color-scheme: dark) {\n",
|
||
" /* Redefinition of color scheme for dark theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-icon: #878787;\n",
|
||
" }\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 pre {\n",
|
||
" padding: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 input.sk-hidden--visually {\n",
|
||
" border: 0;\n",
|
||
" clip: rect(1px 1px 1px 1px);\n",
|
||
" clip: rect(1px, 1px, 1px, 1px);\n",
|
||
" height: 1px;\n",
|
||
" margin: -1px;\n",
|
||
" overflow: hidden;\n",
|
||
" padding: 0;\n",
|
||
" position: absolute;\n",
|
||
" width: 1px;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-dashed-wrapped {\n",
|
||
" border: 1px dashed var(--sklearn-color-line);\n",
|
||
" margin: 0 0.4em 0.5em 0.4em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" padding-bottom: 0.4em;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-container {\n",
|
||
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
|
||
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
|
||
" so we also need the `!important` here to be able to override the\n",
|
||
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
|
||
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
|
||
" display: inline-block !important;\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-text-repr-fallback {\n",
|
||
" display: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-parallel-item,\n",
|
||
"div.sk-serial,\n",
|
||
"div.sk-item {\n",
|
||
" /* draw centered vertical line to link estimators */\n",
|
||
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
|
||
" background-size: 2px 100%;\n",
|
||
" background-repeat: no-repeat;\n",
|
||
" background-position: center center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Parallel-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-parallel-item::after {\n",
|
||
" content: \"\";\n",
|
||
" width: 100%;\n",
|
||
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
|
||
" flex-grow: 1;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-parallel {\n",
|
||
" display: flex;\n",
|
||
" align-items: stretch;\n",
|
||
" justify-content: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-parallel-item {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-parallel-item:first-child::after {\n",
|
||
" align-self: flex-end;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-parallel-item:last-child::after {\n",
|
||
" align-self: flex-start;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-parallel-item:only-child::after {\n",
|
||
" width: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Serial-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-serial {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
" align-items: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" padding-right: 1em;\n",
|
||
" padding-left: 1em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"\n",
|
||
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
|
||
"clickable and can be expanded/collapsed.\n",
|
||
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
|
||
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
|
||
"*/\n",
|
||
"\n",
|
||
"/* Pipeline and ColumnTransformer style (default) */\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-toggleable {\n",
|
||
" /* Default theme specific background. It is overwritten whether we have a\n",
|
||
" specific estimator or a Pipeline/ColumnTransformer */\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable label */\n",
|
||
"#sk-container-id-12 label.sk-toggleable__label {\n",
|
||
" cursor: pointer;\n",
|
||
" display: block;\n",
|
||
" width: 100%;\n",
|
||
" margin-bottom: 0;\n",
|
||
" padding: 0.5em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 label.sk-toggleable__label-arrow:before {\n",
|
||
" /* Arrow on the left of the label */\n",
|
||
" content: \"▸\";\n",
|
||
" float: left;\n",
|
||
" margin-right: 0.25em;\n",
|
||
" color: var(--sklearn-color-icon);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 label.sk-toggleable__label-arrow:hover:before {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable content - dropdown */\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-toggleable__content {\n",
|
||
" max-height: 0;\n",
|
||
" max-width: 0;\n",
|
||
" overflow: hidden;\n",
|
||
" text-align: left;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-toggleable__content.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-toggleable__content pre {\n",
|
||
" margin: 0.2em;\n",
|
||
" border-radius: 0.25em;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-toggleable__content.fitted pre {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
|
||
" /* Expand drop-down */\n",
|
||
" max-height: 200px;\n",
|
||
" max-width: 100%;\n",
|
||
" overflow: auto;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
|
||
" content: \"▾\";\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Pipeline/ColumnTransformer-specific style */\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific style */\n",
|
||
"\n",
|
||
"/* Colorize estimator box */\n",
|
||
"#sk-container-id-12 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-label label.sk-toggleable__label,\n",
|
||
"#sk-container-id-12 div.sk-label label {\n",
|
||
" /* The background is the default theme color */\n",
|
||
" color: var(--sklearn-color-text-on-default-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover, darken the color of the background */\n",
|
||
"#sk-container-id-12 div.sk-label:hover label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Label box, darken color on hover, fitted */\n",
|
||
"#sk-container-id-12 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator label */\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-label label {\n",
|
||
" font-family: monospace;\n",
|
||
" font-weight: bold;\n",
|
||
" display: inline-block;\n",
|
||
" line-height: 1.2em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-label-container {\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific */\n",
|
||
"#sk-container-id-12 div.sk-estimator {\n",
|
||
" font-family: monospace;\n",
|
||
" border: 1px dotted var(--sklearn-color-border-box);\n",
|
||
" border-radius: 0.25em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" margin-bottom: 0.5em;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-estimator.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* on hover */\n",
|
||
"#sk-container-id-12 div.sk-estimator:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 div.sk-estimator.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
|
||
"\n",
|
||
"/* Common style for \"i\" and \"?\" */\n",
|
||
"\n",
|
||
".sk-estimator-doc-link,\n",
|
||
"a:link.sk-estimator-doc-link,\n",
|
||
"a:visited.sk-estimator-doc-link {\n",
|
||
" float: right;\n",
|
||
" font-size: smaller;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1em;\n",
|
||
" height: 1em;\n",
|
||
" width: 1em;\n",
|
||
" text-decoration: none !important;\n",
|
||
" margin-left: 1ex;\n",
|
||
" /* unfitted */\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted,\n",
|
||
"a:link.sk-estimator-doc-link.fitted,\n",
|
||
"a:visited.sk-estimator-doc-link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Span, style for the box shown on hovering the info icon */\n",
|
||
".sk-estimator-doc-link span {\n",
|
||
" display: none;\n",
|
||
" z-index: 9999;\n",
|
||
" position: relative;\n",
|
||
" font-weight: normal;\n",
|
||
" right: .2ex;\n",
|
||
" padding: .5ex;\n",
|
||
" margin: .5ex;\n",
|
||
" width: min-content;\n",
|
||
" min-width: 20ex;\n",
|
||
" max-width: 50ex;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" box-shadow: 2pt 2pt 4pt #999;\n",
|
||
" /* unfitted */\n",
|
||
" background: var(--sklearn-color-unfitted-level-0);\n",
|
||
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted span {\n",
|
||
" /* fitted */\n",
|
||
" background: var(--sklearn-color-fitted-level-0);\n",
|
||
" border: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link:hover span {\n",
|
||
" display: block;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
|
||
"\n",
|
||
"#sk-container-id-12 a.estimator_doc_link {\n",
|
||
" float: right;\n",
|
||
" font-size: 1rem;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1rem;\n",
|
||
" height: 1rem;\n",
|
||
" width: 1rem;\n",
|
||
" text-decoration: none;\n",
|
||
" /* unfitted */\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 a.estimator_doc_link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"#sk-container-id-12 a.estimator_doc_link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-12 a.estimator_doc_link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"</style><div id=\"sk-container-id-12\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GridSearchCV(cv=3,\n",
|
||
" estimator=Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets',\n",
|
||
" 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet',\n",
|
||
" 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[(...\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000,\n",
|
||
" solver='saga'))]),\n",
|
||
" param_grid={'logreg__C': array([9.765625e-04, 1.953125e-03, 3.906250e-03, 7.812500e-03,\n",
|
||
" 1.562500e-02, 3.125000e-02, 6.250000e-02, 1.250000e-01,\n",
|
||
" 2.500000e-01, 5.000000e-01, 1.000000e+00, 2.000000e+00,\n",
|
||
" 4.000000e+00, 8.000000e+00, 1.600000e+01]),\n",
|
||
" 'logreg__penalty': ['l1']},\n",
|
||
" scoring=make_scorer(f1_score, response_method='predict'))</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-75\" type=\"checkbox\" ><label for=\"sk-estimator-id-75\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> GridSearchCV<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.model_selection.GridSearchCV.html\">?<span>Documentation for GridSearchCV</span></a><span class=\"sk-estimator-doc-link \">i<span>Not fitted</span></span></label><div class=\"sk-toggleable__content \"><pre>GridSearchCV(cv=3,\n",
|
||
" estimator=Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets',\n",
|
||
" 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet',\n",
|
||
" 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[(...\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000,\n",
|
||
" solver='saga'))]),\n",
|
||
" param_grid={'logreg__C': array([9.765625e-04, 1.953125e-03, 3.906250e-03, 7.812500e-03,\n",
|
||
" 1.562500e-02, 3.125000e-02, 6.250000e-02, 1.250000e-01,\n",
|
||
" 2.500000e-01, 5.000000e-01, 1.000000e+00, 2.000000e+00,\n",
|
||
" 4.000000e+00, 8.000000e+00, 1.600000e+01]),\n",
|
||
" 'logreg__penalty': ['l1']},\n",
|
||
" scoring=make_scorer(f1_score, response_method='predict'))</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-76\" type=\"checkbox\" ><label for=\"sk-estimator-id-76\" class=\"sk-toggleable__label sk-toggleable__label-arrow \">estimator: Pipeline</label><div class=\"sk-toggleable__content \"><pre>Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet',\n",
|
||
" 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('logreg',\n",
|
||
" LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, solver='saga'))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-77\" type=\"checkbox\" ><label for=\"sk-estimator-id-77\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> preprocessor: ColumnTransformer<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.compose.ColumnTransformer.html\">?<span>Documentation for preprocessor: ColumnTransformer</span></a></label><div class=\"sk-toggleable__content \"><pre>ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler', StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases', 'total_amount',\n",
|
||
" 'nb_suppliers', 'vente_internet_max',\n",
|
||
" 'purchase_date_min', 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet', 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in', 'is_email_true'])])</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-78\" type=\"checkbox\" ><label for=\"sk-estimator-id-78\" class=\"sk-toggleable__label sk-toggleable__label-arrow \">num</label><div class=\"sk-toggleable__content \"><pre>['nb_tickets', 'nb_purchases', 'total_amount', 'nb_suppliers', 'vente_internet_max', 'purchase_date_min', 'purchase_date_max', 'nb_tickets_internet', 'nb_campaigns', 'nb_campaigns_opened']</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-79\" type=\"checkbox\" ><label for=\"sk-estimator-id-79\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> StandardScaler<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></label><div class=\"sk-toggleable__content \"><pre>StandardScaler()</pre></div> </div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-80\" type=\"checkbox\" ><label for=\"sk-estimator-id-80\" class=\"sk-toggleable__label sk-toggleable__label-arrow \">cat</label><div class=\"sk-toggleable__content \"><pre>['opt_in', 'is_email_true']</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-81\" type=\"checkbox\" ><label for=\"sk-estimator-id-81\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> OneHotEncoder<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.OneHotEncoder.html\">?<span>Documentation for OneHotEncoder</span></a></label><div class=\"sk-toggleable__content \"><pre>OneHotEncoder(handle_unknown='ignore', sparse_output=False)</pre></div> </div></div></div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-82\" type=\"checkbox\" ><label for=\"sk-estimator-id-82\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> LogisticRegression<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a></label><div class=\"sk-toggleable__content \"><pre>LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, solver='saga')</pre></div> </div></div></div></div></div></div></div></div></div></div></div>"
|
||
],
|
||
"text/plain": [
|
||
"GridSearchCV(cv=3,\n",
|
||
" estimator=Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets',\n",
|
||
" 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet',\n",
|
||
" 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[(...\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000,\n",
|
||
" solver='saga'))]),\n",
|
||
" param_grid={'logreg__C': array([9.765625e-04, 1.953125e-03, 3.906250e-03, 7.812500e-03,\n",
|
||
" 1.562500e-02, 3.125000e-02, 6.250000e-02, 1.250000e-01,\n",
|
||
" 2.500000e-01, 5.000000e-01, 1.000000e+00, 2.000000e+00,\n",
|
||
" 4.000000e+00, 8.000000e+00, 1.600000e+01]),\n",
|
||
" 'logreg__penalty': ['l1']},\n",
|
||
" scoring=make_scorer(f1_score, response_method='predict'))"
|
||
]
|
||
},
|
||
"execution_count": 96,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"logit_grid = GridSearchCV(pipeline, param_grid, cv=3, scoring = f1_scorer #, error_score=\"raise\"\n",
|
||
" )\n",
|
||
"logit_grid"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 97,
|
||
"id": "6debc66c-a56d-41fa-8ef8-ba388e0e14fe",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"{'logreg__C': array([9.765625e-04, 1.953125e-03, 3.906250e-03, 7.812500e-03,\n",
|
||
" 1.562500e-02, 3.125000e-02, 6.250000e-02, 1.250000e-01,\n",
|
||
" 2.500000e-01, 5.000000e-01, 1.000000e+00, 2.000000e+00,\n",
|
||
" 4.000000e+00, 8.000000e+00, 1.600000e+01]),\n",
|
||
" 'logreg__penalty': ['l1']}"
|
||
]
|
||
},
|
||
"execution_count": 97,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"param_grid"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 98,
|
||
"id": "e394cc04-5d0b-4a64-9aa0-415dc8a3cbbc",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Returned hyperparameter: {'logreg__C': 0.03125, 'logreg__penalty': 'l1'}\n",
|
||
"Best classification accuracy in train is: 0.42160313383818665\n",
|
||
"Classification accuracy on test is: 0.47078982841737305\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# run the pipeline on the full sample\n",
|
||
"\n",
|
||
"logit_grid = GridSearchCV(pipeline, param_grid, cv=3, scoring = f1_scorer #, error_score=\"raise\"\n",
|
||
" )\n",
|
||
"logit_grid.fit(X_train, y_train)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 99,
|
||
"id": "8e6cf558-a4f4-4159-9835-364ee3bb1ed2",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Returned hyperparameter: {'logreg__C': 0.03125, 'logreg__penalty': 'l1'}\n",
|
||
"Best classification F1 score in train is: 0.42160313383818665\n",
|
||
"Classification F1 score on test is: 0.47078982841737305\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# print results\n",
|
||
"print('Returned hyperparameter: {}'.format(logit_grid.best_params_))\n",
|
||
"print('Best classification F1 score in train is: {}'.format(logit_grid.best_score_))\n",
|
||
"print('Classification F1 score on test is: {}'.format(logit_grid.score(X_test, y_test)))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 100,
|
||
"id": "e2ff26cb-f137-4a23-9add-bdb61bebdf9c",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style>#sk-container-id-13 {\n",
|
||
" /* Definition of color scheme common for light and dark mode */\n",
|
||
" --sklearn-color-text: black;\n",
|
||
" --sklearn-color-line: gray;\n",
|
||
" /* Definition of color scheme for unfitted estimators */\n",
|
||
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
|
||
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
|
||
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
|
||
" --sklearn-color-unfitted-level-3: chocolate;\n",
|
||
" /* Definition of color scheme for fitted estimators */\n",
|
||
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
|
||
" --sklearn-color-fitted-level-1: #d4ebff;\n",
|
||
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
|
||
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
|
||
"\n",
|
||
" /* Specific color for light theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-icon: #696969;\n",
|
||
"\n",
|
||
" @media (prefers-color-scheme: dark) {\n",
|
||
" /* Redefinition of color scheme for dark theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-icon: #878787;\n",
|
||
" }\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 pre {\n",
|
||
" padding: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 input.sk-hidden--visually {\n",
|
||
" border: 0;\n",
|
||
" clip: rect(1px 1px 1px 1px);\n",
|
||
" clip: rect(1px, 1px, 1px, 1px);\n",
|
||
" height: 1px;\n",
|
||
" margin: -1px;\n",
|
||
" overflow: hidden;\n",
|
||
" padding: 0;\n",
|
||
" position: absolute;\n",
|
||
" width: 1px;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-dashed-wrapped {\n",
|
||
" border: 1px dashed var(--sklearn-color-line);\n",
|
||
" margin: 0 0.4em 0.5em 0.4em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" padding-bottom: 0.4em;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-container {\n",
|
||
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
|
||
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
|
||
" so we also need the `!important` here to be able to override the\n",
|
||
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
|
||
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
|
||
" display: inline-block !important;\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-text-repr-fallback {\n",
|
||
" display: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-parallel-item,\n",
|
||
"div.sk-serial,\n",
|
||
"div.sk-item {\n",
|
||
" /* draw centered vertical line to link estimators */\n",
|
||
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
|
||
" background-size: 2px 100%;\n",
|
||
" background-repeat: no-repeat;\n",
|
||
" background-position: center center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Parallel-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-parallel-item::after {\n",
|
||
" content: \"\";\n",
|
||
" width: 100%;\n",
|
||
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
|
||
" flex-grow: 1;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-parallel {\n",
|
||
" display: flex;\n",
|
||
" align-items: stretch;\n",
|
||
" justify-content: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-parallel-item {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-parallel-item:first-child::after {\n",
|
||
" align-self: flex-end;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-parallel-item:last-child::after {\n",
|
||
" align-self: flex-start;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-parallel-item:only-child::after {\n",
|
||
" width: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Serial-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-serial {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
" align-items: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" padding-right: 1em;\n",
|
||
" padding-left: 1em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"\n",
|
||
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
|
||
"clickable and can be expanded/collapsed.\n",
|
||
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
|
||
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
|
||
"*/\n",
|
||
"\n",
|
||
"/* Pipeline and ColumnTransformer style (default) */\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-toggleable {\n",
|
||
" /* Default theme specific background. It is overwritten whether we have a\n",
|
||
" specific estimator or a Pipeline/ColumnTransformer */\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable label */\n",
|
||
"#sk-container-id-13 label.sk-toggleable__label {\n",
|
||
" cursor: pointer;\n",
|
||
" display: block;\n",
|
||
" width: 100%;\n",
|
||
" margin-bottom: 0;\n",
|
||
" padding: 0.5em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 label.sk-toggleable__label-arrow:before {\n",
|
||
" /* Arrow on the left of the label */\n",
|
||
" content: \"▸\";\n",
|
||
" float: left;\n",
|
||
" margin-right: 0.25em;\n",
|
||
" color: var(--sklearn-color-icon);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 label.sk-toggleable__label-arrow:hover:before {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable content - dropdown */\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-toggleable__content {\n",
|
||
" max-height: 0;\n",
|
||
" max-width: 0;\n",
|
||
" overflow: hidden;\n",
|
||
" text-align: left;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-toggleable__content.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-toggleable__content pre {\n",
|
||
" margin: 0.2em;\n",
|
||
" border-radius: 0.25em;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-toggleable__content.fitted pre {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
|
||
" /* Expand drop-down */\n",
|
||
" max-height: 200px;\n",
|
||
" max-width: 100%;\n",
|
||
" overflow: auto;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
|
||
" content: \"▾\";\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Pipeline/ColumnTransformer-specific style */\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific style */\n",
|
||
"\n",
|
||
"/* Colorize estimator box */\n",
|
||
"#sk-container-id-13 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-label label.sk-toggleable__label,\n",
|
||
"#sk-container-id-13 div.sk-label label {\n",
|
||
" /* The background is the default theme color */\n",
|
||
" color: var(--sklearn-color-text-on-default-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover, darken the color of the background */\n",
|
||
"#sk-container-id-13 div.sk-label:hover label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Label box, darken color on hover, fitted */\n",
|
||
"#sk-container-id-13 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator label */\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-label label {\n",
|
||
" font-family: monospace;\n",
|
||
" font-weight: bold;\n",
|
||
" display: inline-block;\n",
|
||
" line-height: 1.2em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-label-container {\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific */\n",
|
||
"#sk-container-id-13 div.sk-estimator {\n",
|
||
" font-family: monospace;\n",
|
||
" border: 1px dotted var(--sklearn-color-border-box);\n",
|
||
" border-radius: 0.25em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" margin-bottom: 0.5em;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-estimator.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* on hover */\n",
|
||
"#sk-container-id-13 div.sk-estimator:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 div.sk-estimator.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
|
||
"\n",
|
||
"/* Common style for \"i\" and \"?\" */\n",
|
||
"\n",
|
||
".sk-estimator-doc-link,\n",
|
||
"a:link.sk-estimator-doc-link,\n",
|
||
"a:visited.sk-estimator-doc-link {\n",
|
||
" float: right;\n",
|
||
" font-size: smaller;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1em;\n",
|
||
" height: 1em;\n",
|
||
" width: 1em;\n",
|
||
" text-decoration: none !important;\n",
|
||
" margin-left: 1ex;\n",
|
||
" /* unfitted */\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted,\n",
|
||
"a:link.sk-estimator-doc-link.fitted,\n",
|
||
"a:visited.sk-estimator-doc-link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Span, style for the box shown on hovering the info icon */\n",
|
||
".sk-estimator-doc-link span {\n",
|
||
" display: none;\n",
|
||
" z-index: 9999;\n",
|
||
" position: relative;\n",
|
||
" font-weight: normal;\n",
|
||
" right: .2ex;\n",
|
||
" padding: .5ex;\n",
|
||
" margin: .5ex;\n",
|
||
" width: min-content;\n",
|
||
" min-width: 20ex;\n",
|
||
" max-width: 50ex;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" box-shadow: 2pt 2pt 4pt #999;\n",
|
||
" /* unfitted */\n",
|
||
" background: var(--sklearn-color-unfitted-level-0);\n",
|
||
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted span {\n",
|
||
" /* fitted */\n",
|
||
" background: var(--sklearn-color-fitted-level-0);\n",
|
||
" border: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link:hover span {\n",
|
||
" display: block;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
|
||
"\n",
|
||
"#sk-container-id-13 a.estimator_doc_link {\n",
|
||
" float: right;\n",
|
||
" font-size: 1rem;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1rem;\n",
|
||
" height: 1rem;\n",
|
||
" width: 1rem;\n",
|
||
" text-decoration: none;\n",
|
||
" /* unfitted */\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 a.estimator_doc_link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"#sk-container-id-13 a.estimator_doc_link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-13 a.estimator_doc_link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"</style><div id=\"sk-container-id-13\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GridSearchCV(cv=3,\n",
|
||
" estimator=Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets',\n",
|
||
" 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet',\n",
|
||
" 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[(...\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000,\n",
|
||
" solver='saga'))]),\n",
|
||
" param_grid={'logreg__C': array([9.765625e-04, 1.953125e-03, 3.906250e-03, 7.812500e-03,\n",
|
||
" 1.562500e-02, 3.125000e-02, 6.250000e-02, 1.250000e-01,\n",
|
||
" 2.500000e-01, 5.000000e-01, 1.000000e+00, 2.000000e+00,\n",
|
||
" 4.000000e+00, 8.000000e+00, 1.600000e+01]),\n",
|
||
" 'logreg__penalty': ['l1']},\n",
|
||
" scoring=make_scorer(f1_score, response_method='predict'))</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-83\" type=\"checkbox\" ><label for=\"sk-estimator-id-83\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> GridSearchCV<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.model_selection.GridSearchCV.html\">?<span>Documentation for GridSearchCV</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>GridSearchCV(cv=3,\n",
|
||
" estimator=Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets',\n",
|
||
" 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet',\n",
|
||
" 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[(...\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000,\n",
|
||
" solver='saga'))]),\n",
|
||
" param_grid={'logreg__C': array([9.765625e-04, 1.953125e-03, 3.906250e-03, 7.812500e-03,\n",
|
||
" 1.562500e-02, 3.125000e-02, 6.250000e-02, 1.250000e-01,\n",
|
||
" 2.500000e-01, 5.000000e-01, 1.000000e+00, 2.000000e+00,\n",
|
||
" 4.000000e+00, 8.000000e+00, 1.600000e+01]),\n",
|
||
" 'logreg__penalty': ['l1']},\n",
|
||
" scoring=make_scorer(f1_score, response_method='predict'))</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-84\" type=\"checkbox\" ><label for=\"sk-estimator-id-84\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">estimator: Pipeline</label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet',\n",
|
||
" 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('logreg',\n",
|
||
" LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, solver='saga'))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-85\" type=\"checkbox\" ><label for=\"sk-estimator-id-85\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> preprocessor: ColumnTransformer<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.compose.ColumnTransformer.html\">?<span>Documentation for preprocessor: ColumnTransformer</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler', StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases', 'total_amount',\n",
|
||
" 'nb_suppliers', 'vente_internet_max',\n",
|
||
" 'purchase_date_min', 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet', 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in', 'is_email_true'])])</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-86\" type=\"checkbox\" ><label for=\"sk-estimator-id-86\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">num</label><div class=\"sk-toggleable__content fitted\"><pre>['nb_tickets', 'nb_purchases', 'total_amount', 'nb_suppliers', 'vente_internet_max', 'purchase_date_min', 'purchase_date_max', 'nb_tickets_internet', 'nb_campaigns', 'nb_campaigns_opened']</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-87\" type=\"checkbox\" ><label for=\"sk-estimator-id-87\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> StandardScaler<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div></div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-88\" type=\"checkbox\" ><label for=\"sk-estimator-id-88\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">cat</label><div class=\"sk-toggleable__content fitted\"><pre>['opt_in', 'is_email_true']</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-89\" type=\"checkbox\" ><label for=\"sk-estimator-id-89\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> OneHotEncoder<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.OneHotEncoder.html\">?<span>Documentation for OneHotEncoder</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>OneHotEncoder(handle_unknown='ignore', sparse_output=False)</pre></div> </div></div></div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-90\" type=\"checkbox\" ><label for=\"sk-estimator-id-90\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> LogisticRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, solver='saga')</pre></div> </div></div></div></div></div></div></div></div></div></div></div>"
|
||
],
|
||
"text/plain": [
|
||
"GridSearchCV(cv=3,\n",
|
||
" estimator=Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets',\n",
|
||
" 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet',\n",
|
||
" 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[(...\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000,\n",
|
||
" solver='saga'))]),\n",
|
||
" param_grid={'logreg__C': array([9.765625e-04, 1.953125e-03, 3.906250e-03, 7.812500e-03,\n",
|
||
" 1.562500e-02, 3.125000e-02, 6.250000e-02, 1.250000e-01,\n",
|
||
" 2.500000e-01, 5.000000e-01, 1.000000e+00, 2.000000e+00,\n",
|
||
" 4.000000e+00, 8.000000e+00, 1.600000e+01]),\n",
|
||
" 'logreg__penalty': ['l1']},\n",
|
||
" scoring=make_scorer(f1_score, response_method='predict'))"
|
||
]
|
||
},
|
||
"execution_count": 100,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"logit_grid"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 105,
|
||
"id": "5d553da2-5c2a-491a-b4d2-f31c30c201a6",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"{'scoring': make_scorer(f1_score, response_method='predict'),\n",
|
||
" 'estimator': Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet',\n",
|
||
" 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('logreg',\n",
|
||
" LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, solver='saga'))]),\n",
|
||
" 'n_jobs': None,\n",
|
||
" 'refit': True,\n",
|
||
" 'cv': 3,\n",
|
||
" 'verbose': 0,\n",
|
||
" 'pre_dispatch': '2*n_jobs',\n",
|
||
" 'error_score': nan,\n",
|
||
" 'return_train_score': False,\n",
|
||
" 'param_grid': {'logreg__C': array([9.765625e-04, 1.953125e-03, 3.906250e-03, 7.812500e-03,\n",
|
||
" 1.562500e-02, 3.125000e-02, 6.250000e-02, 1.250000e-01,\n",
|
||
" 2.500000e-01, 5.000000e-01, 1.000000e+00, 2.000000e+00,\n",
|
||
" 4.000000e+00, 8.000000e+00, 1.600000e+01]),\n",
|
||
" 'logreg__penalty': ['l1']},\n",
|
||
" 'multimetric_': False,\n",
|
||
" 'best_index_': 5,\n",
|
||
" 'best_score_': 0.42160313383818665,\n",
|
||
" 'best_params_': {'logreg__C': 0.03125, 'logreg__penalty': 'l1'},\n",
|
||
" 'best_estimator_': Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler',\n",
|
||
" StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases',\n",
|
||
" 'total_amount',\n",
|
||
" 'nb_suppliers',\n",
|
||
" 'vente_internet_max',\n",
|
||
" 'purchase_date_min',\n",
|
||
" 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet',\n",
|
||
" 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('logreg',\n",
|
||
" LogisticRegression(C=0.03125,\n",
|
||
" class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, penalty='l1',\n",
|
||
" solver='saga'))]),\n",
|
||
" 'refit_time_': 305.1356477737427,\n",
|
||
" 'feature_names_in_': array(['nb_tickets', 'nb_purchases', 'total_amount', 'nb_suppliers',\n",
|
||
" 'vente_internet_max', 'purchase_date_min', 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet', 'is_email_true', 'opt_in', 'gender_female',\n",
|
||
" 'gender_male', 'nb_campaigns', 'nb_campaigns_opened'], dtype=object),\n",
|
||
" 'scorer_': make_scorer(f1_score, response_method='predict'),\n",
|
||
" 'cv_results_': {'mean_fit_time': array([ 11.07076669, 13.15744201, 27.35094929, 40.0343461 ,\n",
|
||
" 94.58210254, 140.45846391, 159.83818332, 162.80178094,\n",
|
||
" 163.94260454, 171.08749111, 169.26621262, 166.36741408,\n",
|
||
" 167.91208776, 173.06720233, 170.93666704]),\n",
|
||
" 'std_fit_time': array([ 0.09462032, 1.51362591, 6.70859141, 22.68643753, 28.72690872,\n",
|
||
" 70.8434823 , 85.23159321, 79.71538593, 82.70486235, 84.79706797,\n",
|
||
" 86.79005212, 84.67956107, 83.94889047, 89.68716252, 89.41361431]),\n",
|
||
" 'mean_score_time': array([0.11632609, 0.10857773, 0.18140252, 0.1291213 , 0.11651532,\n",
|
||
" 0.07535577, 0.12481014, 0.16039928, 0.15685773, 0.07996233,\n",
|
||
" 0.12988146, 0.10067987, 0.1194102 , 0.09737802, 0.09390028]),\n",
|
||
" 'std_score_time': array([0.02131792, 0.03620144, 0.05853886, 0.06555575, 0.03228018,\n",
|
||
" 0.01433186, 0.03501336, 0.05466042, 0.06882891, 0.01002881,\n",
|
||
" 0.00495894, 0.00905774, 0.04075337, 0.03269379, 0.01990173]),\n",
|
||
" 'param_logreg__C': masked_array(data=[0.0009765625, 0.001953125, 0.00390625, 0.0078125,\n",
|
||
" 0.015625, 0.03125, 0.0625, 0.125, 0.25, 0.5, 1.0, 2.0,\n",
|
||
" 4.0, 8.0, 16.0],\n",
|
||
" mask=[False, False, False, False, False, False, False, False,\n",
|
||
" False, False, False, False, False, False, False],\n",
|
||
" fill_value='?',\n",
|
||
" dtype=object),\n",
|
||
" 'param_logreg__penalty': masked_array(data=['l1', 'l1', 'l1', 'l1', 'l1', 'l1', 'l1', 'l1', 'l1',\n",
|
||
" 'l1', 'l1', 'l1', 'l1', 'l1', 'l1'],\n",
|
||
" mask=[False, False, False, False, False, False, False, False,\n",
|
||
" False, False, False, False, False, False, False],\n",
|
||
" fill_value='?',\n",
|
||
" dtype=object),\n",
|
||
" 'params': [{'logreg__C': 0.0009765625, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 0.001953125, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 0.00390625, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 0.0078125, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 0.015625, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 0.03125, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 0.0625, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 0.125, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 0.25, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 0.5, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 1.0, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 2.0, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 4.0, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 8.0, 'logreg__penalty': 'l1'},\n",
|
||
" {'logreg__C': 16.0, 'logreg__penalty': 'l1'}],\n",
|
||
" 'split0_test_score': array([0.27289073, 0.2738913 , 0.27382853, 0.27409759, 0.27454764,\n",
|
||
" 0.27661894, 0.2766145 , 0.27584723, 0.27571682, 0.27576295,\n",
|
||
" 0.27580092, 0.27577943, 0.27581248, 0.27581909, 0.27581909]),\n",
|
||
" 'split1_test_score': array([0.4714244 , 0.47196015, 0.48362373, 0.48891733, 0.49066854,\n",
|
||
" 0.49091122, 0.49086284, 0.49065871, 0.49062783, 0.49049541,\n",
|
||
" 0.49048106, 0.49045238, 0.49043804, 0.49043804, 0.4904237 ]),\n",
|
||
" 'split2_test_score': array([0.50689906, 0.50092334, 0.4981377 , 0.49759178, 0.49725836,\n",
|
||
" 0.49727924, 0.49708801, 0.49738305, 0.49751781, 0.49738248,\n",
|
||
" 0.49738248, 0.49738248, 0.49738248, 0.49738248, 0.49738248]),\n",
|
||
" 'mean_test_score': array([0.4170714 , 0.4155916 , 0.41852999, 0.42020223, 0.42082484,\n",
|
||
" 0.42160313, 0.42152178, 0.42129633, 0.42128749, 0.42121361,\n",
|
||
" 0.42122149, 0.42120476, 0.421211 , 0.4212132 , 0.42120842]),\n",
|
||
" 'std_test_score': array([0.10297463, 0.1008925 , 0.10249081, 0.10337226, 0.10346859,\n",
|
||
" 0.10255226, 0.10249644, 0.10288467, 0.10297243, 0.10288758,\n",
|
||
" 0.10286646, 0.10287015, 0.10285136, 0.10284824, 0.10284503]),\n",
|
||
" 'rank_test_score': array([14, 15, 13, 12, 11, 1, 2, 3, 4, 6, 5, 10, 8, 7, 9],\n",
|
||
" dtype=int32)},\n",
|
||
" 'n_splits_': 3}"
|
||
]
|
||
},
|
||
"execution_count": 105,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"logit_grid.__dict__"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 114,
|
||
"id": "3573f34e-25d5-4afb-82cc-52323e2f63c6",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[ 1.34302143, 0. , 0.02675567, 0.45036527, -0.05004637,\n",
|
||
" 0.7663532 , -1.35216757, 0.17404712, 0.13679663, 0.10249737,\n",
|
||
" 0.40815146, -0.6311938 , 0.11194512, -0.33498749]])"
|
||
]
|
||
},
|
||
"execution_count": 114,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# coefficients trouvés pour le modèle optimal\n",
|
||
"logit_grid.best_estimator_.named_steps[\"logreg\"].coef_"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 125,
|
||
"id": "0332a814-61fb-4b71-836a-e8ace70b1a44",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"{'preprocessor': ColumnTransformer(transformers=[('num',\n",
|
||
" Pipeline(steps=[('scaler', StandardScaler())]),\n",
|
||
" ['nb_tickets', 'nb_purchases', 'total_amount',\n",
|
||
" 'nb_suppliers', 'vente_internet_max',\n",
|
||
" 'purchase_date_min', 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet', 'nb_campaigns',\n",
|
||
" 'nb_campaigns_opened']),\n",
|
||
" ('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in', 'is_email_true'])]),\n",
|
||
" 'logreg': LogisticRegression(C=0.03125,\n",
|
||
" class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539},\n",
|
||
" max_iter=5000, penalty='l1', solver='saga')}"
|
||
]
|
||
},
|
||
"execution_count": 125,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"logit_grid.best_estimator_.named_steps"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 116,
|
||
"id": "287615b9-e062-4b84-be61-26b9364b2cf4",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([-0.22304234])"
|
||
]
|
||
},
|
||
"execution_count": 116,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"logit_grid.best_estimator_.named_steps[\"logreg\"].intercept_"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 115,
|
||
"id": "4d50899d-cc0b-4a71-9406-f8b0a277c4a6",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>nb_tickets</th>\n",
|
||
" <th>nb_purchases</th>\n",
|
||
" <th>total_amount</th>\n",
|
||
" <th>nb_suppliers</th>\n",
|
||
" <th>vente_internet_max</th>\n",
|
||
" <th>purchase_date_min</th>\n",
|
||
" <th>purchase_date_max</th>\n",
|
||
" <th>nb_tickets_internet</th>\n",
|
||
" <th>is_email_true</th>\n",
|
||
" <th>opt_in</th>\n",
|
||
" <th>gender_female</th>\n",
|
||
" <th>gender_male</th>\n",
|
||
" <th>nb_campaigns</th>\n",
|
||
" <th>nb_campaigns_opened</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>60.00</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>355.268981</td>\n",
|
||
" <td>355.268981</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>8.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>140.00</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>373.540289</td>\n",
|
||
" <td>219.262269</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>50.00</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>5.202442</td>\n",
|
||
" <td>5.202442</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>90.00</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>5.178958</td>\n",
|
||
" <td>5.178958</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>78.00</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>5.174039</td>\n",
|
||
" <td>5.174039</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>224208</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>34.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>224209</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>20.00</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>392.501030</td>\n",
|
||
" <td>392.501030</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>23.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>224210</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>8.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>224211</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>97.11</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>172.334074</td>\n",
|
||
" <td>172.334074</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>13.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>224212</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>224213 rows × 14 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" nb_tickets nb_purchases total_amount nb_suppliers \\\n",
|
||
"0 2.0 1.0 60.00 1.0 \n",
|
||
"1 8.0 3.0 140.00 1.0 \n",
|
||
"2 2.0 1.0 50.00 1.0 \n",
|
||
"3 3.0 1.0 90.00 1.0 \n",
|
||
"4 2.0 1.0 78.00 1.0 \n",
|
||
"... ... ... ... ... \n",
|
||
"224208 0.0 0.0 0.00 0.0 \n",
|
||
"224209 1.0 1.0 20.00 1.0 \n",
|
||
"224210 0.0 0.0 0.00 0.0 \n",
|
||
"224211 1.0 1.0 97.11 1.0 \n",
|
||
"224212 0.0 0.0 0.00 0.0 \n",
|
||
"\n",
|
||
" vente_internet_max purchase_date_min purchase_date_max \\\n",
|
||
"0 0.0 355.268981 355.268981 \n",
|
||
"1 0.0 373.540289 219.262269 \n",
|
||
"2 0.0 5.202442 5.202442 \n",
|
||
"3 0.0 5.178958 5.178958 \n",
|
||
"4 0.0 5.174039 5.174039 \n",
|
||
"... ... ... ... \n",
|
||
"224208 0.0 550.000000 550.000000 \n",
|
||
"224209 1.0 392.501030 392.501030 \n",
|
||
"224210 0.0 550.000000 550.000000 \n",
|
||
"224211 1.0 172.334074 172.334074 \n",
|
||
"224212 0.0 550.000000 550.000000 \n",
|
||
"\n",
|
||
" nb_tickets_internet is_email_true opt_in gender_female \\\n",
|
||
"0 0.0 True False 0 \n",
|
||
"1 0.0 True False 0 \n",
|
||
"2 0.0 True False 0 \n",
|
||
"3 0.0 True False 0 \n",
|
||
"4 0.0 True False 1 \n",
|
||
"... ... ... ... ... \n",
|
||
"224208 0.0 True False 0 \n",
|
||
"224209 1.0 True False 0 \n",
|
||
"224210 0.0 True True 0 \n",
|
||
"224211 1.0 True False 0 \n",
|
||
"224212 0.0 True False 0 \n",
|
||
"\n",
|
||
" gender_male nb_campaigns nb_campaigns_opened \n",
|
||
"0 1 0.0 0.0 \n",
|
||
"1 1 0.0 0.0 \n",
|
||
"2 1 0.0 0.0 \n",
|
||
"3 1 0.0 0.0 \n",
|
||
"4 0 0.0 0.0 \n",
|
||
"... ... ... ... \n",
|
||
"224208 1 34.0 3.0 \n",
|
||
"224209 1 23.0 6.0 \n",
|
||
"224210 1 8.0 4.0 \n",
|
||
"224211 1 13.0 5.0 \n",
|
||
"224212 1 4.0 4.0 \n",
|
||
"\n",
|
||
"[224213 rows x 14 columns]"
|
||
]
|
||
},
|
||
"execution_count": 115,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# c'est la 2ème variable nb_purchases qui a été supprimée par le LASSO\n",
|
||
"X_train"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 122,
|
||
"id": "e53b1f79-762d-4f1f-8505-91de1088af42",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"32.0"
|
||
]
|
||
},
|
||
"execution_count": 122,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# best param : alpha = 32\n",
|
||
"1/logit_grid.best_params_[\"logreg__C\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 127,
|
||
"id": "41bcaaf6-ab58-4004-a3c5-586d77e872d1",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Accuracy Score: 0.7589597902097902\n",
|
||
"F1 Score: 0.47078982841737305\n",
|
||
"Recall Score: 0.7525931336742148\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# print results for the best model\n",
|
||
"\n",
|
||
"y_pred = logit_grid.predict(X_test)\n",
|
||
"\n",
|
||
"# Calculate the F1 score\n",
|
||
"acc = accuracy_score(y_test, y_pred)\n",
|
||
"print(f\"Accuracy Score: {acc}\")\n",
|
||
"\n",
|
||
"f1 = f1_score(y_test, y_pred)\n",
|
||
"print(f\"F1 Score: {f1}\")\n",
|
||
"\n",
|
||
"recall = recall_score(y_test, y_pred)\n",
|
||
"print(f\"Recall Score: {recall}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 128,
|
||
"id": "a454bb57-76eb-4a22-9950-0733d39e449f",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# confusion matrix \n",
|
||
"\n",
|
||
"draw_confusion_matrix(y_test, y_pred)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 138,
|
||
"id": "25ec1701-ade5-4419-8b46-8a1bb109cf84",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAABIQAAAK8CAYAAACeK2TMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3wU5drG8d+mkwoBQgm9g3QQKdKkSVOkiNhQwWM5x4IdG3YUC7ajqK/dIyLSFBABEQEBpffeW4AQSO877x8jC8MGTCDJ7Gav70c+Zp6d3dwJXDtw55nncRiGYSAiIiIiIiIiIj7Dz+4CRERERERERESkeKkhJCIiIiIiIiLiY9QQEhERERERERHxMWoIiYiIiIiIiIj4GDWERERERERERER8jBpCIiIiIiIiIiI+Rg0hEREREREREREfo4aQiIiIiIiIiIiPUUNIRERERERERMTHqCEkIiIi4uWef/55ypYty759++wuRURERLyEGkIiIiJFaP369dx+++3UrFmTkJAQwsPDadmyJePGjSMhIcGWmr744gscDgcrV64s0s+zd+9eHA6H65efnx9lypShW7duzJ0797zPmzNnDn379qV8+fIEBwdTtWpVhg8fzubNm8/7nMWLF3P99dcTGxtLUFAQUVFRtG/fng8//JDU1NSi+PJscfr3bu/evZbxMWPGcN111zFkyBCysrLyfO5zzz2Hw+EotFoWLlyIw+Fg4cKFhfaaealRowa33XZbgZ6zdOlSnnvuOU6dOuX2WJcuXejSpUuh1CYiIuLN1BASEREpIp988gmtWrVixYoVPProo8yZM4dp06YxZMgQJkyYwIgRI+wusVjcd999LFu2jMWLF/PGG2+wY8cO+vTpw6JFi9zOfeyxx+jduzdOp5MPPviAefPmMWbMGFasWEHLli2ZOnWq23PGjBlDp06dOHToEC+++CLz5s3ju+++o1u3bjz33HM8/fTTxfFl2m7ChAmUL1+eUaNG2V1KoZo2bRrPPPNMgZ6zdOlSnn/++TwbQh988AEffPBBIVUnIiLivQLsLkBERKQkWrZsGffccw89evRg+vTpBAcHux7r0aMHDz/8MHPmzCnWmrKzswt1hkh+VatWjbZt2wLQoUMH6tatS+fOnfn000/p1KmT67yJEyfy+uuvc88991j+wd6pUyeGDRtG586dueWWW2jevDm1atUCYPLkybzwwguMGDGCTz75xPL19e7dm8cee4xly5YV01dqr4CAAGbNmmV3GYWuRYsWhfp6jRo1KtTXExER8VaaISQiIlIEXnnlFRwOBx9//LGlGXRaUFAQ11xzjevY6XQybtw4GjRoQHBwMDExMdx6660cPHjQ8rzz3T5z7m0wp2/n+frrr3n44YeJjY0lODiYnTt3us45efIkt99+O9HR0YSFhdG/f392797t9trz58+nW7duREZGEhoaSocOHfj1118v4rtiat26NQBHjx61jL/88suUKVOGN954w+05YWFhvPfee6SlpTF+/HjX+AsvvECZMmV4991382x2RURE0LNnz4uu9VxdunShcePGLFu2jPbt21OqVClq1KjB559/DsCsWbNo2bIloaGhNGnSJM+m35IlS+jWrRsRERGEhobSvn37PBs5y5cvp0OHDoSEhFC5cmVGjx5NdnZ2nnVNmjSJdu3aERYWRnh4OD179mTVqlX5+prOfW6vXr1Ys2ZNAb4rVj/++CPt2rUjNDSUiIgIevTokWdTbsaMGTRt2pTg4GBq1arFO++8k+dtbef+mXc6nbz00kvUr1+fUqVKUbp0aZo2bco777wDmLfGPfroowDUrFnTdcvi6Vvb8rpl7PDhw1x//fVEREQQFRXF0KFDWb58OQ6Hgy+++MJ13vluN7vtttuoUaOGZSwrK4uXXnrJleny5ctz++23c/z48fx9I0VERIqYGkIiIiKFLDc3lwULFtCqVSuqVq2ar+fcc889PP744/To0YMff/yRF198kTlz5tC+fXvi4+MvupbRo0ezf/9+JkyYwE8//URMTIzrsREjRuDn58e3337L22+/zV9//UWXLl0st9l888039OzZk8jISL788ku+//57oqOj6dWr10U3hfbs2QNAvXr1XGNHjhxh06ZN9OzZk9DQ0Dyf165dO2JiYpg3b57rORs3brzgc/LjdPPsueeey9f5cXFx3H777YwcOZIZM2bQpEkT7rjjDl544QVGjx7NY489xpQpUwgPD2fAgAEcPnzY9dzff/+dq666isTERD799FMmTpxIREQE/fv3Z9KkSa7zNm/eTLdu3Th16hRffPEFEyZMYM2aNbz00ktu9bzyyisMGzaMRo0a8f333/PVV1+RlJREx44d2bhx4wW/lnOf+/XXX5OcnEzHjh0vuGbT+Xz77bdce+21REZGMnHiRD799FNOnjxJly5dWLJkieu8OXPmMHDgQMqWLcukSZMYN24cEydO5Msvv/zHzzFu3Diee+45hg0bxqxZs5g0aRIjRoxw/bkdOXIk9913HwBTp05l2bJlLFu2jJYtW+b5eunp6XTv3p25c+cyduxYJk+eTMWKFRk6dGiBv/7TnE4n1157La+++io33ngjs2bN4tVXX2XevHl06dKF9PT0i35tERGRQmOIiIhIoYqLizMA44YbbsjX+Vu2bDEA495777WM//nnnwZgPPnkk66x6tWrG8OHD3d7jc6dOxudO3d2Hf/2228GYHTq1Mnt3M8//9wAjOuuu84y/scffxiA8dJLLxmGYRipqalGdHS00b9/f8t5ubm5RrNmzYw2bdpc8Ovas2ePARivvfaakZ2dbWRkZBhr16412rVrZ1SqVMnYs2eP69zly5cbgPHEE09c8DWvuOIKo1SpUgV6zj9ZuHCh4e/vbzz//PP/eG7nzp0NwFi5cqVr7MSJE4a/v79RqlQp49ChQ67xtWvXGoDx7rvvusbatm1rxMTEGMnJya6xnJwco3HjxkaVKlUMp9NpGIZhDB061ChVqpQRFxdnOa9BgwYG4Pre7d+/3wgICDD+/e9/W+pMSkoyYmJijMGDB7vGxowZY5z9V7/Tz73vvvssz01OTjYqVqxoXH/99Rf8Xpz+M/bbb78ZhmH+uahcubLRpEkTIzc31/J6MTExRvv27V1jl19+uVG1alUjMzPTcl7ZsmWNc/96eu6f+X79+hnNmze/YG2vv/665ft0tnOz8uGHHxqAMWPGDMt5d955pwEYn3/++Xmfe9rw4cON6tWru44nTpxoAMaUKVMs561YscIAjA8++OCC9YuIiBQHzRASERGx2W+//QbgditYmzZtaNiw4SXdnjVo0KDzPnbTTTdZjtu3b0/16tVd9SxdupSEhASGDx9OTk6O65fT6eTqq69mxYoV+drB6/HHHycwMJCQkBCaN2/Oxo0b+emnn9xusckPwzAKfR2kzp07k5OTw7PPPpuv8ytVqkSrVq1cx9HR0cTExNC8eXMqV67sGm/YsCGAayv41NRU/vzzTwYPHkx4eLjrPH9/f2655RYOHjzItm3bAPPPRLdu3ahQoYLlvHNnrfzyyy/k5ORwxx13WMYjIiLo2rUrv//++3m/jtPPvfXWWy2/vyEhIXTu3LnAu4dt27aNw4cPc8stt+Dnd+avmOHh4QwaNIjly5eTlpZGamoqK1euZMCAAQQFBVnO69+//z9+njZt2rBu3TruvfdefvnlF5KSkgpU57l+++03IiIiLLdwAtx4440X/ZozZ86kdOnS9O/f3/K9bd68ORUrVizyndlERETyQ4tKi4iIFLJy5coRGhrqujXqn5w4cQIwGw3nqly5squhcDHyes3TKlasmOfY6XpOr/EzePDg875GQkICYWFhF6zhgQce4OabbyYzM5Ply5fz9NNPc+2117Ju3TrKli0LmAtPA//4Pdu3b5/rNrz8PqewRUdHu40FBQW5jZ9udmRkZADmmk2GYZz39xnO/Fk4ceLEeX9/znb696h9+/Zu555u3p3P6edefvnleT5+dlMnP/7pz7HT6XR9DwzDsDS7Tstr7FyjR48mLCyMb775hgkTJuDv70+nTp147bXXXOtTFbTuvD5vXt///Dp69CinTp2yNLzOdim3gYqIiBQWNYREREQKmb+/P926dePnn3/m4MGDVKlS5YLnn26KHDlyxO3cw4cPU65cOddxSEgImZmZbq8RHx9vOe+0C82miYuLy3OsTp06AK7Xe++991y7hJ0rP/+Ar1Kliusf6h06dKBixYrcfPPNjBkzhvfffx8wmwiXXXYZc+fOJS0tLc81gZYtW8bRo0cZMmSI6zlNmjS54HM8SZkyZfDz8+PIkSNuj51eZ+j097xs2bLn/f052+nzp02bRs2aNQtUz+nn/vDDD1SvXr1Az83L2X+Oz3X48GH8/PwoU6aMa5bXuYuKQ95/Js8VEBDAQw89xEMPPcSpU6eYP38+Tz75JL169eLAgQMF/nNQtmxZ/vrrr3zVEhISQmJiotv4uQ2ecuXKUbZs2fPuJBgREVGgGkVERIqCbhkTEREpAqNHj8YwDO68806ysrLcHs/Ozuann34C4KqrrgLMBZzPtmLFCrZs2UK3bt1cYzVq1GD9+vWW87Zv3+661agg/ve//1mOly5dyr59+1y7KHXo0IHSpUuzefNmWrduneev882AuJCbbrqJLl268Mknn1hmPz311FOcPHmSRx55xO05qamp3H///YSGhjJq1CjX+DPPPMPJkye5//77MQzD7XkpKSnMnTu3wDUWhbCwMK644gqmTp1qWVTY6XTyzTffUKVKFddC2127duXXX3+1NE1yc3MtC08D9OrVi4CAANasWUODBg3y/HU+p5+7a9eu8/7+FkT9+vWJjY3l22+/tfxepKamMmXKFNfOY2FhYbRu3Zrp06dbspGSksLMmTML9DlLly7N4MGD+fe//01CQgJ79+4FcO3sl5/Fm7t27UpycjI//vijZfzbb791O7dGjRps377d0pQ9ceIES5cutZzXr18/Tpw4QW5ubp7f1/r16xfo6xQRESkKmiEkIiJSBNq1a8eHH37IvffeS6tWrbjnnnu47LLLyM7OZs2aNXz88cc0btyY/v37U79+ff71r3/x3nvv4efnR+/evdm7dy/PPPMMVatWtTRAbrnlFm6++WbuvfdeBg0axL59+xg3bhzly5cvcI0rV65k5MiRDBkyhAMHDvDUU08RGxvLvffeC5hrurz33nsMHz6chIQEBg8eTExMDMePH2fdunUcP36cDz/88KK+P6+99hpXXHEFL774Iv/3f/8HwLBhw1i9ejVvvPEGe/fu5Y477qBChQps27aN8ePHs2vXLr799ltq1arlep0hQ4bwzDPP8OKLL7J161ZGjBhB7dq1SUtL488//+Sjjz5i6NChF9x6/vfff6dbt248++yz+V5H6GKNHTuWHj160LVrVx555BGCgoL44IMP2LhxIxMnTnTN6Hr66af58ccfueqqq3j22WcJDQ3lv//9r9uaTTVq1OCFF17gmWeeYc+ePfTp04fo6GiOHj3Kn3/+SVhYGC+88EKetZx+7lNPPcXu3bu5+uqrKVOmDEePHuWvv/4iLCyM559/Pt9fm5+fH+PGjeOmm26iX79+3HXXXWRmZvL6669z6tQpXn31Vde5L7zwAn379qVXr1488MAD5Obm8vrrrxMeHk5CQsIFP0///v1p3LgxrVu3pnz58uzbt4+3336b6tWrU7duXQCaNGkCwDvvvMPw4cMJDAykfv36ec7MufXWWxk/fjy33norL7/8MnXr1mX27Nn88ssvbufecsstfPTRR9x8883ceeednDhxgnHjxhEZGWk574YbbuB///sfffr04YEHHqBNmzYEBgZy8OBBfvvtN6699lquu+66fH9vRUREioR961mLiIiUfGvXrjWGDx9uVKtWzQgKCjLCwsKMFi1aGM8++6xx7Ngx13m5ubnGa6+9ZtSrV88IDAw0ypUrZ9x8883GgQMHLK/ndDqNcePGGbVq1TJCQkKM1q1bGwsWLDjvLmOTJ092q+n0LmNz5841brnlFqN06dJGqVKljD59+hg7duxwO//33383+vbta0RHRxuBgYFGbGys0bdv3zxf+2yndxl7/fXX83x8yJAhRkBAgLFz507L+OzZs40+ffoYZcuWdX2+W265xdi0adN5P9fvv/9uDB482KhUqZIRGBhoREZGGu3atTNef/11Iykp6YJ1nv5ejRkz5oLnGYa5y9Rll13mNl69enWjb9++buOA2w5gixcvNq666iojLCzMKFWqlNG2bVvjp59+cnvuH3/8YbRt29YIDg42KlasaDz66KPGxx9/nOfuWdOnTze6du1qREZGGsHBwUb16tWNwYMHG/Pnz3edc+4uYwV5bl7O3WXs7Ne74oorjJCQECMsLMzo1q2b8ccff7g9f9q0aUaTJk2MoKAgo1q1asarr75q3H///UaZMmUs5527y9ibb75ptG/f3ihXrpzruSNGjDD27t1red7o0aONypUrG35+fpY689op7ODBg8agQYOM8PBwIyIiwhg0aJCxdOlSt13GDMMwvvzyS6Nhw4ZGSEiI0ahRI2PSpEluu4wZhmFkZ2cbb7zxhtGsWTMjJCTECA8PNxo0aGDcddddeeZMRESkuDkMI4/51SIiIiIixSg7O5vmzZsTGxvrEbf57d27l5o1a/L555+77QAoIiJSEuiWMREREREpdiNGjKBHjx5UqlSJuLg4JkyYwJYtW3jnnXfsLk1ERMQnqCEkIiIiIsUuOTmZRx55hOPHjxMYGEjLli2ZPXs23bt3t7s0ERERn6BbxkREREREREREfIy2nRcRERERERER8TFqCImIiIiIiIiI+Bg1hEREREREREREfIzPLSrtdDo5fPgwEREROBwOu8sRERERERERESkUhmGQnJxM5cqV8fO78Bwgn2sIHT58mKpVq9pdhoiIiIiIiIhIkThw4ABVqlS54Dk+1xCKiIgAzG9OZGSkzdVcmjlz5nD11VfbXYaIx1AmRKyUCRF3yoWIlTIhYuXtmUhKSqJq1aqu3seF+Ny280lJSURFRZGYmOj1DaGcnBwCAnyupydyXsqEiJUyIeJOuRCxUiZErLw9EwXpeWhRaS82efJku0sQ8SjKhIiVMiHiTrkQsVImRKx8KRNqCImIiIiIiIiI+Bg1hLxYo0aN7C5BxKMoEyJWyoSIO+VCxEqZELHypUyoIeTFoqKi7C5BxKMoEyJWyoSIO+VCxEqZELHypUyoIeTFli1bZncJIh5FmRCxUiZE3CkXIlbKhIiVL2VCDSERERERERERER+jbee92IkTJyhbtqzdZYh4DGVCxEqZEHGnXIhYKRMiVt6eCW077yM2b95sdwkiHkWZELFSJkTcKRciVsqEiJUvZUINIS928OBBu0sQ8SjKhIiVMiHiTrkQsVImRKx8KRNqCHmx0NBQu0sQ8SjKhIiVMiHiTrkQsVImRKx8KRNaQ0hEREREREREpATQGkI+YuLEiXaXIOJRlAkRK2VCxJ1yIWKlTIhY+VIm1BASEREREREREfExagh5sXr16tldgohHUSZErJQJEXfKhYiVMiFi5UuZUEPIi8XExNhdgohHUSZErJQJEXfKhYiVMiFi5UuZUEPIiy1ZssTuEkQ8ijIhYqVMiLhTLkSslAkRK1/KhBpCIiIiIiIiIiI+RtvOe7GjR49SoUIFu8sQ8RjKhIiVMiHiTrkQsVImRKy8PRPadt5H7Nq1y+4SRDyKMiFipUyIuFMuRKyUCRErX8qEGkJebN++fXaXIOJRlAkRK2VCxJ1yIWKlTIhY+VIm1BDyYkFBQXaXIOJRlAkRK2VCxJ1yIWKlTIhY+VImbF1DaNGiRbz++uusWrWKI0eOMG3aNAYMGHDB5/z+++889NBDbNq0icqVK/PYY49x99135/tzlqQ1hERERERERERETvOaNYRSU1Np1qwZ77//fr7O37NnD3369KFjx46sWbOGJ598kvvvv58pU6YUcaWeafLkyXaXIOJRlAkRK2VCxJ1yIWKlTIhY+VImAuz85L1796Z37975Pn/ChAlUq1aNt99+G4CGDRuycuVK3njjDQYNGlREVXqunJwcu0sQ8SjKhIiVMiHiTrkQsVImxNcdS8rgaFImqVk5pGZks/I49M/OJSTQ3+7SipytDaGCWrZsGT179rSM9erVi08//ZTs7GwCAwPdnpOZmUlmZqbrOCkpqcjrLC61atWyuwQRj6JMiFgpEyLulAsRK2VCfIVhGOQ6DXINA6cTlu8+wRdL9/L79uOUSUtk1JJvCc7JYlKfB7g/NYvY0qXsLrnIeVVDKC4ujgoVKljGKlSoQE5ODvHx8VSqVMntOWPHjuX55593G588eTKhoaEMHDiQX3/9lcTERGJiYmjTpg0zZ84EoGXLljidTtauXQvAtddey5IlSzhx4gTR0dF06tSJ6dOnA9C0aVMCAwNZtWoVAH379mXlypUcPXqUyMhIevbsyQ8//ADAZZddRnh4OH/++SdgNrU2btzIoUOHCAsLo1+/fkyaNAmA+vXrU65cOf744w8Aunfvzvbt29m/fz9Op5MrrriCSZMm4XQ6qV27NrGxsSxatAiALl26sH//fnbv3k1AQABDhgxhypQpZGVlUb16dWrXrs2CBQsAuPLKKzl27Bjbt28HYNiwYcyYMYO0tDSqVKlCo0aNmDt3LgDt2rUjMTGRzZs3AzBkyBDmzJlDcnIyFStWpGXLlsyePRuAyy+/nIyMDDZs2ADAddddx8KFCzl58iTlypWjXbt2/PTTTwC0aNECgDVr1gDQv39/li1bRnx8PGXKlKFLly5MmzYNgCZNmhASEsKKFSsA6NOnD6tXryYuLo6IiAiuvvpq11S/Ro0aERUVxbJlywDo2bMnmzdv5uDBg4SGhnLttdcyceJEAOrVq0dMTAxLliwB4KqrrmLXrl3s27ePoKAgBg0axOTJk8nJyaFWrVpUq1aNhQsXAtCpUycOHTrErl278PPzY+jQoUydOpXMzEyqVatGvXr1mD9/PgAdOnQgPj6ebdu2ATB06FBmzpxJamoqsbGxNG7cmF9++QWAK664gpSUFDZt2gTA4MGDmTt3LklJSVSoUIHWrVsza9YsAFq1akV2djbr168HYMCAASxatIiEhATKli3LlVdeyYwZMwBo3rw5fn5+rF69GoB+/frx119/cezYMaKioujWrRtTp04FoHHjxoSGhvLXX38B5uy+devWcfjwYcLDw+nTpw/ff/89AA0aNCA6OpqlS5cC0KNHD7Zu3cqBAwcoVaoUAwYM4LvvvsMwDOrWrUvFihVZvHgxAF27dmXv3r3s2bOHwMBABg8ezA8//EB2djY1a9akRo0a/PbbbwB07NiRuLg4duzYgcPh4IYbbmDXrl3s3r2bqlWr0qBBA+bNmwdA+/btSUhIYOvWrQBcf/31zJ49m5SUFCpXrkyzZs34+eefAWjTpg1paWls3LgRwKvfI4KDgxk4cKDeI/Dd94iwsDCSkpL0HvH3e8T06dNJT0/Xe4SPv0dkZGQQFham9wj9PULvEZjvEUFBQa4/w3qP0N8jLvY9Ijo6mivad2DajJ/IcTqo27AROYaD9Rs3k+10cHnbdqzftIX4k4kEhYRSt0Ejlq9YRY7hoGz5Chj+Aew7cJhsAyrFViPu+AmSU9Mx/AKIii7HobijZDsdBAYF4/DzJyUtDacBIaVCycjKIjsnFzAfT8vIxGmAw+GHE8h1OnEaYODgXIG52YxcNZMHln5HRGYqThz82HUAcUeOcGRngle+R6Slpbl9nedj66LSZ3M4HP+4qHS9evW4/fbbGT16tGvsjz/+4Morr+TIkSNUrFjR7Tl5zRCqWrVqiVhUeuLEiQwbNszuMkQ8hjIhYqVMiLhTLkSslAnvZBgGOU5zxovz75kvTifkOJ2uGTC5hkFurjkj5uzzcp0GGdm57DuRRlpWDpk5TjJznGRk55ofn/7/2WM5uWRmO8n4+/+usbPO8YzOQj4ZBj12/skrS7+kfNwBc6x5c3jrLSbGxXl1JgqyqLRXzRCqWLEicXFxlrFjx44REBBA2bJl83xOcHAwwcHBxVGeiIiIiIiIyCVLzcwhLSuXHKeTjGwnk1ce4Nu/9pOSkUOuYXh88yU4wM/8FehPSKAfwQH+rrGQwNMf+xMcmMfY6eO/H3M9N9CPQH8//B0O/Pwc+J/+5TD/7+c4a+zvcT8/3M7zP3iA0LvuxH+hOWOQChXg5ZfhttvA3x/+ntHlC7yqIXT2lL/T5s6dS+vWrfNcP6ik69Spk90liHgUZULESpkQcadciFgpE5cmMS2bY8kZeT52LDmT7UeTOZacifOcDs6JlCwSUrMwDAOnAc6/mzwGBseSMtlxLOWia3I4cDVNAlyNEfcGStnwIGJLl7I2ZAL9z2nQnN24cW/SnHmeORYS6EeQvx8Oh/vtWR6jYnnYtBGCg+Hhh+GJJyAiwvWwL2XC1oZQSkoKO3fudB3v2bOHtWvXEh0dTbVq1Rg9ejSHDh3iq6++AuDuu+/m/fff56GHHuLOO+9k2bJlfPrpp657Mn3NoUOHiI2NtbsMEY+hTIhYKRMi7pQLEauSkImsHCe741PIyT1za1R2rsGptCxyneatVU7DcD2elpXDybRssnKd5uO5Brl/32p1+jjHaZCQmkV8SibHkzNJTM92NWycBq5GTlEL9HcQ4OdHdFgQD3SvS6e65c1ZLw5z/PQMGD/H380fP4dnN2PskJEB330Hw4eb3bLISPj2W6hbF6pXdzu9JGQiv2xtCK1cuZKuXbu6jh966CEAhg8fzhdffMGRI0fYv3+/6/GaNWsye/ZsRo0axX//+18qV67Mu+++65NbzgPs2rWLNm3a2F2GiMdQJkSslAkRd8rFxUnPyuXXrUfJyHYC5j+Gz2ac58A468Aw8jzlnPF/Pv/cB8/7Wvk5xzJ+/n/dn34oK9dJWlYOOeYKta7XMM66hcf4+/zTX4tr/O8P8nrccJ131tjf56Rl5bo+NiwzSc58XoO8x3OdBhk5ua7x0y9unFXXiYQEyixffE791t8H91rPfC2c9dqn17U5s57Mud+Xc74HF3ids2s0znkdzqnJE26hig4LynO8etlQmlUpTYCftUkT4O9HlTLm7By/v29tcuDA4YCwoABaVCtNdFiQmjuXwjBg8mR4/HHYuxdCQ+H6683Hunc/79N86Tpha0OoS5cuF3zj/eKLL9zGOnfu7NrNwNf5+fnZXYKIR1EmRKyUCRF3ykXBHU3K4IpXfrW7DCky/hxOT7K7iEsWERxAeEiAq7kS4OdHVKlAAv3NWTPmbBpzFk1IoB9lQoMIDvAnwPX42f/3w98PSocGUT48mPIRwUSVCnTNxHE4zIkmDhz4OVDjxhOtWAGjRsHfu2wSGwtBeTftzuVL1wmP2WWsuBRkxW0REREREV/ldBo8OW0D36044BpzOKBT3fKuj8929uHZ/zi2juf9jLPHz3e+45wtoy2Pne+8875ufurL+zkBfg4iQgLx9zsz7vj75NOf22wWnHm90zM/HGde7IKPmw0H8yg4wFxI1/W4w2xCnH7O6Y///s+tYRES6Ie/n5/18531nNNfp+vrOPvxs74Wzlur9djPz0FIgP9ZX8f5v0b+HstPDdb/W79/fg4H5cOD8TtnFo74oIMH4ckn4euvzePQUHjsMXjkEQgLs7e2YlJidxkTq6lTpzJw4EC7yxDxGMqEiJUyIeJOuTClZ+VyLDmDo0mZHE3K4GhSBseSz/o4KZPd8amW5/z4nw40rVLanoKlyCgTUqJcfz0sW2Z+fMst8MorUKVKgV7ClzKhhpAXy8zMtLsEEY+iTIhYKRMi7kp6LjJzcjmWlGlp9pxu9Bw7q/mTlJGTr9crFehP1ehSfHJra6qX9Y2frvuakp4JKeGcTsjNhdO7jr/0Ejz7LIwfD5dfflEv6UuZUEPIi1WrVs3uEkQ8ijIhYqVMiLjz1lxk5zqJT8k80+RJOmt2T3Lm38cZnEzLzvdrhgT6UTEyhJjIECpEhhATEUyFyOC/Pw6hQmQwVcqEEhTgO+tp+CJvzYQIS5fCgw/CtdfCU0+ZY1ddBV27ut//WQC+lAk1hLxYvXr17C5BxKMoEyJWyoSIO2/IRWZOLluOJDNvcxzbj6Ywb/NRHA7yvYtSUIDf380ds6ljNndCXM2eCpHBxESGEBEcoIVwxSsyIWKxb5+5c9ikSebxwYPmGkHBwebxJb6v+VIm1BDyYvPnz2fYsGF2lyHiMZQJEStlQsSdp+Ui12mw41gy6w8ksu7gKdYfTGRrXBLZueds6/73YeWo0zN6Tjd3Qs5q/pjjUaUC1eiRfPO0TIicV3IyjB0Lb70FmZlm42fECHjxxTPNoELgS5lQQ0hEREREpBgYhsH+hDTWHUxk/QGz+bPxcCJpWblu50aHBdG0ShTVokOpXT6cjnXLUaNsmHZREhHfNH8+3HwzHD1qHnftajaGmje3tSxvp4aQF+vQoYPdJYh4FGVCxEqZEHFX3Lk4lpzB1iPJbDiUyNfL9hGXlOF2TliQP02qRNGsSmmaVilN0ypRVClTSrN8pFjoWiFeoUYNSEiAOnXgjTfgmmsu+daw8/GlTKgh5MXi4+N9asErkX+iTIhYKRMi7gozF4ZhkJqVy8nULBLTszmeksmuYykcTcpgy5FktsYlEZ+S5fa8ZlVL06xKFE2rmP+vVT4cf838EZvoWiEeaedOmDsX7r3XPK5TB+bNg3btICioSD+1L2VCDSEvtm3bNlq2bGl3GSIeQ5kQsVImRNxdbC4Mw2D70RSW7Ixn6c541h9K5FRalttaP+dyOKBmuTAaVoykYaUIrm5ckToxERdbvkih07VCPMqpU+bW8e++Czk50LYtnP7z2blzsZTgS5lQQ0hERERESiyn0yA9O5fUrBzSMnM5nO7Hir0JpGXlkpaZQ2pWLmlZOaRm5pKeZT0+/f+NhxLJzHGSlevM83MEBfhRJjSQ0qWCCPB3EBkSyLXNK9OwUiT1KkRQKsi/mL9qEREvk5MDH38MY8ZAfLw5dvXVEB5ub10lnMMw8ruBZcmQlJREVFQUiYmJREZG2l3OJXE6nfj5+dldhojHUCZErJQJKUnSs3LZdTyFHceS2X8i3WzW/N3kSc3KMRs8WbmkZp7++O8mT7b7gs2XomPdclxZpxxtakZTMSqE0qWC1PARr6Zrhdjul1/goYdg82bzuGFDePNN6N3blnK8PRMF6XlohpAXmzlzJtdcc43dZYh4DGVCxEqZEG+UkpnDzmMp7DiabP7/mNkEOngynUv5MabDAWFBAfg5s4mODCM0KICwYH/X/0sFnnUc5E9ocAChQf6EBvkTFhRAgL+DtrXKEhKo5o+ULLpWiK1SU+GWW+D4cShbFp5/Hv71LwgMtK0kX8qEGkJeLDU11e4SRDyKMiFipUyIJ0tMz2bnsWR2HD3d9Elh59FkDie678J1WrnwIOrEhFOjbBgRIQGWpo7ZvLE2eUIDAwgNNhs6IYF+OBwOJk6cyLBh/YrxKxXxbLpWSLE7dQqiov7u1IfB2LGwaRM88wyUKWN3dT6VCTWEvFhsbKzdJYh4FGVCxEqZEE9wMjXLNcvHbP6Y/z+WnHne58REBFO3Qjh1YyJc/68TE0502KXvLKNciFgpE1JssrLggw/ghRfgo49gyBBzfMQIe+s6hy9lQg0hL9a4cWO7SxDxKMqEiJUyIcXFMAziU7LYcezv27z+bvzsPJaS57brp1WOCqFOhQjqxoSbvyqEU6d8BFGhRXergHIhYqVMSJEzDJg5Ex5+GHbsMMe++eZMQ8jD+FIm1BDyYr/88gvDhg2zuwwRj6FMiFgpE1IUcp0G6w+eYs3+U+ZtXseS2XEshVNp2ed9TtXoUuZsn5hw6sSEU7dCBLXLhxERUvxrRCgXIlbKhBSp9evNBaN//dU8jomBl1+G22+3t64L8KVMqCEkIiIiIhaGYZCSmUN8ShbHkzOJT8nkh1UH8XM4WLkvIc/mj58DqkWHUsd1m1c49SpEUKu8uYCziIj4mFdfhaeeAqcTgoLMxtDo0eDlu32XJLo6e7ErrrjC7hJEPIoyIWKlTMg/OZGSyZYjySzcdoy9J1KJT8kiPsVsAGVkO8/7vMiQAK6oVZYGFc21ferGmI0fb9iBS7kQsVImpMi0amU2g4YMgddeg5o17a4oX3wpE2oIebGUlBS7SxDxKMqEiJUyIadl5zrZfTyVLUeS2BKXxJYjyWw5ksTxCyzsDBAW5E+5iGDKhwdTLjyYuKQMnujdgNbVyxDg71dM1Rcu5ULESpmQQmEY8MMPkJgII0eaYz16wIYN4GVr8vhSJtQQ8mKbNm2iadOmdpch4jGUCRErZcI3JaRmmY2fI2caPzuPpZCV6z7jx+GAGmXDaFAxgpiIYBrHRlGrfBjlw0MoFxFUIm/1Ui5ErJQJuWQrV8KoUbBkCYSHQ79+ULGi+ZiXNYPAtzJR8q7yIiIiIj4gJ9fJ7vhUS+Nna1wSR5PynvUTHhxAg4oRNKwUScNKkTSoFEH9ChGEBeuvgyIichEOHYInn4SvvjKPS5Uy1wmKiLC3Lsk3h2EYht1FFKekpCSioqJITEwk0ssXs8rOziYwsPh35xDxVMqEiJUyUbIcSEhj4bZjrNh7kv0JaWw+kkRWTt7r/FQvG0rDimcaP40qRVKlTCkcDkcxV+15lAsRK2VCCiwtDd54w1wXKC3NHLv5ZnjlFaha1d7aCoG3Z6IgPQ/9SMiLzZ07l759+9pdhojHUCZErJQJ75aV42Tl3gR+23aM37YdZ+cx9zUNwoL8aVAp0jLzp37FCMI16+e8lAsRK2VCCuzgQXjxRcjJgXbt4O23oU0bu6sqNL6UCf1twYslJSXZXYKIR1EmRKyUCe+RmpnD7uOp7I5PYdexFLYfTWHxjuOkZuW6zvH3c9Cqehk61S1HzXLhf+/uFY6fn2b9FIRyIWKlTEi+7NlzZpewevXgpZegRg24/npzQboSxJcyoYaQF6tQoYLdJYh4FGVCxEqZ8BxOp8HxlEwOnUrnyKkMDp9KZ39CGruOp7D7eCpxSRl5Pq9ceDBd6pena/0YrqxbjqhS3juF3VMoFyJWyoRc0L598MQT8P335uLRLVqY448/bm9dRciXMqGGkBdr3bq13SWIeBRlQsRKmbBPVo6T9QdPsXz3CZbvTmDVvpOkZ+de8Dllw4KoVT6M2uXDqVU+jMaxUbStWVYzgAqZciFipUxInlJS4NVX4c03ISPDnAX0229nGkIlmC9lQg0hLzZr1iyGDRtmdxkiHkOZELFSJopHrtNgT3wKGw4lsuFgEhsOnWLDoUQysq0LPvs5oGJkCJVLl6Jy6VLElilFrXJh1CofTu3yYZQODbLpK/AtyoWIlTIhFk4nfPmluXtYXJw51rkzjB/vE80g8K1MqCEkIiIiUgDZuU7WHTjFHztPsHRXPBsOJZKW5T77JzosiLa1omlbqyxX1CxL7fJhBPj72VCxiIhIPvXuDXPnmh/Xrg2vvw4DBpS4dYLEpIaQF2vVqpXdJYh4FGVCxEqZuDTZuU62H00mMT2bpPQcNh1OZFtcMkt3nSAlM8dybqlAfxpVjqRJbBRNYqNoWiWK2uW14LMnUi5ErJQJsbj2Wli+HJ55Bu67D4KD7a6o2PlSJtQQ8mLZ2dl2lyDiUZQJEStlomCcToPNR5JYuiuepbtO8NeehDxn/gCUDg2kQ+1ytK9TlstrRFO7fDj+av54BeVCxEqZ8GGJieZuYR06mLOAAP71LxgyBMqXt7U0O/lSJtQQ8mLr16/nsssus7sMEY+hTIhYKRMXdiotiz/3JLD2wCnWHTjF0l0n3M6JDAkgJjKEsOAAIkMCqBQVws1tq9O4cpRm/3gp5ULESpnwQTk58H//B88+C8ePw9Sp0KcPBAVBQIBPN4PAtzKhhpCIiIiUeLlOg+PJmWyJS3I1f1btO0mu03A7t0xoIP/uWof2tcvRoGKEGj8iIlJyzJsHo0bBpk3mcYMG5k5igYH21iW2cBiG4f43oRIsKSmJqKgoEhMTiYyMtLucS5Kenk6pUqXsLkPEYygTIla+mImzd/xas/8UW+OSOZCQxtGkDPLo/VA3JpxW1cvQrGppmlctTd2YcC38XML5Yi5ELkSZ8BE7dsBDD8HMmeZxdDQ8/zzcdZeaQefw9kwUpOehGUJebNGiRfTq1cvuMkQ8hjIhYuULmTAMg53HUpi35SgLtx5n4+G8d/wCc9v3GuXCaF6lNC2qlaZL/RiqRocWc8ViN1/IhUhBKBM+Ys8esxkUEAD/+Y95u1iZMnZX5ZF8KRNqCHmxhIQEu0sQ8SjKhIhVScyE02mwLyGNtQdOsnrfKRbtOM6+E2mWc0oF+nNZ5UgaVY6kaZXS1C4fRmyZUpQNC9bCz1IicyFyKZSJEio7G9avh9M7ZvXsaS4gPWQI1Ktnb20ezpcyoYaQFytbtqzdJYh4FGVCxKokZCIuMYNNhxP5fftxVuw9yZ74FDKynZZzgvz9aF+nLN0aVqBtzWhqaccvuYCSkAuRwqRMlDCGAbNmwSOPwOHD5q1iFSqYjz31lL21eQlfyoTWEPJiaWlphIZqqrvIacqEiJU3ZiIjO5etcclsP5rM53/sZcuRJLdzggL8aFw5kuZVy3B5jTJ0qleesGD9jEvyxxtzIVKUlIkSZONGc52gefPM4/Ll4YcfoFMne+vyMt6eCa0h5CNmzJjBsGHD7C5DxGMoEyJW3pIJwzD4fftx7v5mFU4DsnKsM4AqRYVwVYMYOtYtT/2KEVQpU4pALfwsF8lbciFSXJSJEuDYMXNNoE8+AafT3D7+wQfhySchKsru6ryOL2VCDSEREREpdoZhsPFQEvM2xzFrwxF2HU+1PN6hTlnqxkRQOyacW9pWt6lKERERD5eSAo0awYkT5vHgwfDaa1Crlr11iVdQQ8iLNW/e3O4SRDyKMiFi5WmZSM/KZeW+BP7YeYIf1x7icGKG67HQIH+ubV6ZrvVj6NGoAg6H1gCSouFpuRCxmzLh5cLD4aabYMkSGD9et4cVAl/KhBpCXszPT9PlRc6mTIhYeUomlu8+wfcrDzBj7WFyndalC/s0qUjneuXp06QSESGBNlUovsRTciHiKZQJL7N6tblg9FtvwenGxauvQnAw6PeyUPhSJtQQ8mKrV6+mfv36dpch4jGUCRErOzNxPDmTaWsOMnX1IbbGJVseG9gilitqRdO9YQXKhgfbUp/4Ll0rRKyUCS9x5Ii5S9gXX5g7iT35JMyebT5WqpStpZU0vpQJNYRERESkUDidBrM3HmHa6kP8uvWYa9zhgMurR3Nbhxr0aFRBC0KLiIjkV3q6ORto7FhI/Xu9vZtuMo9FLpG2nfdiycnJRERE2F2GiMdQJkSsiisTKZk5TFt9kG+W72fbUetsoJFX1uSeLrU1E0g8hq4VIlbKhAebNs3cLWz/fvO4bVt4+2244go7qyrxvD0TBel56Ed0Xuyvv/6yuwQRj6JMiFgVZSayc53M33yUsbO30HjMLzwzYxPbjiYTFuTPHR1q8t8bW7JnbB+e7tdIzSDxKLpWiFgpEx7s0CGzGVS1Knz7LSxdqmZQMfClTOiWMS927Nixfz5JxIcoEyJWRZGJ48mZfLF0D//9bZdl3M8BT/ZpyHUtYtUAEo+ma4WIlTLhQQ4cgMOHzzR97rrLXC9o5EitE1SMfCkTagh5saioKLtLEPEoyoSIVWFmIi0rh0krDvDizM2cvVFYbOlSPHfNZXStX54ArQ0kXkDXChErZcIDpKTAuHHw+usQGwubNpm7hgUGwn332V2dz/GlTGgNIS+WmZlJcLB+CitymjIhYnWpmcjIzmXnsRRmbTjCt3/uJzE92/XYG0Oa0aNRBaJKaat48S66VohYKRM2cjrhq6/MHcOOHDHHOnWCiROhcmV7a/Nh3p4JrSHkI6ZOnWp3CSIeRZkQsbqYTKRm5vD9ygOMnrqetmN/pd97S/hw4S4S07OpXjaUMf0bsfPl3gxuVUXNIPFKulaIWCkTNlm8GNq0gdtvN5tBtWrBlCmwcKGaQTbzpUzoljEREREfl5aVw49rDzNj7WFW7ksgO/fM5OHgAD+axEbR67KK3HFlTfz9HDZWKiIiUgKsWWPOBAKIjISnn4b77zdvExMpRmoIebHGjRvbXYKIR1EmRKwulAnDMFi57yRf/LGXeVuOkpXjdD1WNboUdWMi6N24Itc0r0xwgH9xlCtSLHStELFSJoqJ0wl+f9+g06IF9OsHVarA889DTIy9tYmFL2VCDSEvFhoaancJIh5FmRCxyisTSRnZfLJoNzPWHmZ/QpprvEqZUgxpVZVrmlemRtlQHA7NBJKSSdcKEStloojl5sKnn8Ibb8CSJWeaP9Ong79+4OKJfCkTWkPIi/311192lyDiUZQJEatzM7FybwI3fLSc9xbsZH9CGqFB/gxqWYWZ913J4se68kD3utQsF6ZmkJRoulaIWCkTRejXX83ZQHfdBTt2wHvvnXlMzSCP5UuZ0AwhERGREm7pznhen7uNNftPARAU4MeL115G/2aVCQ3SXwVEREQK1fbt8Mgj8NNP5nGZMjBmDNx7r711iZxD2857sVOnTlG6dGm7yxDxGMqEiNWMFbuZsiGeRduPA+Dv5+CaZpX5d9c61IkJt7k6EXvoWiFipUwUIsOAxx+H8eMhJwcCAswm0JgxEB1td3WST96eCW077yPWrVtndwkiHkWZEDElpmXz3I+beGDKFlczqFb5MJaNvorxQ5urGSQ+TdcKEStlohA5HJCRYTaD+vaFDRvgnXfUDPIyvpQJzRP3YocPH7a7BBGPokyIrzuWnMG3f+7n/xbvISUzB4DGsZE82ach7WuXs7k6Ec+ga4WIlTJxCQwDZs+GGjXgssvMsTFjzB3Eeva0tTS5eL6UCTWEvFh4uH7CK3I2ZUJ81YGENCatOMB/F+7k9I3gdWPCuapsEqOHd7S3OBEPo2uFiJUycZE2boSHH4a5c6FbN5g3z5whVLasmkFezpcyoTWEvFhubi7+Wp1exEWZEF8Sn5LJ3E1HmbMpznVb2GkPdKvLf66qgx+GMiFyDl0rRKyUiQI6ftycBfTRR+B0QmAgPPAAvPKK+bF4PW/PhNYQ8hHff/+93SWIeBRlQnzB1rgkHp28jtYvzefJaRssawS9PrgpO1/uzage9Qj091MmRPKgXIhYKRP5lJkJb7wBdevChx+azaCBA2HLFnj9dTWDShBfyoRuGRMREfEC2+KSufWzPzmalOkaq10+jIEtq9C5Xnkax0bZWJ2IiEgJ9/XX8Oij5sctWpg7iXXubG9NIpdIDSEv1qBBA7tLEPEoyoSURBnZuUxeeYBnZmxyjXWuV567O9emXe2yF3yuMiHiTrkQsVImLiA9HUqVMj8ePhy+/RZuuQVuvRW8+JYiuTBfyoQaQl4sWtsXilgoE1KSHE/OZNycrUxbc4gcp7ncX81yYYwf2pzmVUvn6zWUCRF3yoWIlTKRhyNH4Omn4Y8/YP16CAoybwlbsMDuyqQY+FIm1BDyYkuXLqV69ep2lyHiMZQJ8XYJqVl8tmQPW+OS+X37MbJzzUZQ5agQbutQg+HtaxAckP+fSCoTIu6UCxErZeIs6enmrWCvvAKpqebY3LnmNvLiM3wpE2oIiYiI2MwwDF6cuYXJKw+QnJnjGm9WtTSP9qxPhzplcTgcNlYoIiJSghkGTJoEjz8O+/ebY1dcYTaH2rWztzaRIqRt571YfHw85cqVs7sMEY+hTIi3WbXvJP9bvo+paw5Zxq9pVpm7OtfissqXtlC0MiHiTrkQsfL5TCQlQe/esHSpeVylCrz6KgwbBn7alNsXeXsmtO28j9i6davdJYh4FGVCvEFiejajp66nxhOzGPThUkszqFnV0mx76WreHdbikptBoEyI5EW5ELHy+UxERJi/QkPhhRdg2za46SY1g3yYL2VCt4x5sQMHDthdgohHUSbEk+06nsIni3Yzfe0hMrKdrvF2tcry7651uKxyJGXCggr1cyoTIu6UCxErn8tEaiq89RbcfTeULw8OB3z4oblwdGys3dWJB/ClTKgh5MVKnd4CUUQAZUI8U1pWDk9M2cCcjXFk5ZqNoHLhwdzVqRbXtYylXHhwkX1uZULEnXIhYuUzmXA64euv4ckn4fBhcyexDz4wH6tZ097axKP4TCbQGkJ2lyMiIiVUUkY2T03byM8bjri2ja9XIZxHezWgU71yBdotTERERC7BkiUwahSsXGke16wJb7wBAwfaW5dIEdAaQj7iu+++s7sEEY+iTIgncDoNPluyh6bPzeWndYfJcRoEB/gxblBTfnmwEz0aVSi2ZpAyIeJOuRCxKtGZ2LMHrr8eOnY0m0EREeaC0Zs3qxkk51WiM3EO3TLmxXxscpfIP1ImxE5ZOU4m/rWfTxbv5uDJdNd4rfJhzLqvI6WCin9GkDIh4k65ELEq0ZkYPx4mTzYXiB4xAl58ESpUsLsq8XAlOhPnUEPIi9WtW9fuEkQ8ijIhdkjKyOamT/5kw6FEy/h9V9Xh7s61CQu271KrTIi4Uy5ErEpUJnJz4eRJOL1l+LPPwoED8Nxz0KyZraWJ9yhRmfgHagh5sYoVK9pdgohHUSakOJ1MzeKzP/bwf4v3kJ6d6xof1qYa17euQotqZWyszqRMiLhTLkSsSkwmFiww1wmqUAF++cXcPaxcOZg2ze7KxMuUmEzkg9YQ8mKLFy+2uwQRj6JMSHHIynEyacV+ur31O+8t2El6di6VokK4rX0NtrxwNWMHNvGIZhAoEyJ5US5ErLw+Ezt2wLXXQrdusH49rFhhzgoSuUhen4kC0AwhERGRfMjJdfLF0r28NGuLayy2dClG92nA1ZdVJMBfP2MREREpNidPmmsCvf8+ZGeDvz/cey+MGQNly9pdnYhXUEPIi3Xt2tXuEkQ8ijIhReXP3ScY+vFyy9jNbavxaM8GRIUG2lTVP1MmRNwpFyJWXpmJdevMGUEnTpjHffqY28g3bGhvXVIieGUmLpJ+nOnF9u7da3cJIh5FmZDClpiezb+/XW1pBt3TpTa7XunDSwOaeHQzCJQJkbwoFyJWXpmJhg0hOhoaNYI5c2DWLDWDpNB4ZSYukhpCXmzPnj12lyDiUZQJKQyZObnM3RTHv79dTbPn5zJr/REAwoL8mXnflTx+dQP8/Rw2V5k/yoSIO+VCxMorMrF5M9x1F2RlmcdBQebC0evWQa9e9tYmJY5XZKKQ6JYxLxYY6Nk/mRYpbsqEXKzDp9KZuvogP607wrajyZbHQoP8uatTbR7o7n1bkCoTIu6UCxErj85EfLy5ZfyECeaW8g0bwoMPmo/VrGlnZVKCeXQmCpnDMAzD7iKKU1JSElFRUSQmJhIZGWl3OSIiYrNXf97KJ4t3k+u0Xg67N4yhU73y3NimmhaMFhERKU5ZWeZi0S+8AImJ5th118G4cVCnjr21iXi4gvQ89DdcL/bDDz/YXYKIR1EmJL+SM7J5a9526j31MxN+30Wu06B8RDB9m1Ti7aHN2flyb/5v+OXc2q6GVzeDlAkRd8qFiJVHZcIwYMYMuOwyePhhsxnUvDn89htMnapmkBQLj8pEEdMtY14sOzvb7hJEPIoyIf9k9/EUpq89zCeLdpOenesab1W9DD/c3Q6HwzvWBsovZULEnXIhYuVxmXj/fdi5EypUgJdfhttuM7eUFykmHpeJIqSGkBerqftmRSyUCclLdq6TGWsP878/97Fm/ynXeJnQQCpGleL9G1tQu3y4fQUWIWVCxJ1yIWJleybi4sxFoqOjweGAt96CiRNh9GiIiLC3NvFJtmeiGKkh5MVq1KhhdwkiHkWZkHMt3RXPjZ/86TY+blBTBrWq4jW7hV0sZULEnXIhYmVbJjIyYPx4eOUVGD7cnBkE0KSJ+UvEJr50nfDehRGE3377ze4SRDyKMiGnZWTn8tD3ay3NoJvbVmPhI13Y+2pfrr+8aolvBoEyIZIX5ULEqtgzYRjw/ffmjmFPPgkpKbBmDeTkFG8dIufhS9cJzRASEZESIz0rlzE/bmT6msNk5Tpd4x/d0opel1W0sTIRERFhxQoYNQr++MM8jo2FV1+FG28EP81VECluagh5sY4dO9pdgohHUSZ8V2JaNt+vPMDLs7dYxl8a0JibrqhW4haLzi9lQsSdciFiVWyZ+Oor89YwgNBQePxxeOQR82MRD+JL1wk1hLxYXFwcVapUsbsMEY+hTJR8uU6DvSdS2XQ4icXbj7P5SBKbDidZzgkK8KNT3fKM6d+IqtG+/ZdMZULEnXIhYlVsmejdG0qXhmuuMdcNio0t+s8pchF86TqhhpAX27FjB61bt7a7DBGPoUyUTOlZufzvz33MXH+EtQdOnfe84AA/Hu5Zj6GtqxEVGlh8BXowZULEnXIhYlUkmXA64dtv4bff4NNPzbHy5c3t5MuWLdzPJVLIfOk6oYaQF/PVWyBEzkeZKBkS07JZe/AU3/21n583xp33vOiwIOpVCOe6FrE0rBRJk9go/Rk4h74fIu6UCxGrQs/E0qXw4IPmekEAQ4dCz57mx2oGiRfwpeuEwzAMw+4iilNSUhJRUVEkJiYSGRlpdzkiIj7NMAyW705g7uY41h44xZr9p857brMqUTzTrxHNqpYm0F8LT4qIiHiUffvMdYEmTTKPw8PNXcRGjYKQEHtrE/EhBel5aIaQF5s+fToDBgywuwwRj6FMeIdfNsXx2ZI9/Lkn4YLnBfo7aFe7HP/pWofLa5TxqZ/WFBZlQsSdciFidcmZSE+Hl16CN9+EzExwOGDECHjxRaioHT7F+/jSdUINIS+Wnp5udwkiHkWZ8Fxb45KYsHAXGw8nsfNYSp7n9LqsAn2bVqZ19TJULl2qmCssmZQJEXfKhYjVJWfC3x++/95sBnXtCm+9Bc2bF0ptInbwpeuEGkJerGrVqnaXIOJRlAnPs2JvAkMmLHMbb1W9DG1rRdO1fgxNqkQRHOBvQ3UlnzIh4k65ELG6qEwsWQJXXAGBgRAUBB9+CKmp5g5imtErXs6XrhNqCHmxBg0a2F2CiEdRJjzDgYQ0Xp2zlZV7EzialOkaDw3yZ3j7GtzevgYxkVpLoDgoEyLulAsRqwJlYudOePRRmD4d3nkH7r/fHO/evUhqE7GDL10ntCqnF5s3b57dJYh4FGXCXtm5Th76fi0dx/3GrPVHXM2gGmVDmXJPeza/cDWPX91AzaBipEyIuFMuRKzylYlTp+CRR6BRI7MZ5O8Px44VdWkitvCl64RmCImIyCWbsfYQL83awvHkMzOCYkuXYuzAJnSqV97GykREROSi5eTAJ5/As89CfLw5dvXV5gLSjRrZW5uIXDI1hLxY+/bt7S5BxKMoE8VvyqqDPDx5nWXssavrc2+XOjZVJGdTJkTcKRciVhfMxL//DR9/bH7csKG5YPTVVxdPYSI28aXrhG4Z82IJCRfeslnE1ygTxSMrx8mMtYeo+9RsSzOoXHgQq57urmaQB1EmRNwpFyJWbpkwjDMf//vfEBMD778P69erGSQ+wZeuE7Y3hD744ANq1qxJSEgIrVq1YvHixRc8/3//+x/NmjUjNDSUSpUqcfvtt3PixIliqtazbN261e4SRDyKMlG0cnKdPDRpLfWe/pkHvltLdq75F8aGlSL59eHOrHy6B2XDg22uUs6mTIi4Uy5ErFyZOHEC7rvPXCvotKZNYf9+szEUoJtLxDf40nXC1obQpEmTePDBB3nqqadYs2YNHTt2pHfv3uzfvz/P85csWcKtt97KiBEj2LRpE5MnT2bFihWMHDmymCsXEfEdhmHw9fJ91HnqZ6auOeQav751FZY83pWfH+hI7fLhNlYoIiIiF8svJwfGj4c6dcyZQO++CwcOnDkhWD/sESmpHIZx9pzA4nXFFVfQsmVLPvzwQ9dYw4YNGTBgAGPHjnU7/4033uDDDz9k165drrH33nuPcePGceDsN60LSEpKIioqisTERCIjIy/9i7BRbm4u/v7+dpch4jGUicK3fPcJHvhujWX7+JFX1uTRq+sTHKDvtadTJkTcKRcifzMM+OknjEcewbFjhznWtKm5TlC3bvbWJmIjb79OFKTnYdsMoaysLFatWkXPnj0t4z179mTp0qV5Pqd9+/YcPHiQ2bNnYxgGR48e5YcffqBv377n/TyZmZkkJSVZfpUUs2fPtrsEEY+iTBSe1MwcRn65khs+Xu5qBg1sGcvqZ3rwdL9GagZ5CWVCxJ1yIQLs2QM9esC115rNoJgYc/Ho1avVDBKf50vXCdtuBI2Pjyc3N5cKFSpYxitUqEBcXFyez2nfvj3/+9//GDp0KBkZGeTk5HDNNdfw3nvvnffzjB07lueff95tfPLkyYSGhjJw4EB+/fVXEhMTiYmJoU2bNsycOROAli1b4nQ6Wbt2LQDXXnstS5Ys4cSJE0RHR9OpUyemT58OQNOmTQkMDGTVqlUA9O3bl5UrV3L06FEiIyPp2bMnP/zwAwCXXXYZ4eHh/PnnnwD06tWLjRs3cujQIcLCwujXrx+TJk0CoH79+pQrV44//vgDgO7du7N9+3b279/PkSNHAPPWO6fTSe3atYmNjWXRokUAdOnShf3797N7924CAgIYMmQIU6ZMISsri+rVq1O7dm0WLFgAwJVXXsmxY8fYvn07AMOGDWPGjBmkpaVRpUoVGjVqxNy5cwFo164diYmJbN68GYAhQ4YwZ84ckpOTqVixIi1btnSF6PLLLycjI4MNGzYAcN1117Fw4UJOnjxJuXLlaNeuHT/99BMALVq0AGDNmjUA9O/fn2XLlhEfH0+ZMmXo0qUL06ZNA6BJkyaEhISwYsUKAPr06cPq1auJi4sjIiKCq6++msmTJwPQqFEjoqKiWLZsGWA2HTdv3szBgwcJDQ3l2muvZeLEiQDUq1ePmJgYlixZAsBVV13Frl272LdvH0FBQQwaNIjJkyeTk5NDrVq1qFatGgsXLgSgU6dOHDp0iF27duHn58fQoUOZOnUqmZmZVKtWjXr16jF//nwAOnToQHx8PNu2bQNg6NChzJw5k9TUVGJjY2ncuDG//PILYM6kS0lJYdOmTQAMHjyYuXPnkpSURIUKFWjdujWzZs0CoFWrVmRnZ7N+/XoABgwYwKJFi0hISKBs2bJceeWVzJgxA4DmzZvj5+fH6tWrAejXrx9//fUXx44dIyoqim7dujF16lQAGjduTGhoKH/99RcAvXv3Zt26dRw+fJjw8HD69OnD999/D0CDBg2Ijo52NXZ79OjB1q1bOXDgAKVKlWLAgAF89913GIZB3bp1qVixomvtsK5du7J371727NlDYGAggwcP5ocffiA7O5uaNWtSo0YNfvvtNwA6duxIXFwcO3bswOFwcMMNN7Bz504mTpxI1apVadCgAfPmzQPM946EhATX/cDXX389s2fPJiUlhcqVK9OsWTN+/vlnANq0aUNaWhobN24E8Or3iODgYAYOHFig94hvJk3h6TUhnOvdAbWIDUzjlx+nAHqP8Jb3iPj4eJKSkvQe8fd7xPTp00lPT9d7xCW8R5SEv0ccOnTItX6lr79H6O8RvvseMf2XX+i3dCkBgYFs7N6dbYMGkRMaSveEBJ9/jwD9PcLX3yMOHTpEixYtvPY9Ii0tjfyy7Zaxw4cPExsby9KlS2nXrp1r/OWXX+brr7/OcyGnzZs30717d0aNGkWvXr04cuQIjz76KJdffjmffvppnp8nMzOTzMwztzokJSVRtWrVEnHL2O+//07nzp3tLkPEYygTl2bprnhu/ORPy9hz/RtxW4eaNlUkl0qZEHGnXIhPysyE6dNh6NAzYz/9BI0b8/v+/cqEyFm8/TpRkFvGbJshVK5cOfz9/d1mAx07dsxt1tBpY8eOpUOHDjz66KOA2QULCwujY8eOvPTSS1SqVMntOcHBwQSX0IXQmjVrZncJIh5Fmbg48SmZjJmxiVkbjrjGGsdG8tN/rsThcNhYmVwqZULEnXIhPsUwYMoUeOwx8zaxqKgzW8f37w9AszJlbCxQxPP40nXCtjWEgoKCaNWqlWua1Wnz5s2jffv2eT4nLS0NPz9ryacXe7JxbWzbnJ52JiImZaJg9sSn8q+vVtL6pfmuZlD1sqEseLgzM+/rqGZQCaBMiLhTLsRnrFoFnTvDkCFmM6hyZcjOdjtNmRCx8qVM2DZDCOChhx7illtuoXXr1rRr146PP/6Y/fv3c/fddwMwevRoDh06xFdffQWY93neeeedfPjhh65bxh588EHatGlD5cqV7fxSRES8xrHkDIZ+tJw98amW8f7NKvPuDc3VCBIREfFmhw/Dk0/CV1+ZM4RKlYJHHzVnCYWF2V2diHgQWxtCQ4cO5cSJE7zwwgscOXKExo0bM3v2bKpXrw7AkSNH2L9/v+v82267jeTkZN5//30efvhhSpcuzVVXXcVrr71m15dgqzZt2thdgohHUSYuzDAMPvx9F+PmbLOMP9uvEYNaVSGqVKBNlUlRUSZE3CkXUqIZBvTuDX8v+svNN8Mrr0DVqud9ijIhYuVLmbC1IQRw7733cu+99+b52BdffOE2dt9993HfffcVcVXeoSCrh4v4AmXi/NYdOMWdX63kWPKZRfZrlQtjyj3tKRMWZGNlUpSUCRF3yoWUOE6n2Qjy9weHA557Dl5/Hd5+G/LxD1tlQsTKlzJh2xpCculOb1UnIiZlIm9jf97Ctf/9w9UMqlKmFPMf6sSCR7qoGVTCKRMi7pQLKVGWLYN27WDChDNjAwbAH3/kqxkEyoTIuXwpE7bPEBIRkaIzZ2McH/2+G4DgAD9mP9CR2uXDba5KRERELsm+ffDEE/Ddd+bx0aNw110QEGDOEhIRyQeH4WPbcyUlJREVFUViYiKRkZF2l3NJMjMzCQ4OtrsMEY+hTFit3n+SgR8sdR3veqUP/n76S6IvUSZE3CkX4tWSk+HVV+GttyAjw2z+3H47vPQSVKp0US+pTIhYeXsmCtLz0C1jXuzXX3+1uwQRj6JMnPH18n0M/WiZ63jV093VDPJByoSIO+VCvNacOVCvnrlIdEYGdOlibi3/6acX3QwCZULkXL6UCd0y5sUSExPtLkHEoygTMH3NIR6fsp7MHCcA5SOC+fmBjpQN996fcsjFUyZE3CkX4rUqVjRvDatdG954A669tlBuD1MmRKx8KRNqCHmxmJgYu0sQ8Si+nIm1B07x0KS17I5PdY21qRnNJ7e21nbyPsyXMyFyPsqFeI1du2DJEhg+3Dxu3hx+/tmcGVSIt7MoEyJWvpQJrSHkxZKTk4mIiLC7DBGP4YuZ+HnDER6ctNY1I+i0t4c2Z0CLWJuqEk/hi5kQ+SfKhXi8xERzTaB33zW3lN+4EerXL7JPp0yIWHl7JrSGkI+YOXOm3SWIeBRfyoTTafD2/O3c87/VrmZQrXJhTPpXW/a+2lfNIAF8KxMi+aVciMfKyTG3j69b17wlLCsLrroK/Ir2n2zKhIiVL2VCt4yJiHiR3cdTePfXHfy8Mc7VCIoIDuDLEW1oWa2MzdWJiIjIRZk7Fx56CDZtMo/r1zd3EuvdW9vIi0iRUUPIi7Vs2dLuEkQ8SknORFxiBs//tImfN8ZZxvs1rcRb1zcnKEATPsVdSc6EyMVSLsTjnDoFgwebW8pHR8Nzz8Hdd0Ng8awBqEyIWPlSJtQQ8mJOp/OfTxLxISUxEydSMrnm/T84dCrdNVYq0J9+TSsxsmMt6lf03vubpeiVxEyIXCrlQjxCcjKcXqOkdGkYMwYOHIBnnzWbQsVImRCx8qVM6EfKXmzt2rV2lyDiUUpaJvbEp3LFK79amkHdG1Zg0/O9eH1IMzWD5B+VtEyIFAblQmyVnW0uFl29unmb2GkPPwxvv13szSBQJkTO5UuZ0AwhEREPk5iezfsLdvDJ4j2uscevbsBdnWrh56d1BERERLyOYcCsWfDII7Btmzn26afQs6e9dYmIT9O2814sLS2N0NBQu8sQ8Rjenok/dsbzwk+b2XY02TI+b1Qn6lbQbCApOG/PhEhRUC6k2G3caC4YPW+eeVy+vLmt/IgR4O9vb20oEyLn8vZMaNt5H7FkyRK7SxDxKN6aiRMpmTwyeR03/d+flmbQZZUj1QySS+KtmRApSsqFFKsXX4RmzcxmUFAQPPYY7NgB//qXRzSDQJkQOZcvZUK3jHmxEydO2F2CiEfxtkykZOZwx+cr+GtvgmV8/NBmDGgei0PbzMol8rZMiBQH5UKKVaNG4HSau4i99hrUqmV3RW6UCRErX8qEGkJeLNqGRedEPJm3ZGLpznjeXbCD5butjaD7u9VlRIeaRIUWzzazUvJ5SyZEipNyIUXGMGDaNMjKghtuMMcGDoRVq8CDt7FWJkSsfCkTWkPIi6Wnp1OqVCm7yxDxGJ6cidTMHB6bsp5Z64+4PTawRSxvXt9MM4Kk0HlyJkTsolxIkVi9GkaNgkWLoGxZ2LnT3E7eCygTIlbengmtIeQjpk+fbncJIh7FEzOx8VAit3z6J5eN+cWtGXTfVXXY8XJv3hraXM0gKRKemAkRuykXUqgOH4bbb4fWrc1mUEgI3HMPBHrPbF9lQsTKlzKhW8ZERApRVo6TL5fuZeqaQ2w5kuT2eOd65RndpwENKnr3DEURERGflp4Ob74Jr74Kqanm2I03wtixUK2avbWJiOSTGkJerGnTpnaXIOJR7MxEelYuXyzdy2tztub5+N2da/Ng97qEBHrGjiLiG3SdEHGnXEih2LYNnn3WXDeobVsYP978vxdSJkSsfCkTagh5sUAvmooqUhzsyERyRjZvz9/Bp0v2WMZrlQ/jxjbVuK5FLGXDg4u9LhHQdUIkL8qFXLSDB6FKFfPj5s3hySfhssvMBaS9+NZvZULEypcyoYaQF1u1ahX16tWzuwwRj1Gcmdh4KJGXZm122ymsTkw434y4gopRIcVSh8iF6Doh4k65kAI7cACeeAImT4aNG+H0n5+XXrK3rkKiTIhY+VIm1BASEcmn5Ixsvlq2j0krDrA/Ic01HhkSwMCWVXioZz0iQ3znJwoiIiIlWkoKjBsHr78OGRnmLKB58840hEREvJy2nfdiSUlJXv81iBSmosrEsl0neGTyOg6dSreMBwf4MbBlFV65rrF2CROPpOuEiDvlQv6R0wlffw2jR8ORv3cI7dTJXCeoZUt7aysCyoSIlbdnQtvO+4iVK1faXYKIRynsTOw8lszVby9i2CfLLc2gxrGR/PpwZ7a91JuxA5uoGSQeS9cJEXfKhVyQYUC3bnDbbWYzqGZNmDIFFi4skc0gUCZEzuVLmdAtY17s6NGjdpcg4lEKKxPZuU6emLKBKasPWsbHDmzC9a2r4u+nBpB4B10nRNwpF3JBDgf07AmrVsEzz8D990Nwyd4cQpkQsfKlTKgh5MW8eRqbSFEojEwcS8qg9zuLOZGaBUCzqqV54uoGtKtd9pJfW6S46Toh4k65EIukJHj5ZbMJ1K2bOTZqFIwYATEx9tZWTJQJEStfyoTWEPJi2dnZPrUlnsg/udRMrNybwOAJy1zHd3SoybP9GxVGaSK20HVCxJ1yIQDk5sKnn8LTT8Px49C4MaxdC/7+dldW7JQJEStvz4TWEPIRP/zwg90liHiUi81ErtPgqWkbXM2g4AA/3r+xhZpB4vV0nRBxp1wI8+dDixZw111mM6hePRg7Fvx8859GyoSIlS9lQreMiYhPW7UvgUEfnpkVVC48iOn/7kCVMqE2ViUiIiKFbvt2eOQR+Okn87hMGRgzBu69F7x4NoCIyMVSQ8iLXXbZZXaXIOJRCpKJdQdO8dKszazYe9I11qFOWb4ZcYV2DZMSQ9cJEXfKhQ9bt85sBgUEmE2gMWMgOtruqmynTIhY+VIm1BDyYuHh4XaXIOJR8pOJnFwnb8zdzoTfd7nGGlSMYHCrKozsWKsoyxMpdrpOiLhTLnxIdjZs22auDwQweDA88QQMHw4NGthbmwdRJkSsfCkTvnmjbAnx559/2l2CiEf5p0zsPJZCh9cWWJpB911VhzkPdlIzSEokXSdE3CkXPsAwYPZsaNoUunaFxERz3OEw1wpSM8hCmRCx8qVMaIaQiJR4hmHwzq87eHv+DtdYz0YVeOeGFpQK8r3dREREREqsTZvgoYdg7lzzuFw52LwZ2rWzty4REQ+kbee9WEJCAtG671nEJa9MbD6cxPUfLSMlM8c1Nvv+jjSq7N35F8kPXSdE3CkXJdTx4+aaQB99BE6nuUj0gw/CU09BVJTd1Xk0ZULEytszoW3nfcTGjRvtLkHEo5ybiQm/76L/+0tczaC2taLZ8FxPNYPEZ+g6IeJOuSiBEhKgfn348EOzGTRwIGzZAuPGqRmUD8qEiJUvZUK3jHmxQ4cO2V2CiEc5OxP3TVzDT+sOA1AnJpwJN7ekTkyEXaWJ2ELXCRF3ykUJFB0N115r7iL21lvQpYvdFXkVZULEypcyoRlCXiwsLMzuEkQ8yulMvDZnq6sZ1KhSJDPvu1LNIPFJuk6IuFMuSoA1a6BnT9i588zYu+/CihVqBl0EZULEypcyoTWEvJjT6cTPTz09kdOcTic/rjvCg5PWAuYtYhPvbIvD4bC3MBGb6Doh4k658GJHjphrAn3xhbmT2JAh8P33dlfl9ZQJEStvz4TWEPIRkyZNsrsEEY+RlpVDyzGzXM2gkEA/Pr61tZpB4tN0nRBxp1x4ofR0ePllqFsXPv/cbAbdcAO8/rrdlZUIyoSIlS9lQmsIiYjXS83Moftbv3Mq+0yPe+2zPQkJ1JbyIiIiXm3qVBg1CvbvN4+vuALGj9c28iIihUANIS9Wv359u0sQsV12rpPhn/3FkcQMAO7pUpvHetXXzCARdJ0QyYty4WW2bDGbQVWqwKuvwrBh4MW3cngiZULEypcyoYaQFytXrpzdJYjYKiM7lz7vLmb38VQAxvSoyu3dGthclYjn0HVCxJ1y4eEOHjS3kW/a1Dx+6CEICYF77oHQUHtrK6GUCRErX8qE2ute7I8//rC7BBHbnErLovPrv7maQXd0qEnIsU02VyXiWXSdEHGnXHio1FQYMwbq1YNbboHcXHO8VCl4+GE1g4qQMiFi5UuZUENIRLzOzPWHaf7CPI4mZQJwV+daPNOvoc1ViYiISIE5nfDVV2Yj6IUXzAWkIyPhxAm7KxMRKfG07bwXO378OOXLl7e7DJFik5XjZNSktczacMQ1NvHOtrSrXRZQJkTOpUyIuFMuPMiSJeaC0StXmsc1apg7hw0aBFoLsNgoEyJW3p4JbTvvI7Zv3253CSLF5kRKJl3fWOhqBtUqF8bs+zu6mkGgTIicS5kQcadceIg//oCOHc1mUESEuWD0li0weLCaQcVMmRCx8qVMqCHkxfaf3n5TpITLyM6l1UvzOXQqHYBn+zViwSNdaFTZ2vFWJkSslAkRd8qFjc6+MaF9e7Mh9K9/wY4d8Pjj5uLRUuyUCRErX8qEdhnzYsHBwXaXIFLkDp9K5+q3F7mOb+9QgzuurJnnucqEiJUyIeJOubBBbi589hm89555m1hkpDkL6NdfITDQ7up8njIhYuVLmdAaQiLisY4nZ3LFK/Nx/v0uNXZgE4a1qWZvUSIiIpJ/CxaY6wStX28ejx0LTzxhb00iIiWY1hDyEZMmTbK7BJEi8+O6w1z+8plm0E//ufIfm0HKhIiVMiHiTrkoJjt2wIAB0K2b2QwqXRrGj4eHHrK7MjmHMiFi5UuZ0C1jXszpdNpdgkihm7Mxjru/WWUZe3NIM5pUifrH5yoTIlbKhIg75aKIGQY8+ii8+y5kZ4O/P9x7L4wZA2XL/vPzpdgpEyJWvpQJNYS8WO3ate0uQaTQJKZl0+yFuZaxAD8HE//VlstrROfrNZQJEStlQsSdclHEHA44ftxsBvXpA2+8AQ0b2l2VXIAyIWLlS5lQQ8iLxcbG2l2CyCXLyXXyxtztfLJ4t2X8p/9cma9ZQWdTJkSslAkRd8pFEZgzB+rVg1q1zONXXoEbb4ReveytS/JFmRCx8qVMaA0hL7Zo0aJ/PknEg321bC91nvqZCb/vIvfvxYLeur4Ze1/tW+BmECgTIudSJkTcKReFaPNm6N3b/PXoo2fGY2PVDPIiyoSIlS9lQjOERKTY5ToNaj852zLWslppPr+tDVGh2n5WRETEo8XHw3PPwYQJ5pbygYFQsyY4neCnnzeLiHgLNYS8WJcuXewuQaTA9p1I5boPllrGfnmwE/UrRlzyaysTIlbKhIg75eISZGXB++/DCy9AYqI5NmAAvP461Klja2ly8ZQJEStfyoRa+F5s//79dpcgUiCJadl0fn0hCalZAPynax32vtq3UJpBoEyInEuZEHGnXFyCDz6Ahx82m0HNm8OCBTBtmppBXk6ZELHypUyoIeTFdu/e/c8niXiI7UeTLbuIvTGkGY/0ql+on0OZELFSJkTcKRcFlJV15uN//Qsuvxz+7/9g5Uro2tW+uqTQKBMiVr6UCd0y5sUCAvTbJ95h2pqDjJq0znX8XP9GDG5VpdA/jzIhYqVMiLhTLvLp6FF4+mlYswb+/BP8/SE01PzY4bC7OilEyoSIlS9lwmEYhmF3EcUpKSmJqKgoEhMTiYyMtLsckRItMT2b5i/M5ex3meevuYzh7WvYVpOIiIhcQEYGvP22uXV8crI5Nn8+dOtma1kiIpI/Bel56JYxLzZlyhS7SxA5r+/+2k+rF+e5mkGNKkWyfHS3Im0GKRMiVsqEiDvl4jwMAyZPhoYNYfRosxnUpg388YeaQSWcMiFi5UuZ8J25UCVQ1tn3dIt4iEkr9vP4lA2WsVHd6/FA97pF/rmVCRErZULEnXKRhxMnzN3Cliwxj2Nj4dVX4cYbtY28D1AmRKx8KRNqCHmx6tWr212CiMufu08w9OPllrH2tcvyaK/6tKhWplhqUCZErJQJEXfKRR6ioyEnx1wj6LHH4JFHICzM7qqkmCgTIla+lAk1hLxY7dq17S5BBICvl+/jmekbXcfXNKvM030bEhMZUqx1KBMiVsqEiDvlAkhLg3ffhXvvhchIc5Hozz6DiAioUvibPohnUyZErHwpE5oD6sUWLFhgdwni4w4kpDF66npXMygiJID3hrXg3WEtir0ZBMqEyLmUCRF3Pp0LpxO++Qbq1TPXCRo79sxjDRuqGeSjfDoTInnwpUxohpCIFJjTafDID+uYuvqQa6xj3XJ8eHMrwoP1tiIiIuJxli6FBx+EFSvM4+rV4fLLbS1JRETspX+5ebErr7zS7hLEB63Ym8CQCcssYy9f15gb21TD4XDYVJVJmRCxUiZE3PlcLvbtg8cfh0mTzOPwcHjqKbM5FFL8s3nF8/hcJkT+gS9lokANoW3btjFx4kQWL17M3r17SUtLo3z58rRo0YJevXoxaNAggoODi6pWOcexY8eoWrWq3WWIDzh4Mo235+/gt63HOJF6ZtX9Ho0q8PEtrWxvBJ2mTIhYKRMi7nwuF889ZzaDHA4YMQJefBEqVrS7KvEgPpcJkX/gS5nI1xpCa9asoUePHjRr1oxFixZx+eWX8+CDD/Liiy9y8803YxgGTz31FJUrV+a1114jMzOzqOsWYPv27XaXICVYYlo2fd5ZTINnfubK137jh1UHXc2g4AA/fvrPlXxya2uPaQaBMiFyLmVCxF2Jz0VuLiQmnjl+8UXo0wdWr4ZPPlEzSNyU+EyIFJAvZSJfM4QGDBjAo48+yqRJk4iOjj7vecuWLWP8+PG8+eabPPnkk4VWpIgUry/+2MNzP212Gx/WpipDWleleZXS+Pl5TiNIREREgIULYdQoqFMHJk82x6pUgVmzbC1LREQ8k8MwDOOfTsrKyiIoKCjfL1rQ84tTUlISUVFRJCYmEhkZaXc5Ih4lr/WBejeuyDP9GlG5dCmbqhIREZEL2rkTHn0Upk83j0uXhq1boUIFO6sSEREbFKTnka9bxvLb3Dl06FCBzpdLM2PGDLtLkBLiVFoWgz5camkGRZUKZP1zPfnw5lZe0wxSJkSslAkRdyUqF6dOwSOPQKNGZjPI3x/+/W/YsUPNIMm3EpUJkULgS5kolF3G4uLiePnll/m///s/0tPTC+MlJR/S0tLsLkG8XE6uk7E/b+XTJXtcY/5+Dr64/XI61i1vY2UXR5kQsVImRNyVmFysWGGuDRQfbx5ffTW8+abZHBIpgBKTCZFC4kuZyNcMIYBTp05x0003Ub58eSpXrsy7776L0+nk2WefpVatWixfvpzPPvusKGuVc1SpUsXuEsRLOZ0GS3fGU+epny3NoGubV2btsz28shkEyoTIuZQJEXclJheNGkFwMDRsCLNnw88/qxkkF6XEZEKkkPhSJvI9Q+jJJ59k0aJFDB8+nDlz5jBq1CjmzJlDRkYGP//8M507dy7KOiUPjXTRlwLKyM7lyakb+Gn9YbJzzywf1qhSJNP/3YGggHz3iD2SMiFipUyIuPPaXGzZAh99BG+9BX5+EBYGv/4KtWpBYKDd1YkX89pMiBQRX8pEvv/1N2vWLD7//HPeeOMNfvzxRwzDoF69eixYsEDNIJvMnTvX7hLEixxPzqTBM3OYuuaQqxnUsW45Ph3emtkPdPT6ZhAoEyLnUiZE3HldLk6cgPvugyZN4J134KuvzjxWv76aQXLJvC4TIkXMlzKR7xlChw8fdnXKatWqRUhICCNHjiyywkSkcDidBlPXHOLJqRtcYzdcXpUnejegdKgWgBcREfFIWVnwwQfw/PPm4tEA11wD7dvbWpaIiJQc+W4IOZ1OAs/6CYS/vz9hYWFFUpTkT7t27ewuQTzcnvhUur6x0HUc4Odg/NDm9G9W2b6iipAyIWKlTIi48/hcGAbMnAkPP2zuFgbQtCmMHw9XXWVvbVIieXwmRIqZL2Ui3w0hwzC47bbbCA4OBiAjI4O7777brSk0derUwq1QzisxMdHuEsSD7T6ewsAPl7qOO9Qpyzs3tKBceLCNVRUtZULESpkQcecVuXj5ZbMZFBNjfnz77eaW8iJFwCsyIVKMfCkT+V40ZPjw4cTExBAVFUVUVBQ333wzlStXdh2f/iXFZ/PmzXaXIB7qx3WHufrtxZxKywZg2r3t+d/ItiW6GQTKhMi5lAkRdx6Zi6NHISXF/NjhgLffhieeMJtCI0eqGSRFyiMzIWIjX8pEvmcIff7550VZh4gUkrfnb+ft+Ttcx5/d1poW1crYWJGIiIjkKSPDXCj65Zfh/vvhpZfM8bZtzV8iIiJFyGEYhvHPp5n27dvH3Llzyc7OpkuXLl65HVtSUhJRUVEkJiYSGRlpdzmXJCcnh4CAfPf0xAe88cs23v9tJwARwQHMe6gzFaNCbK6q+CgTIlbKhIg7j8iFYcCUKfDYY7Bnjzl25ZXw++/mlvIixcgjMiHiQbw9EwXpeeT7irNo0SIuu+wy7rrrLv7zn//QvHlzJk6ceMnFysWbM2eO3SWIh8jOdfLQ92tdzaDW1cuw/rmePtUMAmVC5FzKhIg723OxahV07gxDhpjNoMqV4csv1QwS29ieCREP40uZyPdV55lnnqFr164cPHiQEydOcMcdd/DYY48VZW3yD5KTk+0uQTxATq6TVi/OY+rqQwB0b1iB7+9qh8PhsLmy4qdMiFgpEyLubM3Fxx9D69aweDGUKgXPPgvbt8Ott6oZJLbRtULEypcyke95UBs2bGDRokVUrmxuV/3mm2/yySefcPLkScqU0fokdqhYsaLdJYjNnE6D4Z//RVJGDgB3dqzJU32971bOwqJMiFgpEyLubM1F794QGgoDB8Irr0DVqvbVIvI3XStErHwpE/luCJ06dYqYmBjXcVhYGKGhoZw6dUoNIZu0bNnS7hLERulZudzw8TLWHTS3RezbtJJPN4NAmRA5lzIh4q7YcuF0wsSJsHIljB9vjlWtCrt2gQ/9Y0M8n64VIla+lIkCzU3dvHkz69evd/0yDIMtW7ZYxqT4zJ492+4SxCZZOU6Gf/6Xqxl0d+fa/PdG33njOh9lQsRKmRBxVyy5WLYM2rWDm282t5BfuvTMY2oGiYfRtULEypcyUaCls7t168a5m5L169cPh8OBYRg4HA5yc3MLtUARsXI6Dfq8u5idx1IAeKhHPe7vVtfmqkRERIR9++CJJ+C778zj8HB48klo0cLeukRERPKQ74bQntNbYorHuPzyy+0uQWzw4KS1rmbQK9c14cYrqtlckedQJkSslAkRd0WSi7Q0c02gN9+EjAxwOOD22+Gll6BSpcL/fCKFSNcKEStfykS+G0JffvkljzzyCKGhoUVZjxRARkaG3SVIMTIMg6enb+THdYcBGHFlTTWDzqFMiFgpEyLuiiQXhgGff242g7p0gbfe0qwg8Rq6VohY+VIm8r2G0PPPP09KSkpR1iIFtGHDBrtLkGL09fJ9/O/P/QB0qleex69uYHNFnkeZELFSJkTcFVou/vzTXDgaICwM/vtfmDYNFixQM0i8iq4VIla+lIl8N4TOXTtIRIpPRnYu/7fYvG2zZbXSfHVHG4ICCrQmvIiIiBSGXbtg0CBo2xa++ebM+IAB5i+Hw67KRERECsRh5LPT4+fnx9GjRylfvnxR11SkkpKSiIqKIjExkcjISLvLuSQZGRmEhITYXYYUg9FTNzDxr/34+zlYNvoqYiL0+54XZULESpkQcXfRuUhMNNcEevddyMoCPz945hl47rlCr1GkOOlaIWLl7ZkoSM+jQFMMunXrRsuWLS/4S4rPwoUL7S5BisFfexKY+Jd5q9h/utZRM+gClAkRK2VCxF2Bc5GTAxMmQN268MYbZjOoZ09Yv17NICkRdK0QsfKlTBRo2/levXoRHh5eVLVIAZ08edLuEqSIZWTnMvTjZQA0qBjBqB71bK7IsykTIlbKhIi7Aufijjvg66/Njxs0MHcS691bt4ZJiaFrhYiVL2WiQA2hRx99lJiYmKKqRQqoXLlydpcgRWzs7C0YBoQG+fPF7W3sLsfjKRMiVsqEiLsC5+Kuu2D2bHM20F13QWBgkdQlYhddK0SsfCkT+W4IOfRTEI/Trl07u0uQIvTrlqN8uWwfAMPaVKNilG4V+yfKhIiVMiHi7oK5SEiA55+HsmXh2WfNsQ4dYN8+cycxkRJI1woRK1/KhHYZ82I//fST3SVIEdl5LJkRX64EICI4gGf6NbK5Iu+gTIhYKRMi7vLMRXa2uVh0nTrm/8eOhePHzzyuZpCUYLpWiFj5Uiby3RDas2ePT02dErHLqn0JdH9rket42r872FiNiIhICWYYMHMmNGkCDzwAJ0+aH8+cCV6+s66IiMg/yVdD6NVXX6V8+fL4+f3z6X/++SezZs3KdwEffPABNWvWJCQkhFatWrF48eILnp+ZmclTTz1F9erVCQ4Opnbt2nz22Wf5/nwlSYsWLewuQQpZdq6Tx6dscB2/N6wFdWK0kHt+KRMiVsqEiDtXLnbtgl69oH9/2LbNbAB99BGsWQPdutlbpEgx0rVCxMqXMpGvNYQ2b95MtWrVGDJkCNdccw2tW7em/N8/NcnJyWHz5s0sWbKEb775hiNHjvDVV1/l65NPmjSJBx98kA8++IAOHTrw0Ucf0bt3b9fny8v111/P0aNH+fTTT6lTpw7Hjh0jJycnn1+uiGf772872XksBYDZ93ekUeVImysSEREpoQICYPFiCAqCBx+EJ5+EqCi7qxIRESk2+Zoh9NVXX7FgwQKcTic33XQTFStWJCgoiIiICIKDg2nRogWfffYZt912G1u3bqVjx475+uRvvfUWI0aMYOTIkTRs2JC3336bqlWr8uGHH+Z5/pw5c/j999+ZPXs23bt3p0aNGrRp04b27dvn/ysuQdasWWN3CVKIUjNzeHv+DgBua19DzaCLoEyIWCkTImfJzIQffzyTi+rV4YsvYMsWeO01NYPEZ+laIWLlS5nI9y5jTZs25aOPPmLChAmsX7+evXv3kp6eTrly5WjevHmB1xfKyspi1apVPPHEE5bxnj17snTp0jyf8+OPP9K6dWvGjRvH119/TVhYGNdccw0vvvgipUqVyvM5mZmZZGZmuo6TkpIKVKdIcXlvwU4AHA54sk9Dm6sREREpIQwDpk6Fxx6D3bsp99xzZx4bOtS2skREROyW74bQaQ6Hg2bNmtGsWbNL+sTx8fHk5uZSoUIFy3iFChWIi4vL8zm7d+9myZIlhISEMG3aNOLj47n33ntJSEg47zpCY8eO5fnnn3cbnzx5MqGhoQwcOJBff/2VxMREYmJiaNOmDTNnzgSgZcuWOJ1O1q5dC8C1117LkiVLOHHiBNHR0XTq1Inp06cDZsMsMDCQVatWAdC3b19WrlzJ0aNHiYyMpGfPnvzwww8AXHbZZYSHh/Pnn38C0KtXLzZu3MihQ4cICwujX79+TJo0CYD69etTrlw5/vjjDwC6d+/O9u3b2b9/P/7+/oB5653T6aR27drExsayaJG5IHGXLl3Yv38/u3fvJiAggCFDhjBlyhSysrKoXr06tWvXZsGCBQBceeWVHDt2jO3btwMwbNgwZsyYQVpaGlWqVKFRo0bMnTsXMLfhS0xMZPPmzQAMGTKEOXPmkJycTMWKFWnZsiWzZ88G4PLLLycjI4MNG8x1ca677joWLlzIyZMnKVeuHO3atXOt4n76Xs3THdn+/fuzbNky4uPjKVOmDF26dGHatGkANGnShJCQEFasWAFAnz59WL16NXFxcURERHD11VczefJkABo1akRUVBTLli0DzKbj5s2bOXjwIKGhoVx77bVMnDgRgHr16hETE8OSJUsAuOqqq9i1axf79u0jKCiIQYMGMXnyZHJycqhVqxbVqlVj4cKFAHTq1IlDhw6xa9cu/Pz8GDp0KFOnTiUzM5Nq1apRr1495s+fD0CHDh2Ij49n27ZtAKRWacOE33cBcEfjYFKSTvHLL78AcMUVV5CSksKmTZsAGDx4MHPnziUpKYkKFSrQunVr17pdrVq1Ijs7m/Xr1wMwYMAAFi1aREJCAmXLluXKK69kxowZADRv3hw/Pz9Wr14NQL9+/fjrr784duwYUVFRdOvWjalTpwLQuHFjQkND+euvvwDo3bs369at4/Dhw4SHh9OnTx++//57ABo0aEB0dLSrsdujRw+2bt3KgQMHKFWqFAMGDOC7777DMAzq1q1LxYoVXWuHde3alb1797Jnzx4CAwMZPHgwP/zwA9nZ2dSsWZMaNWrw22+/AdCxY0fi4uLYsWMHDoeDG264gYCAACZOnEjVqlVp0KAB8+bNA6B9+/YkJCSwdetWwLz1dPbs2aSkpFC5cmWaNWvGzz//DECbNm1IS0tj48aNAF79HhEcHMzAgQP1HoH3v0cMHTqUmTNnkpqaSmxsLI0bN87Xe0R0dDRJSUl6j/j7PWL69Omkp6frPcKH3iM2fvUVtd57j5i/f2/TSpfGLzmZjRs36j1Cf4/QewTme0SLFi1cf4Z97T1Cf4/Qe0Re7xE5OTkcPHjQa98j0tLSyC+HYdN+8ocPHyY2NpalS5fSrl071/jLL7/M119/7fpmnq1nz54sXryYuLg4ov6e1jt16lQGDx5MampqnrOE8pohVLVqVRITE4mM9O5bcubNm0ePHj3sLkMuUXauk7pPmW8QNcqGsuDhLvj5OWyuyjspEyJWyoT4rMOH4amn4MsvzRlCISHw6KPw2GPMW7ZMuRA5i64VIlbenomkpCSioqLy1fMo8AyhwlKuXDn8/f3dZgMdO3bMbdbQaZUqVSI2NtbVDAJo2LAhhmFw8OBB6tat6/ac4OBggoODC7d4DxEfH293CVIIXv35TPPz09suVzPoEigTIlbKhPgkpxO6doW/ZyJw000wdixUrQooFyLnUiZErHwpE/laVLooBAUF0apVK9c0q9PmzZt33kWiO3TowOHDh0lJSXGNbd++HT8/P6pUqVKk9XqiMmXK2F2CXKK98al8uXQvAM/2a0Tt8tpi/lIoEyJWyoT4DMMwG0EAfn4wejS0bQvLl8M337iaQaBciJxLmRCx8qVM2HbLGJhr39xyyy1MmDCBdu3a8fHHH/PJJ5+wadMmqlevzujRozl06JBrG/uUlBQaNmxI27Ztef7554mPj2fkyJF07tyZTz75JF+fsyDTpzxdRkYGISEhdpchl+C+iWv4ad1hmlUtzfR72+NwaHbQpVAmRKyUCfEJy5fDqFFw771wyy3mmNNp7tKQx3VVuRCxUiZErLw9EwXpeVzyDKGkpCSmT5/Oli1bCvzcoUOH8vbbb/PCCy/QvHlzFi1axOzZs6levToAR44cYf/+/a7zw8PDmTdvHqdOnaJ169bcdNNN9O/fn3ffffdSvwyvdHrRM/FOf+1J4Kd1hwEYcWVNNYMKgTIhYqVMSIl24IB5O1i7dmZT6OWXrbOEznNdVS5ErJQJEStfykSB1xC6/vrr6dSpE//5z39IT0+ndevW7N27F8Mw+O677xg0aFCBXu/ee+/l3nvvzfOxL774wm3s7NW8RbxVTq6TJ6aYq/O3qFaa/k0r2VyRiIiIl0hJgXHj4PXXISPDbPwMH242hPxsWw1BRETE6xT4qrlo0SI6duwImJ0zwzA4deoU7777Li+99FKhFyjn16RJE7tLkIv03E+b2B2fCsDrg5tpdlAhUSZErJQJKXFmzYJ69eDFF81mUKdOsHIlfP45VK6cr5dQLkSslAkRK1/KRIEbQomJiURHRwMwZ84cBg0aRGhoKH379mXHjh2FXqCcnzff1+jL9sSn8s1y81bIMf0bUSdGC0kXFmVCxEqZkBInMhKOHIGaNeGHH2DhQmjZskAvoVyIWCkTIla+lIkCN4SqVq3KsmXLSE1NZc6cOfTs2ROAkydP+tQ3zhOsWLHC7hLkIoyeut718W3ta9hXSAmkTIhYKRPi9XbvhsmTzxx37AjTpsGWLTBo0HnXCboQ5ULESpkQsfKlTBS4IfTggw9y0003UaVKFSpXrkyXLl0A81YyX5paJXIxvvhjD8t3JwDw/o0tdKuYiIhIXpKS4PHHoWFDc32gAwfOPDZgAAQH21aaiIhISZGvbeeTkpIs25WtWrWK/fv306NHD8LDzdtdZs2aRenSpenQoUPRVVsIStK284mJiURFRdldhuTTseQM2rz8KwA3XF6VVwc1tbmikkeZELFSJsTr5ObCp5/C00/D8ePmWI8e8OGHULt2oXwK5ULESpkQsfL2TBT6tvNlypTh2LFjAFx11VXUrl2b6667ztUMAujbt6/HN4NKmtWrV9tdghTA6CkbXB8/0L2ujZWUXMqEiJUyIV7l11+hRQu46y6zGVS/PsycCb/8UmjNIFAuRM6lTIhY+VIm8tUQCg8P58SJEwAsXLiQ7OzsIi1K8icuLs7uEiSflu6K59etZlP1vWEtqBRVyuaKSiZlQsRKmRCvcfQo9O0LGzZAmTLwzjvmx337XtQ6QReiXIhYKRMiVr6UiYD8nNS9e3e6du1Kw4YNAbjuuusICgrK89wFCxYUXnVyQREREXaXIPlgGAavzN4CQPeGFejfLH/b4krBKRMiVsqEeLS0NAgNNT+uUMFcM+jUKRgzBv7e0bYoKBciVsqEiJUvZSJfawilp6fz5ZdfsmvXLt58803uvPNOQk9fwM8xfvz4Qi+yMJWkNYRycnIICMhXT09sdOVrCzh4Mh2A2fd3pFFl7/5z58mUCRErZUI8UnY2TJgAzz9v3hLWtm2xfnrlQsRKmRCx8vZMFKTnka+vslSpUtx9990ArFy5ktdee43SpUtfcqFyaSZPnsywYcPsLkMu4K2521zNoIEtY9UMKmLKhIiVMiEexTBg9mx45BHYutUc+/DDYm8IKRciVsqEiJUvZaLAba/ffvutKOoQKXEOnkzj3QU7AWhTM5q3rm9ub0EiIiJ22bgRHn4Y5s41j8uVgxdfhJEj7a1LRETEh+WrIfTQQw/x4osvEhYWxkMPPXTBc996661CKUz+WaNGjewuQc4jMyeX4Z/95Tr+38grbKzGdygTIlbKhHiEZ5+Fl18GpxMCA+GBB+Cpp8Cm2ebKhYiVMiFi5UuZyFdDaM2aNa6dxVavXo2jkHd7kIsTFRVldwlyHv/5dg27jqcC8M2IKwj0z9eGfnKJlAkRK2VCPEKNGmYz6LrrYNw4qFPH1nKUCxErZULEypcyka+G0Nm3iS1cuLCoapECWrZsGTVq1LC7DDnHhoOJzNt8FIAn+zTgyrrlbK7IdygTIlbKhBQ7w4AZM8DfH/r3N8eGD4eGDaFdO3tr+5tyIWKlTIhY+VImCjxt4Y477iA5OdltPDU1lTvuuKNQihLxZv3fXwJArXJh/KtTbZurERERKSZr18JVV5kzge6919xWHszmkIc0g0REROSMAjeEvvzyS9LT093G09PT+eqrrwqlKMmfnj172l2CnOP37cddHz/cs76NlfgmZULESpmQYhEXZy4O3bIlLFwIISHmrCAPpVyIWCkTIla+lIl8N4SSkpJITEzEMAySk5NJSkpy/Tp58iSzZ88mJiamKGuVc2zevNnuEuQcD3+/DoBy4cH0bVrJ5mp8jzIhYqVMSJFKT4dXXoG6deHTT83bxW64wdxS/qWXIDTU7grzpFyIWCkTIla+lIl8bztfunRpHA4HDoeDevXquT3ucDh4/vnnC7U4ubCDBw/aXYKcZc7GOOJTMgH4ekQbm6vxTcqEiJUyIUVq1SpztzCANm1g/Hho397emvJBuRCxUiZErHwpE/luCP32228YhsFVV13FlClTiI6Odj0WFBRE9erVqVy5cpEUKXkL9dCfvPkiwzB47sdNAFxeowwNK0XaXJFvUiZErJQJKXRHj0KFCubHV14J//kPtG0Lw4aBn3fsqKlciFgpEyJWvpQJh2EYRkGesG/fPqpVq+a1W88nJSURFRVFYmIikZH6R7sUjkcmr+OHVWYnef5DnakTE25zRSIiIoXowAEYPRqmT4dt2yA21u6KREREJA8F6Xnk60c569evx+l0ApCYmMiGDRtYv359nr+k+EycONHuEgTYeCjR1Qy6vUMNNYNspEyIWCkTcslSU2HMGKhfH/73P/P455/truqSKBciVsqEiJUvZSJft4w1b96cuLg4YmJiaN68OQ6Hg7wmFjkcDnJzcwu9SBFP9vb87a6Pn+rT0MZKREREConTCV9/DU8+CYcPm2NXXmmuE9S6tb21iYiISKHIV0Noz549lC9f3vWxeIa8FveW4vXxol3M33IMgJeva0yAv3esn1BSKRMiVsqEXBSnEzp3hiVLzOOaNWHcOBg0CLx0yYCzKRciVsqEiJUvZSJfDaHq1avn+bHYKyYmxu4SfNqBhDTe+MWcHdSwUiQ3XaFs2E2ZELFSJuSi+PlBhw6wbh08/TTcfz+EhNhdVaFRLkSslAkRK1/KRIGnM3z55ZfMmjXLdfzYY49RunRp2rdvz759+wq1OLmwJad/cie2uOOLFWTlOokMCeD7u9raXY6gTIicS5mQfElKMheM/uuvM2NPPQU7dsBjj5WoZhAoFyLnUiZErHwpEwVuCL3yyiuUKlUKgGXLlvH+++8zbtw4ypUrx6hRowq9QBFPNGXVQXYcSwFgws2tiAgJtLkiERGRAsrNhU8+gbp14dVX4cEH4fQakRERZ7aXFxERkRIpX7eMne3AgQPUqVMHgOnTpzN48GD+9a9/0aFDB7p06VLY9ckFXHXVVXaX4JOOJ2fy6A/rAOjfrDLt65SzuSI5TZkQsVIm5LwWLIBRo+D0DrH16pkLSPsA5ULESpkQsfKlTBR4hlB4eDgnTpwAYO7cuXTv3h2AkJAQ0tPTC7c6uaBdu3bZXYJPGvnVSpwGBAf48cp1je0uR86iTIhYKRPiZscOGDAAunUzm0GlS5s7h23YAP36lYhFo/+JciFipUyIWPlSJgrcEOrRowcjR45k5MiRbN++nb59+wKwadMmatSoUdj1yQVozabi9878Haw7cAqAN4Y0061iHkaZELFSJsTN77/DjBng7w/33Qc7d5q3igUF2V1ZsVEuRKyUCRErX8pEgRtC//3vf2nXrh3Hjx9nypQplC1bFoBVq1YxbNiwQi9Qzi/Ih/7y5gmOJmUwfr65q1hs6VL0b1bZ5orkXMqEiJUyIeTkwPbtZ45vv91sBG3YAO++C3//Pc6XKBciVsqEiJUvZcJhGKdXD/QNSUlJREVFkZiYSGRkpN3liJdYte8kwz5eTlauk+AAPzY934sA/wL3U0VERIrPnDnw0EOQkgLbtsHfm4KIiIhIyVWQnsdF/Yv21KlTvPnmm4wcOZI777yTt956i8TExIsqVi7e5MmT7S7BJ2TlOLnr61Vk5ToB+HrEFWoGeShlQsRKmfBRmzdD797mry1bIC0NNm2yuyqPoVyIWCkTIla+lIkC/6t25cqV1K5dm/Hjx5OQkEB8fDzjx4+ndu3arF69uihqlPPIycmxu4QSzzAM/vX1SuJTMgGYfHc72tSMtrkqOR9lQsRKmfAx8fHwn/9A06bm7KDAQHj4YXOdoNat7a7OYygXIlbKhIiVL2WiwNvOjxo1imuuuYZPPvmEgADz6Tk5OYwcOZIHH3yQRYsWFXqRkrdatWrZXUKJ9/xPm1m47TgArw1qwuU11AzyZMqEiJUy4UPi4qBhQzh1yjweMABefx3q1LGzKo+kXIhYKRMiVr6UiQI3hFauXGlpBgEEBATw2GOP0Vo/fSpW1apVs7uEEm3prni+WLoXgFvbVWfo5fp+ezplQsRKmfAhFStC166wZw+89Zb5seRJuRCxUiZErHwpEwW+ZSwyMpL9+/e7jR84cICIiIhCKUryZ+HChXaXUGIdPpXOXV+vch0/06+RjdVIfikTIlbKRAm2bh306weHDp0Z++wzWLlSzaB/oFyIWCkTIla+lIkCN4SGDh3KiBEjmDRpEgcOHODgwYN89913jBw5UtvOS4nx7IyNJGfkEBEcwIqnuhOoRaRFRMQTxMXBnXdCixYwaxY8++yZx0qXBn9/20oTERER71LgW8beeOMNHA4Ht956q2uxpcDAQO655x5effXVQi9Qzq9Tp052l1Aifb/iAPO3HAPg/ZtaUj4i2OaKJL+UCRErZaIEyciA8ePhlVfMbeQBhg6FZ56xty4vpFyIWCkTIla+lIkCT3sICgrinXfe4eTJk6xdu5Y1a9aQkJDA+PHjCQ7WP5yL06Gzp4lLoTAMgy+X7QWgc73ydK5X3t6CpECUCRErZaKEmDrVXDD6ySfNZtDll8OSJfDdd1Cjht3VeR3lQsRKmRCx8qVMXPR9MKGhoZQuXZro6GhCQ0MLsybJp127dtldQonz9fJ9bDqcBMDTfRvaXI0UlDIhYqVMlBDLl8PevRAbC19/bR536GB3VV5LuRCxUiZErHwpEwVuCOXk5PDMM88QFRVFjRo1qF69OlFRUTz99NNkZ2cXRY1yHn5+WtemMO0+nsKzMzYBcFv7GtStoEXSvY0yIWKlTHipgwdh27Yzx089Zd4qtm0b3Hwz6Pf1kigXIlbKhIiVL2XCYRiGUZAn3H333UybNo0XXniBdu3aAbBs2TKee+45rr32WiZMmFAkhRaWpKQkoqKiSExMJDIy0u5yxEPsjU+l5/hFZOU6CQ3yZ+2zPQkK8J03AhER8QBpafD66/Daa9CyJSxeDA6H3VWJiIiIFylIz6PA/+KdOHEiX3zxBXfddRdNmzaladOm3HXXXXz22WdMnDjxoouWgps6dardJZQIp9Ky6PLGQrJynQBMuLmVmkFeSpkQsVImvITTCd98A/XqwXPPQXq6OX7ypK1llVTKhYiVMiFi5UuZKPC/ekNCQqiRxwKGNWrUICgoqDBqknzKzMy0uwSvZxgGvd9Z7Dqedf+VdNJC0l5LmRCxUia8wNKl0LYt3HILHDoE1avDpEnm7KDoaLurK5GUCxErZULEypcyUeCG0L///W9efPFFyzcpMzOTl19+mf/85z+FWpxcWLVq1ewuwevd+tlfHEnMAMxFpC+rHGVzRXIplAkRK2XCw82fby4OvWIFhIfD2LGwdStcf71uFStCyoWIlTIhYuVLmQgo6BPWrFnDr7/+SpUqVWjWrBkA69atIysri27dujFw4EDXub401coO9erVs7sEr/bjusMs3hEPQK3yYYzsWMvmiuRSKRMiVsqEBzKMM82erl2heXNo3RpefBEqVrS1NF+hXIhYKRMiVr6UiQLPECpdujSDBg2iX79+VK1alapVq9KvXz8GDhxIVFSU5ZcUrfnz59tdgtf66Pdd3D9xDQB1YsKZ+2AnmyuSwqBMiFgpEx4kNxf+7/+gXTvIMGem4u9vbiH/ySdqBhUj5ULESpkQsfKlTBR4htDnn39eFHWIFJmcXCdT1xxi/uaj7E9II9Dfjw2HEgHoXK88H9zUkgB/LSItIiJF5LffYNQoWLfOPP74Y7j/fvPj4GD76hIRERGfVuCGkHiODh062F2Cx9t0+P/Zu+/wKMr1jePf9EpCJ5TQe+8IUqUIKIJIscs5ogf1iNiwomDBCvjjeECPqBw9Cog0RaSoVEXpUkKTXgIIgSQQ0uf3x8jiuKEsJDu7mftzXbnYnZ2deXbDvSEP77xvMjeMX5HnY70alWP8rY0J0DwNhYYyIWKlTNhs50548kmYM8e8HxsLL7wAQ4bYW5fDKRciVsqEiJWTMqGGkB87fvy4oya8yktqehZ7j6eRmZPDmYwcjp/OIOlMJmczc/j14Cm+23rMsv+tLeKpHVeERvFFaRxfVM2gQkaZELFSJmySkwPDh8O//gVZWealYf/4B4waBSVL2l2d4ykXIlbKhIiVkzKhhpAf2759O02bNrW7DK86k5HN9DUHmLr6ANuOpF72874c0prmlbV8b2HnxEyIXIwyYZOgINi1y2wGde8OY8ZA3bp2VyV/UC5ErJQJESsnZUINIfFphmHwzaZEDp08y6KEo6zZdzLP/QICoFqpaNIysgkPCaJoZAhxseFEhwVzf/uqVC9dxMuVi4iIoyxYAA0bQtmy5v233zZHBfXoYW9dIiIiIhcQYBiGcbUHOXXqFEWLFs2HcgpeSkoKsbGxJCcnExMTY3c5VyU3N5fAwMI7GfLOo6l0Hbcsz8eurV6C8kUjuL1VJRrHF/VuYeKzCnsmRDylTHjB1q3wxBMwbx787W/w0Ud2VySXoFyIWCkTIlb+nglPeh4ev8o33niDadOmue4PGDCAEiVKUL58eX49t3qGeMXcuXPtLiHfpWVmM27RDpq/8p1bM+iOVhV5/oY6bHu5O58NvoY3+zVSM0gsCmMmRK6GMlGATpyAhx+GBg3MZlBwMBQvDlf//2xSwJQLEStlQsTKSZnw+JKx999/n//9738ALFq0iEWLFvHtt9/yxRdf8OSTT7Jw4cJ8L1LydubMGbtLyFe/HjhF73//6LZ91E31uKdNZe8XJH6nsGVC5GopEwUgMxMmTDAniD51ytzWuze89RbUqGFraXJ5lAsRK2VCxMpJmfC4IZSYmEh8fDxgds4GDBhAt27dqFy5Mq1atcr3AuXCypcvb3cJ+WbP8TOWZlDtuCL0aVKeQW0qEx4SZGNl4k8KUyZE8oMyUQDeeguef9683bAhjBsH111nb03iEeVCxEqZELFyUiY8bggVK1aMAwcOEB8fz/z583nllVcAc/LfnJycfC9QLqx+/fp2l5AvcnIN7vlolev+D493oGqpaBsrEn9VWDIhkl+UiXySnW1eEgbw0EMwZQo88gj8/e/mimLiV5QLEStlQsTKSZnweA6hvn37cvvtt9O1a1dOnDhBjz9Wz9iwYQPVq1fP9wLlwhYsWGB3Cfni5gk/sj8pDYAFw9qrGSRXrLBkQiS/KBNX6ehRuP9+6Nr1/NxARYvCpk1w331qBvkp5ULESpkQsXJSJjweITRu3DgqV67MgQMHePPNN4mONn95T0xM5MEHH8z3AqVw+z01g40HkwF4tEtNasVpeXgREbFZejr83//Bq69Caqq5beVKaNPGvB0QYF9tIiIiIvnE44ZQSEgITzzxhNv2YcOG5Uc94oHCMGfT/32/w3V7aGeNMJOrUxgyIZKflAkPGQZ8+SUMHw5795rbmjUz5wk61wwSv6dciFgpEyJWTsrEZTWEvvrqK3r06EFISAhfffXVRfe96aab8qUwubTTp0/bXcJVOXkmky/WHATgqe61CdD/uMpV8vdMiOQ3ZcIDR49Cv36wYoV5v1w5eO01uPNOCPT4CnvxYcqFiJUyIWLlpExcVkOoT58+HDlyhNKlS9OnT58L7hcQEKCJpb1oy5YtNGzY0O4yrohhGDR7ZRG5BpSMDuNv11a2uyQpBPw5EyIFQZnwQIkS5jLyERHw5JPmKKGoKLurkgKgXIhYKRMiVk7KxGU1hHJzc/O8LXKlpq0+QO4f83OOuLGOlpYXERHvSkuD996DBx+E8HBzFbFPPzUbQ/HxdlcnIiIiUuACDOPcshnOkJKSQmxsLMnJycTExNhdzlXJysoiJCTE7jI8lpaZTYe3lvB7agaVSkSy9MlOdpckhYS/ZkKkoCgTecjNNZeNf/ppOHgQXn8dnnrK7qrEi5QLEStlQsTK3zPhSc/jii6KP3PmDPPmzeO9995j/Pjxli/xnoULF9pdwhV5b+lufk/NAOCLf7S2uRopTPw1EyIFRZn4i3Mrhd15p9kMqlgRatSwuyrxMuVCxEqZELFyUiY8XmVs/fr19OzZk7S0NM6cOUPx4sU5fvw4kZGRlC5dmqFDhxZEnZKHlJQUu0vwmGEYzFhrTiT9cp/6lIkJt7kiKUz8MRMiBUmZ+MO+feaIoKlTzfvR0fDMM/Doo+acQeIoyoWIlTIhYuWkTHg8QujRRx+lV69eJCUlERERwc8//8y+ffto1qwZb7/9dkHUKBdQpkwZu0vw2IrfjnPo1FlCgwPp07ic3eVIIeOPmRApSMrEHx5/3GwGBQTA3/8OO3bAs8+qGeRQyoWIlTIhYuWkTHjcENqwYQOPP/44QUFBBAUFkZGRQXx8PG+++SbPPvtsQdQoF9C8eXO7S/DYhMW7AOhRP44i4f57Xab4Jn/MhEhBcmwmcnLgz0vGjh4NXbvC2rXw4YdQtqx9tYntHJsLkQtQJkSsnJQJjxtCISEhBAQEAGbnbP/+/QDExsa6bot3fPPNN3aX4JFjqems3H0CgLtbV7a3GCmU/C0TIgXNkZlYuhRatIBhw85vq1kTFi6EJk1sK0t8hyNzIXIRyoSIlZMy4fEcQk2aNGHNmjXUrFmTTp068cILL3D8+HE+/fRTGjRoUBA1SiExa90hAOqUjaFZpWI2VyMiIoXKrl0wfDjMnGne37sX3noLiunnjYiIiEhePB4hNHr0aMr+MdT65ZdfpkSJEjzwwAMcO3aM//znP/leoFxYs2bN7C7BI1+sOQBA17rOuSZTvMvfMiFS0ByRieRksxFUt67ZDAoMhAcegO3b1QySPDkiFyIeUCZErJyUCY9GCBmGQalSpahXrx4ApUqVYt68eQVSmFxaVlaW3SVctgNJaez6/QwAbauXtLkaKaz8KRMi3lDoM/HTT9CnD/z+u3m/WzcYOxb++HeKSF4KfS5EPKRMiFg5KRMejRAyDIMaNWpw8ODBgqpHPLBx40a7S7hsE5eak0mHBQfSorL+x1YKhj9lQsQbCn0m6tSB3FyoXRu++Qbmz1czSC6p0OdCxEPKhIiVkzLhUUMoMDCQGjVqcOLEiYKqRwqh9KwcPv/FnHD86R61XZOSi4iIeGTbNnjuOTAM836xYrB4MWzcCD17msvKi4iIiMhlCTCMc/+qujzffPMNr7/+OhMnTqR+/foFVVeBSUlJITY2luTkZGJiYuwu56qcPXuWiIgIu8u4pH8v/o23FmwHYNPIblpuXgqMv2RCxFsKTSaSkmDUKJgwAbKzzbmCbr7Z7qrETxWaXIjkE2VCxMrfM+FJz8PjSaXvvPNOVq1aRaNGjYiIiKB48eKWL/GeZcuW2V3CJeXmGvz3p70AjLixrppBUqD8IRMi3uT3mcjKgvHjoXp188/sbOjVS5eFyVXx+1yI5DNlQsTKSZnweNn5cePG6ZIfH5GUlGR3CZe09UgKx1IzALijVUWbq5HCzh8yIeJNfpsJwzDnBHriCXO1MIAGDcwJo7t0sbc28Xt+mwuRAqJMiFg5KRMeN4QGDRpUAGXIlShRooTdJVzS/3425w66pmpxwkOCbK5GCjt/yISIN/ltJnJz4emnzWZQqVLwyitw770QpJ8jcvX8NhciBUSZELFyUiY8nkOoU6dO3HnnnfTr14/Y2NiCqqvAFKY5hNLS0oiMjLS7jAvKyTWo9uw8AP7v1sb0blze5oqksPP1TIh4m19l4vffoUgRCA837y9aBN99B88+C3747w3xXX6VCxEvUCZErPw9EwU6h1CDBg14/vnniYuL45ZbbmH27NlkZmZecbFy5ebMmWN3CRc1ZdV+1+0udcrYWIk4ha9nQsTb/CITGRnw1lvn5wk6p2tXeOMNNYMk3/lFLkS8SJkQsXJSJjxuCI0fP55Dhw4xZ84cihQpwj333ENcXBz3338/S5cuLYgaxU+N+noLAAOaVyAqzOOrE0VEpDAzDHO1sLp1YfhwSEmB+fPPLykvIiIiIgXK44YQQGBgIN26dWPy5MkcPXqU999/n1WrVnHdddfld31yEY0bN7a7hAs6lZZJVo75j3pdKibe4suZELGDz2Zi3Tro1AluuQV274ayZWHyZPMSMS1cIQXMZ3MhYhNlQsTKSZm4qmEbR44cYerUqfzvf/9j48aNtGjRIr/qkssQGHhF/TyvmL3+EGD+u751VedMyiX28uVMiNjBJzPx7rswdKg5Eig8HJ580hwhFB1td2XiED6ZCxEbKRMiVk7KhMevNCUlhY8//piuXbsSHx/PxIkT6dWrFzt27OCXX34piBrlAtatW2d3CRc064+G0ONdaxIYqP/tFe/w5UyI2MEnM9GlCwQHw+23m6uIvfSSmkHiVT6ZCxEbKRMiVk7KhMcjhMqUKUOxYsUYMGAAo0eP1qggcbNu/0l+PZgMQK9G5WyuRkREbGMYMHUqbN1qNn4AateG336DihXtrU1ERETE4Txedn7hwoV06dLFb4dRFaZl51NTUylSpIjdZbi5/5M1LEw4SrsaJfn03lZ2lyMO4quZELGLrZn4+Wd49FHzz4AA2LABGja0pxaRP9HPChErZULEyt8zUaDLznfr1s1vm0GFzapVq+wuwU3y2SwWJhwF4O9tq9hcjTiNL2ZCxE62ZOLAAbjjDmjd2mwGRUWZo4Nq1PB+LSJ50M8KEStlQsTKSZnQWuB+7NixY3aX4GbmuoOu222rl7SxEnEiX8yEiJ28mokzZ+CNN+CttyA93RwVNGgQvPIKlNPlw+I79LNCxEqZELFyUibUEPJjsbGxdpfgZtTXCQDc3boSIUEaSSbe5YuZELGTVzORmQn//rfZDGrfHsaNg6ZNvXd+kcuknxUiVsqEiJWTMuHxHEL+rjDNIZSRkUFYWJjdZbi8t3QXr3+7DYDPB7eijUYIiZf5WiZE7FbgmVi/Hho3NkcDAXz2GUREwM03n98m4mP0s0LESpkQsfL3TBToHEJ/lp6efjVPl6s0c+ZMu0uw+HTlPgDaVCuhZpDYwtcyIWK3AsvE7t3Qr585Auirr85vv+MO6NtXzSDxafpZIWKlTIhYOSkTHjeEcnNzefnllylfvjzR0dHs3r0bgBEjRvDhhx/me4HiH9buO8mhU2cBeLt/I5urERGRApGSAk89BXXqwIwZEBgImzbZXZWIiIiIXAGPG0KvvPIKkydP5s033yQ0NNS1vUGDBkyaNClfi5OLq1+/vt0luExc8hsAlUtEUq5ohM3ViFP5UiZEfEG+ZSInB/7zH6heHd5805wvqGtXcyn555/Pn3OIeIl+VohYKRMiVk7KhMcNoU8++YT//Oc/3HHHHQQFBbm2N2zYkG3btuVrcXJxkZGRdpcAQGp6Fr/sTgLgXi01LzbylUyI+Ip8y8Rtt8E//gG//w41a8LcubBgATRokD/HF/Ei/awQsVImRKyclAmPG0KHDh2ievXqbttzc3PJysrKl6Lk8qxatcruEgB4cc4WUjOyiS8ewe2tKtldjjiYr2RCxFfkWyb+9jcoVgzeeQc2b4YbbtA8QeK39LNCxEqZELFyUiY8Xna+Xr16LF++nEqVrL/4T58+nSZNmuRbYeIf0rNymLn+EAC3tqhIUKB+QRAR8WtJSfDSS1ClCjzyiLmtRw/Yuxf8fHVOERERETnP44bQiy++yF133cWhQ4fIzc1l5syZbN++nU8++YS5c+cWRI1yAT169LC7BD5Zudd1W5eLid18IRMivsSjTGRlwXvvwciRZlMoJgbuuQeKFjUfVzNICgn9rBCxUiZErJyUCY8vGevVqxfTpk1j3rx5BAQE8MILL7B161a+/vprunbtWhA1ygX8+uuvdpfA6HnmvFHd68URHhJ0ib1FCpYvZELEl1xWJgwD5s2Dhg1h6FCzGVS/Pnz55flmkEghop8VIlbKhIiVkzLh8QghgOuvv57rr78+v2sRDx0+fNjW809csst1+8Wb6tpYiYjJ7kyI+JpLZmLnTnj4YXOCaICSJeHll2HwYAi+on8iiPg8/awQsVImRKyclAn9a8+PRUdH23bus5k5vDHfHB3UpU4ZysZqqXmxn52ZEPFFl8xEdjZ89x2EhMCwYfDccxAb65XaROyinxUiVsqEiJWTMhFgGIZxqZ2KFStGwGWuJpKUlHTVRRWklJQUYmNjSU5OJsbP50PIyckhKMiey7TmbUrkwc/WAfDbqz0IDvL46kORfGdnJkR8kVsmMjJg2TL48yXeH38M7dtDtWreL1DEBvpZIWKlTIhY+XsmPOl5XNZv8e+88w7jxo1j3LhxPP/884B52djIkSMZOXKk6/KxESNGeFzshAkTqFKlCuHh4TRr1ozly5df1vN+/PFHgoODady4scfnLCy++OIL2849b1MiAB1qllIzSHyGnZkQ8UWuTBgGzJoF9epB9+6wadP5nf72NzWDxFH0s0LESpkQsXJSJi7rkrF77rnHdfuWW27hpZde4p///Kdr29ChQ3n33Xf57rvvePTRRy/75NOmTWPYsGFMmDCBa6+9lvfff58ePXqQkJBAxYoVL/i85ORk7r77bjp37szRo0cv+3ySf1b8dhyAbvXK2FyJiIhc1Pr18NhjsGSJeT8uDg4fhgYNbC1LREREROzl8dCOBQsW0L17d7ft119/Pd99951Hxxo7diz33nsvgwcPpk6dOrzzzjvEx8czceLEiz7vH//4B7fffjutW7f26HyFTe3atW0576FTZzmVlgVA17pqCInvsCsTIj4pMZFu06ZBs2ZmMyg83JwjaMcO0MIQ4mD6WSFipUyIWDkpEx43hEqUKMGsWbPcts+ePZsSJUpc9nEyMzNZu3Yt3bp1s2zv1q0bP/300wWf9/HHH7Nr1y5efPHFyzpPRkYGKSkplq/Conjx4rac9/Nf9gHQtGJRShcJt6UGkbzYlQkRn5OdDddcQ4k5c8zLxW69FbZtg1degSJF7K5OxFb6WSFipUyIWDkpEx6vMjZq1CjuvfdelixZ4hqh8/PPPzN//nwmTZp02cc5fvw4OTk5lCljHWFSpkwZjhw5kudzdu7cydNPP83y5csJvszlcF977TVGjRrltn369OlERkbSt29fvv/+e5KTkyldujQtW7Zk7ty5ADRt2pTc3Fw2bNgAQO/evVmxYgUnTpygePHitG/fntmzZwPQsGFDQkJCWLt2LQA33HADa9as4ejRo8TExNCtWze+/PJLAOrVq0d0dDS//PILYI6u2rx5M4cOHSIqKoobb7yRadOmAVCrVi1KlizJjz/+CECXLl3YsWMH+/fvJzExkccee4xp06aRm5tLtWrVKF++PMuWLQOgY8eO7N+/n927dxMcHEz//v2ZMWMGmZmZVKpUiWrVqvHDDz8A0LZtW44dO8aOHTsAuO2225gzZw5paWlUqFCBunXrsnDhQgD+/as5MVWxjKNMmTKF/v37M3/+fFJTU4mLi6Np06bMmzcPgBYtWpCens6mP+aruPnmm1myZAknT56kZMmStG7dmq+//hqAJk2aALB+/XoAevXqxcqVKzl+/DjFihWjY8eOrmZkgwYNCA8PZ/Xq1QD07NmTdevWceTIEYoUKUL37t2ZPn06AHXr1iU2NpaVK1cCZtMxISGBgwcPEhkZSe/evZkyZQoANWvWpHTp0qxYsQKA6667jl27drFv3z5CQ0O55ZZbmD59OtnZ2VStWpWKFSuy5I/LMNq3b8+hQ4fYtWsXgYGBDBw4kJkzZ5KRkUHFihWpWbOmaxTdtddey/Hjx9m+fTsAAwcOZO7cuZw5c4by5ctTv359FvyxDHSrVq04ffo0W7ZsAaBfv34sXLiQlJQUypQpQ/Pmzfnmm28AaNasGVlZWWzcuBGAPn36sGzZMpKSkihRogRt27Zlzpw5ADRu3JjAwEDWrTMnB7/xxhtZtWoVx44dIzY2ls6dOzNz5kwA6tevT2RkJKtWrQKgR48e/Prrrxw+fJjo6Gh69uzputa2du3aFC9e3NXY7dq1K9u2bePAgQNERETQp08fpk6dimEY1KhRg7i4ONfcYZ06dWLv3r3s2bOHkJAQ+vXrx5dffklWVhZVqlShcuXKLF68GIB27dpx5MgRdu7cSUBAALfeeiszZ84kLi6O+Ph4ateuzaJFiwBo06YNSUlJbNtmrow3YMAA5s2bx+nTpylXrhyNGjXi22+/BaBly5akpaWxefNmAL/+jAgLC6Nv375e/4xo3bo1ycnJJCQkAOgzwlufEX/8ne3Xvz8LFy6kbIcOlFu2jCKTJvHV77/DTz/RLCPD0Z8Rs2fP5uzZs/qMcPhnxKFDh+jevbvzPiP07wh9RlzgM2LDhg1ERJgrBuszwsH/jtBnhOsz4tChQ9x6661++xmRlpbG5bqsVcb+6pdffmH8+PFs3boVwzCoW7cuQ4cOpVWrVpd9jMOHD1O+fHl++ukny6Vfr776Kp9++qnrzTwnJyeHa665hnvvvZchQ4YAMHLkSGbPnu16g/KSkZFBRkaG635KSgrx8fGFYpWxKVOmcNttt3n1nLt+P03nMUsBWD68E/HFI716fpGLsSMTIj5h1Sp49FF46im46SZzW04OU6ZO5bY77rC3NhEfo58VIlbKhIiVv2fCk1XGrqghlB8yMzOJjIxk+vTp3Hzzza7tjzzyCBs2bGDp0qWW/U+dOkWxYsUsy7/l5uZiGAZBQUEsXLiQ66677pLnLUzLzh8/fpySJUt69ZzvL93Fa99uo2GFWL76Z1uvnlvkUuzIhIitDh6EZ56B//3PvN+kCaxdCwEBgDIhkhflQsRKmRCx8vdM5Puy8wUhNDSUZs2auYZZnbNo0SLatGnjtn9MTAybNm1iw4YNrq8hQ4a4hjl6MjqpsPjrKCpv+N8f8wd1rFXa6+cWuRQ7MiFiizNn4MUXoWbN882gQYNg7lxXMwiUCZG8KBciVsqEiJWTMuHxHEL56bHHHuOuu+6iefPmtG7dmv/85z/s37/fdUnYM888w6FDh/jkk08IDAykfv36lueXLl2a8PBwt+1OceDAAa+eLzM7lwNJZwHoUkcNIfE93s6EiC2+/hqGDDGXjgdo1w7GjTNXE/sLZULEnXIhYqVMiFg5KRO2NoQGDhzIiRMneOmll0hMTKR+/frMmzePSpUqAZCYmMj+/fvtLNGnnZv8zVvW7Ety3a5fLtar5xa5HN7OhIgtAgPNZlCVKvDWW9C3r2VU0J8pEyLulAsRK2VCxMpJmbBtDiG7FKY5hLxt9Lyt/GfZbrrUKcOke5rbXY6IiDPs2QMJCXDDDeZ9w4CpU+HmmyE83N7aRERERMSnFOgcQkePHr3gY+eWnxPvmDp1qtfOlZtr8NUG8/KE6+uV8dp5RTzhzUyIFLiUFHPC6Dp14I474Phxc3tAANx222U1g5QJEXfKhYiVMiFi5aRMeNwQatCgAV999ZXb9rffftuREzvbyZuDuxYmHOFISjqhwYH0aFDWa+cV8YTDBjxKYZWTAx98ADVqwOuvQ0YGNG8OqakeH0qZEHGnXIhYKRMiVk7KhMcNoaeeeoqBAwcyZMgQzp49y6FDh7juuut46623mDZtWkHUKBdQo0YNr53rq1/N0UHNKhYjOszWqadELsibmRApED/8AE2bwv33w7Fj5ipiX30FixaZcwZ5SJkQcadciFgpEyJWTsqEx7/ZP/7443Tp0oU777yThg0bkpSUxDXXXMPGjRspU0aXEnlTXFycV85jGAbzNh0BoJsuFxMf5q1MiBSI/fuhWzdzhFDRouay8g8+CKGhV3xIZULEnXIhYqVMiFg5KRMejxACqFq1KvXq1WPv3r2kpKQwYMAANYNssHz5cq+cZ8fR067bNzcp75VzilwJb2VCJN9kZJy/XbEi/POf8PDD8NtvMGzYVTWDQJkQyYtyIWKlTIhYOSkTHjeEfvzxRxo2bMhvv/3Gxo0bmThxIg8//DADBgzg5MmTBVGj2GzpjmMANK1YlKKRV/fLiYiIANnZ8O9/Q6VKsHnz+e3jxsH48VCihH21iYiIiIgjeNwQuu666xg4cCArV66kTp06DB48mPXr13Pw4EEaNGhQEDXKBXTq1Mkr5/l5dxIA3es7Z+ic+CdvZULkqsyfDw0bmqOBjh6Fd989/1hAQL6eSpkQcadciFgpEyJWTsqExw2hhQsX8vrrrxMSEuLaVq1aNVasWME//vGPfC1OLm7v3r1eOc/Gg6cAqFs21ivnE7lS3sqEyBVJSIAePcyvrVvNUUATJlgbQvlMmRBxp1yIWCkTIlZOyoTHDaEOHTrkfaDAQEaMGHHVBcnl27NnT4GfY8vhZI6fziQgAJpWKlrg5xO5Gt7IhMgVee45c1TQ/PkQEgKPP27OE/TAAxBccCs3KhMi7pQLEStlQsTKSZnw+F+hL7300kUff+GFF664GPHMn0dpFZQFW44C0LZ6SSJDtdy8+DZvZELkipQsaa4e1qcPvPUWVK/uldMqEyLulAsRK2VCxMpJmQgwDMPw5AlNmjSx3M/KymLPnj0EBwdTrVo11q1bl68F5reUlBRiY2NJTk4mJibG7nJ8Xrs3f+BA0lme6l6bBzpWs7scERHfZxjw1VdQpAhcd525LTMTfvkF2rWztzYRERERKdQ86Xl4fMnY+vXrLV+bN28mMTGRzp078+ijj15x0eK5L7/8skCPn56Vw4GkswDUK6fmmfi+gs6EyCX9+it07myOBHrwQcjKMreHhtrSDFImRNwpFyJWyoSIlZMy4XFDKC8xMTG89NJLmkPIy7LO/aJRQBISU1y3r61eskDPJZIfCjoTIhd05Ajcdx80aQKLF0NYGPTtay4vbyNlQsSdciFipUyIWDkpE/k2KcypU6dITk7Or8PJZahSpUqBHn/P72fM85SMIigwf5dCFikIBZ0JETfp6TBuHIweDadPm9sGDoTXX4fKlW0tDZQJkbwoFyJWyoSIlZMy4XFDaPz48Zb7hmGQmJjIp59+Svfu3fOtMLm0ygX8y8aOo6kAtKpSvEDPI5JfCjoTIm6WLIFnnzVvt2xpNofatLG1pD9TJkTcKRciVsqEiJWTMuHxJWPjxo2zfI0fP54lS5Zwzz338J///KcgapQLWLx4cYEef9Mhc8RXgwqxBXoekfxS0JkQASAp6fzt66+He+6BTz+FlSt9qhkEyoRIXpQLEStlQsTKSZnweITQnj17CqIO8TGGYbD9iDlCqFaZIjZXIyLiAw4dMkcDzZ0LO3ZAiRIQEACTJ9tdmYiIiIiIx/JlUmmxR7sCXLHm14PJnDiTSVhwIPXKaYSQ+IeCzIQ4WFoajBoFNWvCJ5+YI4S++cbuqi6LMiHiTrkQsVImRKyclIkrmlR69erVTJ8+nf3795OZmWl5bObMmflSmFzakSNHqFChQoEce8n2YwB0rFWKiNCgAjmHSH4ryEyIA+Xmwuefw9NPm6ODwLwkbNw4c74gP6BMiLhTLkSslAkRKydlwuMRQlOnTuXaa68lISGBWbNmkZWVRUJCAj/88AOxsRpJ4k07d+4ssGMnHDaXnG9RWRNKi/8oyEyIw2RlQdu2cNddZjOoUiWYNg1WrPCbZhAoEyJ5US5ErJQJESsnZcLjhtDo0aMZN24cc+fOJTQ0lP/7v/9j69atDBgwgIoVKxZEjXIBAQEFtxT8woSjAFQuEVVg5xDJbwWZCXGYkBBo1Aiio80l5bdtgwEDzDmD/IgyIeJOuRCxUiZErJyUiQDDMAxPnhAVFcWWLVuoXLkyJUuWZPHixTRo0ICtW7dy3XXXkZiYWFC15ouUlBRiY2NJTk4mJibG7nJ80rHUdFq++j0AvzzbmTIx4TZXJCJSwFJT4bXX4M47oW5dc9uJE+ZIobg4e2sTEREREblMnvQ8PB4hVLx4cVJTzdWnypcvz+bNmwE4deoUaWlpV1CuXKnZs2cXyHGX7TgOQIViEWoGiV8pqExIIZaTAx9+CDVqmA2hxx8//1iJEn7fDFImRNwpFyJWyoSIlZMycdkNob///e+kpqbSrl07Fi1aBMCAAQN45JFHuO+++7jtttvo3LlzgRUq7s6ePVsgx1256wQAXeqUKZDjixSUgsqEFFKLF0Pz5jB4MBw9CtWrw5Ah4NnAWZ+mTIi4Uy5ErJQJESsnZeKyVxn773//y+uvv867775Leno6AM888wwhISGsWLGCvn37MmLEiAIrVNzFx8cXyHG3HE4GoGEFTRIu/qWgMiGFzG+/wZNPwrn//YmNhRdfhIcegtBQW0vLb8qEiDvlQsRKmRCxclImLrshdG6qoeLFz686FRgYyPDhwxk+fHj+VyaXVLt27Xw/ZlpmNjuOmpcEXlO1RL4fX6QgFUQmpBCaM8dsBgUFmSOCRo6EkiXtrqpAKBMi7pQLEStlQsTKSZnwaA4hJ8227Q/OXbqXnzYdTCbXgNiIEMoVjcj344sUpILIhBQC2dmwd+/5+w8/bF4mtnEjvPtuoW0GgTIhkhflQsRKmRCxclImLnuEEEDNmjUv2RRKSkq6qoLEXueWm+9Qs5TNlYiI5IMFC+CxxyA312wAhYSYl4V98IHdlYmIiIiI2MqjhtCoUaOIjdW8Mr6iTZs2+X7M6WsOANCuRuH9H3MpvAoiE+Kntm41Vwz79lvzfvHi5raGDe2ty8uUCRF3yoWIlTIhYuWkTHjUELr11lspXbp0QdUiHkpKSqJSpUr5dryzmTmkpGcD0KxSsXw7roi35HcmxA+dOGHOCTRxormkfHCweYnYiBFQzHmfa8qEiDvlQsRKmRCxclImLnsOIc0f5Hu2bduWr8ebtf6Q63aVklH5emwRb8jvTIif2bvXXDr+3XfNZtBNN8GWLTB2rCObQaBMiORFuRCxUiZErJyUCY9XGZPCa/Mfy813qVNaDUAR8T+VKkHTpnD8uNkE6tzZ7opERERERHxWgOGwTk9KSgqxsbEkJycTExNjdzlXJScnh6CgoHw7XpVnvsEwYEz/RtzSrEK+HVfEW/I7E+LjNm40Lw+bNMmcIwjg99/N2/p7ACgTInlRLkSslAkRK3/PhCc9D4+WnRffMm/evHw7Vk6uQUig+dehRpnofDuuiDflZybEhx09CvffD02awKxZ8NJL5x8rVUrNoD9RJkTcKRciVsqEiJWTMuHRpNLiW06fPp1vx9r9+2kyc3IBqFvWv0dOiXPlZybEB6Wnw//9H7z6KqSmmtv694dHHrG3Lh+mTIi4Uy5ErJQJESsnZUINIT9Wrly5fDvWku2/A1A7rgjBQRo4Jv4pPzMhPmbmTHjiCdizx7zfvDmMGwdt29pbl49TJkTcKRciVsqEiJWTMqHf/P1Yo0aN8u1Ya/YlARAbEZJvxxTxtvzMhPiYBQvMZlC5cvDf/8Ivv6gZdBmUCRF3yoWIlTIhYuWkTKgh5Me+/fbbfDvW8p3HAWhRuXi+HVPE2/IzE2Kzw4fNZeTPeeklGDUKduyAu++GQP34uhzKhIg75ULESpkQsXJSJvQvauFsZg5pmTkA9GninOFxIuKD0tLM5k+NGvDQQ+e3lykDL7wAUVH21SYiIiIiUohoDiE/1rJly3w5TkJisut2tVJaYUz8V35lQmyQmwtTpsDTT8PBg+a2kyfNyaOLFLG3Nj+mTIi4Uy5ErJQJESsnZUIjhPxYWlpavhxn8TZzQukapaMJCAjIl2OK2CG/MiFetnIltG4Nd95pNoMqVoSpU+HHH9UMukrKhIg75ULESpkQsXJSJtQQ8mObN2/Ol+N8t/UoAE0qFs2X44nYJb8yIV709dfQpg2sWgXR0eaS8tu2wcCBoAb1VVMmRNwpFyJWyoSIlZMyoUvGHC4zO5dtR1IBuLdtVZurERHH6dYNqleH9u3hlVegbFm7KxIRERERcYQAwzAMu4vwppSUFGJjY0lOTiYmJsbucq5KRkYGYWFhV3WM346dpsvYpQDsea2nLhkTv5YfmZAClJtrLhn/2Wcwfz4E//F/EmlpEBlpb22FlDIh4k65ELFSJkSs/D0TnvQ8dMmYH/v++++v+hhbDpsTSheLDFEzSPxefmRCCsiyZdCiBfz97/D99/DJJ+cfUzOowCgTIu6UCxErZULEykmZUEPIjyUnJ196p0tIOJwCQLe6cVd9LBG75UcmJJ/t2gW33AIdOsC6dRAbC2+/DXfcYXdljqBMiLhTLkSslAkRKydlQnMI+bHSpUtf9TG++vUwALXLaiUf8X/5kQnJJ1lZ8Nxz8H//B5mZEBgI//gHjBoFpUrZXZ1jKBMi7pQLEStlQsTKSZlQQ8iPtWzZ8qqebxgGicnpANSO8+/5lETg6jMh+Sg4GFavNptB3brBmDFQv77dVTmOMiHiTrkQsVImRKyclAldMubH5s6de1XP3/X7adftRvGxV1uOiO2uNhNylRYtgqQk83ZAAIwfD998Y04grWaQLZQJEXfKhYiVMiFi5aRMqCHkYIu3/Q5Ao/iiRIZqsJiIXKFt2+DGG82RQC+/fH57gwbQs6fZHBIREREREZ+ihpAfa9q06VU9f9Ve83/yu9ZxzjWSUrhdbSbEQ0lJ8MgjZuPnm2/My8RCQuyuSv5EmRBxp1yIWCkTIlZOyoSGhfix3Nzcq3r+ooSjADSpWCw/yhGx3dVmQi5TVhZMnAgjR8LJk+a2Xr3grbegVi1bSxMrZULEnXIhYqVMiFg5KRMaIeTHNmzYcMXPTc/KcV3FUa1UdP4UJGKzq8mEeGDkSHNk0MmT5uigRYvgq6/UDPJByoSIO+VCxEqZELFyUibUEHKo3b+fwTAgMjSIuNhwu8sREV/35/8pGToUqleH99+H9euhSxf76hIRERERkSsSYBiGYXcR3pSSkkJsbCzJycnExPj3UutpaWlERkZe0XPfW7qL17/dRssqxfniH63zuTIRe1xNJuQCjh2DF16AI0dg9uzz23NzIVD/p+DrlAkRd8qFiJUyIWLl75nwpOehf837sRUrVlzxc3/adQKAImGaRkoKj6vJhPxFRoY5J1CNGuZIoDlz4M/DZ9UM8gvKhIg75ULESpkQsXJSJvQvej924sSJK35uclomAPHF/bfzKfJXV5MJ+YNhwIwZULcuDB8OKSnQtCksXQqNG9tdnXhImRBxp1yIWCkTIlZOyoSGh/ix4sWLX/Fzj6ZkANCmWon8KkfEdleTCQEOHYLbb4dly8z7ZcvC6NFw990aEeSnlAkRd8qFiJUyIWLlpExoDiE/dvbsWSIiIjx+3qm0TBq/tAiAdSO6UjwqNL9LE7HFlWZC/pCRAXXqQGIiPPmkOUIoWqsQ+jNlQsSdciFipUyIWPl7JjSHkEPM/vMErx5ISEwBoHzRCDWDpFC50kw41tmz8O67kJ1t3g8Lg88/h+3b4aWX1AwqBJQJEXfKhYiVMiFi5aRM6JIxB/r5jwmla8cVsbkSEbGFYcDUqfDUU3DgAAQFwQMPmI9dc429tYmIiIiIiFeoIeTHGjZseEXPOzd/UOmYsPwsR8R2V5oJR/n5Z3j0UfNPgPh4iIuztyYpMMqEiDvlQsRKmRCxclImdMmYHwsJCbmi5/168BQAcTH+e12kSF6uNBOOcOAA3HEHtG5tNoOiouCVV8zLw26+2e7qpIAoEyLulAsRK2VCxMpJmVBDyI+tXbv2ip6XdMZccr5uOf+eVFvkr640E45w333m/EABAfC3v8HOnfDcc+DHE+bJpSkTIu6UCxErZULEykmZ0CVjDpOba3DqbBYAlUtE2lyNiBSY3FzIzITwcPP+6NHmKmJjxkDTpvbWJiIiIiIittOy834sJSXF49dwNCWdVqO/B2DHKz0IDdYgMSk8riQThdKyZeY8QR07mg0gcSxlQsSdciFipUyIWPl7JrTsvEOsWbPG4+ds/WPJ+bKx4WoGSaFzJZkoVHbvhn79oEMHWLcOPvkETp+2uyqxkeMzIZIH5ULESpkQsXJSJtQR8GNHjx71/Dkp6QBk5zpqYJg4xJVkolBITobhw6FOHZgxAwID4R//gC1bIDra7urERo7NhMhFKBciVsqEiJWTMqE5hPzYlQxj23ciDYDOtUvndzkitvPnoZ1XbOlS6N8ffv/dvN+lC4wdCw0a2FuX+ARHZkLkEpQLEStlQsTKSZnQHEJ+LCsry+Ml8Xr833K2JqbwVPfaPNCxWgFVJmKPK8mE30tMhJo1oVw5c76gG24wVxITwaGZELkE5ULESpkQsfL3TGgOIYf48ssvPX7OgSRzhJDmD5LC6Eoy4Xd27IDXXjt/v2xZ+OEH2LwZbrxRzSCxcEQmRDykXIhYKRMiVk7KhLoCDlMsyux0asl5ET9z8qS5cli9evDss/Ddd+cfa9EC/Ph/MURERERExPs0h5Afq1evnkf7G4bB8dRMACqpISSFkKeZ8AtZWfDeezByJCQlmdtuuAEqVrS1LPEPhTITIldJuRCxUiZErJyUCTWE/Fi0h6sH7U9K42xWDoEBEF9cDSEpfDzNhE8zDPj2W3j8cdi2zdxWv745YXTXrvbWJn6jUGVCJJ8oFyJWyoSIlZMyoUvG/Ngvv/zi0f5bE1MAiIkIISw4qCBKErGVp5nwaVlZ8NBDZjOoZEmYOBHWr1czSDxSqDIhkk+UCxErZULEykmZ0AghB9lz3JxQupJGB4n4puPHoWhRCA6G0FBz1bCVK+G558ztIiIiIiIi+UQjhPzY9ddf79H+Gw6cBKBr3TIFUY6I7TzNhM/IyIC334Zq1eDDD89v79sX3npLzSC5Yn6bCZECpFyIWCkTIlZOyoQaQn5s8+bNHu1/8ORZAGrHxRREOSK28zQTtjMMmDXLXDnsySchJcW8L5JP/C4TIl6gXIhYKRMiVk7KhBpCfuzQoUMe7b/lsDmHUKkiYQVRjojtPM2Erdavh06dzFFAu3ZBXBx89BF8843dlUkh4leZEPES5ULESpkQsXJSJjSHkB+Lioq67H1T07Nct+NiwwuiHBHbeZIJW40ZY44IMgwIDzdXEnv6aXDQigbiHX6TCREvUi5ErJQJESsnZSLAMAzD7iK8KSUlhdjYWJKTk4mJ8e9Lp3JzcwkMvLxBXj/vPsGt//mZsOBAtr/So4ArE7GHJ5mw1Zo10LIl3HorvP46VKxod0VSSPlNJkS8SLkQsVImRKz8PROe9Dz891UK06ZNu+x9fzt2GoCgwICCKkfEdp5kwmsMA6ZNMyeNPqd5c9i5Ez7/XM0gKVA+mQkRmykXIlbKhIiVkzKhS8YcYsvhZACaVixmcyUiDrJqFTz6KPz0E4SEwM03myuJwfk/RUREREREbKARQn6sVq1al73vlFUHALipUbmCKkfEdp5kokAdPAh33QWtWpnNoMhIGDECypa1uzJxGJ/JhIgPUS5ErJQJESsnZUIjhPxYyZIlL2u/zOxcggMDyM41aFGleAFXJWKfy81EgTlzBt56C958E86eNbfdcw+8+iqUL29vbeJItmdCxAcpFyJWyoSIlZMyoRFCfuzHH3+8rP12HkslO9cgIiSIyiUiC7gqEftcbiYKTHKyOVfQ2bPQti2sXg2TJ6sZJLaxPRMiPki5ELFSJkSsnJQJjRBygG2JqQDkGgYBAZpUWiRfJSRA3brm7XLlzCXlS5SAW24B5U1ERERERHyURgj5sS5dulzWfonJ5qUrpWPCCrIcEdtdbibyxZ49MGAA1KsHixef3/6Pf0C/fmoGiU/waiZE/IRyIWKlTIhYOSkTagj5sR07dlzWflsOpwBwS9MKBVmOiO0uNxNXJSUFnnkG6tSB6dMhMNBcTUzEB3klEyJ+RrkQsVImRKyclAk1hPzY/v37L2u/bzcfAaBO2ZiCLEfEdpebiSuSkwOTJkGNGvD665CRAZ07w/r18NRTBXdekatQoJkQ8VPKhYiVMiFi5aRMaA4hPxYWdulLwM5kZLtu1yunhpAUbpeTiSvWty989ZV5u2ZNc/LoG2/UpWHi0wo0EyJ+SrkQsVImRKyclIkAwzAMu4vwppSUFGJjY0lOTiYmpvA3SBZsOcI/Pl1LaHAg21/urkmlRa7U1KnwwAPw4ovw4IMQGmp3RSIiIiIiIhae9Dx0yZgfmzZt2iX32XQwGYCY8GA1g6TQu5xMXJaTJ+Gxx+Djj89vGzgQdu+GYcPUDBK/kW+ZEClElAsRK2VCxMpJmdAlY34sNzf3kvukZeYAmj9InOFyMnFR2dnw/vvmKKATJ6B0aXMlsago89KwYsXyp1ARL7nqTIgUQsqFiJUyIWLlpExohJAfq1at2iX3WbDFnFD6mqolCrocEdtdTiYuaP58aNgQ/vlPsxlUty588onZDBLxU1eVCZFCSrkQsVImRKyclAk1hPxY+fLlL/q4YRic/mNS6cbxRb1QkYi9LpWJPO3YAT16mF9bt0KJEjBhAvz6K1x/ff4XKeJFV5QJkUJOuRCxUiZErJyUCTWE/NiyZcsu+vix1AySz2YB0KySLnWRwu9SmchTcrI5OigkBB5/HH77zZw8OlhX1Ir/u6JMiBRyyoWIlTIhYuWkTOg3nkJs25FUAMJDAgkPCbK5GhEfkZkJv/wC7dqZ91u0gH/9C7p3h+rV7a1NRERERETESzRCyI917Njxoo8v/GP+oKolo71QjYj9LpoJw4A5c6BePejSxVwx7Jx//lPNICmULvVzQsSJlAsRK2VCxMpJmVBDyI/t37//oo//evAUAN3rx3mhGhH7XTATv/4KnTtDnz7mJWHFisGePV6tTcQOl/o5IeJEyoWIlTIhYuWkTKgh5Md2/3mEw18kn81i86EUAPo2dc6kWOJsbpk4ehTuuw+aNIHFiyEsDJ59FnbuNBtEIoXcxX5OiDiVciFipUyIWDkpE7Y3hCZMmECVKlUIDw+nWbNmLF++/IL7zpw5k65du1KqVCliYmJo3bo1CxYs8GK1viX4IpPebk00m0GRoUFUKBbprZJEbGXJREYGNG4MkyaZl4sNHAjbtsGrr0KRIrbVKOJNF/s5IeJUyoWIlTIhYuWkTNjaEJo2bRrDhg3jueeeY/369bRr144ePXpccIjWsmXL6Nq1K/PmzWPt2rV06tSJXr16sX79ei9X7hv69+9/wcc2H0oGoGR0mLfKEbFd/379zt8JCzNXC2vRAlasgKlToXJl22oTscPFfk6IOJVyIWKlTIhYOSkTtjaExo4dy7333svgwYOpU6cO77zzDvHx8UycODHP/d955x2GDx9OixYtqFGjBqNHj6ZGjRp8/fXXXq7cN8yYMeOCjy3beRyALnXKeKscEXutXs3xunVhyZLz255+Gn7+Ga691rayROx0sZ8TIk6lXIhYKRMiVk7KhG0NoczMTNauXUu3bt0s27t168ZPP/10WcfIzc0lNTWV4sWLX3CfjIwMUlJSLF+FRWZm5gUfSzqTAUDF4hHeKkfEHgcPwt13Q8uWlNy2DZ5//vxjoaEQaPuVsSK2udjPCRGnUi5ErJQJESsnZcK2i+OOHz9OTk4OZcpYR7CUKVOGI0eOXNYxxowZw5kzZxgwYMAF93nttdcYNWqU2/bp06cTGRlJ3759+f7770lOTqZ06dK0bNmSuXPnAtC0aVNyc3PZsGEDAL1792bFihWcOHGC4sWL0759e2bPng1Aw4YNCQkJYe3atQDccMMNrFmzhqNHjxITE0O3bt348ssvAahXrx7R0dH88ssvAFx//fVs3ryZQ4cOERUVxY033si0adMAqFWrFiVLluTHH38EoEuXLuzYsYP9+/e7mlvTpk0jNzeXatWqUb58eRYvXcb2w0WAAKLTDjNlys8EBwfTv39/ZsyYQWZmJpUqVaJatWr88MMPALRt25Zjx46xY8cOAG677TbmzJlDWloaFSpUoG7duixcuBCA1q1bk5ycTEJCAmAOqZs/fz6pqanExcXRtGlT5s2bB0CLFi1IT09n06ZNANx8880sWbKEkydPUrJkSVq3bu0a4dWkSRMA1yWAvXr1YuXKlRw/fpxixYrRsWNHZs2aBUCDBg0IDw9n9erVAPTs2ZN169Zx5MgRihQpQvfu3Zk+fToAdevWJTY2lpUrVwJm0zEhIYGDBw8SGRlJ7969mTJlCgA1a9akdOnSrFixAoDrrruOXbt2sW/fPkJDQ7nllluYPn062dnZVK1alYoVK7LkjxEp7du359ChQ+zatYvAwEAGDhzIzJkzycjIoGLFitSsWZPvvvsOgGuvvZbjx4+zfft2AAYOHMjcuXM5c+YM5cuXp379+q75sVq1asXp06fZsmULAP369WPhwoWkpKRQpkwZmjdvzjfffANAs2bNyMrKYuPGjQD06dOHZcuWkZSURIkSJWjbti1z5swBoHHjxgQGBrJu3ToAbrzxRlatWsWxY8eIjY2lc+fOzJw5E4D69esTGRnJqlWrAOjRowe//vorhw8fJjo6mp49e/LFF18AULt2bYoXL+5q7Hbt2pVt27Zx4MABIiIi6NOnD1OnTsUwDGrUqEFcXJxr7rBOnTqxd+9e9uzZQ0hICP369ePLL78kKyuLKlWqULlyZRYvXmy+382awZgxlJk8meA/PrR3XHMNCbfeSskVK6hduzaLFi0CoE2bNiQlJbFt2zYABgwYwLx58zh9+jTlypWjUaNGfPvttwC0bNmStLQ0Nm/eDODXnxFhYWH07dvX7TNi2bJlgLmk5v79+9m9e7c+IwrpZ0RWVhYpKSmO/Ixo164dR44cYefOnQQEBHDrrbcye/Zszp49S3x8vD4jHPwZkZSUxObNm/UZ4fB/R+gz4vxnRExMjOvvsD4j9O8IfUYsJikpiYMHD/rtZ0RaWhqXK8AwDOOy985Hhw8fpnz58vz000+0bt3atf3VV1/l008/db2ZFzJlyhQGDx7MnDlz6NKlywX3y8jIICMjw3U/JSWF+Ph4kpOTiYmJufoXYqOjR4+6NdQAfjuWSpexywgNDmTbS90JDAywoTqRAjR7Nvzzn3DokHn/2mth3DiOVqyYZyZEnOpCPydEnEy5ELFSJkSs/D0TKSkpxMbGXlbPw7ZrKUqWLElQUJDbaKBjx45d8s2fNm0a9957L1988cVFm0EAYWFhxMTEWL4Ki3Md97/67dgZAOKLRagZJIVTWprZDKpUCaZNg+XLoUWLC2ZCxKmUCRF3yoWIlTIhYuWkTNjWEAoNDaVZs2auYVbnLFq0iDZt2lzweVOmTGHQoEF8/vnn3HDDDQVdpl86kGQOEQsMUDNICol9++CPId4A3HYbfPihuYz8gAGgv+siIiIiIiIesW0OIYDHHnuMu+66i+bNm9O6dWv+85//sH//foYMGQLAM888w6FDh/jkk08Asxl0991383//939cc801rtFFERERxMbG2vY67NK2bds8t285bC45XyTc1m+vyNVLTYXXXoOxY6FoUdi5E4oUMRtAf/+72+4XyoSIUykTIu6UCxErZULEykmZsHX5nYEDB/LOO+/w0ksv0bhxY5YtW8a8efOoVKkSAImJiezfv9+1//vvv092djYPPfQQZcuWdX098sgjdr0EWx07dizP7QF/jJYoGhnqzXJE8k9OjjkCqEYNsyGUkQF168LJkxd92oUyIeJUyoSIO+VCxEqZELFyUiZsX4/5wQcfZO/evWRkZLB27Vrat2/vemzy5MmuWdUBlixZgmEYbl+TJ0/2fuE+4Nws/X91OiMbgLbVS3qzHJH8sXgxNG8OgwfD0aNQvbo5ifT330PFihd96oUyIeJUyoSIO+VCxEqZELFyUiZ0TVEhtHT77wCUKxphcyUiHtqxA667zrwdGwsvvGCuJhaq0W4iIiIiIiL5ybZl5+3iyRJs/qrpy4tIOpPJtPuvoVXVEnaXI3JxWVkQEnL+/qBBEBUFo0ZBSY1yExERERERuVx+sey8XL05c+a4bcvJNTiZlglA+WIaISQ+LDsbJkyAKlVgz57z2z/+GP797ytqBuWVCREnUyZE3CkXIlbKhIiVkzKhhpAfS0tLc9t2Mi2Tc2O+4mLCvVyRyGVasAAaNYKHHoJDh2D8+POPXcUS8nllQsTJlAkRd8qFiJUyIWLlpEyoIeTHKlSo4LZt7/EzrtvBQfr2io/ZuhVuuAG6d4eEBChRAt59F958M18On1cmRJxMmRBxp1yIWCkTIlZOyoQmlfZjdevWddv227HTNlQichmefhrefttcUj44GB5+GEaMgGLF8u0UeWVCxMmUCRF3yoWIlTIhYuWkTGgIiR9buHCh27asXPN6sUolIr1djsjFRUSYzaDevc3RQWPH5mszCPLOhIiTKRMi7pQLEStlQsTKSZnQCKFCJj0zB4BaZYrYXIk4mmHA3LlQujS0amVue/JJaN8eOnWytzYRERERERHRCCF/1rp1a7dtP+8+AUC5olphTGyycSN07Qo33WROGp2ba26PjCzwZlBemRBxMmVCxJ1yIWKlTIhYOSkTagj5seTkZLdtCYkpAESFBXm7HHG6o0fh/vuhSRP4/nsICzMbQ1lZXishr0yIOJkyIeJOuRCxUiZErJyUCTWE/FhCQoLbtmKRoQBUKxXt7XLEqdLT4Y03oEYN+OADc0RQ//7mimKvvWY2hrwkr0yIOJkyIeJOuRCxUiZErJyUCc0hVMicGyGkSaXFa776ylxBDKB5cxg3Dtq2tbcmERERERERuagAwzAMu4vwppSUFGJjY0lOTiYmJsbucq5KdnY2wcHWnl7lp78BYMGw9tSK08TSUkBSUuBcfnJzoV8/6NMH7rwTAu0beJhXJkScTJkQcadciFgpEyJW/p4JT3oeumTMj82fP99yPz0rx3U7Libc2+WIExw+DIMGQZ06kJpqbgsMhJkz4e67bW0GgXsmRJxOmRBxp1yIWCkTIlZOyoQaQn4s9dwv5H84eDLNdTsmwn87muKD0tLg5ZfNeYL++1+zMeSDH5R/zYSI0ykTIu6UCxErZULEykmZUNfAj8XFxVnur9xlLjkfERJEQECAHSVJYZObC1OmmHMEHTxobmvTxpwnqGVLe2vLw18zIeJ0yoSIO+VCxEqZELFyUibUEPJjTZs2tdxPOmMu7121VJQd5Uhhk54OnTrBzz+b9ytVMlcTGzAAfLTh+NdMiDidMiHiTrkQsVImRKyclAldMubH5s2bZ7m/ePsxALrUKWNHOVLYhIdDlSoQHQ2jR5vLyA8c6LPNIHDPhIjTKRMi7pQLEStlQsTKSZlQQ6gQOfd7eskiYfYWIv7p9GkYMQL27j2/bcwY2LkTnnkGIiJsK01ERERERETyly4Z82MtWrRw3c7NNVi//5S5vXIxmyoSv5Sba04U/eyzcOSI2QCaOtV8rGxZe2vz0J8zISLKhEhelAsRK2VCxMpJmVBDyI+lp6e7bh9JOX+7WqloO8oRf7R0KTz6KKxfb96vVs28LMxP/TkTIqJMiORFuRCxUiZErJyUCV0y5sc2bdrkur33xBnX7ZAgfVvlEnbtgltugY4dzWZQbCy8/TZs2QI332x3dVfsz5kQEWVCJC/KhYiVMiFi5aRMaIRQIXHyjxXGQtUMksvxyScwcyYEBsI//gGjRkGpUnZXJSIiIiIiIl4SYBiGYXcR3pSSkkJsbCzJycnExMTYXc5VSU9PJzw8HIBJy3fzyjdb6dkgjgl3NLO5MvE52dlw7BiUK2feP30ahgyBp5+G+vXtrS0f/TkTIqJMiORFuRCxUiZErPw9E570PDScxI8tWbLEdftUmjlCqGS0VhiTv1i0CJo0gd69zQmkwVxK/n//K1TNILBmQkSUCZG8KBciVsqEiJWTMqGGkB87efKk6/bRPyaVLq0l5+WcbdvgxhuhWzfYvBl27zZXECvE/pwJEVEmRPKiXIhYKRMiVk7KhBpCfqxkyZKu28t2/g5A6Rj/Hdom+SQpCR55BBo0gG++geBgGDYMfvsNatWyu7oC9edMiIgyIZIX5ULESpkQsXJSJjSptB9r3bq16/a5S8aiQvUtdbTt26F1azjX1e7VC956q9A3gs75cyZERJkQyYtyIWKlTIhYOSkTGiHkx77++msAcnMNMrLNuWGql462sySxW40aUK2aOTfQokXw1VeOaQbB+UyIiEmZEHGnXIhYKRMiVk7KhBpChcCOY6mu21VLRdlYiXjd5s1w++3mqmFgLiM/Zw6sXw9duthbm4iIiIiIiPgsNYT8WJMmTQA4fOqsa1tIkL6ljnDsmLlsfKNGMGUKvPnm+cfKlTPnDXKgc5kQEZMyIeJOuRCxUiZErJyUCWf+1ljILNxyFIAudcrYXIkUuIwMGD8eXnkFUlLMbf36waBBtpYlIiIiIiIi/kXDSfzY+vXrAQgIMO9nZOfYWI0UuJkzoW5dGD7cbAY1bQpLl8L06VC1qt3V+YRzmRARkzIh4k65ELFSJkSsnJQJNYQKgV8PJAPQqEJRewuRgjV9OuzeDWXLwuTJsHo1tG9vd1UiIiIiIiLihwIMwzDsLsKbUlJSiI2NJTk5mZiYGLvLuSqnT58mOjqaas/OIyfXYNRN9binTWW7y5L8kpho/lm2rPnnvn3w0Ufw5JMQrdXk8nIuEyJiUiZE3CkXIlbKhIiVv2fCk56HRgj5sZUrVwKQk2v29KqV8t+/tPInZ8+acwTVqAGPP35+e6VKMGqUmkEXcS4TImJSJkTcKRciVsqEiJWTMqFJpf3Y8ePHXc0ggBpl1Cjwa4YBU6fCU0/BgQPmtr17IT0dwsNtLc1fHD9+3O4SRHyKMiHiTrkQsVImRKyclAmNEPJjxYoVI/ls1vn7kaE2ViNX5eefoU0buP12sxkUHw+ffQY//qhmkAeKFStmdwkiPkWZEHGnXIhYKRMiVk7KhOYQ8mPp6ensPZVJ93eWA7D39RtsrkiuyBdfwMCB5u2oKHj6aXjsMYiMtLcuP5Senk64GmgiLsqEiDvlQsRKmRCx8vdMaA4hh5g1axaJp9IBqFPWv5tbjtazJ5QvD4MGwY4d8PzzagZdoVmzZtldgohPUSZE3CkXIlbKhIiVkzKhOYT83J7jZwAoXzTC5krksuTmwiefwOzZMHMmBAaak0QnJICfj1gTERERERER/6ERQn6sQYMGLN5+DICqpaJsrkYuadkyaNEC/vY3mDMHvvzy/GNqBuWLBg0a2F2CiE9RJkTcKRciVsqEiJWTMqGGkB8LDw8nIysXwLLamPiY3buhXz/o0AHWrTObP2++Cb17211ZoePP1/qKFARlQsSdciFipUyIWDkpE2oI+bHVq1dz6mwmANVLa8l5n5Oebi4hX6cOzJhhXh42ZAjs3AlPPglhYXZXWOisXr3a7hJEfIoyIeJOuRCxUiZErJyUCc0h5OeCAs2eXpFwfSt9TmgofPcdZGZC164wZgw4aPihiIiIiIiI+C4tO+/HkpOTafTaCgCm3HcNrauVsLki4YcfoFUrc/l4gF9+gePHzZXEAgLsrc0BkpOTiY2NtbsMEZ+hTIi4Uy5ErJQJESt/z4SWnXeIdevWUSIqFIDwEH0rbbV9O/TqBZ07w1tvnd/eqhXccIOaQV6ybt06u0sQ8SnKhIg75ULESpkQsXJSJtRF8GNHjhzhxBlzDqESUZqPxhZJSTBsGNSvD3PnQlCQOXeQ2OLIkSN2lyDiU5QJEXfKhYiVMiFi5aRMaOIZPxYWWcR1OzYixMZKHCgrC957D0aONJtCYI4EevttqF3b1tKcrEiRIpfeScRBlAkRd8qFiJUyIWLlpExoDiE/tv94Ku3fXgbA7tE9CQzUZUle8+ij8M475u169WDsWOjWzdaSBLKzswkOVp9b5BxlQsSdciFipUyIWPl7JjSHkEPMnjvPdVvNIC/4c+906FCoUAEmToQNG9QM8hHTp0+3uwQRn6JMiLhTLkSslAkRKydlwn/bXkJ2rvlnyehQewsp7H7/HV54AdLS4L//NbdVqQJ79oAfd45FRERERETEuTRCyI9VqFQFgLDgIJsrKaQyMsw5gapXN+cL+uQT2LHj/ONqBvmcunXr2l2CiE9RJkTcKRciVsqEiJWTMqGGkD8LjQTgZFqmzYUUMoYBs2aZcwM9+SSkpECTJrBkCdSsaXd1chGxsbF2lyDiU5QJEXfKhYiVMiFi5aRMqCHkxzZv2QpAsUhdMpZv9u+H666Dvn1h1y6Ii4OPPoLVq6FDB7urk0tYuXKl3SWI+BRlQsSdciFipUyIWDkpE7rmxY+dzjYnkq5aKsrmSgqRYsVg61YID4fHH4enn4boaLurEhEREREREclXGiHkx6LLVgWgRJRGCF2xs2dh0iTI/WOG7iJF4PPPYds2eOUVNYP8TDet9iZioUyIuFMuRKyUCRErJ2VCDSE/lnDgdwACArTkvMcMA6ZOhdq14b77zNvnXHcdVKpkX21yxRISEuwuQcSnKBMi7pQLEStlQsTKSZnQJWN+7OzZs0AI4SFaZcwjq1bBo4/CTz+Z9ytUgChddlcYHDx40O4SRHyKMiHiTrkQsVImRKyclAmNEPJjB9LMfl710rqs6bIcOAB33gmtWpnNoMhIeOkl2L4deve2uzrJB5GRkXaXIOJTlAkRd8qFiJUyIWLlpEwEGIZh2F2EN6WkpBAbG0tycjIxMTF2l3NVOry1mH0n0nirX0P6N4+3uxzf164drFhh3r7nHnj1VShf3t6aRERERERERPKJJz0PjRDyY/tOpAEQX9w5HUyP5OZCZub5+6+8YjaFVq+GyZPVDCqEpkyZYncJIj5FmRBxp1yIWCkTIlZOyoQaQn4sKshcGSsmPMTmSnzQjz+al4a9/vr5bR06wNKl0Ly5fXWJiIiIiIiI+AA1hPzYmRzz21ckXHODu+zdCwMHQtu2sGYNTJwIGRnnH9eKbIVazZo17S5BxKcoEyLulAsRK2VCxMpJmVBDyE+dzcxx3VZDCEhJgWeeMZeR/+ILCAyE+++HDRsgLMzu6sRLSpcubXcJIj5FmRBxp1yIWCkTIlZOyoQaQn7q99Tzo15iIxx+ydh330GNGublYRkZ0LkzrF8P778PZcrYXZ140Ypzk4aLCKBMiORFuRCxUiZErJyUCQ0t8VOZObmu2wFOvwyqalU4dcpsCo0ZAzfeqEvDRERERERERC5CI4T8VGa22RAqGe3Ay6F27oTx48/fr1oVvv8eNm+GXr3UDHKw6667zu4SRHyKMiHiTrkQsVImRKyclAk1hPzUuRFCYcEO+haePAmPPQb16sEjj8CqVecfa9sWQkPtq018wq5du+wuQcSnKBMi7pQLEStlQsTKSZlwUDehcDmZlglYLx0rtLKy4N13zUvCxo0z7/foAUWL2l2Z+Jh9+/bZXYKIT1EmRNwpFyJWyoSIlZMyoTmE/Nzp9Gy7SyhY334Ljz8OW7ea9+vWhbFj4frr7a1LfFKoRomJWCgTIu6UCxErZULEykmZCDAMw7C7CG9KSUkhNjaW5ORkYmJi7C7niv3v5308P3szLSoXY/qQNnaXUzDS0qBKFTh2DEqUgJdfhvvug2D1MUVERERERET+ypOehy4Z81NBgebEyYdPpdtcST5LSoJzPcrISHjjDXOE0G+/wQMPqBkkFzV9+nS7SxDxKcqEiDvlQsRKmRCxclIm1BDyUzuOpgLQOL6ovYXkl8xM81KwatVg2rTz2wcNgrff1nxBclmyswv5JZQiHlImRNwpFyJWyoSIlZMyoYaQn4qNCAHgSIqfjxAyDJgzx1w57PHH4dQp+Pxzu6sSP1W1alW7SxDxKcqEiDvlQsRKmRCxclIm1BDyU5nZ5upiDcrH2lzJVfj1V+jcGfr0MS8JK1MGJk2CWbPsrkz8VMWKFe0uQcSnKBMi7pQLEStlQsTKSZlQQ8hPZf2x3HxYsJ9+C994A5o0gcWLISwMnnkGdu6Ee++FoCC7qxM/tWTJErtLEPEpyoSIO+VCxEqZELFyUiY0Q6+f2nH0NACh/toQatXKvFxs4EB4/XWoXNnuikREREREREQcQw0hP1UiOhSA31MzbK7kMhgGfPEFnDwJQ4aY2zp2hC1boG5dW0uTwqV9+/Z2lyDiU5QJEXfKhYiVMiFi5aRMqCHk5yqWiLS7hItbvRoefRR+/NFcRv6mm6BcOfMxNYMknx06dIjy5cvbXYaIz1AmRNwpFyJWV5OJnJwcsrKy8rkiEXsdOnSIEiVK2F3GRYWGhhIYePVXC6kh5KeycgwAwoN9dL6dgwfh2Wfh00/N+5GRMHw4xPrxJNji83bt2kXLli3tLkPEZygTIu6UCxGrK8mEYRgcOXKEU6dOFUxRIjYKDAxkz549dpdxUYGBgVSpUoXQ0NCrOo4aQn4q+49JpUOCAmyu5C/S0uCtt8xJo8+eNbfddReMHg0VKthbmxR6+dElFylMlAkRd8qFiNWVZOJcM6h06dJERkYSEOBjv5OIXIVTp05RtGhRu8u4oNzcXA4fPkxiYiIVK1a8qvwFGIZh5GNtPi8lJYXY2FiSk5OJiYmxu5wr1nXsUnYeO83rfRtwa0sfWhZv1y7zUrDMTLj2Whg3Dlq0sLsqERERERHJBzk5OezYsYPSpUv7/GU1IoVVcnIyhw8fpnr16oSEhFge86Tnof8i8VORYebgrrTMHJsrAX777fztatXM0UBffAHLl6sZJF41c+ZMu0sQ8SnKhIg75ULEytNMnJszKDLSx+cyFblCJ0+etLuESzp3qVhOztX1A9QQ8lNhQea37txqY7bYu9dcNr5mTViz5vz2xx+H/v1BQ0fFyzIy/GDVPREvUiZE3CkXIlZXmgldJiaFVW5urt0lXFJ+5U8NIT+V8cccQpGhNkwDlZpqThhdu7Y5Eghg2TLv1yHyFxUr+tDlkyI+QJkQcadciFgpEyJWYWFhdpfgNWoI+alfD5wCIDTYi9/CnByYNAlq1IDXXoOMDOjUCdatg8ce814dIhdQs2ZNu0sQ8SnKhIg75ULESpmQvHz44Yd069bN7jJsYXdDKCMjg4oVK7J27doCP5caQn6qQrEIwFzy0Wt69oT77oOjR6F6dZg9G77/Hho39l4NIhfx3Xff2V2CiE9RJkTcKRciVk7KxKBBgwgICCAgIIDg4GAqVqzIAw88kOecMT/99BM9e/akWLFihIeH06BBA8aMGZPnnC2LFy+mZ8+elChRgsjISOrWrcvjjz/OoUOHvPGy8l1GRgYvvPACI0aMsLuUAmMYBiNHjqRcuXJERETQsWNHtmzZApiTMl/IO++8Q61atYiIiCA+Pp5HH32U9PT0PPd97bXXCAgIYNiwYZbtR48eZdCgQZQrV47IyEi6d+/Ozp07XY+HhYXxxBNP8NRTT139C70ENYT8VE6u2QgqEeXF7uUtt0BsLIwZA1u2QO/emidIRERERET8Rvfu3UlMTGTv3r1MmjSJr7/+mgcffNCyz6xZs+jQoQMVKlRg8eLFbNu2jUceeYRXX32VW2+91fKf8u+//z5dunQhLi6OGTNmkJCQwHvvvUdycjJjxozx2uvKzMzMt2PNmDGD6Oho2rVrd1XHOTcBuS968803GTt2LO+++y6rV68mLi6Orl27kpqaesHnfPbZZzz99NO8+OKLbN26lQ8//JBp06bxzDPPuO27evVq/vOf/9CwYUPLdsMw6NOnD7t372bOnDmsX7+eSpUq0aVLF86cOePa74477mD58uVs3bo1/150XgyHSU5ONgAjOTnZ7lKuSqWn5hqVnppr7DiSUjAnOHnSMB5/3DC+/PL8tuxsw/j994I5n0g+2Ldvn90liPgUZULEnXIhYuVpJs6ePWskJCQYZ8+edW3Lzc01zmRk2fKVm5t72bXfc889Ru/evS3bHnvsMaN48eKu+6dPnzZKlChh9O3b1+35X331lQEYU6dONQzDMA4cOGCEhoYaw4YNy/N8J0+evGAtJ0+eNO677z6jdOnSRlhYmFGvXj3j66+/NgzDMF588UWjUaNGlv3HjRtnVKpUye21jB492ihbtqxRqVIl4+mnnzZatWrldq4GDRoYL7zwguv+Rx99ZNSuXdsICwszatWqZfz73/+27N+rVy/jiSeesGxbtWqV0aVLF6NEiRJGTEyM0b59e2Pt2rWWfQBj4sSJxk033WRERka6zvnVV18ZTZs2NcLCwowqVaoYI0eONLKyslzPGzNmjFG/fn0jMjLSqFChgvHAAw8YqampF3zvrlZubq4RFxdnvP76665t6enpRmxsrPHee+8Z6enpeT7voYceMq677jrLtscee8xo27atZVtqaqpRo0YNY9GiRUaHDh2MRx55xPXY9u3bDcDYvHmza1t2drZRvHhx44MPPrAcp2PHjsaIESPyrCWvHJ7jSc/DhhmJJT/l+xxC2dnwwQfwwgtw/DhUqgQ33ghhYRAUBCVL5u/5RPLR8ePHNTGiyJ8oEyLulAsRq/zIxNmsHOq+sCCfKvJMwkvXX/FCO7t372b+/PmEhIS4ti1cuJATJ07wxBNPuO3fq1cvatasyZQpUxg4cCDTp08nMzOT4cOH53n8okWL5rk9NzeXHj16kJqayv/+9z+qVatGQkICQUFBHtX//fffExMTw6JFi1yjll5//XV27dpFtWrVANiyZQubNm3iyy+/BOCDDz7gxRdf5N1336VJkyasX7+e++67j6ioKO655x4Ali9fzh133GE5V2pqKvfccw/jx48HYMyYMfTs2ZOdO3dSpEgR134vvvgir732GuPGjSMoKIgFCxZw5513Mn78eNq1a8euXbu4//77XfsCBAYGMn78eCpXrsyePXt48MEHGT58OBMmTLjga+/RowfLly+/6Ptz+vTpPLfv2bOHI0eOWOZICgsLo0OHDvz000/ceeedec4j1LZtW/73v/+xatUqWrZsye7du5k3b57rfTvnoYce4oYbbqBLly688sorlsfOreoXHh7u2hYUFERoaCgrVqxg8ODBru0tW7a85Gu8WmoI+aHc3PNDFKPD8vFbuGCBuWT8H9dOUqeOeXmYg2ZZF/+2fft2mjZtancZIj5DmRBxp1yIWDktE3PnziU6OpqcnBzX3C9jx451Pb5jxw4A6tSpk+fza9eu7dpn586dxMTEULZsWY9q+O6771i1ahVbt251TepdtWpVj19LVFQUkyZNIjQ01LWtYcOGfP755675fz777DNatGjhOs/LL7/MmDFj6Nu3LwBVqlQhISGB999/n3vuuYdTp05x6tQpypUrZznXddddZ7n//vvvU6xYMZYuXcqNN97o2n777bfz97//3XX/rrvu4umnn3Y1TapWrcrLL7/M8OHDXQ2hP8+xU6VKFV5++WUeeOCBizaEJk2axNmzZy/7vfqzI0eOAFCmTBnL9jJlyrBv3z7S09OJiopye96tt97K77//Ttu2bTEMg+zsbB544AGefvpp1z5Tp05l3bp1rF69Os9z165dm0qV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Nm3a5Pmc1q1bu+2/cOFCmjdvTkhISIHVKuINV5IJMEcGDRo0iM8//1zXvkuh4mkmYmJi2LRpExs2bHB9DRkyhFq1arFhwwZatWrlrdJFCsSV/Jy49tprOXz4MKdPn3Zt27FjB4GBgVSoUKFA6xXxhivJRVpaGoGB1l8Rg4KCgPOjIkScpND/nm2IT5o6daoREhJifPjhh0ZCQoIxbNgwIyoqyti7d69hGIbx9NNPG3fddZdr/927dxuRkZHGo48+aiQkJBgffvihERISYnz55Zd2vQSRfOVpJj7//HMjODjY+Pe//20kJia6vk6dOmXXSxDJV55m4q9efPFFo1GjRl6qVqTgeZqJ1NRUo0KFCka/fv2MLVu2GEuXLjVq1KhhDB482K6XIJLvPM3Fxx9/bAQHBxsTJkwwdu3aZaxYscJo3ry50bJlS7tegki+Sk1NNdavX2+sX7/eAIyxY8ca69evN/bt22cYhvN+z1ZDyIf9+9//NipVqmSEhoYaTZs2NZYuXep67J577jE6dOhg2X/JkiVGkyZNjNDQUKNy5crGxIkTvVyxSMHyJBMdOnQwALeve+65x/uFixQQT39O/JkaQlIYeZqJrVu3Gl26dDEiIiKMChUqGI899piRlpbm5apFCpanuRg/frxRt25dIyIiwihbtqxxxx13GAcPHvRy1SIFY/HixRf9HcFpv2cHGIbG/omIiIiIiIiIOInmEBIRERERERERcRg1hEREREREREREHEYNIRERERERERERh1FDSERERERERETEYdQQEhERERERERFxGDWEREREREREREQcRg0hERERERERERGHUUNIRERERERERMRh1BASERERnzV58mSKFi161ccZOXIkZcqUISAggNmzZ1/18XzV3r17CQgIYMOGDRfdr2PHjgwbNsx1Py0tjVtuuYWYmBgCAgI4derUFZ3/rrvuYvTo0Vf03KvxxBNPMHToUK+fV0RExJ+pISQiIuJAAQEBF/0aNGiQ3SXmm61btzJq1Cjef/99EhMT6dGjh90lFZj4+HgSExOpX78+AEuWLMmzwTNz5kxefvll1/3//ve/LF++nJ9++onExERiY2M9PvfGjRv55ptvePjhh13bOnbsmOffr+zsbLfHw8LCqFmzJqNHjyYnJ8dS/7mvEiVKcN111/Hjjz9azj18+HA+/vhj9uzZ43HdIiIiTqWGkIiIiAMlJia6vt555x1iYmIs2/7v//7P7hLzza5duwDo3bs3cXFxhIWF2VxRwQkKCiIuLo7g4OCL7le8eHGKFCniur9r1y7q1KlD/fr1iYuLIyAgwONzv/vuu/Tv399yXID77rvP8ncrMTHRUt+5x7dv387QoUN5/vnnefvtty3H2L59O4mJiSxZsoRSpUpxww03cOzYMdfjpUuXplu3brz33nse1y0iIuJUagiJiIg4UFxcnOsrNjaWgIAA1/2QkBCGDBlChQoViIyMpEGDBkyZMsXy/MqVK/POO+9YtjVu3JiRI0cC5siO0NBQli9f7np8zJgxlCxZksTExAvWNXnyZCpWrEhkZCQ333wzJ06ccNvn66+/plmzZoSHh1O1alVGjRrlGnHyVyNHjqRXr14ABAYGuhodq1evpmvXrpQsWZLY2Fg6dOjAunXrXM/L69KrU6dOERAQwJIlSwB46aWXKFeunKXGm266ifbt25Obm5tnPYMGDaJPnz6MGjWK0qVLExMTwz/+8Q8yMzNd+2RkZDB06FBKly5NeHg4bdu2ZfXq1a7HT548yR133EGpUqWIiIigRo0afPzxx2517927l06dOgFQrFgxy8ivP18y1rFjR8aMGcOyZcsICAigY8eOAEyYMIEaNWoQHh5OmTJl6NevX56vCSA3N5fp06dz0003uT0WGRlp+fsWFxeX5+OVK1fmn//8J507d3a7rK906dLExcXRoEEDnn/+eZKTk/nll18s+9x0001uf09FRETkwtQQEhEREYv09HSaNWvG3Llz2bx5M/fffz933XWX2y/gF3Ou4XDXXXeRnJzMr7/+ynPPPccHH3xA2bJl83zOL7/8wt///ncefPBBNmzYQKdOnXjllVcs+yxYsIA777yToUOHkpCQwPvvv8/kyZN59dVX8zzmE0884WqWnBudApCamso999zD8uXL+fnnn6lRowY9e/YkNTX1sl/jc889R+XKlRk8eDAA7733HsuWLePTTz8lMPDC/8T6/vvv2bp1K4sXL2bKlCnMmjWLUaNGuR4fPnw4M2bM4L///S/r1q2jevXqXH/99SQlJQEwYsQIEhIS+Pbbb9m6dSsTJ06kZMmSbueJj49nxowZwPkRNnmN/Jo5cyb33XcfrVu3JjExkZkzZ7JmzRqGDh3KSy+9xPbt25k/fz7t27e/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",
|
||
"text/plain": [
|
||
"<Figure size 1400x800 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# ROC curve\n",
|
||
"\n",
|
||
"# Calcul des taux de faux positifs (FPR) et de vrais positifs (TPR)\n",
|
||
"y_pred_prob = logit_grid.predict_proba(X_test)[:, 1]\n",
|
||
"\n",
|
||
"fpr, tpr, thresholds = roc_curve(y_test, y_pred_prob, pos_label=1)\n",
|
||
"\n",
|
||
"# Calcul de l'aire sous la courbe ROC (AUC)\n",
|
||
"roc_auc = auc(fpr, tpr)\n",
|
||
"\n",
|
||
"plt.figure(figsize = (14, 8))\n",
|
||
"plt.plot(fpr, tpr, label=\"ROC curve(area = %0.3f)\" % roc_auc)\n",
|
||
"plt.plot([0, 1], [0, 1], color=\"red\",label=\"Random Baseline\", linestyle=\"--\")\n",
|
||
"plt.grid(color='gray', linestyle='--', linewidth=0.5)\n",
|
||
"plt.xlabel('Taux de faux positifs (FPR)')\n",
|
||
"plt.ylabel('Taux de vrais positifs (TPR)')\n",
|
||
"plt.title('Courbe ROC : modèle logistique')\n",
|
||
"plt.legend(loc=\"lower right\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d2d5aca0-7e8b-4039-9bb2-ff5011c436a6",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Random forest"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 26,
|
||
"id": "da8873e5-c4e7-4580-8567-70e411c029ab",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>nb_tickets</th>\n",
|
||
" <th>nb_purchases</th>\n",
|
||
" <th>total_amount</th>\n",
|
||
" <th>nb_suppliers</th>\n",
|
||
" <th>vente_internet_max</th>\n",
|
||
" <th>purchase_date_min</th>\n",
|
||
" <th>purchase_date_max</th>\n",
|
||
" <th>nb_tickets_internet</th>\n",
|
||
" <th>is_email_true</th>\n",
|
||
" <th>opt_in</th>\n",
|
||
" <th>gender_female</th>\n",
|
||
" <th>gender_male</th>\n",
|
||
" <th>nb_campaigns</th>\n",
|
||
" <th>nb_campaigns_opened</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>43000</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>14.0</td>\n",
|
||
" <td>12.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>183923</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>19.0</td>\n",
|
||
" <td>11.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>97373</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>66956</th>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>254.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>378.343062</td>\n",
|
||
" <td>370.453947</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>116487</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>83146</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>35.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>37.474040</td>\n",
|
||
" <td>37.474040</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>9.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>223586</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>23.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>56489</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>141236</th>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>550.000000</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6999</th>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>20.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>171.446921</td>\n",
|
||
" <td>171.446921</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>10000 rows × 14 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" nb_tickets nb_purchases total_amount nb_suppliers \\\n",
|
||
"43000 0.0 0.0 0.0 0.0 \n",
|
||
"183923 0.0 0.0 0.0 0.0 \n",
|
||
"97373 0.0 0.0 0.0 0.0 \n",
|
||
"66956 7.0 2.0 254.0 1.0 \n",
|
||
"116487 0.0 0.0 0.0 0.0 \n",
|
||
"... ... ... ... ... \n",
|
||
"83146 1.0 1.0 35.0 1.0 \n",
|
||
"223586 0.0 0.0 0.0 0.0 \n",
|
||
"56489 0.0 0.0 0.0 0.0 \n",
|
||
"141236 0.0 0.0 0.0 0.0 \n",
|
||
"6999 2.0 1.0 20.0 1.0 \n",
|
||
"\n",
|
||
" vente_internet_max purchase_date_min purchase_date_max \\\n",
|
||
"43000 0.0 550.000000 550.000000 \n",
|
||
"183923 0.0 550.000000 550.000000 \n",
|
||
"97373 0.0 550.000000 550.000000 \n",
|
||
"66956 1.0 378.343062 370.453947 \n",
|
||
"116487 0.0 550.000000 550.000000 \n",
|
||
"... ... ... ... \n",
|
||
"83146 1.0 37.474040 37.474040 \n",
|
||
"223586 0.0 550.000000 550.000000 \n",
|
||
"56489 0.0 550.000000 550.000000 \n",
|
||
"141236 0.0 550.000000 550.000000 \n",
|
||
"6999 0.0 171.446921 171.446921 \n",
|
||
"\n",
|
||
" nb_tickets_internet is_email_true opt_in gender_female \\\n",
|
||
"43000 0.0 True True 0 \n",
|
||
"183923 0.0 True True 0 \n",
|
||
"97373 0.0 True False 0 \n",
|
||
"66956 7.0 True False 0 \n",
|
||
"116487 0.0 True False 1 \n",
|
||
"... ... ... ... ... \n",
|
||
"83146 1.0 True False 0 \n",
|
||
"223586 0.0 True True 0 \n",
|
||
"56489 0.0 True True 0 \n",
|
||
"141236 0.0 True False 0 \n",
|
||
"6999 0.0 True True 1 \n",
|
||
"\n",
|
||
" gender_male nb_campaigns nb_campaigns_opened \n",
|
||
"43000 1 14.0 12.0 \n",
|
||
"183923 1 19.0 11.0 \n",
|
||
"97373 0 7.0 2.0 \n",
|
||
"66956 1 0.0 0.0 \n",
|
||
"116487 0 5.0 0.0 \n",
|
||
"... ... ... ... \n",
|
||
"83146 1 9.0 3.0 \n",
|
||
"223586 1 23.0 1.0 \n",
|
||
"56489 1 4.0 0.0 \n",
|
||
"141236 1 6.0 0.0 \n",
|
||
"6999 0 0.0 0.0 \n",
|
||
"\n",
|
||
"[10000 rows x 14 columns]"
|
||
]
|
||
},
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"X_train_subsample"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "fcbb8bea-e9d3-4fd4-8b47-7e796c788a1f",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Preprocessing"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"id": "55e0c6d8-9e98-47be-9d5d-41e06505ceba",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# no need to standardize variables in a random forest\n",
|
||
"# we just encode categorical variables\n",
|
||
"\n",
|
||
"categorical_features = ['opt_in', 'is_email_true'] \n",
|
||
"\n",
|
||
"# Transformer for the categorical features\n",
|
||
"categorical_transformer = Pipeline(steps=[\n",
|
||
" #(\"imputer\", SimpleImputer(strategy=\"most_frequent\")), # Impute missing values with the most frequent\n",
|
||
" (\"onehot\", OneHotEncoder(handle_unknown='ignore', sparse_output=False))\n",
|
||
"])\n",
|
||
"\n",
|
||
"preproc = ColumnTransformer(\n",
|
||
" transformers=[\n",
|
||
" (\"cat\", categorical_transformer, categorical_features)\n",
|
||
" ]\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"id": "27af28da-d2bb-4eff-b842-18cec9740c84",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style>#sk-container-id-2 {\n",
|
||
" /* Definition of color scheme common for light and dark mode */\n",
|
||
" --sklearn-color-text: black;\n",
|
||
" --sklearn-color-line: gray;\n",
|
||
" /* Definition of color scheme for unfitted estimators */\n",
|
||
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
|
||
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
|
||
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
|
||
" --sklearn-color-unfitted-level-3: chocolate;\n",
|
||
" /* Definition of color scheme for fitted estimators */\n",
|
||
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
|
||
" --sklearn-color-fitted-level-1: #d4ebff;\n",
|
||
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
|
||
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
|
||
"\n",
|
||
" /* Specific color for light theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-icon: #696969;\n",
|
||
"\n",
|
||
" @media (prefers-color-scheme: dark) {\n",
|
||
" /* Redefinition of color scheme for dark theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-icon: #878787;\n",
|
||
" }\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 pre {\n",
|
||
" padding: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 input.sk-hidden--visually {\n",
|
||
" border: 0;\n",
|
||
" clip: rect(1px 1px 1px 1px);\n",
|
||
" clip: rect(1px, 1px, 1px, 1px);\n",
|
||
" height: 1px;\n",
|
||
" margin: -1px;\n",
|
||
" overflow: hidden;\n",
|
||
" padding: 0;\n",
|
||
" position: absolute;\n",
|
||
" width: 1px;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-dashed-wrapped {\n",
|
||
" border: 1px dashed var(--sklearn-color-line);\n",
|
||
" margin: 0 0.4em 0.5em 0.4em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" padding-bottom: 0.4em;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-container {\n",
|
||
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
|
||
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
|
||
" so we also need the `!important` here to be able to override the\n",
|
||
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
|
||
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
|
||
" display: inline-block !important;\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-text-repr-fallback {\n",
|
||
" display: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-parallel-item,\n",
|
||
"div.sk-serial,\n",
|
||
"div.sk-item {\n",
|
||
" /* draw centered vertical line to link estimators */\n",
|
||
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
|
||
" background-size: 2px 100%;\n",
|
||
" background-repeat: no-repeat;\n",
|
||
" background-position: center center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Parallel-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-parallel-item::after {\n",
|
||
" content: \"\";\n",
|
||
" width: 100%;\n",
|
||
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
|
||
" flex-grow: 1;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-parallel {\n",
|
||
" display: flex;\n",
|
||
" align-items: stretch;\n",
|
||
" justify-content: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-parallel-item {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
|
||
" align-self: flex-end;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
|
||
" align-self: flex-start;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
|
||
" width: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Serial-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-serial {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
" align-items: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" padding-right: 1em;\n",
|
||
" padding-left: 1em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"\n",
|
||
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
|
||
"clickable and can be expanded/collapsed.\n",
|
||
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
|
||
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
|
||
"*/\n",
|
||
"\n",
|
||
"/* Pipeline and ColumnTransformer style (default) */\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-toggleable {\n",
|
||
" /* Default theme specific background. It is overwritten whether we have a\n",
|
||
" specific estimator or a Pipeline/ColumnTransformer */\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable label */\n",
|
||
"#sk-container-id-2 label.sk-toggleable__label {\n",
|
||
" cursor: pointer;\n",
|
||
" display: block;\n",
|
||
" width: 100%;\n",
|
||
" margin-bottom: 0;\n",
|
||
" padding: 0.5em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
|
||
" /* Arrow on the left of the label */\n",
|
||
" content: \"▸\";\n",
|
||
" float: left;\n",
|
||
" margin-right: 0.25em;\n",
|
||
" color: var(--sklearn-color-icon);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable content - dropdown */\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-toggleable__content {\n",
|
||
" max-height: 0;\n",
|
||
" max-width: 0;\n",
|
||
" overflow: hidden;\n",
|
||
" text-align: left;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-toggleable__content pre {\n",
|
||
" margin: 0.2em;\n",
|
||
" border-radius: 0.25em;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
|
||
" /* Expand drop-down */\n",
|
||
" max-height: 200px;\n",
|
||
" max-width: 100%;\n",
|
||
" overflow: auto;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
|
||
" content: \"▾\";\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Pipeline/ColumnTransformer-specific style */\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific style */\n",
|
||
"\n",
|
||
"/* Colorize estimator box */\n",
|
||
"#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
|
||
"#sk-container-id-2 div.sk-label label {\n",
|
||
" /* The background is the default theme color */\n",
|
||
" color: var(--sklearn-color-text-on-default-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover, darken the color of the background */\n",
|
||
"#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Label box, darken color on hover, fitted */\n",
|
||
"#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator label */\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-label label {\n",
|
||
" font-family: monospace;\n",
|
||
" font-weight: bold;\n",
|
||
" display: inline-block;\n",
|
||
" line-height: 1.2em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-label-container {\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific */\n",
|
||
"#sk-container-id-2 div.sk-estimator {\n",
|
||
" font-family: monospace;\n",
|
||
" border: 1px dotted var(--sklearn-color-border-box);\n",
|
||
" border-radius: 0.25em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" margin-bottom: 0.5em;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-estimator.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* on hover */\n",
|
||
"#sk-container-id-2 div.sk-estimator:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
|
||
"\n",
|
||
"/* Common style for \"i\" and \"?\" */\n",
|
||
"\n",
|
||
".sk-estimator-doc-link,\n",
|
||
"a:link.sk-estimator-doc-link,\n",
|
||
"a:visited.sk-estimator-doc-link {\n",
|
||
" float: right;\n",
|
||
" font-size: smaller;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1em;\n",
|
||
" height: 1em;\n",
|
||
" width: 1em;\n",
|
||
" text-decoration: none !important;\n",
|
||
" margin-left: 1ex;\n",
|
||
" /* unfitted */\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted,\n",
|
||
"a:link.sk-estimator-doc-link.fitted,\n",
|
||
"a:visited.sk-estimator-doc-link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Span, style for the box shown on hovering the info icon */\n",
|
||
".sk-estimator-doc-link span {\n",
|
||
" display: none;\n",
|
||
" z-index: 9999;\n",
|
||
" position: relative;\n",
|
||
" font-weight: normal;\n",
|
||
" right: .2ex;\n",
|
||
" padding: .5ex;\n",
|
||
" margin: .5ex;\n",
|
||
" width: min-content;\n",
|
||
" min-width: 20ex;\n",
|
||
" max-width: 50ex;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" box-shadow: 2pt 2pt 4pt #999;\n",
|
||
" /* unfitted */\n",
|
||
" background: var(--sklearn-color-unfitted-level-0);\n",
|
||
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted span {\n",
|
||
" /* fitted */\n",
|
||
" background: var(--sklearn-color-fitted-level-0);\n",
|
||
" border: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link:hover span {\n",
|
||
" display: block;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
|
||
"\n",
|
||
"#sk-container-id-2 a.estimator_doc_link {\n",
|
||
" float: right;\n",
|
||
" font-size: 1rem;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1rem;\n",
|
||
" height: 1rem;\n",
|
||
" width: 1rem;\n",
|
||
" text-decoration: none;\n",
|
||
" /* unfitted */\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 a.estimator_doc_link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"#sk-container-id-2 a.estimator_doc_link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in', 'is_email_true'])])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> ColumnTransformer<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.compose.ColumnTransformer.html\">?<span>Documentation for ColumnTransformer</span></a><span class=\"sk-estimator-doc-link \">i<span>Not fitted</span></span></label><div class=\"sk-toggleable__content \"><pre>ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in', 'is_email_true'])])</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label sk-toggleable__label-arrow \">cat</label><div class=\"sk-toggleable__content \"><pre>['opt_in', 'is_email_true']</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> OneHotEncoder<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.OneHotEncoder.html\">?<span>Documentation for OneHotEncoder</span></a></label><div class=\"sk-toggleable__content \"><pre>OneHotEncoder(handle_unknown='ignore', sparse_output=False)</pre></div> </div></div></div></div></div></div></div></div></div></div></div>"
|
||
],
|
||
"text/plain": [
|
||
"ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in', 'is_email_true'])])"
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"preproc"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "0cb46acb-647f-469d-b5e1-510bf1283196",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "1ce9acf4-3514-4056-a71a-c7654e25b9de",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "dfdd4601-4866-4102-b620-4f10648e7981",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Pipeline"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "eeefae73-afe7-4441-a04c-bd6a04beedd2",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Define models and parameters for GridSearch\n",
|
||
"model = {\n",
|
||
" 'model': RandomForestClassifier(),\n",
|
||
" 'params': {\n",
|
||
" 'randforest__n_estimators': [100, 150, 200, 250, 300],\n",
|
||
" 'randforest__max_depth': [None, 15, 20, 25, 30, 35, 40],\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
"# Test each model using GridSearchCV\n",
|
||
"pipe = Pipeline(steps=[('preprocessor', preproc), ('randforest', model['model'])])\n",
|
||
"clf = GridSearchCV(pipe, model['params'], cv=3)\n",
|
||
"clf.fit(X_train, y_train)\n",
|
||
"\n",
|
||
"print(f\"Model: {model['model']}\")\n",
|
||
"print(f\"Best parameters: {clf.best_params_}\")\n",
|
||
"print('Best classification accuracy in train is: {}'.format(clf.best_score_))\n",
|
||
"print('Classification accuracy on test is: {}'.format(clf.score(X_test, y_test)))\n",
|
||
"print(\"------\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 43,
|
||
"id": "2a88f13b-05bc-4a70-b08b-8b07c118cedc",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style>#sk-container-id-7 {\n",
|
||
" /* Definition of color scheme common for light and dark mode */\n",
|
||
" --sklearn-color-text: black;\n",
|
||
" --sklearn-color-line: gray;\n",
|
||
" /* Definition of color scheme for unfitted estimators */\n",
|
||
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
|
||
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
|
||
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
|
||
" --sklearn-color-unfitted-level-3: chocolate;\n",
|
||
" /* Definition of color scheme for fitted estimators */\n",
|
||
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
|
||
" --sklearn-color-fitted-level-1: #d4ebff;\n",
|
||
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
|
||
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
|
||
"\n",
|
||
" /* Specific color for light theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-icon: #696969;\n",
|
||
"\n",
|
||
" @media (prefers-color-scheme: dark) {\n",
|
||
" /* Redefinition of color scheme for dark theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-icon: #878787;\n",
|
||
" }\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 pre {\n",
|
||
" padding: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 input.sk-hidden--visually {\n",
|
||
" border: 0;\n",
|
||
" clip: rect(1px 1px 1px 1px);\n",
|
||
" clip: rect(1px, 1px, 1px, 1px);\n",
|
||
" height: 1px;\n",
|
||
" margin: -1px;\n",
|
||
" overflow: hidden;\n",
|
||
" padding: 0;\n",
|
||
" position: absolute;\n",
|
||
" width: 1px;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-dashed-wrapped {\n",
|
||
" border: 1px dashed var(--sklearn-color-line);\n",
|
||
" margin: 0 0.4em 0.5em 0.4em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" padding-bottom: 0.4em;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-container {\n",
|
||
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
|
||
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
|
||
" so we also need the `!important` here to be able to override the\n",
|
||
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
|
||
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
|
||
" display: inline-block !important;\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-text-repr-fallback {\n",
|
||
" display: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-parallel-item,\n",
|
||
"div.sk-serial,\n",
|
||
"div.sk-item {\n",
|
||
" /* draw centered vertical line to link estimators */\n",
|
||
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
|
||
" background-size: 2px 100%;\n",
|
||
" background-repeat: no-repeat;\n",
|
||
" background-position: center center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Parallel-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-parallel-item::after {\n",
|
||
" content: \"\";\n",
|
||
" width: 100%;\n",
|
||
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
|
||
" flex-grow: 1;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-parallel {\n",
|
||
" display: flex;\n",
|
||
" align-items: stretch;\n",
|
||
" justify-content: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-parallel-item {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-parallel-item:first-child::after {\n",
|
||
" align-self: flex-end;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-parallel-item:last-child::after {\n",
|
||
" align-self: flex-start;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-parallel-item:only-child::after {\n",
|
||
" width: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Serial-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-serial {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
" align-items: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" padding-right: 1em;\n",
|
||
" padding-left: 1em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"\n",
|
||
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
|
||
"clickable and can be expanded/collapsed.\n",
|
||
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
|
||
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
|
||
"*/\n",
|
||
"\n",
|
||
"/* Pipeline and ColumnTransformer style (default) */\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-toggleable {\n",
|
||
" /* Default theme specific background. It is overwritten whether we have a\n",
|
||
" specific estimator or a Pipeline/ColumnTransformer */\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable label */\n",
|
||
"#sk-container-id-7 label.sk-toggleable__label {\n",
|
||
" cursor: pointer;\n",
|
||
" display: block;\n",
|
||
" width: 100%;\n",
|
||
" margin-bottom: 0;\n",
|
||
" padding: 0.5em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 label.sk-toggleable__label-arrow:before {\n",
|
||
" /* Arrow on the left of the label */\n",
|
||
" content: \"▸\";\n",
|
||
" float: left;\n",
|
||
" margin-right: 0.25em;\n",
|
||
" color: var(--sklearn-color-icon);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 label.sk-toggleable__label-arrow:hover:before {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable content - dropdown */\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-toggleable__content {\n",
|
||
" max-height: 0;\n",
|
||
" max-width: 0;\n",
|
||
" overflow: hidden;\n",
|
||
" text-align: left;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-toggleable__content.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-toggleable__content pre {\n",
|
||
" margin: 0.2em;\n",
|
||
" border-radius: 0.25em;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-toggleable__content.fitted pre {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
|
||
" /* Expand drop-down */\n",
|
||
" max-height: 200px;\n",
|
||
" max-width: 100%;\n",
|
||
" overflow: auto;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
|
||
" content: \"▾\";\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Pipeline/ColumnTransformer-specific style */\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific style */\n",
|
||
"\n",
|
||
"/* Colorize estimator box */\n",
|
||
"#sk-container-id-7 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-label label.sk-toggleable__label,\n",
|
||
"#sk-container-id-7 div.sk-label label {\n",
|
||
" /* The background is the default theme color */\n",
|
||
" color: var(--sklearn-color-text-on-default-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover, darken the color of the background */\n",
|
||
"#sk-container-id-7 div.sk-label:hover label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Label box, darken color on hover, fitted */\n",
|
||
"#sk-container-id-7 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator label */\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-label label {\n",
|
||
" font-family: monospace;\n",
|
||
" font-weight: bold;\n",
|
||
" display: inline-block;\n",
|
||
" line-height: 1.2em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-label-container {\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific */\n",
|
||
"#sk-container-id-7 div.sk-estimator {\n",
|
||
" font-family: monospace;\n",
|
||
" border: 1px dotted var(--sklearn-color-border-box);\n",
|
||
" border-radius: 0.25em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" margin-bottom: 0.5em;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-estimator.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* on hover */\n",
|
||
"#sk-container-id-7 div.sk-estimator:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 div.sk-estimator.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
|
||
"\n",
|
||
"/* Common style for \"i\" and \"?\" */\n",
|
||
"\n",
|
||
".sk-estimator-doc-link,\n",
|
||
"a:link.sk-estimator-doc-link,\n",
|
||
"a:visited.sk-estimator-doc-link {\n",
|
||
" float: right;\n",
|
||
" font-size: smaller;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1em;\n",
|
||
" height: 1em;\n",
|
||
" width: 1em;\n",
|
||
" text-decoration: none !important;\n",
|
||
" margin-left: 1ex;\n",
|
||
" /* unfitted */\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted,\n",
|
||
"a:link.sk-estimator-doc-link.fitted,\n",
|
||
"a:visited.sk-estimator-doc-link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Span, style for the box shown on hovering the info icon */\n",
|
||
".sk-estimator-doc-link span {\n",
|
||
" display: none;\n",
|
||
" z-index: 9999;\n",
|
||
" position: relative;\n",
|
||
" font-weight: normal;\n",
|
||
" right: .2ex;\n",
|
||
" padding: .5ex;\n",
|
||
" margin: .5ex;\n",
|
||
" width: min-content;\n",
|
||
" min-width: 20ex;\n",
|
||
" max-width: 50ex;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" box-shadow: 2pt 2pt 4pt #999;\n",
|
||
" /* unfitted */\n",
|
||
" background: var(--sklearn-color-unfitted-level-0);\n",
|
||
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted span {\n",
|
||
" /* fitted */\n",
|
||
" background: var(--sklearn-color-fitted-level-0);\n",
|
||
" border: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link:hover span {\n",
|
||
" display: block;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
|
||
"\n",
|
||
"#sk-container-id-7 a.estimator_doc_link {\n",
|
||
" float: right;\n",
|
||
" font-size: 1rem;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1rem;\n",
|
||
" height: 1rem;\n",
|
||
" width: 1rem;\n",
|
||
" text-decoration: none;\n",
|
||
" /* unfitted */\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 a.estimator_doc_link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"#sk-container-id-7 a.estimator_doc_link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-7 a.estimator_doc_link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"</style><div id=\"sk-container-id-7\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('random_forest',\n",
|
||
" RandomForestClassifier(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539}))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-27\" type=\"checkbox\" ><label for=\"sk-estimator-id-27\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> Pipeline<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link \">i<span>Not fitted</span></span></label><div class=\"sk-toggleable__content \"><pre>Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('random_forest',\n",
|
||
" RandomForestClassifier(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539}))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-28\" type=\"checkbox\" ><label for=\"sk-estimator-id-28\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> preprocessor: ColumnTransformer<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.compose.ColumnTransformer.html\">?<span>Documentation for preprocessor: ColumnTransformer</span></a></label><div class=\"sk-toggleable__content \"><pre>ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in', 'is_email_true'])])</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-29\" type=\"checkbox\" ><label for=\"sk-estimator-id-29\" class=\"sk-toggleable__label sk-toggleable__label-arrow \">cat</label><div class=\"sk-toggleable__content \"><pre>['opt_in', 'is_email_true']</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-30\" type=\"checkbox\" ><label for=\"sk-estimator-id-30\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> OneHotEncoder<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.OneHotEncoder.html\">?<span>Documentation for OneHotEncoder</span></a></label><div class=\"sk-toggleable__content \"><pre>OneHotEncoder(handle_unknown='ignore', sparse_output=False)</pre></div> </div></div></div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-31\" type=\"checkbox\" ><label for=\"sk-estimator-id-31\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> RandomForestClassifier<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a></label><div class=\"sk-toggleable__content \"><pre>RandomForestClassifier(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539})</pre></div> </div></div></div></div></div></div>"
|
||
],
|
||
"text/plain": [
|
||
"Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('random_forest',\n",
|
||
" RandomForestClassifier(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539}))])"
|
||
]
|
||
},
|
||
"execution_count": 43,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Pipeline - on joue sur : max_depth\n",
|
||
"\n",
|
||
"param_grid = {\"random_forest__max_depth\" : [None, 10, 20, 40, 50, 60]}\n",
|
||
"\n",
|
||
"pipeline = Pipeline(steps=[\n",
|
||
" ('preprocessor', preproc),\n",
|
||
" ('random_forest', RandomForestClassifier(bootstrap = False, class_weight = weight_dict,\n",
|
||
" )) \n",
|
||
"])\n",
|
||
"\n",
|
||
"pipeline.set_output(transform=\"pandas\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"id": "494dca83-4d60-4e49-8689-7d7ac612bb83",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"{'estimator': DecisionTreeClassifier(),\n",
|
||
" 'n_estimators': 100,\n",
|
||
" 'estimator_params': ('criterion',\n",
|
||
" 'max_depth',\n",
|
||
" 'min_samples_split',\n",
|
||
" 'min_samples_leaf',\n",
|
||
" 'min_weight_fraction_leaf',\n",
|
||
" 'max_features',\n",
|
||
" 'max_leaf_nodes',\n",
|
||
" 'min_impurity_decrease',\n",
|
||
" 'random_state',\n",
|
||
" 'ccp_alpha',\n",
|
||
" 'monotonic_cst'),\n",
|
||
" 'bootstrap': True,\n",
|
||
" 'oob_score': False,\n",
|
||
" 'n_jobs': None,\n",
|
||
" 'random_state': None,\n",
|
||
" 'verbose': 0,\n",
|
||
" 'warm_start': False,\n",
|
||
" 'class_weight': None,\n",
|
||
" 'max_samples': None,\n",
|
||
" 'criterion': 'gini',\n",
|
||
" 'max_depth': None,\n",
|
||
" 'min_samples_split': 2,\n",
|
||
" 'min_samples_leaf': 1,\n",
|
||
" 'min_weight_fraction_leaf': 0.0,\n",
|
||
" 'max_features': 'sqrt',\n",
|
||
" 'max_leaf_nodes': None,\n",
|
||
" 'min_impurity_decrease': 0.0,\n",
|
||
" 'monotonic_cst': None,\n",
|
||
" 'ccp_alpha': 0.0}"
|
||
]
|
||
},
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"RandomForestClassifier().__dict__"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 44,
|
||
"id": "ee7cbc1c-7c31-4111-82a3-995141e2f13f",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style>#sk-container-id-8 {\n",
|
||
" /* Definition of color scheme common for light and dark mode */\n",
|
||
" --sklearn-color-text: black;\n",
|
||
" --sklearn-color-line: gray;\n",
|
||
" /* Definition of color scheme for unfitted estimators */\n",
|
||
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
|
||
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
|
||
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
|
||
" --sklearn-color-unfitted-level-3: chocolate;\n",
|
||
" /* Definition of color scheme for fitted estimators */\n",
|
||
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
|
||
" --sklearn-color-fitted-level-1: #d4ebff;\n",
|
||
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
|
||
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
|
||
"\n",
|
||
" /* Specific color for light theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-icon: #696969;\n",
|
||
"\n",
|
||
" @media (prefers-color-scheme: dark) {\n",
|
||
" /* Redefinition of color scheme for dark theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-icon: #878787;\n",
|
||
" }\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 pre {\n",
|
||
" padding: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 input.sk-hidden--visually {\n",
|
||
" border: 0;\n",
|
||
" clip: rect(1px 1px 1px 1px);\n",
|
||
" clip: rect(1px, 1px, 1px, 1px);\n",
|
||
" height: 1px;\n",
|
||
" margin: -1px;\n",
|
||
" overflow: hidden;\n",
|
||
" padding: 0;\n",
|
||
" position: absolute;\n",
|
||
" width: 1px;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-dashed-wrapped {\n",
|
||
" border: 1px dashed var(--sklearn-color-line);\n",
|
||
" margin: 0 0.4em 0.5em 0.4em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" padding-bottom: 0.4em;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-container {\n",
|
||
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
|
||
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
|
||
" so we also need the `!important` here to be able to override the\n",
|
||
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
|
||
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
|
||
" display: inline-block !important;\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-text-repr-fallback {\n",
|
||
" display: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-parallel-item,\n",
|
||
"div.sk-serial,\n",
|
||
"div.sk-item {\n",
|
||
" /* draw centered vertical line to link estimators */\n",
|
||
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
|
||
" background-size: 2px 100%;\n",
|
||
" background-repeat: no-repeat;\n",
|
||
" background-position: center center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Parallel-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-parallel-item::after {\n",
|
||
" content: \"\";\n",
|
||
" width: 100%;\n",
|
||
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
|
||
" flex-grow: 1;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-parallel {\n",
|
||
" display: flex;\n",
|
||
" align-items: stretch;\n",
|
||
" justify-content: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-parallel-item {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-parallel-item:first-child::after {\n",
|
||
" align-self: flex-end;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-parallel-item:last-child::after {\n",
|
||
" align-self: flex-start;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-parallel-item:only-child::after {\n",
|
||
" width: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Serial-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-serial {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
" align-items: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" padding-right: 1em;\n",
|
||
" padding-left: 1em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"\n",
|
||
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
|
||
"clickable and can be expanded/collapsed.\n",
|
||
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
|
||
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
|
||
"*/\n",
|
||
"\n",
|
||
"/* Pipeline and ColumnTransformer style (default) */\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-toggleable {\n",
|
||
" /* Default theme specific background. It is overwritten whether we have a\n",
|
||
" specific estimator or a Pipeline/ColumnTransformer */\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable label */\n",
|
||
"#sk-container-id-8 label.sk-toggleable__label {\n",
|
||
" cursor: pointer;\n",
|
||
" display: block;\n",
|
||
" width: 100%;\n",
|
||
" margin-bottom: 0;\n",
|
||
" padding: 0.5em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 label.sk-toggleable__label-arrow:before {\n",
|
||
" /* Arrow on the left of the label */\n",
|
||
" content: \"▸\";\n",
|
||
" float: left;\n",
|
||
" margin-right: 0.25em;\n",
|
||
" color: var(--sklearn-color-icon);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 label.sk-toggleable__label-arrow:hover:before {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable content - dropdown */\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-toggleable__content {\n",
|
||
" max-height: 0;\n",
|
||
" max-width: 0;\n",
|
||
" overflow: hidden;\n",
|
||
" text-align: left;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-toggleable__content.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-toggleable__content pre {\n",
|
||
" margin: 0.2em;\n",
|
||
" border-radius: 0.25em;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-toggleable__content.fitted pre {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
|
||
" /* Expand drop-down */\n",
|
||
" max-height: 200px;\n",
|
||
" max-width: 100%;\n",
|
||
" overflow: auto;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
|
||
" content: \"▾\";\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Pipeline/ColumnTransformer-specific style */\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific style */\n",
|
||
"\n",
|
||
"/* Colorize estimator box */\n",
|
||
"#sk-container-id-8 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-label label.sk-toggleable__label,\n",
|
||
"#sk-container-id-8 div.sk-label label {\n",
|
||
" /* The background is the default theme color */\n",
|
||
" color: var(--sklearn-color-text-on-default-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover, darken the color of the background */\n",
|
||
"#sk-container-id-8 div.sk-label:hover label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Label box, darken color on hover, fitted */\n",
|
||
"#sk-container-id-8 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator label */\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-label label {\n",
|
||
" font-family: monospace;\n",
|
||
" font-weight: bold;\n",
|
||
" display: inline-block;\n",
|
||
" line-height: 1.2em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-label-container {\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific */\n",
|
||
"#sk-container-id-8 div.sk-estimator {\n",
|
||
" font-family: monospace;\n",
|
||
" border: 1px dotted var(--sklearn-color-border-box);\n",
|
||
" border-radius: 0.25em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" margin-bottom: 0.5em;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-estimator.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* on hover */\n",
|
||
"#sk-container-id-8 div.sk-estimator:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 div.sk-estimator.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
|
||
"\n",
|
||
"/* Common style for \"i\" and \"?\" */\n",
|
||
"\n",
|
||
".sk-estimator-doc-link,\n",
|
||
"a:link.sk-estimator-doc-link,\n",
|
||
"a:visited.sk-estimator-doc-link {\n",
|
||
" float: right;\n",
|
||
" font-size: smaller;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1em;\n",
|
||
" height: 1em;\n",
|
||
" width: 1em;\n",
|
||
" text-decoration: none !important;\n",
|
||
" margin-left: 1ex;\n",
|
||
" /* unfitted */\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted,\n",
|
||
"a:link.sk-estimator-doc-link.fitted,\n",
|
||
"a:visited.sk-estimator-doc-link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Span, style for the box shown on hovering the info icon */\n",
|
||
".sk-estimator-doc-link span {\n",
|
||
" display: none;\n",
|
||
" z-index: 9999;\n",
|
||
" position: relative;\n",
|
||
" font-weight: normal;\n",
|
||
" right: .2ex;\n",
|
||
" padding: .5ex;\n",
|
||
" margin: .5ex;\n",
|
||
" width: min-content;\n",
|
||
" min-width: 20ex;\n",
|
||
" max-width: 50ex;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" box-shadow: 2pt 2pt 4pt #999;\n",
|
||
" /* unfitted */\n",
|
||
" background: var(--sklearn-color-unfitted-level-0);\n",
|
||
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted span {\n",
|
||
" /* fitted */\n",
|
||
" background: var(--sklearn-color-fitted-level-0);\n",
|
||
" border: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link:hover span {\n",
|
||
" display: block;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
|
||
"\n",
|
||
"#sk-container-id-8 a.estimator_doc_link {\n",
|
||
" float: right;\n",
|
||
" font-size: 1rem;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1rem;\n",
|
||
" height: 1rem;\n",
|
||
" width: 1rem;\n",
|
||
" text-decoration: none;\n",
|
||
" /* unfitted */\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 a.estimator_doc_link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"#sk-container-id-8 a.estimator_doc_link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-8 a.estimator_doc_link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"</style><div id=\"sk-container-id-8\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GridSearchCV(cv=3,\n",
|
||
" estimator=Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('random_forest',\n",
|
||
" RandomForestClassifier(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539}))]),\n",
|
||
" param_grid={'random_forest__max_depth': [None, 10, 20, 40, 50,\n",
|
||
" 60]},\n",
|
||
" scoring=make_scorer(f1_score, response_method='predict'))</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-32\" type=\"checkbox\" ><label for=\"sk-estimator-id-32\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> GridSearchCV<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.model_selection.GridSearchCV.html\">?<span>Documentation for GridSearchCV</span></a><span class=\"sk-estimator-doc-link \">i<span>Not fitted</span></span></label><div class=\"sk-toggleable__content \"><pre>GridSearchCV(cv=3,\n",
|
||
" estimator=Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('random_forest',\n",
|
||
" RandomForestClassifier(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539}))]),\n",
|
||
" param_grid={'random_forest__max_depth': [None, 10, 20, 40, 50,\n",
|
||
" 60]},\n",
|
||
" scoring=make_scorer(f1_score, response_method='predict'))</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-33\" type=\"checkbox\" ><label for=\"sk-estimator-id-33\" class=\"sk-toggleable__label sk-toggleable__label-arrow \">estimator: Pipeline</label><div class=\"sk-toggleable__content \"><pre>Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('random_forest',\n",
|
||
" RandomForestClassifier(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539}))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-34\" type=\"checkbox\" ><label for=\"sk-estimator-id-34\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> preprocessor: ColumnTransformer<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.compose.ColumnTransformer.html\">?<span>Documentation for preprocessor: ColumnTransformer</span></a></label><div class=\"sk-toggleable__content \"><pre>ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in', 'is_email_true'])])</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-35\" type=\"checkbox\" ><label for=\"sk-estimator-id-35\" class=\"sk-toggleable__label sk-toggleable__label-arrow \">cat</label><div class=\"sk-toggleable__content \"><pre>['opt_in', 'is_email_true']</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-36\" type=\"checkbox\" ><label for=\"sk-estimator-id-36\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> OneHotEncoder<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.preprocessing.OneHotEncoder.html\">?<span>Documentation for OneHotEncoder</span></a></label><div class=\"sk-toggleable__content \"><pre>OneHotEncoder(handle_unknown='ignore', sparse_output=False)</pre></div> </div></div></div></div></div></div></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-37\" type=\"checkbox\" ><label for=\"sk-estimator-id-37\" class=\"sk-toggleable__label sk-toggleable__label-arrow \"> RandomForestClassifier<a class=\"sk-estimator-doc-link \" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a></label><div class=\"sk-toggleable__content \"><pre>RandomForestClassifier(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539})</pre></div> </div></div></div></div></div></div></div></div></div></div></div>"
|
||
],
|
||
"text/plain": [
|
||
"GridSearchCV(cv=3,\n",
|
||
" estimator=Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('random_forest',\n",
|
||
" RandomForestClassifier(class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539}))]),\n",
|
||
" param_grid={'random_forest__max_depth': [None, 10, 20, 40, 50,\n",
|
||
" 60]},\n",
|
||
" scoring=make_scorer(f1_score, response_method='predict'))"
|
||
]
|
||
},
|
||
"execution_count": 44,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# pipeline on the subsample\n",
|
||
"\n",
|
||
"random_forest_grid = GridSearchCV(pipeline, param_grid, cv=3, scoring = f1_scorer #, error_score=\"raise\"\n",
|
||
" )\n",
|
||
"\n",
|
||
"random_forest_grid"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 45,
|
||
"id": "3f149137-6313-4b4e-99d6-b3af7f296ad7",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n",
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/base.py:1351: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
|
||
" return fit_method(estimator, *args, **kwargs)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Returned hyperparameter: {'random_forest__max_depth': None}\n",
|
||
"Best classification F1 score in train is: 0.33107422141513826\n",
|
||
"Classification F1 score on test is: 0.31752789604029275\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# run the pipeline on the full sample\n",
|
||
"\n",
|
||
"random_forest_grid.fit(X_train, y_train)\n",
|
||
"\n",
|
||
"# print results\n",
|
||
"print('Returned hyperparameter: {}'.format(random_forest_grid.best_params_))\n",
|
||
"print('Best classification F1 score in train is: {}'.format(random_forest_grid.best_score_))\n",
|
||
"print('Classification F1 score on test is: {}'.format(random_forest_grid.score(X_test, y_test)))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 33,
|
||
"id": "cd79f942-abd0-48c9-aa0d-0d22673abeec",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"{'scoring': make_scorer(f1_score, response_method='predict'),\n",
|
||
" 'estimator': Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('random_forest',\n",
|
||
" RandomForestClassifier(bootstrap=False,\n",
|
||
" class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539}))]),\n",
|
||
" 'n_jobs': None,\n",
|
||
" 'refit': True,\n",
|
||
" 'cv': 3,\n",
|
||
" 'verbose': 0,\n",
|
||
" 'pre_dispatch': '2*n_jobs',\n",
|
||
" 'error_score': nan,\n",
|
||
" 'return_train_score': False,\n",
|
||
" 'param_grid': {'random_forest__max_depth': [None, 10, 20, 40, 50, 60]},\n",
|
||
" 'multimetric_': False,\n",
|
||
" 'best_index_': 0,\n",
|
||
" 'best_score_': 0.33107422141513826,\n",
|
||
" 'best_params_': {'random_forest__max_depth': None},\n",
|
||
" 'best_estimator_': Pipeline(steps=[('preprocessor',\n",
|
||
" ColumnTransformer(transformers=[('cat',\n",
|
||
" Pipeline(steps=[('onehot',\n",
|
||
" OneHotEncoder(handle_unknown='ignore',\n",
|
||
" sparse_output=False))]),\n",
|
||
" ['opt_in',\n",
|
||
" 'is_email_true'])])),\n",
|
||
" ('random_forest',\n",
|
||
" RandomForestClassifier(bootstrap=False,\n",
|
||
" class_weight={0.0: 0.5837086520288036,\n",
|
||
" 1.0: 3.486549107420539}))]),\n",
|
||
" 'refit_time_': 2.2247676849365234,\n",
|
||
" 'feature_names_in_': array(['nb_tickets', 'nb_purchases', 'total_amount', 'nb_suppliers',\n",
|
||
" 'vente_internet_max', 'purchase_date_min', 'purchase_date_max',\n",
|
||
" 'nb_tickets_internet', 'is_email_true', 'opt_in', 'gender_female',\n",
|
||
" 'gender_male', 'nb_campaigns', 'nb_campaigns_opened'], dtype=object),\n",
|
||
" 'scorer_': make_scorer(f1_score, response_method='predict'),\n",
|
||
" 'cv_results_': {'mean_fit_time': array([1.64734515, 1.4220806 , 1.43256299, 1.68632547, 1.4271005 ,\n",
|
||
" 1.42404906]),\n",
|
||
" 'std_fit_time': array([0.32811727, 0.01915 , 0.02151065, 0.2729267 , 0.02447776,\n",
|
||
" 0.02384922]),\n",
|
||
" 'mean_score_time': array([0.14065607, 0.13571024, 0.13531415, 0.17512798, 0.13398822,\n",
|
||
" 0.13499872]),\n",
|
||
" 'std_score_time': array([0.00759402, 0.00653712, 0.00743453, 0.04901062, 0.00848726,\n",
|
||
" 0.00789539]),\n",
|
||
" 'param_random_forest__max_depth': masked_array(data=[None, 10, 20, 40, 50, 60],\n",
|
||
" mask=[False, False, False, False, False, False],\n",
|
||
" fill_value='?',\n",
|
||
" dtype=object),\n",
|
||
" 'params': [{'random_forest__max_depth': None},\n",
|
||
" {'random_forest__max_depth': 10},\n",
|
||
" {'random_forest__max_depth': 20},\n",
|
||
" {'random_forest__max_depth': 40},\n",
|
||
" {'random_forest__max_depth': 50},\n",
|
||
" {'random_forest__max_depth': 60}],\n",
|
||
" 'split0_test_score': array([0.19168873, 0.19168873, 0.19168873, 0.19168873, 0.19168873,\n",
|
||
" 0.19168873]),\n",
|
||
" 'split1_test_score': array([0.34428494, 0.34428494, 0.34428494, 0.34428494, 0.34428494,\n",
|
||
" 0.34428494]),\n",
|
||
" 'split2_test_score': array([0.45724899, 0.45724899, 0.45724899, 0.45724899, 0.45724899,\n",
|
||
" 0.45724899]),\n",
|
||
" 'mean_test_score': array([0.33107422, 0.33107422, 0.33107422, 0.33107422, 0.33107422,\n",
|
||
" 0.33107422]),\n",
|
||
" 'std_test_score': array([0.10881622, 0.10881622, 0.10881622, 0.10881622, 0.10881622,\n",
|
||
" 0.10881622]),\n",
|
||
" 'rank_test_score': array([1, 1, 1, 1, 1, 1], dtype=int32)},\n",
|
||
" 'n_splits_': 3}"
|
||
]
|
||
},
|
||
"execution_count": 33,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"random_forest_grid.__dict__"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 46,
|
||
"id": "1806fe6d-cf98-459d-b05a-eb95972281dc",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Accuracy Score: 0.48955211455211456\n",
|
||
"F1 Score: 0.31752789604029275\n",
|
||
"Recall Score: 0.8335281227173119\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# print results for the best model\n",
|
||
"\n",
|
||
"y_pred = random_forest_grid.predict(X_test)\n",
|
||
"\n",
|
||
"# Calculate the F1 score\n",
|
||
"acc = accuracy_score(y_test, y_pred)\n",
|
||
"print(f\"Accuracy Score: {acc}\")\n",
|
||
"\n",
|
||
"f1 = f1_score(y_test, y_pred)\n",
|
||
"print(f\"F1 Score: {f1}\")\n",
|
||
"\n",
|
||
"recall = recall_score(y_test, y_pred)\n",
|
||
"print(f\"Recall Score: {recall}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 47,
|
||
"id": "1a6a8e07-bd93-496b-986e-d219c03b82c5",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# confusion matrix \n",
|
||
"\n",
|
||
"draw_confusion_matrix(y_test, y_pred)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 48,
|
||
"id": "1e1b3e42-1075-4a4a-bf44-3dadde3dbed1",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAABIQAAAK8CAYAAACeK2TMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3QUhdfG8W96LwQIJSQ0qVJCEQWUKihFQQERFdGf2LC8YsfeC6LYsXdFRAEVEMGCSFEpAQSkl4QSIIT0np33j4HgsAETSDK72edzDsfsZDa5QZ5suMzc62UYhoGIiIiIiIiIiHgMb7sLEBERERERERGRqqWGkIiIiIiIiIiIh1FDSERERERERETEw6ghJCIiIiIiIiLiYdQQEhERERERERHxMGoIiYiIiIiIiIh4GDWEREREREREREQ8jBpCIiIiIiIiIiIeRg0hEREREREREREPo4aQiIiIiJt7/PHHqVmzJrt27bK7FBEREXETagiJiIhUorVr13LttdfSuHFjAgMDCQ0NpWPHjkycOJHU1FRbavroo4/w8vJixYoVlfp5du7ciZeXV8kvb29vatSoQd++fZk/f/4Jnzdv3jwGDRpE7dq1CQgIIDY2ljFjxrBhw4YTPuf333/nsssuIyYmBn9/fyIiIujWrRtTpkwhOzu7Mr48Wxz9f7dz507L8UcffZRLLrmEESNGUFBQUOpzH3vsMby8vCqsloULF+Ll5cXChQsr7GOWplGjRlxzzTXles7SpUt57LHHSEtLc3pfr1696NWrV4XUJiIi4s7UEBIREakk7777Lp06dWL58uXcc889zJs3j5kzZzJixAjeeustrrvuOrtLrBK33XYby5Yt4/fff2fSpEls2bKFgQMHsmjRIqdz7733XgYMGIDD4eDNN99kwYIFPProoyxfvpyOHTsyY8YMp+c8+uij9OjRgz179vDkk0+yYMECvvzyS/r27ctjjz3GQw89VBVfpu3eeustateuzfjx4+0upULNnDmThx9+uFzPWbp0KY8//nipDaE333yTN998s4KqExERcV++dhcgIiJSHS1btoybb76Zfv36MWvWLAICAkre169fP+666y7mzZtXpTUVFhZW6BUiZRUXF8c555wDQPfu3WnWrBk9e/bk/fffp0ePHiXnTZ06lRdeeIGbb77Z8hf2Hj16MGrUKHr27Mno0aOJj4+nSZMmAEyfPp0nnniC6667jnfffdfy9Q0YMIB7772XZcuWVdFXai9fX1/mzJljdxkVrkOHDhX68Vq3bl2hH09ERMRd6QohERGRSvDMM8/g5eXFO++8Y2kGHeXv78/FF19c8tjhcDBx4kRatmxJQEAA0dHRXH311ezevdvyvBPdPnP8bTBHb+f59NNPueuuu4iJiSEgIICtW7eWnHP48GGuvfZaoqKiCAkJ4aKLLmL79u1OH/unn36ib9++hIeHExwcTPfu3fn5559P4XfF1LlzZwD2799vOf70009To0YNJk2a5PSckJAQXnvtNXJycpg8eXLJ8SeeeIIaNWrw6quvltrsCgsLo3///qdc6/F69epFmzZtWLZsGd26dSMoKIhGjRrx4YcfAjBnzhw6duxIcHAwbdu2LbXpt3jxYvr27UtYWBjBwcF069at1EbOH3/8Qffu3QkMDKR+/fpMmDCBwsLCUuuaNm0aXbt2JSQkhNDQUPr378/KlSvL9DUd/9wLLriAhISEcvyuWH333Xd07dqV4OBgwsLC6NevX6lNuW+//ZZ27doREBBAkyZNeOWVV0q9re34P/MOh4OnnnqKFi1aEBQURGRkJO3ateOVV14BzFvj7rnnHgAaN25ccsvi0VvbSrtlbO/evVx22WWEhYURERHByJEj+eOPP/Dy8uKjjz4qOe9Et5tdc801NGrUyHKsoKCAp556qiTTtWvX5tprr+XgwYNl+40UERGpZGoIiYiIVLDi4mJ++eUXOnXqRGxsbJmec/PNN3PffffRr18/vvvuO5588knmzZtHt27dSElJOeVaJkyYQGJiIm+99Rbff/890dHRJe+77rrr8Pb25osvvuDll1/mr7/+olevXpbbbD777DP69+9PeHg4H3/8MV999RVRUVFccMEFp9wU2rFjBwDNmzcvObZv3z7Wr19P//79CQ4OLvV5Xbt2JTo6mgULFpQ8Z926dSd9TlkcbZ499thjZTo/OTmZa6+9lrFjx/Ltt9/Stm1b/ve///HEE08wYcIE7r33Xr755htCQ0MZOnQoe/fuLXnub7/9Rp8+fUhPT+f9999n6tSphIWFcdFFFzFt2rSS8zZs2EDfvn1JS0vjo48+4q233iIhIYGnnnrKqZ5nnnmGUaNG0bp1a7766is++eQTMjIyOO+881i3bt1Jv5bjn/vpp5+SmZnJeeedd9KZTSfyxRdfMGTIEMLDw5k6dSrvv/8+hw8fplevXixevLjkvHnz5nHppZdSs2ZNpk2bxsSJE5k6dSoff/zxf36OiRMn8thjjzFq1CjmzJnDtGnTuO6660r+3I4dO5bbbrsNgBkzZrBs2TKWLVtGx44dS/14ubm5nH/++cyfP59nn32W6dOnU7duXUaOHFnur/8oh8PBkCFDeO6557jiiiuYM2cOzz33HAsWLKBXr17k5uae8scWERGpMIaIiIhUqOTkZAMwLr/88jKd/88//xiAMW7cOMvxP//80wCMBx54oORYw4YNjTFjxjh9jJ49exo9e/Ysefzrr78agNGjRw+ncz/88EMDMC655BLL8SVLlhiA8dRTTxmGYRjZ2dlGVFSUcdFFF1nOKy4uNtq3b2906dLlpF/Xjh07DMB4/vnnjcLCQiMvL89YvXq10bVrV6NevXrGjh07Ss79448/DMC4//77T/oxzz77bCMoKKhcz/kvCxcuNHx8fIzHH3/8P8/t2bOnARgrVqwoOXbo0CHDx8fHCAoKMvbs2VNyfPXq1QZgvPrqqyXHzjnnHCM6OtrIzMwsOVZUVGS0adPGaNCggeFwOAzDMIyRI0caQUFBRnJysuW8li1bGkDJ711iYqLh6+tr3HLLLZY6MzIyjOjoaGP48OElxx599FHj3z/6HX3ubbfdZnluZmamUbduXeOyyy476e/F0T9jv/76q2EY5p+L+vXrG23btjWKi4stHy86Otro1q1bybGzzjrLiI2NNfLz8y3n1axZ0zj+x9Pj/8wPHjzYiI+PP2ltL7zwguX36d+Oz8qUKVMMwPj2228t511//fUGYHz44YcnfO5RY8aMMRo2bFjyeOrUqQZgfPPNN5bzli9fbgDGm2++edL6RUREqoKuEBIREbHZr7/+CuB0K1iXLl1o1arVad2eNWzYsBO+78orr7Q87tatGw0bNiypZ+nSpaSmpjJmzBiKiopKfjkcDi688EKWL19epg1e9913H35+fgQGBhIfH8+6dev4/vvvnW6xKQvDMCp8DlLPnj0pKirikUceKdP59erVo1OnTiWPo6KiiI6OJj4+nvr165ccb9WqFUDJKvjs7Gz+/PNPhg8fTmhoaMl5Pj4+jB49mt27d7Np0ybA/DPRt29f6tSpYznv+KtWfvzxR4qKivjf//5nOR4WFkbv3r357bffTvh1HH3u1Vdfbfn/GxgYSM+ePcu9PWzTpk3s3buX0aNH4+197EfM0NBQhg0bxh9//EFOTg7Z2dmsWLGCoUOH4u/vbznvoosu+s/P06VLF9asWcO4ceP48ccfycjIKFedx/v1118JCwuz3MIJcMUVV5zyx5w9ezaRkZFcdNFFlt/b+Ph46tatW+mb2URERMpCQ6VFREQqWK1atQgODi65Neq/HDp0CDAbDcerX79+SUPhVJT2MY+qW7duqceO1nN0xs/w4cNP+DFSU1MJCQk5aQ3/93//x1VXXUV+fj5//PEHDz30EEOGDGHNmjXUrFkTMAdPA//5e7Zr166S2/DK+pyKFhUV5XTM39/f6fjRZkdeXh5gzmwyDOOE/5/h2J+FQ4cOnfD/z78d/X/UrVs3p3OPNu9O5OhzzzrrrFLf/++mTln8159jh8NR8ntgGIal2XVUaceON2HCBEJCQvjss89466238PHxoUePHjz//PMl86nKW3dpn7e03/+y2r9/P2lpaZaG17+dzm2gIiIiFUUNIRERkQrm4+ND3759+eGHH9i9ezcNGjQ46flHmyL79u1zOnfv3r3UqlWr5HFgYCD5+flOHyMlJcVy3lEnu5omOTm51GNnnHEGQMnHe+2110q2hB2vLH+Bb9CgQclf1Lt3707dunW56qqrePTRR3n99dcBs4lw5plnMn/+fHJyckqdCbRs2TL279/PiBEjSp7Ttm3bkz7HldSoUQNvb2/27dvn9L6jc4aO/p7XrFnzhP9//u3o+TNnzqRx48blqufoc7/++msaNmxYrueW5t9/jo+3d+9evL29qVGjRslVXscPFYfS/0wez9fXlzvvvJM777yTtLQ0fvrpJx544AEuuOACkpKSyv3noGbNmvz1119lqiUwMJD09HSn48c3eGrVqkXNmjVPuEkwLCysXDWKiIhUBt0yJiIiUgkmTJiAYRhcf/31FBQUOL2/sLCQ77//HoA+ffoA5gDnf1u+fDn//PMPffv2LTnWqFEj1q5dazlv8+bNJbcalcfnn39uebx06VJ27dpVskWpe/fuREZGsmHDBjp37lzqrxNdAXEyV155Jb169eLdd9+1XP304IMPcvjwYe6++26n52RnZ3P77bcTHBzM+PHjS44//PDDHD58mNtvvx3DMJyel5WVxfz588tdY2UI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pkyIOFIuRMyUCREzV8/Eza6UpkmlRURERERERETcjBpCIiIiIiIiIiJuRg0hF+Xn58dbb72Fn5+f1aWIOAVlQsRMmRBxpFyImCkTImbulgm3m1RaRERERERERMTdaYSQiIiIiIiIiIibUUNIRERERERERMTNqCEkIiIiIiIiIuJm1BASEREREREREXEzagg5sXHjxhEWFoa/vz/h4eGsWrXquvuvWLGC8PBw/P39KVOmDF988UU2VSqSPTKSiTlz5nDvvfdSsGBBgoODadCgAb/++ms2ViuS9TJ6nrhizZo1eHt7U6tWrawtUCSbZTQTSUlJvPHGG5QqVQo/Pz/Kli3LN998k03VimSPjOZiypQp1KxZk4CAAIoUKcLjjz/OuXPnsqlakay1cuVK2rVrR9GiRfHw8GDevHk3fExO/j1bDSEnNX36dAYNGsQbb7zB1q1badKkCW3atCEyMvKq+x8+fJi2bdvSpEkTtm7dyuuvv87AgQOZPXt2NlcukjUymomVK1dy7733smjRIjZv3kzz5s1p164dW7duzebKRbJGRjNxRWxsLD169OCee+7JpkpFssetZKJLly78/vvvfP311+zbt4+pU6dSqVKlbKxaJGtlNBerV6+mR48ePPnkk+zevZuZM2eyceNGevfunc2Vi2SNS5cuUbNmTcaOHXtT++f037O17LyTql+/PnXq1GH8+PHp2ypXrkyHDh0YMWKEw/6vvPIKCxYsYM+ePenb+vbty/bt21m3bl221CySlTKaiaupWrUqXbt2ZciQIVlVpki2udVMdOvWjfLly+Pl5cW8efPYtm1bNlQrkvUymonFixfTrVs3Dh06RL58+bKzVJFsk9FcfPzxx4wfP56DBw+mb/vss8/48MMPOXbsWLbULJJdPDw8mDt3Lh06dLjmPjn992yNEHJCycnJbN68mZYtW5q2t2zZkrVr1171MevWrXPYv1WrVmzatImUlJQsq1UkO9xKJv7LZrMRHx+vH/olR7jVTHz77bccPHiQt956K6tLFMlWt5KJBQsWULduXT788EOKFStGhQoVePHFF7l8+XJ2lCyS5W4lFw0bNuT48eMsWrQIwzA4ffo0s2bN4r777suOkkWcTk7/Pdvb6gLEUXR0NGlpaRQuXNi0vXDhwkRFRV31MVFRUVfdPzU1lejoaIoUKZJl9YpktVvJxH+N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",
|
||
"text/plain": [
|
||
"<Figure size 1400x800 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# ROC curve\n",
|
||
"\n",
|
||
"# Calcul des taux de faux positifs (FPR) et de vrais positifs (TPR)\n",
|
||
"y_pred_prob = random_forest_grid.predict_proba(X_test)[:, 1]\n",
|
||
"\n",
|
||
"fpr, tpr, thresholds = roc_curve(y_test, y_pred_prob, pos_label=1)\n",
|
||
"\n",
|
||
"# Calcul de l'aire sous la courbe ROC (AUC)\n",
|
||
"roc_auc = auc(fpr, tpr)\n",
|
||
"\n",
|
||
"plt.figure(figsize = (14, 8))\n",
|
||
"plt.plot(fpr, tpr, label=\"ROC curve(area = %0.3f)\" % roc_auc)\n",
|
||
"plt.plot([0, 1], [0, 1], color=\"red\",label=\"Random Baseline\", linestyle=\"--\")\n",
|
||
"plt.grid(color='gray', linestyle='--', linewidth=0.5)\n",
|
||
"plt.xlabel('Taux de faux positifs (FPR)')\n",
|
||
"plt.ylabel('Taux de vrais positifs (TPR)')\n",
|
||
"plt.title('Courbe ROC : random forest')\n",
|
||
"plt.legend(loc=\"lower right\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "854f6242-813f-400a-be43-7414a859b355",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Naive Bayes "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"id": "b083d10d-8510-4a07-974b-e0c324175d7f",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/opt/mamba/lib/python3.11/site-packages/sklearn/utils/validation.py:1229: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
|
||
" y = column_or_1d(y, warn=True)\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style>#sk-container-id-1 {\n",
|
||
" /* Definition of color scheme common for light and dark mode */\n",
|
||
" --sklearn-color-text: black;\n",
|
||
" --sklearn-color-line: gray;\n",
|
||
" /* Definition of color scheme for unfitted estimators */\n",
|
||
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
|
||
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
|
||
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
|
||
" --sklearn-color-unfitted-level-3: chocolate;\n",
|
||
" /* Definition of color scheme for fitted estimators */\n",
|
||
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
|
||
" --sklearn-color-fitted-level-1: #d4ebff;\n",
|
||
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
|
||
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
|
||
"\n",
|
||
" /* Specific color for light theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
|
||
" --sklearn-color-icon: #696969;\n",
|
||
"\n",
|
||
" @media (prefers-color-scheme: dark) {\n",
|
||
" /* Redefinition of color scheme for dark theme */\n",
|
||
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
|
||
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
|
||
" --sklearn-color-icon: #878787;\n",
|
||
" }\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 pre {\n",
|
||
" padding: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 input.sk-hidden--visually {\n",
|
||
" border: 0;\n",
|
||
" clip: rect(1px 1px 1px 1px);\n",
|
||
" clip: rect(1px, 1px, 1px, 1px);\n",
|
||
" height: 1px;\n",
|
||
" margin: -1px;\n",
|
||
" overflow: hidden;\n",
|
||
" padding: 0;\n",
|
||
" position: absolute;\n",
|
||
" width: 1px;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-dashed-wrapped {\n",
|
||
" border: 1px dashed var(--sklearn-color-line);\n",
|
||
" margin: 0 0.4em 0.5em 0.4em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" padding-bottom: 0.4em;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-container {\n",
|
||
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
|
||
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
|
||
" so we also need the `!important` here to be able to override the\n",
|
||
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
|
||
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
|
||
" display: inline-block !important;\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-text-repr-fallback {\n",
|
||
" display: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-parallel-item,\n",
|
||
"div.sk-serial,\n",
|
||
"div.sk-item {\n",
|
||
" /* draw centered vertical line to link estimators */\n",
|
||
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
|
||
" background-size: 2px 100%;\n",
|
||
" background-repeat: no-repeat;\n",
|
||
" background-position: center center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Parallel-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-parallel-item::after {\n",
|
||
" content: \"\";\n",
|
||
" width: 100%;\n",
|
||
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
|
||
" flex-grow: 1;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-parallel {\n",
|
||
" display: flex;\n",
|
||
" align-items: stretch;\n",
|
||
" justify-content: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" position: relative;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-parallel-item {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
|
||
" align-self: flex-end;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
|
||
" align-self: flex-start;\n",
|
||
" width: 50%;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
|
||
" width: 0;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Serial-specific style estimator block */\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-serial {\n",
|
||
" display: flex;\n",
|
||
" flex-direction: column;\n",
|
||
" align-items: center;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" padding-right: 1em;\n",
|
||
" padding-left: 1em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"\n",
|
||
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
|
||
"clickable and can be expanded/collapsed.\n",
|
||
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
|
||
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
|
||
"*/\n",
|
||
"\n",
|
||
"/* Pipeline and ColumnTransformer style (default) */\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-toggleable {\n",
|
||
" /* Default theme specific background. It is overwritten whether we have a\n",
|
||
" specific estimator or a Pipeline/ColumnTransformer */\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable label */\n",
|
||
"#sk-container-id-1 label.sk-toggleable__label {\n",
|
||
" cursor: pointer;\n",
|
||
" display: block;\n",
|
||
" width: 100%;\n",
|
||
" margin-bottom: 0;\n",
|
||
" padding: 0.5em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
|
||
" /* Arrow on the left of the label */\n",
|
||
" content: \"▸\";\n",
|
||
" float: left;\n",
|
||
" margin-right: 0.25em;\n",
|
||
" color: var(--sklearn-color-icon);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Toggleable content - dropdown */\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-toggleable__content {\n",
|
||
" max-height: 0;\n",
|
||
" max-width: 0;\n",
|
||
" overflow: hidden;\n",
|
||
" text-align: left;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-toggleable__content pre {\n",
|
||
" margin: 0.2em;\n",
|
||
" border-radius: 0.25em;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
|
||
" /* Expand drop-down */\n",
|
||
" max-height: 200px;\n",
|
||
" max-width: 100%;\n",
|
||
" overflow: auto;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
|
||
" content: \"▾\";\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Pipeline/ColumnTransformer-specific style */\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific style */\n",
|
||
"\n",
|
||
"/* Colorize estimator box */\n",
|
||
"#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
|
||
"#sk-container-id-1 div.sk-label label {\n",
|
||
" /* The background is the default theme color */\n",
|
||
" color: var(--sklearn-color-text-on-default-background);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover, darken the color of the background */\n",
|
||
"#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Label box, darken color on hover, fitted */\n",
|
||
"#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator label */\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-label label {\n",
|
||
" font-family: monospace;\n",
|
||
" font-weight: bold;\n",
|
||
" display: inline-block;\n",
|
||
" line-height: 1.2em;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-label-container {\n",
|
||
" text-align: center;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Estimator-specific */\n",
|
||
"#sk-container-id-1 div.sk-estimator {\n",
|
||
" font-family: monospace;\n",
|
||
" border: 1px dotted var(--sklearn-color-border-box);\n",
|
||
" border-radius: 0.25em;\n",
|
||
" box-sizing: border-box;\n",
|
||
" margin-bottom: 0.5em;\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-estimator.fitted {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-0);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* on hover */\n",
|
||
"#sk-container-id-1 div.sk-estimator:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-2);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
|
||
"\n",
|
||
"/* Common style for \"i\" and \"?\" */\n",
|
||
"\n",
|
||
".sk-estimator-doc-link,\n",
|
||
"a:link.sk-estimator-doc-link,\n",
|
||
"a:visited.sk-estimator-doc-link {\n",
|
||
" float: right;\n",
|
||
" font-size: smaller;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1em;\n",
|
||
" height: 1em;\n",
|
||
" width: 1em;\n",
|
||
" text-decoration: none !important;\n",
|
||
" margin-left: 1ex;\n",
|
||
" /* unfitted */\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted,\n",
|
||
"a:link.sk-estimator-doc-link.fitted,\n",
|
||
"a:visited.sk-estimator-doc-link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
|
||
".sk-estimator-doc-link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover,\n",
|
||
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
|
||
".sk-estimator-doc-link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* Span, style for the box shown on hovering the info icon */\n",
|
||
".sk-estimator-doc-link span {\n",
|
||
" display: none;\n",
|
||
" z-index: 9999;\n",
|
||
" position: relative;\n",
|
||
" font-weight: normal;\n",
|
||
" right: .2ex;\n",
|
||
" padding: .5ex;\n",
|
||
" margin: .5ex;\n",
|
||
" width: min-content;\n",
|
||
" min-width: 20ex;\n",
|
||
" max-width: 50ex;\n",
|
||
" color: var(--sklearn-color-text);\n",
|
||
" box-shadow: 2pt 2pt 4pt #999;\n",
|
||
" /* unfitted */\n",
|
||
" background: var(--sklearn-color-unfitted-level-0);\n",
|
||
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link.fitted span {\n",
|
||
" /* fitted */\n",
|
||
" background: var(--sklearn-color-fitted-level-0);\n",
|
||
" border: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"\n",
|
||
".sk-estimator-doc-link:hover span {\n",
|
||
" display: block;\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
|
||
"\n",
|
||
"#sk-container-id-1 a.estimator_doc_link {\n",
|
||
" float: right;\n",
|
||
" font-size: 1rem;\n",
|
||
" line-height: 1em;\n",
|
||
" font-family: monospace;\n",
|
||
" background-color: var(--sklearn-color-background);\n",
|
||
" border-radius: 1rem;\n",
|
||
" height: 1rem;\n",
|
||
" width: 1rem;\n",
|
||
" text-decoration: none;\n",
|
||
" /* unfitted */\n",
|
||
" color: var(--sklearn-color-unfitted-level-1);\n",
|
||
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 a.estimator_doc_link.fitted {\n",
|
||
" /* fitted */\n",
|
||
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
|
||
" color: var(--sklearn-color-fitted-level-1);\n",
|
||
"}\n",
|
||
"\n",
|
||
"/* On hover */\n",
|
||
"#sk-container-id-1 a.estimator_doc_link:hover {\n",
|
||
" /* unfitted */\n",
|
||
" background-color: var(--sklearn-color-unfitted-level-3);\n",
|
||
" color: var(--sklearn-color-background);\n",
|
||
" text-decoration: none;\n",
|
||
"}\n",
|
||
"\n",
|
||
"#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
|
||
" /* fitted */\n",
|
||
" background-color: var(--sklearn-color-fitted-level-3);\n",
|
||
"}\n",
|
||
"</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GaussianNB()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> GaussianNB<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.naive_bayes.GaussianNB.html\">?<span>Documentation for GaussianNB</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>GaussianNB()</pre></div> </div></div></div></div>"
|
||
],
|
||
"text/plain": [
|
||
"GaussianNB()"
|
||
]
|
||
},
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"\n",
|
||
"clf = GaussianNB()\n",
|
||
"clf.fit(X_train, y_train)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"id": "a5459639-be3d-4292-89d2-061f276dc9a8",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Accuracy Score: 0.8780906593406593\n",
|
||
"F1 Score: 0.3673381217259815\n",
|
||
"Recall Score: 0.24842951059167276\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# print results for the best model\n",
|
||
"\n",
|
||
"y_pred = clf.predict(X_test)\n",
|
||
"\n",
|
||
"# Calculate the F1 score\n",
|
||
"acc = accuracy_score(y_test, y_pred)\n",
|
||
"print(f\"Accuracy Score: {acc}\")\n",
|
||
"\n",
|
||
"f1 = f1_score(y_test, y_pred)\n",
|
||
"print(f\"F1 Score: {f1}\")\n",
|
||
"\n",
|
||
"recall = recall_score(y_test, y_pred)\n",
|
||
"print(f\"Recall Score: {recall}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"id": "e962eeed-4099-407b-a619-a34a539a404a",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAABIQAAAK7CAYAAACDLlR0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3gU5frG8e+mNxIIIQFC7026IB1EUIqKFJGjHkSwHI56xA7YEBUVFI96rD97QUQBC4igiIig0qT33gKEQEJ62fn9MRAYFjCBJLObuT/XlYudd2d3nwXuneTJzPu6DMMwEBERERERERERx/CzuwARERERERERESlZagiJiIiIiIiIiDiMGkIiIiIiIiIiIg6jhpCIiIiIiIiIiMOoISQiIiIiIiIi4jBqCImIiIiIiIiIOIwaQiIiIiIiIiIiDqOGkIiIiIiIiIiIw6ghJCIiIiIiIiLiMGoIiYiI+KjVq1czbNgwatasSUhICBEREbRs2ZIXXniBpKQkW2r64IMPcLlcLFu2rFhfZ+fOnbhcrvwvPz8/ypUrR/fu3Zk7d+45Hzdnzhz69OlDhQoVCA4OpmrVqgwdOpT169ef8zG//vor119/PfHx8QQFBREVFUX79u154403SEtLK463V2Rq1KjBLbfcUuKv27VrV8u/T2BgIDVq1GD48OHs2rWrxOsRERERTwF2FyAiIiKF98477zBy5Ejq16/Pgw8+SKNGjcjJyWHZsmW8+eabLFmyhBkzZthdZrG7++67+cc//kFeXh4bN25k3Lhx9O7dm/nz59O5c2fLvg899BATJ07kqquu4vXXXycuLo7Nmzfz0ksv0bJlSz777DP69+9vecwTTzzBU089Rfv27Rk/fjy1a9cmPT2dxYsX8+STT7J582YmT55ckm+5UGbMmEFkZKQtr12rVi0+/fRTALKzs1m7di3jxo1j3rx5bNy4kbCwMFvqEhEREZMaQiIiIj5myZIl/Otf/6JHjx7MnDmT4ODg/Pt69OjB/fffz5w5c0q0ppycHFwuV4m+JkC1atW47LLLAOjQoQN169alS5cuvPvuu5aG0JQpU5g4cSL/+te/eP311/PHO3fuzJAhQ+jSpQs333wzzZs3p1atWgBMmzaNp556iuHDh/POO+9Y3l+vXr146KGHWLJkSQm90wvTokUL2147NDQ0/98GzL/rkJAQhg8fzqJFi+jZs6dttYmIiIguGRMREfE5zz77LC6Xi7ffftvSDDopKCiIa665Jn/b7Xbzwgsv0KBBA4KDg4mNjeWf//wne/futTzuXJcXde3ala5du+ZvL1iwAJfLxccff8z9999PfHw8wcHBbN26NX+fo0ePMmzYMKKjowkPD+fqq69m+/btHs/9448/0r17dyIjIwkLC6NDhw789NNPF/C3YmrdujUABw8etIw/88wzlCtXjkmTJnk8Jjw8nFdffZX09HTL2T5PPfUU5cqV45VXXjlrs6tMmTJF2tTo2rUrTZo0YenSpXTq1ImwsDBq1arFc889h9vtzt8vMzOT+++/n+bNmxMVFUV0dDTt2rXj66+/9njO0/9NDx8+TFBQEI899pjHfhs3bsTlcvHKK6/kjyUkJHDHHXdQpUoVgoKCqFmzJuPGjSM3N/eC32NUVBQAgYGB+WNbt25l2LBh1K1bl7CwMOLj47n66qtZs2ZN/j6pqamULVuWO+64w+M5d+7cib+/PxMnTix07W+88QbNmjUjIiKCMmXK0KBBA8aMGXPB709ERMSXqCEkIiLiQ/Ly8pg/fz6tWrWiatWqBXrMv/71Lx5++GF69OjBN998w/jx45kzZw7t27cnMTHxgmsZPXo0u3fv5s033+Tbb78lNjY2/77hw4fj5+fHZ599xssvv8yff/5J165dOXbsWP4+n3zyCT179iQyMpIPP/yQL774gujoaK688soLbgrt2LEDgHr16uWPHThwgHXr1tGzZ89zXqbUrl07YmNjmTdvXv5j1q5de97HFMTJ5tmTTz5ZoP0TEhK48cYbuemmm/jmm2/o1asXo0eP5pNPPsnfJysri6SkJB544AFmzpzJlClT6NixI/379+ejjz4653NXqFCBvn378uGHH1oaTADvv/8+QUFB3Hjjjfl1tGnThh9++IHHH3+c77//nuHDhzNhwgRuu+22Ar//3NxccnNzSU9P588//+Spp56iVq1atG/fPn+f/fv3U758eZ577jnmzJnD//73PwICAmjbti2bNm0CICIigltvvZVPP/2U5ORky2u8/vrrBAUFceuttxaq9s8//5yRI0fSpUsXZsyYwcyZMxk1apTXzwslIiJSZAwRERHxGQkJCQZg3HDDDQXaf8OGDQZgjBw50jL+xx9/GIAxZsyY/LHq1asbQ4cO9XiOLl26GF26dMnf/vnnnw3A6Ny5s8e+77//vgEY1113nWX8t99+MwDj6aefNgzDMNLS0ozo6Gjj6quvtuyXl5dnNGvWzGjTps1539eOHTsMwHj++eeNnJwcIzMz0/jrr7+Mdu3aGZUqVTJ27NiRv+/vv/9uAMYjjzxy3uds27atERoaWqjH/J0FCxYY/v7+xrhx4/523y5duhiA8ccff1jGGzVqZFx55ZXnfFxubq6Rk5NjDB8+3GjRooXlvjP/Tb/55hsDMObOnWt5fOXKlY0BAwbkj91xxx1GRESEsWvXLsvzTZo0yQCMdevWFei9nPlVr149Y8OGDed9bG5urpGdnW3UrVvXGDVqVP74tm3bDD8/P2Py5Mn5YxkZGUb58uWNYcOGFbr2u+66yyhbtux5axERESnNdIaQiIhIKfbzzz8DeFwK1qZNGxo2bHhRl2cNGDDgnPedPNPkpPbt21O9evX8ehYvXkxSUhJDhw7NP4skNzcXt9vNVVddxdKlSwt0psbDDz9MYGAgISEhNG/enLVr1/Ltt99So0aNQr8fwzCKfB6kLl26kJuby+OPP16g/StWrEibNm0sY02bNvVYmWvatGl06NCBiIgIAgICCAwM5N1332XDhg3nff5evXpRsWJF3n///fyxH374gf379+efYQPw3Xff0a1bNypXrmz59+nVqxcAv/zyy9++l9q1a7N06VKWLl3KkiVL+OyzzwgNDaV79+5s2bIlf7/c3FyeffZZGjVqRFBQEAEBAQQFBbFlyxbL+6lVqxZ9+/bl9ddfxzAMAD777DOOHDnCXXfdVeja27Rpw7FjxxgyZAhff/31RZ0tJyIi4ovUEBIREfEhMTExhIWF5V8a9XeOHDkCQKVKlTzuq1y5cv79F+Jsz3lSxYoVzzp28vVOzvEzcOBAAgMDLV/PP/88hmGQlJT0tzX85z//YenSpSxatIhJkyaRk5PDtddea3lf1apVA/jbv7Ndu3blX4ZX0McUtfLly3uMBQcHk5GRkb89ffp0rr/+euLj4/nkk09YsmQJS5cu5dZbbyUzM/O8zx8QEMDNN9/MjBkz8i/f++CDD6hUqRJXXnll/n4HDx7k22+/9fi3ady4MUCBmichISG0bt2a1q1bc9lllzFkyBC+//57Dhw4YGmQ3XfffTz22GP069ePb7/9lj/++IOlS5fSrFkzy/sG8997y5Yt+Zf2/e9//6Ndu3a0bNmy0LXffPPNvPfee+zatYsBAwYQGxtL27Zt859bRESktNMqYyIiIj7E39+f7t278/3337N3716qVKly3v1PNhgOHDjgse/+/fuJiYnJ3w4JCSErK8vjORITEy37nXS+s2kSEhLOOlanTh2A/Od79dVXLStRnS4uLu6cz39SlSpV8ieS7tChAxUrVuSmm27iiSee4LXXXgPMxlXjxo2ZO3cu6enpZ50TaMmSJRw8eJBBgwblP+aSSy4572Ps8sknn1CzZk2mTp1q+Tc427/d2QwbNoyJEyfy+eefM3jwYL755hvuvfde/P398/eJiYmhadOmPPPMM2d9jsqVK19Q7ZUqVSImJoZVq1ZZ3s8///lPnn32Wcu+iYmJlC1b1jJ2+eWX06RJE1577TUiIiJYsWKFZX6lwtY+bNgwhg0bRlpaGgsXLuSJJ56gb9++bN68merVq1/QexQREfEVOkNIRETEx4wePRrDMLjtttvIzs72uD8nJ4dvv/0WMH+ABjx+aF66dCkbNmyge/fu+WM1atRg9erVlv02b96cP7FvYXz66aeW7cWLF7Nr16781co6dOhA2bJlWb9+ff5ZJGd+BQUFFfp1b7zxRrp27co777xjucxq7NixHD16lAceeMDjMWlpadxzzz2EhYUxatSo/PHHHnuMo0ePcs899+RfonS61NRU5s6dW+gaL5bL5SIoKMjSDEpISDjrKmNn07BhQ9q2bcv777/PZ599RlZWFsOGDbPs07dvX9auXUvt2rXP+m9zoQ2hvXv3kpiYaJmA3OVyeayWN2vWLPbt23fW57jnnnuYNWsWo0ePJi4uLr+JdzG1h4eH06tXL8aOHUt2djbr1q27oPcnIiLiS3SGkIiIiI9p164db7zxBiNHjqRVq1b861//onHjxuTk5LBy5UrefvttmjRpwtVXX039+vW5/fbbefXVV/Hz86NXr17s3LmTxx57jKpVq1oaIDfffDM33XQTI0eOZMCAAezatYsXXniBChUqFLrGZcuWMWLECAYNGsSePXsYO3Ys8fHxjBw5EjBXjXr11VcZOnQoSUlJDBw4kNjYWA4fPsyqVas4fPgwb7zxxgX9/Tz//PO0bduW8ePH83//938ADBkyhBUrVjBp0iR27tzJrbfeSlxcHJs2bWLy5Mls27aNzz77jFq1auU/z6BBg3jssccYP348GzduZPjw4dSuXZv09HT++OMP3nrrLQYPHnzeped/+eUXunfvzuOPP17geYT+Tt++fZk+fTojR45k4MCB7Nmzh/Hjx1OpUiXL3Dznc+utt3LHHXewf/9+2rdvT/369S33P/XUU8ybN4/27dtzzz33UL9+fTIzM9m5cyezZ8/mzTff/Nuz0zIyMvj9998Bc3W8HTt28MILLwBw7733Wt7PBx98QIMGDWjatCnLly9n4sSJ53z+m266idGjR7Nw4UIeffRRj8ZhQWu/7bbbCA0NpUOHDlSqVImEhAQmTJhAVFQUl156aYH+HkVERHyarVNai4iIyAX766+/jKFDhxrVqlUzgoKCjPDwcKNFixbG448/bhw6dCh/v7y8POP555836tWrZwQGBhoxMTHGTTfdZOzZs8fyfG6323jhhReMWrVqGSEhIUbr1q2N+fPnn3OVsWnTpnnUdHKVsblz5xo333yzUbZsWSM0NNTo3bu3sWXLFo/9f/nlF6NPnz5GdHS0ERgYaMTHxxt9+vQ563Of7uQqYxMnTjzr/YMGDTICAgKMrVu3WsZnz55t9O7d2yhfvnz+6918883nXTXrl19+MQYOHGhUqlTJCAwMNCIjI4127doZEydONFJSUs5b58m/qyeeeOK8+xmGuTJX48aNPcaHDh1qVK9e3TL23HPPGTVq1DCCg4ONhg0bGu+8847xxBNPGGd+a3euleOSk5ON0NBQAzDeeeeds9Zz+PBh45577jFq1qxpBAYGGtHR0UarVq2MsWPHGqmpqX/7XjhtdTE/Pz+jcuXKRq9evYwFCxZY9j169KgxfPhwIzY21ggLCzM6duxo/Prrrx7/7053yy23GAEBAcbevXsvuPYPP/zQ6NatmxEXF2cEBQUZlStXNq6//npj9erV531vIiIipYXLMM5yDrSIiIiIiBfKzs6mRo0adOzYkS+++MLuckRERHyWLhkTEREREa93+PBhNm3axPvvv8/Bgwd55JFH7C5JRETEp6khJCIiIiJeb9asWQwbNoxKlSrx+uuvW5aaFxERkcLTJWMiIiIiIiIiIg6jZedFRERERERERBxGDSEREREREREREYdRQ0hERERERERExGEcN6m02+1m//79lClTBpfLZXc5IiIiIiIiIiJFwjAMjh8/TuXKlfHzO/85QI5rCO3f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ateuzYgRI/joo48oUKAA48ePp1+/fjz44IM89thjREZG8ssvv/Dss8/Su3dv+vTpA0C5cuUYPXo0jz32GAkJCdx9991UrFiRAwcO8OWXXxIREZFlY6lNmza0bt2aW265hVGjRlG1alW2bt2Kn58fXbp0oW3btvz999+8++679O7dm7lz5/LTTz8RGRmZrdd0xx13MHToUFJSUhg9erTltqFDhzJo0CAiIyPp2rUrycnJrFmzhpMnT/LUU08BcP3117Ns2TLL2j5Vq1blq6++onHjxiQkJPDss89edqQTwKuvvsqNN95IuXLluPXWW/H392fjxo1s2rSJN954gypVqpCWlsZ//vMfunfvzm+//cbHH3982ce9miljfn5+DB48mBEjRhATE0NMTAwjRowgPDyc22+/3TXq6e6776ZMmTK89dZbgLmo+KhRo2jQoIFrytiQIUO46aabXCOsXnrpJbp27Uq5cuU4ffo0kydPZtGiRcydO9f1/FOnTqV48eKUL1+eTZs28cQTT9CzZ0/LItdgNuEyR67lmsvuQ5bP5Jdt57t9uMSo8Pxs49ctR7N3hz/+MIz27Q3DbAsZRokShrFoUe4WKZLHFi9ebHcJIl5FmRBxp1yIWHmaiUttd+3tstp23jAM4+uvvzaCg4ONffv2uY4tWbLE6NKlixEVFWUEBwcbtWrVMt5//30jLS3N7f4LFiwwrr/+eqNw4cJGaGioUaNGDeOZZ54xDh06dNFaTpw4Ydxzzz1G0aJFjdDQUKNOnTrG7NmzXbePGzfOKFeunFGgQAHj7rvvNt58880st53PysmTJ42QkBAjPDw8y+3bv/76a6N+/fpGcHCwUbhwYaN169bG9OnTXbdv2bLFCAsLM06dOuU6tm7dOqNx48ZGSEiIERMTY0ydOtWoUKGCMXr0aNc5gDFjxgy355s7d67RokULIywszIiMjDSaNm1qfPLJJ67bR40aZZQqVcoICwszrr/+euPLL780AOPkyZMXff+uVkZGhvHaa68Z0dHRRkhIiNG6dWtj06ZNhmEYRkJCgmEYhtGmTRujf//+rvukpqYaQ4cONapUqWKEhoYa5cqVMx555BFLnffee69RoUIFIzg42ChevLjRoUMHY/78+Zbn/vDDD42yZcsaQUFBRvny5Y1XXnnFSE5OtpyzfPlyo1ChQkZiYmKW9efUtvN+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qADA4cOH2bdvn+v8SpUqMWfOHBYtWkT9+vUZPnw4Y8aMcdSW8yIiIiIiIl7p7NmLf/2zwHG2zv1nwd3LnnsFQkJCiI6OpmzZsnTu3Jm+ffu6Fr0HSE9P57777qNSpUqEhYVRvXp1PvzwQ8tjDBgwgJ49e/L+++9TqlQpihYtyqOPPmrZ+frYsWN0796dsLAwKlWqxNdff+1Wy759++jRowcRERFERkbSp08fjh496rp96NCh1K9fn88//5zy5csTERHBww8/THp6Ou+++y7R0dGUKFGCN99887KvOzAwkOjoaKKjo6lVqxbDhg3jzJkzrs0AAEaNGkXdunUpUKAA5cqV45FHHnEt3gywd+9eunfvTuHChSlQoAC1a9d2bQIAEBsbS7du3YiIiKBkyZLcddddHD9+/KI1/XvKmJ+fHxMmTODmm28mPDycmJgYvv/+e8t9PH0OuTRbG0IAjzzyCHv27CE5OZm1a9fSunVr120TJ0507byQqU2bNqxbt47k5GR2797tGk3kRI0aNbK7BBGvokyIWCkTIu6UCxGrHM1ERMTFv/79n/glSlz83K5dredWrJj1eVdp165dzJ0717L8SEZGBmXLluXbb78lNjaWV199lZdeesm1E16mhQsXsnPnThYuXMj//vc/Jk6cyMSJE123DxgwgD179vDrr7/y3XffMXbsWI4dO+a63TAMevbsSVxcHIsXL2bBggXs3LmTvn37Wp5n586d/PTTT8ydO5dJkybx+eefc8MNN3DgwAEWL17MO++8wyuvvMLvv/+e7dednJzMxIkTKVSoENWrV3cd9/f3Z8yYMWzevJn//e9//Prrrzz33HOu2x999FGSk5NZsmQJmzZt4p133iHin+/D4cOHadOmDfXr12fNmjXMnTuXo0eP0qdPn2zXBTBs2DD69OnDxo0b6datG3fccYdrh7Gceo7LcdKUMdu2nZerd2EHWkSUCZF/UyZE3CkXIlZOy8Ts2bNd24Rnbss+atQo1+1BQUEMGzbMdb1SpUosX76cb7/91tJ4KFy4MB999BEBAQHUqFGDG264gV9++YUHHniA7du389NPP/H777/TrFkzAD777DNq1qzpuv/PP//Mxo0b2b17N+XKlQPgq6++onbt2qxevZomTZoAZoPq888/p2DBgtSqVYt27dqxbds25syZg7+/P9WrV+edd95h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",
|
||
"text/plain": [
|
||
"<Figure size 1400x800 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# ROC curve\n",
|
||
"\n",
|
||
"# Calcul des taux de faux positifs (FPR) et de vrais positifs (TPR)\n",
|
||
"y_pred_prob = clf.predict_proba(X_test)[:, 1]\n",
|
||
"\n",
|
||
"fpr, tpr, thresholds = roc_curve(y_test, y_pred_prob, pos_label=1)\n",
|
||
"\n",
|
||
"# Calcul de l'aire sous la courbe ROC (AUC)\n",
|
||
"roc_auc = auc(fpr, tpr)\n",
|
||
"\n",
|
||
"plt.figure(figsize = (14, 8))\n",
|
||
"plt.plot(fpr, tpr, label=\"ROC curve(area = %0.3f)\" % roc_auc)\n",
|
||
"plt.plot([0, 1], [0, 1], color=\"red\",label=\"Random Baseline\", linestyle=\"--\")\n",
|
||
"plt.grid(color='gray', linestyle='--', linewidth=0.5)\n",
|
||
"plt.xlabel('Taux de faux positifs (FPR)')\n",
|
||
"plt.ylabel('Taux de vrais positifs (TPR)')\n",
|
||
"plt.title('Courbe ROC : naive Bayes')\n",
|
||
"plt.legend(loc=\"lower right\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"id": "ad1a0b57-e382-4ae3-90b6-1f790099711b",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/opt/mamba/lib/python3.11/site-packages/numpy/core/fromnumeric.py:86: FutureWarning: The behavior of DataFrame.sum with axis=None is deprecated, in a future version this will reduce over both axes and return a scalar. To retain the old behavior, pass axis=0 (or do not pass axis)\n",
|
||
" return reduction(axis=axis, out=out, **passkwargs)\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# utilisation d'une métrique plus adaptée aux modèles de marketing : courbe de lift\n",
|
||
"\n",
|
||
"# Tri des prédictions de probabilités et des vraies valeurs\n",
|
||
"sorted_indices = np.argsort(y_pred_prob)[::-1]\n",
|
||
"y_pred_prob_sorted = y_pred_prob[sorted_indices]\n",
|
||
"y_test_sorted = y_test.iloc[sorted_indices]\n",
|
||
"\n",
|
||
"# Calcul du gain cumulatif\n",
|
||
"cumulative_gain = np.cumsum(y_test_sorted) / np.sum(y_test_sorted)\n",
|
||
"\n",
|
||
"# Tracé de la courbe de lift\n",
|
||
"plt.plot(np.linspace(0, 1, len(cumulative_gain)), cumulative_gain, label='Courbe de lift')\n",
|
||
"plt.xlabel('Part de clients identifiés sans modèle ')\n",
|
||
"plt.ylabel('Part de clients identifiés avec modèle')\n",
|
||
"plt.title('Courbe de Lift')\n",
|
||
"plt.legend()\n",
|
||
"plt.show()"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3 (ipykernel)",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"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.11.6"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|