2024-03-08 14:48:38 +01:00
{
"cells": [
{
"cell_type": "markdown",
"id": "3415114e-9577-4487-89eb-4931620ad9f0",
"metadata": {},
"source": [
"# Predict Sales"
]
},
{
"cell_type": "code",
2024-03-18 10:35:48 +01:00
"execution_count": 24,
2024-03-08 14:48:38 +01:00
"id": "f271eb45-1470-4764-8c2e-31374efa1fe5",
"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",
2024-03-10 12:30:57 +01:00
"from sklearn.metrics import accuracy_score, confusion_matrix, classification_report, recall_score\n",
2024-03-10 11:09:53 +01:00
"from sklearn.utils import class_weight\n",
2024-03-08 14:48:38 +01:00
"from sklearn.neighbors import KNeighborsClassifier\n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.compose import ColumnTransformer\n",
2024-03-18 10:35:48 +01:00
"from sklearn.calibration import calibration_curve\n",
2024-03-08 14:48:38 +01:00
"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",
2024-03-10 11:09:53 +01:00
"from sklearn.exceptions import ConvergenceWarning, DataConversionWarning\n",
"\n",
2024-03-08 14:48:38 +01:00
"import pickle\n",
2024-03-10 11:09:53 +01:00
"import warnings\n",
2024-03-08 14:48:38 +01:00
"#import scikitplot as skplt"
]
},
2024-03-10 11:09:53 +01:00
{
"cell_type": "code",
2024-03-11 09:36:25 +01:00
"execution_count": 2,
2024-03-10 11:09:53 +01:00
"id": "3fecb606-22e5-4dee-8efa-f8dff0832299",
"metadata": {},
"outputs": [],
"source": [
"warnings.filterwarnings('ignore')\n",
"warnings.filterwarnings(\"ignore\", category=ConvergenceWarning)\n",
"warnings.filterwarnings(\"ignore\", category=DataConversionWarning)"
]
},
2024-03-08 14:48:38 +01:00
{
"cell_type": "markdown",
"id": "ae591854-3003-4c75-a0c7-5abf04246e81",
"metadata": {},
"source": [
"### Load Data"
]
},
{
"cell_type": "code",
2024-03-11 09:36:25 +01:00
"execution_count": 3,
2024-03-08 14:48:38 +01:00
"id": "59dd4694-a812-4923-b995-a2ee86c74f85",
"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",
2024-03-11 09:36:25 +01:00
"execution_count": 4,
2024-03-08 14:48:38 +01:00
"id": "017f7e9a-3ba0-40fa-bdc8-51b98cc1fdb3",
"metadata": {},
"outputs": [],
"source": [
"def load_train_test():\n",
2024-03-10 11:09:53 +01:00
" BUCKET = \"projet-bdc2324-team1/Generalization/sport\"\n",
2024-03-11 09:36:25 +01:00
" File_path_train = BUCKET + \"/Train_set.csv\"\n",
" File_path_test = BUCKET + \"/Test_set.csv\"\n",
2024-03-08 14:48:38 +01:00
" \n",
2024-03-10 11:09:53 +01:00
" with fs.open( File_path_train, mode=\"rb\") as file_in:\n",
2024-03-08 14:48:38 +01:00
" dataset_train = pd.read_csv(file_in, sep=\",\")\n",
2024-03-11 09:36:25 +01:00
" # dataset_train['y_has_purchased'] = dataset_train['y_has_purchased'].fillna(0)\n",
2024-03-08 14:48:38 +01:00
"\n",
2024-03-10 11:09:53 +01:00
" with fs.open(File_path_test, mode=\"rb\") as file_in:\n",
2024-03-08 14:48:38 +01:00
" dataset_test = pd.read_csv(file_in, sep=\",\")\n",
2024-03-11 09:36:25 +01:00
" # dataset_test['y_has_purchased'] = dataset_test['y_has_purchased'].fillna(0)\n",
2024-03-08 14:48:38 +01:00
" \n",
" return dataset_train, dataset_test"
]
},
{
"cell_type": "code",
2024-03-11 09:36:25 +01:00
"execution_count": 5,
"id": "c479b230-b4bd-4cfb-b76b-d9faf6d95772",
"metadata": {},
"outputs": [],
"source": [
"dataset_train, dataset_test = load_train_test()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "c24c446d-4e1c-4ac1-a048-f0b8d8559f36",
"metadata": {},
"outputs": [
{
"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": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataset_train.isna().sum()"
]
},
{
"cell_type": "code",
"execution_count": 7,
2024-03-08 14:48:38 +01:00
"id": "825d14a3-6967-4733-bfd4-64bf61c2bd43",
"metadata": {},
"outputs": [],
"source": [
"def features_target_split(dataset_train, dataset_test):\n",
2024-03-11 09:36:25 +01:00
" 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",
2024-03-10 11:09:53 +01:00
" X_train = dataset_train[features_l]\n",
" y_train = dataset_train[['y_has_purchased']]\n",
2024-03-08 14:48:38 +01:00
"\n",
2024-03-10 11:09:53 +01:00
" X_test = dataset_test[features_l]\n",
" y_test = dataset_test[['y_has_purchased']]\n",
2024-03-08 14:48:38 +01:00
" return X_train, X_test, y_train, y_test"
]
},
2024-03-10 11:09:53 +01:00
{
"cell_type": "code",
2024-03-11 09:36:25 +01:00
"execution_count": 8,
2024-03-10 11:09:53 +01:00
"id": "69eaec12-b30f-4d30-a461-ea520d5cbf77",
"metadata": {},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = features_target_split(dataset_train, dataset_test)"
]
},
2024-03-10 12:30:57 +01:00
{
"cell_type": "code",
2024-03-11 09:36:25 +01:00
"execution_count": 9,
2024-03-10 12:30:57 +01:00
"id": "d039f31d-0093-46c6-9743-ddec1381f758",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-03-11 09:36:25 +01:00
"Shape train : (224213, 17)\n",
"Shape test : (96096, 17)\n"
2024-03-10 12:30:57 +01:00
]
}
],
"source": [
"print(\"Shape train : \", X_train.shape)\n",
"print(\"Shape test : \", X_test.shape)"
]
},
2024-03-08 14:48:38 +01:00
{
"cell_type": "markdown",
"id": "a1d6de94-4e11-481a-a0ce-412bf29f692c",
"metadata": {},
"source": [
"### Prepare preprocessing and Hyperparameters"
]
},
2024-03-10 11:09:53 +01:00
{
"cell_type": "code",
2024-03-11 09:36:25 +01:00
"execution_count": 10,
2024-03-10 11:09:53 +01:00
"id": "b808da43-c444-4e94-995a-7ec6ccd01e2d",
"metadata": {},
2024-03-10 12:30:57 +01:00
"outputs": [
{
"data": {
"text/plain": [
2024-03-11 09:36:25 +01:00
"{0.0: 0.5837086520288036, 1.0: 3.486549107420539}"
2024-03-10 12:30:57 +01:00
]
},
2024-03-11 09:36:25 +01:00
"execution_count": 10,
2024-03-10 12:30:57 +01:00
"metadata": {},
"output_type": "execute_result"
}
],
2024-03-10 11:09:53 +01:00
"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"
]
},
2024-03-08 14:48:38 +01:00
{
"cell_type": "code",
2024-03-11 09:36:25 +01:00
"execution_count": 11,
2024-03-08 14:48:38 +01:00
"id": "b32a79ea-907f-4dfc-9832-6c74bef3200c",
"metadata": {},
"outputs": [],
"source": [
2024-03-11 09:36:25 +01:00
"numeric_features = ['nb_tickets', 'nb_purchases', 'total_amount', 'nb_suppliers', 'vente_internet_max', 'purchase_date_min', 'purchase_date_max', \n",
2024-03-18 10:35:48 +01:00
" 'time_between_purchase', 'nb_tickets_internet', 'is_email_true', 'opt_in', #'is_partner',\n",
2024-03-11 09:36:25 +01:00
" 'gender_female', 'gender_male', 'gender_other', 'nb_campaigns', 'nb_campaigns_opened']\n",
2024-03-08 14:48:38 +01:00
"\n",
"numeric_transformer = Pipeline(steps=[\n",
2024-03-10 11:09:53 +01:00
" #(\"imputer\", SimpleImputer(strategy=\"mean\")), \n",
" (\"scaler\", StandardScaler()) \n",
"])\n",
"\n",
"categorical_features = ['opt_in'] \n",
2024-03-08 14:48:38 +01:00
"\n",
2024-03-10 11:09:53 +01:00
"# 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",
")"
2024-03-08 14:48:38 +01:00
]
},
{
"cell_type": "code",
2024-03-11 09:36:25 +01:00
"execution_count": 12,
2024-03-08 14:48:38 +01:00
"id": "9809a688-bfbc-4685-a77f-17a8b2b79ab3",
"metadata": {},
"outputs": [],
"source": [
"# Set loss\n",
"balanced_scorer = make_scorer(balanced_accuracy_score)\n",
2024-03-10 13:30:10 +01:00
"recall_scorer = make_scorer(recall_score)"
2024-03-08 14:48:38 +01:00
]
},
{
"cell_type": "code",
2024-03-18 10:35:48 +01:00
"execution_count": 26,
2024-03-10 13:30:10 +01:00
"id": "4f9b2bbf-5f8a-4ac1-8e6c-51bd0dd8ac85",
"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",
2024-03-18 10:10:28 +01:00
" plt.xlabel(\"False Positive Rate\")\n",
" plt.ylabel(\"True Positive Rate\")\n",
" plt.title(\"ROC Curve\", size=18)\n",
2024-03-10 13:30:10 +01:00
" plt.legend(loc=\"lower right\")\n",
2024-03-18 10:10:28 +01:00
" plt.show()\n",
"\n",
"\n",
"def draw_calibration_curve(X_test, y_test):\n",
" y_pred_prob = pipeline.predict_proba(X_test)[:, 1]\n",
2024-03-18 10:35:48 +01:00
" frac_pos, mean_pred = calibration_curve(y_test, y_pred_prob, n_bins=10)\n",
2024-03-18 10:10:28 +01:00
"\n",
" # Plot the calibration curve\n",
" plt.plot(mean_pred, frac_pos, 's-', label='Logistic Regression')\n",
" plt.plot([0, 1], [0, 1], 'k--', label='Perfectly calibrated')\n",
" plt.xlabel('Mean predicted value')\n",
" plt.ylabel('Fraction of positive predictions')\n",
" plt.title(\"Calibration Curve\")\n",
" plt.legend()\n",
2024-03-10 13:30:10 +01:00
" plt.show()"
]
},
{
"cell_type": "code",
2024-03-18 10:35:48 +01:00
"execution_count": 35,
2024-03-11 09:36:25 +01:00
"id": "cf400c70-0192-42cc-9919-f61bae8382b0",
"metadata": {},
"outputs": [],
"source": [
2024-03-18 10:35:48 +01:00
"def draw_features_importance(pipeline, model, randomF = False):\n",
" if randomF:\n",
" coefficients = pipeline.named_steps[model].feature_importances_\n",
" else: \n",
" coefficients = pipeline.named_steps[model].coef_[0]\n",
" \n",
" feature_names = pipeline.named_steps[model].feature_names_in_\n",
2024-03-11 09:36:25 +01:00
" \n",
" # Tracer l'importance des caractéristiques\n",
" plt.figure(figsize=(10, 6))\n",
" plt.barh(feature_names, coefficients, color='skyblue')\n",
2024-03-18 10:35:48 +01:00
" plt.xlabel(\"Features' Importance\")\n",
2024-03-11 09:36:25 +01:00
" plt.ylabel('Caractéristiques')\n",
2024-03-18 10:35:48 +01:00
" plt.title(\"Features' Importance\")\n",
2024-03-11 09:36:25 +01:00
" 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()\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
2024-03-08 14:48:38 +01:00
"id": "206d9a95-7c37-4506-949b-e77d225e42c5",
"metadata": {},
"outputs": [],
"source": [
2024-03-10 13:30:10 +01:00
"# Hyperparameter\n",
"param_grid = {'logreg__C': np.logspace(-10, 6, 17, base=2),\n",
" 'logreg__penalty': ['l1', 'l2'],\n",
" 'logreg__class_weight': ['balanced', weight_dict]} "
]
},
{
"cell_type": "code",
2024-03-11 09:36:25 +01:00
"execution_count": 16,
2024-03-10 13:30:10 +01:00
"id": "7ff2f7bd-efc1-4f7c-a3c9-caa916aa2f2b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
2024-03-11 09:36:25 +01:00
"<style>#sk-container-id-1 {\n",
2024-03-10 13:30:10 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 {\n",
2024-03-10 13:30:10 +01:00
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 pre {\n",
2024-03-10 13:30:10 +01:00
" padding: 0;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 input.sk-hidden--visually {\n",
2024-03-10 13:30:10 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-dashed-wrapped {\n",
2024-03-10 13:30:10 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-container {\n",
2024-03-10 13:30:10 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-text-repr-fallback {\n",
2024-03-10 13:30:10 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-parallel-item::after {\n",
2024-03-10 13:30:10 +01:00
" content: \"\";\n",
" width: 100%;\n",
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
" flex-grow: 1;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-parallel {\n",
2024-03-10 13:30:10 +01:00
" display: flex;\n",
" align-items: stretch;\n",
" justify-content: center;\n",
" background-color: var(--sklearn-color-background);\n",
" position: relative;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-parallel-item {\n",
2024-03-10 13:30:10 +01:00
" display: flex;\n",
" flex-direction: column;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
2024-03-10 13:30:10 +01:00
" align-self: flex-end;\n",
" width: 50%;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
2024-03-10 13:30:10 +01:00
" align-self: flex-start;\n",
" width: 50%;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
2024-03-10 13:30:10 +01:00
" width: 0;\n",
"}\n",
"\n",
"/* Serial-specific style estimator block */\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-serial {\n",
2024-03-10 13:30:10 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-toggleable {\n",
2024-03-10 13:30:10 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 label.sk-toggleable__label {\n",
2024-03-10 13:30:10 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
2024-03-10 13:30:10 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
2024-03-10 13:30:10 +01:00
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"/* Toggleable content - dropdown */\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-toggleable__content {\n",
2024-03-10 13:30:10 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
2024-03-10 13:30:10 +01:00
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-toggleable__content pre {\n",
2024-03-10 13:30:10 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
2024-03-10 13:30:10 +01:00
" /* unfitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
2024-03-10 13:30:10 +01:00
" /* Expand drop-down */\n",
" max-height: 200px;\n",
" max-width: 100%;\n",
" overflow: auto;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
2024-03-10 13:30:10 +01:00
" content: \"▾\";\n",
"}\n",
"\n",
"/* Pipeline/ColumnTransformer-specific style */\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2024-03-10 13:30:10 +01:00
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2024-03-10 13:30:10 +01:00
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator-specific style */\n",
"\n",
"/* Colorize estimator box */\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2024-03-10 13:30:10 +01:00
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2024-03-10 13:30:10 +01:00
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
"#sk-container-id-1 div.sk-label label {\n",
2024-03-10 13:30:10 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
2024-03-10 13:30:10 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
2024-03-10 13:30:10 +01:00
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator label */\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-label label {\n",
2024-03-10 13:30:10 +01:00
" font-family: monospace;\n",
" font-weight: bold;\n",
" display: inline-block;\n",
" line-height: 1.2em;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-label-container {\n",
2024-03-10 13:30:10 +01:00
" text-align: center;\n",
"}\n",
"\n",
"/* Estimator-specific */\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-estimator {\n",
2024-03-10 13:30:10 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-estimator.fitted {\n",
2024-03-10 13:30:10 +01:00
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"/* on hover */\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-estimator:hover {\n",
2024-03-10 13:30:10 +01:00
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
2024-03-10 13:30:10 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 a.estimator_doc_link {\n",
2024-03-10 13:30:10 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 a.estimator_doc_link.fitted {\n",
2024-03-10 13:30:10 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 a.estimator_doc_link:hover {\n",
2024-03-10 13:30:10 +01:00
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
2024-03-10 13:30:10 +01:00
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
2024-03-11 09:36:25 +01:00
"</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[('preprocessor',\n",
2024-03-10 13:30:10 +01:00
" ColumnTransformer(transformers=[('num',\n",
" Pipeline(steps=[('scaler',\n",
" StandardScaler())]),\n",
" ['nb_tickets', 'nb_purchases',\n",
" 'total_amount',\n",
" 'nb_suppliers',\n",
2024-03-11 09:36:25 +01:00
" 'vente_internet_max',\n",
" 'purchase_date_min',\n",
" 'purchase_date_max',\n",
" 'time_between_purchase',\n",
2024-03-10 13:30:10 +01:00
" 'nb_tickets_internet',\n",
2024-03-18 10:35:48 +01:00
" 'is_email_true', 'opt_in',\n",
" 'gender_female',\n",
2024-03-11 09:36:25 +01:00
" 'gender_male',\n",
" 'gender_other',\n",
2024-03-10 13:30:10 +01:00
" '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",
" ('logreg',\n",
2024-03-11 09:36:25 +01:00
" 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-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" 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",
2024-03-10 13:30:10 +01:00
" ColumnTransformer(transformers=[('num',\n",
" Pipeline(steps=[('scaler',\n",
" StandardScaler())]),\n",
" ['nb_tickets', 'nb_purchases',\n",
" 'total_amount',\n",
" 'nb_suppliers',\n",
2024-03-11 09:36:25 +01:00
" 'vente_internet_max',\n",
" 'purchase_date_min',\n",
" 'purchase_date_max',\n",
" 'time_between_purchase',\n",
2024-03-10 13:30:10 +01:00
" 'nb_tickets_internet',\n",
2024-03-18 10:35:48 +01:00
" 'is_email_true', 'opt_in',\n",
" 'gender_female',\n",
2024-03-11 09:36:25 +01:00
" 'gender_male',\n",
" 'gender_other',\n",
2024-03-10 13:30:10 +01:00
" '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",
" ('logreg',\n",
2024-03-11 09:36:25 +01:00
" 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-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" 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",
2024-03-10 13:30:10 +01:00
" Pipeline(steps=[('scaler', StandardScaler())]),\n",
" ['nb_tickets', 'nb_purchases', 'total_amount',\n",
2024-03-11 09:36:25 +01:00
" 'nb_suppliers', 'vente_internet_max',\n",
" 'purchase_date_min', 'purchase_date_max',\n",
" 'time_between_purchase',\n",
2024-03-18 10:35:48 +01:00
" 'nb_tickets_internet', 'is_email_true',\n",
" 'opt_in', 'gender_female', 'gender_male',\n",
" 'gender_other', 'nb_campaigns',\n",
2024-03-11 09:36:25 +01:00
" 'nb_campaigns_opened']),\n",
2024-03-10 13:30:10 +01:00
" ('cat',\n",
" Pipeline(steps=[('onehot',\n",
" OneHotEncoder(handle_unknown='ignore',\n",
" sparse_output=False))]),\n",
2024-03-18 10:35:48 +01:00
" ['opt_in'])])</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 \">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', 'time_between_purchase', 'nb_tickets_internet', 'is_email_true', 'opt_in', 'gender_female', 'gender_male', 'gender_other', '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-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" 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-5\" type=\"checkbox\" ><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label sk-toggleable__label-arrow \">cat</label><div class=\"sk-toggleable__content \"><pre>['opt_in']</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-6\" type=\"checkbox\" ><label for=\"sk-estimator-id-6\" 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-7\" type=\"checkbox\" ><label for=\"sk-estimator-id-7\" 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",
2024-03-11 09:36:25 +01:00
" 1.0: 3.486549107420539},\n",
2024-03-10 13:30:10 +01:00
" 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",
2024-03-11 09:36:25 +01:00
" 'vente_internet_max',\n",
" 'purchase_date_min',\n",
" 'purchase_date_max',\n",
" 'time_between_purchase',\n",
2024-03-10 13:30:10 +01:00
" 'nb_tickets_internet',\n",
2024-03-18 10:35:48 +01:00
" 'is_email_true', 'opt_in',\n",
" 'gender_female',\n",
2024-03-11 09:36:25 +01:00
" 'gender_male',\n",
" 'gender_other',\n",
2024-03-10 13:30:10 +01:00
" '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",
" ('logreg',\n",
2024-03-11 09:36:25 +01:00
" LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
" 1.0: 3.486549107420539},\n",
2024-03-10 13:30:10 +01:00
" max_iter=5000, solver='saga'))])"
]
},
2024-03-11 09:36:25 +01:00
"execution_count": 16,
2024-03-10 13:30:10 +01:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Pipeline\n",
"pipeline = Pipeline(steps=[\n",
" ('preprocessor', preproc),\n",
" ('logreg', LogisticRegression(solver='saga', class_weight = weight_dict,\n",
2024-03-18 10:35:48 +01:00
" max_iter=5000, n_jobs=-1)) \n",
2024-03-10 13:30:10 +01:00
"])\n",
"\n",
"pipeline.set_output(transform=\"pandas\")"
]
},
{
"cell_type": "markdown",
"id": "ed415f60-9663-4179-877b-233faf6e1645",
"metadata": {},
"source": [
"## Baseline"
2024-03-10 11:09:53 +01:00
]
},
{
"cell_type": "code",
2024-03-11 09:36:25 +01:00
"execution_count": 17,
2024-03-10 13:30:10 +01:00
"id": "2b467511-2ae5-4a16-a502-397c3460471d",
2024-03-10 11:09:53 +01:00
"metadata": {},
2024-03-10 12:30:57 +01:00
"outputs": [
{
"data": {
"text/html": [
2024-03-11 09:36:25 +01:00
"<style>#sk-container-id-2 {\n",
2024-03-10 12:30:57 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 {\n",
2024-03-10 12:30:57 +01:00
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 pre {\n",
2024-03-10 12:30:57 +01:00
" padding: 0;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 input.sk-hidden--visually {\n",
2024-03-10 12:30:57 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-dashed-wrapped {\n",
2024-03-10 12:30:57 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-container {\n",
2024-03-10 12:30:57 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-text-repr-fallback {\n",
2024-03-10 12:30:57 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-parallel-item::after {\n",
2024-03-10 12:30:57 +01:00
" content: \"\";\n",
" width: 100%;\n",
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
" flex-grow: 1;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-parallel {\n",
2024-03-10 12:30:57 +01:00
" display: flex;\n",
" align-items: stretch;\n",
" justify-content: center;\n",
" background-color: var(--sklearn-color-background);\n",
" position: relative;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-parallel-item {\n",
2024-03-10 12:30:57 +01:00
" display: flex;\n",
" flex-direction: column;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
2024-03-10 12:30:57 +01:00
" align-self: flex-end;\n",
" width: 50%;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
2024-03-10 12:30:57 +01:00
" align-self: flex-start;\n",
" width: 50%;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
2024-03-10 12:30:57 +01:00
" width: 0;\n",
"}\n",
"\n",
"/* Serial-specific style estimator block */\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-serial {\n",
2024-03-10 12:30:57 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-toggleable {\n",
2024-03-10 12:30:57 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 label.sk-toggleable__label {\n",
2024-03-10 12:30:57 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
2024-03-10 12:30:57 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
2024-03-10 12:30:57 +01:00
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"/* Toggleable content - dropdown */\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-toggleable__content {\n",
2024-03-10 12:30:57 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
2024-03-10 12:30:57 +01:00
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-toggleable__content pre {\n",
2024-03-10 12:30:57 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
2024-03-10 12:30:57 +01:00
" /* unfitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
2024-03-10 12:30:57 +01:00
" /* Expand drop-down */\n",
" max-height: 200px;\n",
" max-width: 100%;\n",
" overflow: auto;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
2024-03-10 12:30:57 +01:00
" content: \"▾\";\n",
"}\n",
"\n",
"/* Pipeline/ColumnTransformer-specific style */\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2024-03-10 12:30:57 +01:00
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2024-03-10 12:30:57 +01:00
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator-specific style */\n",
"\n",
"/* Colorize estimator box */\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2024-03-10 12:30:57 +01:00
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2024-03-10 12:30:57 +01:00
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
"#sk-container-id-2 div.sk-label label {\n",
2024-03-10 12:30:57 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
2024-03-10 12:30:57 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
2024-03-10 12:30:57 +01:00
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator label */\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-label label {\n",
2024-03-10 12:30:57 +01:00
" font-family: monospace;\n",
" font-weight: bold;\n",
" display: inline-block;\n",
" line-height: 1.2em;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-label-container {\n",
2024-03-10 12:30:57 +01:00
" text-align: center;\n",
"}\n",
"\n",
"/* Estimator-specific */\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-estimator {\n",
2024-03-10 12:30:57 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-estimator.fitted {\n",
2024-03-10 12:30:57 +01:00
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"/* on hover */\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-estimator:hover {\n",
2024-03-10 12:30:57 +01:00
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
2024-03-10 12:30:57 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 a.estimator_doc_link {\n",
2024-03-10 12:30:57 +01:00
" 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 a.estimator_doc_link.fitted {\n",
2024-03-10 12:30:57 +01:00
" /* 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",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 a.estimator_doc_link:hover {\n",
2024-03-10 12:30:57 +01:00
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
2024-03-11 09:36:25 +01:00
"#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
2024-03-10 12:30:57 +01:00
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
2024-03-11 09:36:25 +01:00
"</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>Pipeline(steps=[('preprocessor',\n",
2024-03-10 12:30:57 +01:00
" ColumnTransformer(transformers=[('num',\n",
" Pipeline(steps=[('scaler',\n",
" StandardScaler())]),\n",
" ['nb_tickets', 'nb_purchases',\n",
" 'total_amount',\n",
" 'nb_suppliers',\n",
2024-03-11 09:36:25 +01:00
" 'vente_internet_max',\n",
" 'purchase_date_min',\n",
" 'purchase_date_max',\n",
" 'time_between_purchase',\n",
2024-03-10 12:30:57 +01:00
" 'nb_tickets_internet',\n",
2024-03-18 10:35:48 +01:00
" 'is_email_true', 'opt_in',\n",
" 'gender_female',\n",
2024-03-11 09:36:25 +01:00
" 'gender_male',\n",
" 'gender_other',\n",
2024-03-10 12:30:57 +01:00
" '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",
" ('logreg',\n",
2024-03-11 09:36:25 +01:00
" 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 fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-8\" type=\"checkbox\" ><label for=\"sk-estimator-id-8\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> Pipeline<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[('preprocessor',\n",
2024-03-10 12:30:57 +01:00
" ColumnTransformer(transformers=[('num',\n",
" Pipeline(steps=[('scaler',\n",
" StandardScaler())]),\n",
" ['nb_tickets', 'nb_purchases',\n",
" 'total_amount',\n",
" 'nb_suppliers',\n",
2024-03-11 09:36:25 +01:00
" 'vente_internet_max',\n",
" 'purchase_date_min',\n",
" 'purchase_date_max',\n",
" 'time_between_purchase',\n",
2024-03-10 12:30:57 +01:00
" 'nb_tickets_internet',\n",
2024-03-18 10:35:48 +01:00
" 'is_email_true', 'opt_in',\n",
" 'gender_female',\n",
2024-03-11 09:36:25 +01:00
" 'gender_male',\n",
" 'gender_other',\n",
2024-03-10 12:30:57 +01:00
" '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",
" ('logreg',\n",
2024-03-11 09:36:25 +01:00
" 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 fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-9\" type=\"checkbox\" ><label for=\"sk-estimator-id-9\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> 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",
2024-03-10 12:30:57 +01:00
" Pipeline(steps=[('scaler', StandardScaler())]),\n",
" ['nb_tickets', 'nb_purchases', 'total_amount',\n",
2024-03-11 09:36:25 +01:00
" 'nb_suppliers', 'vente_internet_max',\n",
" 'purchase_date_min', 'purchase_date_max',\n",
" 'time_between_purchase',\n",
2024-03-18 10:35:48 +01:00
" 'nb_tickets_internet', 'is_email_true',\n",
" 'opt_in', 'gender_female', 'gender_male',\n",
" 'gender_other', 'nb_campaigns',\n",
2024-03-11 09:36:25 +01:00
" 'nb_campaigns_opened']),\n",
2024-03-10 12:30:57 +01:00
" ('cat',\n",
" Pipeline(steps=[('onehot',\n",
" OneHotEncoder(handle_unknown='ignore',\n",
" sparse_output=False))]),\n",
2024-03-18 10:35:48 +01:00
" ['opt_in'])])</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-10\" type=\"checkbox\" ><label for=\"sk-estimator-id-10\" 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', 'time_between_purchase', 'nb_tickets_internet', 'is_email_true', 'opt_in', 'gender_female', 'gender_male', 'gender_other', '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-11\" type=\"checkbox\" ><label for=\"sk-estimator-id-11\" 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-12\" type=\"checkbox\" ><label for=\"sk-estimator-id-12\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">cat</label><div class=\"sk-toggleable__content fitted\"><pre>['opt_in']</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-13\" type=\"checkbox\" ><label for=\"sk-estimator-id-13\" 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-14\" type=\"checkbox\" ><label for=\"sk-estimator-id-14\" 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",
2024-03-11 09:36:25 +01:00
" 1.0: 3.486549107420539},\n",
2024-03-10 12:30:57 +01:00
" 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",
2024-03-11 09:36:25 +01:00
" 'vente_internet_max',\n",
" 'purchase_date_min',\n",
" 'purchase_date_max',\n",
" 'time_between_purchase',\n",
2024-03-10 12:30:57 +01:00
" 'nb_tickets_internet',\n",
2024-03-18 10:35:48 +01:00
" 'is_email_true', 'opt_in',\n",
" 'gender_female',\n",
2024-03-11 09:36:25 +01:00
" 'gender_male',\n",
" 'gender_other',\n",
2024-03-10 12:30:57 +01:00
" '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",
" ('logreg',\n",
2024-03-11 09:36:25 +01:00
" LogisticRegression(class_weight={0.0: 0.5837086520288036,\n",
" 1.0: 3.486549107420539},\n",
2024-03-10 12:30:57 +01:00
" max_iter=5000, solver='saga'))])"
]
},
2024-03-11 09:36:25 +01:00
"execution_count": 17,
2024-03-10 12:30:57 +01:00
"metadata": {},
"output_type": "execute_result"
}
],
2024-03-10 11:09:53 +01:00
"source": [
"pipeline.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
2024-03-11 09:36:25 +01:00
"execution_count": 18,
2024-03-10 11:09:53 +01:00
"id": "6356e870-0dfc-4e60-9e48-e2de5e7f9f87",
"metadata": {},
2024-03-10 13:30:10 +01:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-03-18 10:35:48 +01:00
"Accuracy Score: 0.764547952047952\n",
"F1 Score: 0.4741074748977315\n",
"Recall Score: 0.7449963476990504\n"
2024-03-10 13:30:10 +01:00
]
}
],
2024-03-10 11:09:53 +01:00
"source": [
"y_pred = pipeline.predict(X_test)\n",
"\n",
"# Calculate the F1 score\n",
2024-03-10 12:30:57 +01:00
"acc = accuracy_score(y_test, y_pred)\n",
"print(f\"Accuracy Score: {acc}\")\n",
"\n",
2024-03-10 11:09:53 +01:00
"f1 = f1_score(y_test, y_pred)\n",
2024-03-10 12:30:57 +01:00
"print(f\"F1 Score: {f1}\")\n",
"\n",
"recall = recall_score(y_test, y_pred)\n",
"print(f\"Recall Score: {recall}\")"
2024-03-10 11:09:53 +01:00
]
},
{
"cell_type": "code",
2024-03-11 09:36:25 +01:00
"execution_count": 19,
2024-03-10 11:09:53 +01:00
"id": "09387a09-0d53-4c54-baac-f3c2a57a629a",
"metadata": {},
2024-03-10 13:30:10 +01:00
"outputs": [
{
"data": {
2024-03-18 10:35:48 +01:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAHFCAYAAAA+FskAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABWqUlEQVR4nO3deVxVdf7H8deV5QooVxYBMTUXIglK01K01HJXNKdp1CjKMnRyixGXMSttwzUtc80syzRqMhvbGCzLxlHUTHItKzU0QVwQFREIz+8Pf96ZK1hg53q5+n72OI+HnO/nnvM9165+/HyXazEMw0BERESkiqvm6g6IiIiIVISSFhEREXELSlpERETELShpEREREbegpEVERETcgpIWERERcQtKWkRERMQtKGkRERERt6CkRURERNyCkha5om3dupWHHnqIhg0bUr16dWrUqMHNN9/M1KlTOXbsmFPvvWXLFtq3b4/NZsNisfDiiy+afg+LxcLEiRNNv+7vWbx4MRaLBYvFwpdfflmm3TAMmjRpgsVioUOHDpd0j7lz57J48eJKvebLL7+8aJ9ExP15uroDIs6ycOFChgwZQmRkJKNHjyYqKoqSkhK+/vpr5s+fz/r161mxYoXT7v/www9TUFBAamoqAQEBXHvttabfY/369VxzzTWmX7eiatasyaJFi8okJmvWrOGnn36iZs2al3ztuXPnEhwczIABAyr8mptvvpn169cTFRV1yfcVkapLSYtckdavX8+jjz5K586d+eCDD7Barfa2zp07k5ycTFpamlP7sH37dhITE+nevbvT7tG6dWunXbsi+vXrx9KlS5kzZw7+/v7284sWLSI2NpYTJ05cln6UlJRgsVjw9/d3+XsiIs6j4SG5IqWkpGCxWHjllVccEpbzvL296d27t/3ns2fPMnXqVK6//nqsVishISE88MADHDhwwOF1HTp0IDo6mk2bNnH77bfj6+tLo0aNmDx5MmfPngX+O3Ty66+/Mm/ePPswCsDEiRPtv/5f51+zb98++7nVq1fToUMHgoKC8PHxoX79+vz5z3/m9OnT9pjyhoe2b9/OXXfdRUBAANWrV6dZs2a88cYbDjHnh1Hefvttxo8fT3h4OP7+/nTq1Invv/++Ym8ycO+99wLw9ttv28/l5+ezfPlyHn744XJf8/TTT9OqVSsCAwPx9/fn5ptvZtGiRfzvd7dee+217NixgzVr1tjfv/OVqvN9X7JkCcnJydStWxer1cqPP/5YZnjoyJEj1KtXjzZt2lBSUmK//s6dO/Hz8yMhIaHCzyoirqekRa44paWlrF69mhYtWlCvXr0KvebRRx9l7NixdO7cmZUrV/Lss8+SlpZGmzZtOHLkiENsTk4O9913H/fffz8rV66ke/fujBs3jrfeeguAnj17sn79egDuuece1q9fb/+5ovbt20fPnj3x9vbmtddeIy0tjcmTJ+Pn50dxcfFFX/f999/Tpk0bduzYwaxZs3j//feJiopiwIABTJ06tUz8448/zs8//8yrr77KK6+8wg8//ECvXr0oLS2tUD/9/f255557eO211+zn3n77bapVq0a/fv0u+myDBw/m3Xff5f333+fuu+9m+PDhPPvss/aYFStW0KhRI5o3b25//y4cyhs3bhxZWVnMnz+fDz/8kJCQkDL3Cg4OJjU1lU2bNjF27FgATp8+zV/+8hfq16/P/PnzK/ScIlJFGCJXmJycHAMw+vfvX6H4Xbt2GYAxZMgQh/MbNmwwAOPxxx+3n2vfvr0BGBs2bHCIjYqKMrp27epwDjCGDh3qcG7ChAlGeR+7119/3QCMvXv3GoZhGO+9954BGJmZmb/Zd8CYMGGC/ef+/fsbVqvVyMrKcojr3r274evraxw/ftwwDMP44osvDMDo0aOHQ9y7775rAMb69et/877n+7tp0yb7tbZv324YhmHccsstxoABAwzDMIwbbrjBaN++/UWvU1paapSUlBjPPPOMERQUZJw9e9bedrHXnr9fu3btLtr2xRdfOJyfMmWKARgrVqwwHnzwQcPHx8fYunXrbz6jiFQ9qrTIVe+LL74AKDPh89Zbb6Vp06Z8/vnnDufDwsK49dZbHc7deOON/Pzzz6b1qVmzZnh7ezNo0CDeeOMN9uzZU6HXrV69mo4dO5apMA0YMIDTp0+Xqfj87xAZnHsOoFLP0r59exo3bsxrr73Gtm3b2LRp00WHhs73sVOnTthsNjw8PPDy8uKpp57i6NGj5ObmVvi+f/7znyscO3r0aHr27Mm9997LG2+8wcsvv0xMTEyFXy8iVYOSFrniBAcH4+vry969eysUf/ToUQDq1KlTpi08PNzefl5QUFCZOKvVSmFh4SX0tnyNGzfms88+IyQkhKFDh9K4cWMaN27MSy+99JuvO3r06EWf43z7/7rwWc7P/6nMs1gsFh566CHeeust5s+fz3XXXcftt99ebuzGjRvp0qULcG5113/+8x82bdrE+PHjK33f8p7zt/o4YMAAzpw5Q1hYmOayiLgpJS1yxfHw8KBjx45s3ry5zETa8pz/izs7O7tM28GDBwkODjatb9WrVwegqKjI4fyF82YAbr/9dj788EPy8/PJyMggNjaWpKQkUlNTL3r9oKCgiz4HYOqz/K8BAwZw5MgR5s+fz0MPPXTRuNTUVLy8vPjoo4/o27cvbdq0oWXLlpd0z/ImNF9MdnY2Q4cOpVmzZhw9epRRo0Zd0j1FxLWUtMgVady4cRiGQWJiYrkTV0tKSvjwww8BuPPOOwHsE2nP27RpE7t27aJjx46m9ev8CpitW7c6nD/fl/J4eHjQqlUr5syZA8A333xz0diOHTuyevVqe5Jy3ptvvomvr6/TlgPXrVuX0aNH06tXLx588MGLxlksFjw9PfHw8LCfKywsZMmSJWVizapelZaWcu+992KxWPj000+ZNGkSL7/8Mu+///4fvraIXF7ap0WuSLGxscybN48hQ4bQokULHn30UW644QZKSkrYsmULr7zyCtHR0fTq1YvIyEgGDRrEyy+/TLVq1ejevTv79u3jySefpF69evztb38zrV89evQgMDCQgQMH8swzz+Dp6cnixYvZv3+/Q9z8+fNZvXo1PXv2pH79+pw5c8a+QqdTp04Xvf6ECRP46KOPuOOOO3jqqacIDAxk6dKlfPzxx0ydOhWbzWbas1xo8uTJvxvTs2dPZsyYQXx8PIMGDeLo0aNMnz693GXpMTExpKam8s4779CoUSOqV69+SfNQJkyYwL///W/S09MJCwsjOTmZNWvWMHDgQJo3b07Dhg0rfU0RcQ0lLXLFSkxM5NZbb2XmzJlMmTKFnJwcvLy8uO6664iPj2fYsGH22Hnz5tG4cWMWLVrEnDlzsNlsdOvWjUmTJpU7h+VS+fv7k5aWRlJSEvfffz+1atXikUceoXv37jzyyCP2uGbNmpGens6ECRPIycmhRo0aREdHs3LlSvuckPJERkaybt06Hn/8cYYOHUphYSFNmzbl9ddfr9TOss5y55138tprrzFlyhR69epF3bp1SUxMJCQkhIEDBzrEPv3002RnZ5OYmMjJkydp0KCBwz42FbFq1SomTZrEk08+6VAxW7x4Mc2bN6dfv36sXbsWb29vMx5PRJzMYhj/s6OTiIiISBWlOS0iIiLiFpS0iIiIiFtQ0iIiIiJuQUmLiIiIuAUlLSIiIuIWlLSIiIiIW1DSIiIiIm7hitxczqf5sN8PErkKrXr3WVd3QaTKuS0iwOn3MOvvpcIts025jrtSpUVERETcwhVZaREREalSLKoRmEFJi4iIiLNZLK7uwRVBSYuIiIizqdJiCr2LIiIi4hZUaREREXE2DQ+ZQkmLiIiIs2l4yBR6F0VERMQtqNIiIiLibBoeMoWSFhEREWfT8JAp9C6KiIiIW1ClRURExNk0PGQKJS0iIiLOpuEhU+hdFBEREbegSouIiIizaXjIFKq0iIiIOJulmjlHJf3yyy/cf//9BAUF4evrS7Nmzdi8ebO93TAMJk6cSHh4OD4+PnTo0IEdO3Y4XKOoqIjhw4cTHByMn58fvXv
2024-03-10 13:30:10 +01:00
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2024-03-10 11:09:53 +01:00
"source": [
2024-03-10 13:30:10 +01:00
"draw_confusion_matrix(y_test, y_pred)"
2024-03-10 11:09:53 +01:00
]
},
2024-03-10 12:30:57 +01:00
{
"cell_type": "code",
2024-03-18 10:35:48 +01:00
"execution_count": 20,
2024-03-10 12:30:57 +01:00
"id": "580b58d7-596f-4207-8c99-4365aba2bc9f",
"metadata": {},
2024-03-10 13:30:10 +01:00
"outputs": [
{
"data": {
2024-03-18 10:35:48 +01:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAABIQAAALCCAYAAACvAwh9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hUZfrG8e+k94SEHnpv0osIIoigYAFRRHRta2N1dQWxoiI2bKuuuvbuKiL9J6CAIlKVKr13Qk2A9D7n98eBgcMAJpDkzOTcn+vKxZx32hP0nhOevOd9XYZhGIiIiIiIiIiIiGME2F2AiIiIiIiIiIiULTWEREREREREREQcRg0hERERERERERGHUUNIRERERERERMRh1BASEREREREREXEYNYRERERERERERBxGDSEREREREREREYdRQ0hERERERERExGHUEBIRERERERERcRg1hEREREREREREHEYNIRERESk1zz77LC6Xy+srNDSU6tWrc/nll/PJJ5+Qn59f5Nf87bffuPfee2natClxcXGEhYVRs2ZNrrzySt5//32ys7OL/FqFhYV8//333HrrrTRq1Ii4uDhCQkKoXLkyXbt25YknnmDNmjXn8q1brFq1iscee4yOHTtSpUoVQkJCiI2NpVmzZtx2221MmTKlWH8HIiIiIufLZRiGYXcRIiIiUj49++yzjBo1CoAqVap4xtPT08nKyvIct2/fnpkzZ1KhQoUzvlZKSgq33nor06dP94yFhoYSFhZGamqqZywxMZHPP/+cXr16nbW233//ndtuu41NmzZ5xoKDg4mOjubo0aO43W7P+IABAxgzZgwhISFF+K5PSE9PZ8iQIYwZM4bjP3K5XC5iY2PJzs4mNzfX89j69evzzTff0KlTp2K9h4iIiMi50AwhERERKRP79+/3fGVmZrJz507uvvtuAJYuXcqDDz54xuceOHCACy+8kOnTpxMYGMgDDzzA2rVrycnJ4ejRoxw5coTPP/+cmjVrkpSURN++ffn+++/P+Ho//PAD3bt3Z9OmTSQkJDB69Gg2bdpEXl4eKSkp5OXlsWTJEh5//HFiYmKYOHGipYFVFEeOHKFz5858++23ANx444389ttv5OTkcOTIEXJyckhKSuKTTz6hZcuWbN26lUWLFhXrPURERETOlWYIiYiISKk5eYbQmX7kuOyyy/jll18ICQkhJSWFqKgoy/2GYXDZZZcxe/ZsgoODmTBhAldfffVpXyslJYWePXuycuVKIiMjWbp0KU2aNLE8ZvPmzbRv3560tDSaNWvGjBkzqFGjxhm/h8OHD/P3v/+dL774gri4uCJ/73379uXHH38kKCiIb7/9loEDB57xsYZh8MEHH+ByuRgyZEiR30NERETkXGmGkIiIiNjq8ssvByAvL4/Nmzd73T916lRmz54NwIgRI87YDAJISEhg3LhxhIWFkZmZydNPP+31mKeeeoq0tDTCwsKYNGnSWZtBAPHx8UyePJnY2Ngif08//vgjP/74IwDPPPPMWZtBYF5G9o9//IN77rnHM7Zjxw7Pmks7duw443Pr1KmDy+Xiiy++sIyf+vytW7dyzz33ULduXUJDQ6lTpw4HDx4kODgYl8vF//3f/521xqeffhqXy0WDBg1Oe/+KFSv4+9//Tv369YmIiCAqKopWrVrx1FNPkZycfNbXFhERkbKnhpCIiIjY6uSZQ4WFhV73v/feewBER0fz8MMP/+XrNWzYkMGDBwMwceJE9u/f77nvwIEDjB8/HoCbb76ZRo0aFblOl8tV5Me+++67AMTGxjJs2LAiPy8goHR+NFu4cCGtW7fm448/9jSBACpXruxpyH399ddnfL5hGHzzzTcA3HLLLV73jxw5knbt2vH555+zbds2XC4X+fn5rFq1ihdffJGWLVuyYsWKUvjORERE5FypISQiIiK2mjFjBmA2XOrWrWu5r6CggHnz5gHQu3dvr8vJzmTAgAEAuN1ufvvtN8/4r7/+6lks+tprrz3v2k+noKCAuXPnAtCrVy8iIyNL5X2K495776V58+YsWbKEzMxMMjIymDlzJgC33norYK6rdPTo0dM+f8GCBWzfvh3wbgi99dZbPPfcc0RFRTF69Gj27dtHZmYmWVlZLF26lEsvvZR9+/ZxzTXXkJGRUXrfpIiIiBSLGkIiIiJii127dnHPPfd4Lge7+uqrSUhIsDxmx44dZGZmAtCmTZsiv3br1q09t0/eNn7t2rWe28V5veLYuXOnp/FRWu9RXAkJCfz888+0b9/eM3Z8dtQ111xDbGwsubm5Z1yI+/jsoa5du1KvXj3PeHJyMiNGjMDlcjFp0iQef/xxqlatCkBgYCDt2rVjxowZtGvXjj179vDJJ5+U1rcoIiIixaSGkIiIiJSJqlWrer4iIyOpXbs2H3/8MQBNmjTxXBp2spSUFM/tU5tFZ1OxYsXTvsbJt+Pj44tVf1GVxXsU1z//+c8zzq4KCwvzrHF0usvGTm4UnTo76JtvviErK4v27dvTs2fP075+UFCQ5xK+47PBRERExH5BdhcgIiIiznDgwIHTjt966618+OGHhIWFnfX5xVnD50zKYnPVk9+jJGouCV26dDnr/bfeeiuffPKJ59Kwky/dmzp1KkePHiU0NJQbbrjB8rz58+cD5iys4zODTic7OxswZ0+JiIiIb9AMIRERESkThmFgGAZut5u9e/fywQcfEBcXx1dffcU777xz2uecPCuoODtVnfzYk1/j5JlDhw8fLk75RXam2Ul2qly58lnv79q1K3Xr1sUwDP73v/9Z7js+a+iaa64hLi7Oct/evXsBs+Fz4MCBM36lpaUBkJWVVULfkYiIiJwvNYRERESkTLlcLqpVq8a9997LpEmTcLlcPPbYY561hE5Wu3Ztz6LMy5cvL/J7nLyjVfPmzU97u7R2vapdu7bn8ixf2VkrMDDwrPe7XC7+9re/AdbLxlJSUpg+fTpwYvHpkx3fFW7IkCGeht/Zvnbs2FFC35GIiIicLzWERERExDbdu3fnlltuwTAM/vnPf3ptOx8cHMzFF18MwMyZM0lPTy/S606cOBEwt3Hv3r27Z7xHjx6erd0nTZpUAt+Bt6CgILp16wbArFmzPItin8vrHJeTk3PGx6Wmpp7T65/qeMNn8+bN/P777wCMHTuW/Px8KlWqxBVXXOH1nOOXia1evbpEahAREZGyo4aQiIiI2OqZZ54hMDCQ9evX8+WXX3rd/49//AOAjIwM3njjjb98vc2bN/Pdd98B5tbyJ69tU6VKFa677joAvv32WzZt2lTkOouz/tD9998PmM2aotR8nNvt9tyuUKGC5/bu3btP+/hNmzadcav44mrQoAGdO3cGTswSOv7n4MGDLQ2q446vTfT7779rfSARERE/o4aQiIiI2Kp+/foMGjQIgOeff578/HzL/VdffbVnls+LL77I1KlTz/haKSkpDBw4kJycHCIiInj++ee9HvPCCy8QFRVFdnY2AwYMICkp6az1HTlyhOuuu65YM3H69u1L7969AXjuuecYP378Xz7no48+8uy6BhAZGUn9+vUBmDBhwmmf8+KLLxa5pqI4Pkto7NixrFu3zjNT6HSXi4G561h4eDiFhYXcf//9XjO8TuZ2u0useSUiIiLnTw0hERERsd0TTzyBy+Vix44dfPrpp5b7XC4XY8aMoV69euTn53Pttdfyr3/9i/Xr13sek5qaypdffknbtm1ZuXIlgYGBfPLJJzRt2tTrvRo1asTXX39NSEgIa9eupXXr1rzyyits2bLF85jCwkJWrFjBM888Q7169TyXoBXHt99+S9OmTSkoKOCGG27g5ptvZt68eZaG1759+/jyyy9p164d9957r2c3ruOOb9f+2Wef8d5773nu3717N3fddRdjx44lIiKi2LWdyaBBgwgJCSElJYXbbrsNgKZNm9KuXbvTPr5q1aq8/PLLAEybNo1evXqxYMECT2PIMAw2bNjAG2+8QYsWLc7azBMREZEyZoiIiIiUkpEjRxqAUZQfOfr162cARo0aNYycnByv+w8ePGhcfvnlntcDjLC
2024-03-10 13:30:10 +01:00
"text/plain": [
"<Figure size 1400x800 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2024-03-10 12:30:57 +01:00
"source": [
2024-03-10 13:30:10 +01:00
"draw_roc_curve(X_test, y_test)"
2024-03-10 12:30:57 +01:00
]
},
2024-03-11 09:36:25 +01:00
{
"cell_type": "code",
"execution_count": 21,
"id": "ca5d0a55-adbb-47a0-a4c8-6af9ca75ca9d",
"metadata": {},
"outputs": [
{
"data": {
2024-03-18 10:35:48 +01:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAABBYAAAIjCAYAAAC3RZiOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAD2DElEQVR4nOzdd1gUV/s38O/SWTqIFAURQcSCoohixYIFNdYQS4LYEhKNBRUlNlBULFiiT4wpio/RmKbGgiIWEqOixv4EKxHRBCVqAAXEhZ33D9+dHysLwrLsWr6f6/JKpp1zz+zZWfbec85IBEEQQERERERERESkBj1dB0BEREREREREry4mFoiIiIiIiIhIbUwsEBEREREREZHamFggIiIiIiIiIrUxsUBEREREREREamNigYiIiIiIiIjUxsQCEREREREREamNiQUiIiIiIiIiUhsTC0RERERERESkNiYWiIiIqFqSkpJgaGiInTt36joUohojk8nQo0cPBAQEQCaT6TocnRoxYgS8vLxw//59XYdCRC8JJhaIiDQgISEBEokEv//+u65DUdvWrVuxatUqXYdR4wIDAxEYGKjrMF56aWlpiI6ORkZGRoX73blzB++++y5Wr16NAQMGVLr86OhoSCSSKsVUUFCA6OhopKSklNmmeA++KN5XlTrXS1syMjIgkUiQkJCg61A0JiwsDG5ubkrrDA0N8dNPP+HJkyeYNm1aucdq6x6jKkZt+Pzzz3Ho0CHs378ftWrV0nr9miaRSBAdHa31erV1z1Ln/BITE8s9xs3NDWFhYdWOi14/TCwQERGANyexQJWTlpaGmJiYCv/oLS4uxjvvvIP3338fH330UZXKHzt2LE6cOFGlYwoKChATE6MysdCnTx+cOHECTk5OVSqTqCosLCyQmJiIXbt24fvvv9d1OFp39uxZzJkzB4mJiahfv76uw9GIEydOYOzYsboOo8aoc36JiYmIiYlRuW3Hjh2YM2eOJkKj14yBrgMgIiLdKigogFQq1XUYVA26eg0NDAxw7NixKh2jiLVu3bqoW7euxmKxt7eHvb29xsojKo+TkxNu3ryp6zC04vl7S8uWLfHPP//USF2FhYUwMTHRes+ctm3barU+bdP0+fn6+mq0PHp9sMcCEVENCQsLg7m5Oa5cuYKePXvCzMwMTk5OiIuLAwCkpqaiQ4cOMDMz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
2024-03-11 09:36:25 +01:00
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"draw_features_importance(pipeline, 'logreg')"
]
},
{
"cell_type": "code",
2024-03-18 10:35:48 +01:00
"execution_count": 22,
2024-03-11 09:36:25 +01:00
"id": "f3782ec2-9f2c-4c23-9691-79413c4e04be",
"metadata": {},
"outputs": [
{
"data": {
2024-03-18 10:35:48 +01:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtUAAAIiCAYAAAAHJDTKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABfUklEQVR4nO3de1iUdf7/8dcIw3AQR4E4JZKWkoaah1XR3dQUPKFrVloUauuh1spM/bZZ2ypb6pbZYbWD25rmKV1L3VIXxTLT8KxYHjIrjxt4BFQ0GOH+/eGPWUdQkRsEnOfjurh0Pvd77vt9z4cbX95zz43FMAxDAAAAAEqtWkU3AAAAAFR1hGoAAADAJEI1AAAAYBKhGgAAADCJUA0AAACYRKgGAAAATCJUAwAAACYRqgEAAACTCNUAAACASYRqAMBNZcWKFbJarVqyZElFtwLAjRCqgWuYOXOmLBaLtmzZUuzy+Ph43XbbbS5jt912mwYOHHhd20lNTdW4ceOUlZVVukZRJg4cOCCLxaKZM2dWdCvlonD/Xn/99TJb51dffSWLxaJPPvnkmrXjxo2TxWJxGevQoYM6dOjgMmaxWDRu3Djn4927d2vcuHE6cODAVdd/5MgRPfroo3r77bfVu3fvEu7BzeXy1+5GGDhwYJGfg1XJrl27NGzYMMXExMjPz08Wi0VfffVVRbeFKoZQDZSDxYsX66WXXrqu56SmpiopKYlQjZva4MGDtX79+mvWrV+/XoMHD3Y+3r17t5KSkq4aqi9cuKB+/fpp6NChGjZsWFm0CzexZcsWLVmyRAEBAerUqVNFt4MqyrOiGwBuRs2aNavoFq6bw+GQxWKRpyc/Fqqac+fOydfXt6LbKJHatWurdu3a16xr06bNda/b09NT33zzTWnaqlI4VsteYmKiBgwYIEn65JNP9Pnnn1dwR6iKOFMNlIPLL/8oKCjQK6+8oqioKPn4+KhmzZpq0qSJ3n77bUkX3xL/v//7P0lS3bp1ZbFYXN5+LCgo0GuvvaY777xTNptNwcHB6t+/v44cOeKyXcMwNGHCBEVGRsrb21stW7ZUSkpKkbfXC9+unz17tkaNGqVbb71VNptNP/74o44fP65hw4apUaNGql69uoKDg3Xvvfdq7dq1LtsqvIxg0qRJevXVV3XbbbfJx8dHHTp00A8//CCHw6Hnn39e4eHhstvtuu+++3Ts2LEir1N8fLyWLl2qZs2aycfHRw0bNtTSpUslXbz0pmHDhvLz81OrVq2KvQRny5Yt6tWrlwICAuTt7a1mzZrpX//6V4nm6ZdfflHfvn3l7+8vu92ufv36KSMjo9jakmzn3LlzGj16tOrWrStvb28FBASoZcuW+vjjj6/aR+ElRikpKXrssccUEBAgPz8/9ezZUz///LNLbYcOHRQdHa2vv/5abdu2la+vr/7whz9Ikg4dOqRHH31UwcHBstlsatiwoSZPnqyCgoIi2ywoKND48eNVp04d5/fKF1984VLz448/6rHHHlP9+vXl6+urW2+9VT179tR3331X7H78+uuvGjlypEJDQ+Xj46P27dtr+/btLjXFXf5RnEsvYZg5c6YefPBBSVLHjh2dx8ell+isWrVKnTp1Uo0aNeTr66t27doV2Z/jx49r6NChioiIkM1m0y233KJ27dpp1apVV+2lsOft27erT58+qlGjhux2ux599FEdP37cpbakx+qVLhG7nmO1pEp6TF/NvHnzFBMTo+rVq6t69eq6++67NX369Ks+55133tE999yj4OBg+fn5qXHjxnrttdfkcDhc6rZv3674+Hjn9214eLh69Ojh8potXLhQrVu3lt1ul6+vr+rVq+f8vi90+vRp5/Hn5eWlW2+9VSNGjFBOTs41969aNeIQzOO/uUAJ5efn68KFC0XGDcO45nNfe+01jRs3Tn/+8591zz33yOFw6Pvvv3de6jF48GCdOnVKU6ZM0aJFixQWFiZJatSokSTpj3/8o/7xj3/oqaeeUnx8vA4cOKCXXnpJX331lbZt26agoCBJ0osvvqiJEydq6NCh6tOnjw4fPqzBgwfL4XCoQYMGRfoaM2aMYmJi9P7776tatWoKDg52hoSxY8cqNDRUZ8+e1eLFi9WhQwd98cUXRa59feedd9SkSRO98847ysrK0qhRo9SzZ0+1bt1aVqtVH374oQ4ePKjRo0dr8ODB+uyzz1yev2PHDo0ZM0Yvvvii7Ha7kpKS1KdPH40ZM0ZffPGFJkyYIIvFoj/96U+Kj4/X/v375ePjI0lavXq1unbtqtatW+v999+X3W7X/Pnz1a9fP507d+6q17WfP39enTt31i+//KKJEyeqQYMGWrZsmfr161ektqTbGTlypGbPnq1XXnlFzZo1U05Ojnbu3KmTJ09e/Rvk/xs0aJBiY2M1b948HT58WH/+85/VoUMHffvtt6pZs6azLj09XY8++qiee+45TZgwQdWqVdPx48fVtm1b5eXl6eWXX9Ztt92mpUuXavTo0frpp5/07rvvumxr6tSpioyM1FtvveUMgt26ddOaNWsUExMj6eJ/OgIDA/W3v/1Nt9xyi06dOqWPPvpIrVu31vbt2xUVFeWyzhdeeEHNmzfXP//5T2VnZ2vcuHHq0KGDtm/frnr16pXoNShOjx49NGHCBL3wwgt655131Lx5c0nS7bffLkmaM2eO+vfvr9///vf66KOPZLVaNW3aNHXp0kUrVqxwvp2fmJiobdu2afz48WrQoIGysrK0bdu2Es/Pfffdp759++qJJ57Qrl279NJLL2n37t3auHGjrFarpJIfq9eruGO1pE6dOiWp5Mf05f7yl7/o5ZdfVp8+fTRq1CjZ7Xbt3LlTBw8evOrzfvrpJyUkJDhD7o4dOzR+/Hh9//33+vDDDyVJOTk5io2NVd26dfXOO+8oJCREGRkZWr16tc6cOSPp4qVA/fr1U79+/TRu3Dh5e3vr4MGD+vLLL53bOnfunNq3b68jR47ohRdeUJMmTbRr1y795S9/0XfffadVq1aV6D9zgCkGgKuaMWOGIemqX5GRkS7PiYyMNAYMGOB8HB8fb9x9991X3c6kSZMMScb+/ftdxvfs2WNIMoYNG+YyvnHjRkOS8cILLxiGYRinTp0ybDab0a9fP5e69evXG5KM9u3bO8dWr15tSDLuueeea+7/hQsXDIfDYXTq1Mm47777nOP79+83JBlNmzY18vPzneNvvfWWIcno1auXy3pGjBhhSDKys7OdY5GRkYaPj49x5MgR51haWpohyQgLCzNycnKc40uWLDEkGZ999plz7M477zSaNWtmOBwOl23Fx8cbYWFhLn1d7r333jMkGf/+979dxocMGWJIMmbMmHHd24mOjjZ69+59xW1eSeH32KWvr2EYxjfffGNIMl555RXnWPv27Q1JxhdffOFS+/zzzxuSjI0bN7qM//GPfzQsFouxd+9ewzD+N2/h4eHG+fPnnXWnT582AgICjM6dO1+xzwsXLhh5eXlG/fr1jWeffdY5Xvj91Lx5c6OgoMA5fuDAAcNqtRqDBw92jo0dO9a4/J+e9u3bu3x/GoZhSDLGjh3rfLxw4UJDkrF69WqXupycHCMgIMDo2bOny3h+fr7RtGlTo1WrVs6x6tWrGyNGjLji/l1JYc+X7rNhGMbcuXMNScacOXMMwyj5sWoYRX9GFLr8tbieY7XQ5a/d5a50TBfn559/Njw8PIxHHnnkqnUDBgwo8nPwUvn5+YbD4TBmzZpleHh4GKdOnTIMwzC2bNliSDKWLFlyxee+/vrrhiQjKyvrijUTJ040qlWrZmzevNll/JNPPjEkGcuXL79q/5e60vcacC283wGU0KxZs7R58+YiX7/97W+v+dxWrVppx44dGjZsmFasWKHTp0+XeLurV6+WpCJnXVu1aqWGDRs63+LesGGDcnNz1bdvX5e6Nm3aXPFT+ffff3+x4++//76aN28ub29veXp6ymq16osvvtCePXuK1Hbv3t3lrdOGDRtKunh28VKF44cOHXIZv/vuu3XrrbcWqevQoYPLdcKF44Vnx3788Ud9//33euSRRyR
2024-03-11 09:36:25 +01:00
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"draw_prob_distribution(X_test)"
]
},
2024-03-18 10:10:28 +01:00
{
"cell_type": "code",
2024-03-18 10:35:48 +01:00
"execution_count": 27,
2024-03-18 10:10:28 +01:00
"id": "e7ee0972-79ac-481e-a370-d71b085a3c27",
"metadata": {},
2024-03-18 10:35:48 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2024-03-18 10:10:28 +01:00
"source": [
"draw_calibration_curve(X_test, y_test)"
]
},
2024-03-10 11:09:53 +01:00
{
"cell_type": "markdown",
"id": "ae8e9bd3-0f6a-4f82-bb4c-470cbdc8d6bb",
2024-03-18 10:35:48 +01:00
"metadata": {},
2024-03-10 11:09:53 +01:00
"source": [
"## Cross Validation"
]
},
2024-03-10 12:30:57 +01:00
{
"cell_type": "code",
2024-03-10 13:30:10 +01:00
"execution_count": 40,
2024-03-10 12:30:57 +01:00
"id": "7f0535de-34f1-4e97-b993-b429ecf0a554",
"metadata": {},
"outputs": [],
"source": [
"y_train = y_train['y_has_purchased']"
]
},
2024-03-10 11:09:53 +01:00
{
"cell_type": "code",
2024-03-10 13:30:10 +01:00
"execution_count": 41,
2024-03-10 11:09:53 +01:00
"id": "f7fca463-d7d6-493b-8329-fdfa92457f78",
"metadata": {},
2024-03-10 13:30:10 +01:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Best parameters found: {'logreg__C': 0.0009765625, 'logreg__class_weight': 'balanced', 'logreg__penalty': 'l1'}\n",
"Best cross-validation score: 0.65\n",
"Test set score: 0.64\n"
]
}
],
2024-03-10 11:09:53 +01:00
"source": [
"# Cross validation\n",
2024-03-10 12:30:57 +01:00
"\n",
2024-03-10 13:30:10 +01:00
"grid_search = GridSearchCV(pipeline, param_grid, cv=3, scoring=recall_scorer, error_score='raise',\n",
2024-03-10 11:09:53 +01:00
" n_jobs=-1)\n",
"\n",
"grid_search.fit(X_train, y_train)\n",
"\n",
"# Print the best parameters and the best score\n",
"print(\"Best parameters found: \", grid_search.best_params_)\n",
"print(\"Best cross-validation score: {:.2f}\".format(grid_search.best_score_))\n",
"\n",
"# Evaluate the best model on the test set\n",
"test_score = grid_search.score(X_test, y_test)\n",
"print(\"Test set score: {:.2f}\".format(test_score))"
]
},
{
"cell_type": "code",
2024-03-10 13:30:10 +01:00
"execution_count": 43,
2024-03-10 11:09:53 +01:00
"id": "56bd7828-4de1-4166-bea0-5d5e152b9d38",
"metadata": {},
2024-03-10 13:30:10 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"y_pred = grid_search.predict(X_test)\n",
"\n",
"draw_confusion_matrix(y_test, y_pred)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "319fe0eb-4d4a-492c-bd50-3f08ab483021",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABIQAAAK8CAYAAACeK2TMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hUddrG8e+k904ooSahSheBJIggioINBUTWvuqqrLr2tfeKBdtrXde6IqKIq7IIFsQA0hEBBRJ6JwnpPXPePw4MHAcwgSRnJnN/rotL5pwzyQNy54SH33l+DsMwDERERERERERExGf42V2AiIiIiIiIiIg0LjWERERERERERER8jBpCIiIiIiIiIiI+Rg0hEREREREREREfo4aQiIiIiIiIiIiPUUNIRERERERERMTHqCEkIiIiIiIiIuJj1BASEREREREREfExagiJiIiIiIiIiPgYNYREREREvNzDDz9MfHw8mzdvtrsUERER8RJqCImIiDSglStXcuWVV9KhQwdCQkKIiIigb9++TJw4kby8PFtqevfdd3E4HCxZsqRBP8+mTZtwOByuH35+fsTGxjJs2DBmzZp1xPfNnDmTs846i2bNmhEcHEybNm24/PLLWbNmzRHf89NPP3HhhReSlJREUFAQ0dHRpKen89prr1FSUtIQvzxbHPh/t2nTJsvxBx98kPPPP5+xY8dSWVl52Pc+9NBDOByOeqtlzpw5OBwO5syZU28f83Dat2/PFVdcUaf3zJ8/n4ceeoj8/Hy3c0OGDGHIkCH1UpuIiIg3U0NIRESkgbz11luceOKJLF68mDvuuIOZM2fy+eefM3bsWF5//XWuuuoqu0tsFDfeeCMLFizgp59+4tlnn2X9+vWMHDmSuXPnul175513MmLECJxOJ6+++iqzZ8/mwQcfZPHixfTt25dp06a5vefBBx9k8ODBbN++nUcffZTZs2fz8ccfM2zYMB566CHuu+++xvhl2u7111+nWbNm3HLLLXaXUq8+//xz7r///jq9Z/78+Tz88MOHbQi9+uqrvPrqq/VUnYiIiPcKsLsAERGRpmjBggVcf/31nH766UyfPp3g4GDXudNPP53bbruNmTNnNmpNVVVV9bpCpLbatm3LwIEDAcjIyKBjx46ccsopvP322wwePNh13eTJk3nmmWe4/vrrLX9hHzx4MOPHj+eUU07h0ksvpXfv3iQnJwMwdepUHnnkEa666ireeusty69vxIgR3HnnnSxYsKCRfqX2CggI4Ouvv7a7jHrXp0+fev143bp1q9ePJyIi4q20QkhERKQBPPHEEzgcDt58801LM+iAoKAgzj33XNdrp9PJxIkT6dKlC8HBwSQmJnLZZZexbds2y/uO9PjMHx+DOfA4zwcffMBtt91GUlISwcHBZGVlua7Zt28fV155JXFxcYSHh3POOeewYcMGt4/97bffMmzYMKKioggLCyMjI4PvvvvuGH5XTP369QNg9+7dluOPP/44sbGxPPvss27vCQ8P5+WXX6a0tJRJkya5jj/yyCPExsby0ksvHbbZFRkZyfDhw4+51j8aMmQI3bt3Z8GCBaSnpxMaGkr79u155513APj666/p27cvYWFh9OjR47BNv8zMTIYNG0ZkZCRhYWGkp6cftpHz888/k5GRQUhICK1ateLuu++mqqrqsHVNmTKFtLQ0wsPDiYiIYPjw4SxdurRWv6Y/vveMM85g+fLldfhdsfrvf/9LWloaYWFhREZGcvrppx+2KffFF1/Qs2dPgoODSU5O5sUXXzzsY21//DPvdDp57LHH6Ny5M6GhocTExNCzZ09efPFFwHw07o477gCgQ4cOrkcWDzzadrhHxnbs2MGFF15IZGQk0dHRjBs3jp9//hmHw8G7777ruu5Ij5tdccUVtG/f3nKssrKSxx57zJXpZs2aceWVV7J3797a/UaKiIg0MDWERERE6llNTQ3ff/89J554Im3atKnVe66//nr++c9/cvrpp/Pf//6XRx99lJkzZ5Kenk5OTs4x13L33XezZcsWXn/9db788ksSExNd56666ir8/Pz46KOPeOGFF1i0aBFDhgyxPGbz4YcfMnz4cKKionjvvff45JNPiIuL44wzzjjmptDGjRsB6NSpk+vYzp07Wb16NcOHDycsLOyw70tLSyMxMZHZs2e73rNq1aqjvqc2DjTPHnrooVpdv2vXLq688kquvvpqvvjiC3r06MFf//pXHnnkEe6++27uvPNOPvvsMyIiIhg1ahQ7duxwvffHH3/k1FNPpaCggLfffpvJkycTGRnJOeecw5QpU1zXrVmzhmHDhpGfn8+7777L66+/zvLly3nsscfc6nniiScYP3483bp145NPPuH999+nsLCQk08+mVWrVh311/LH937wwQcUFRVx8sknH3Vm05F89NFHnHfeeURFRTF58mTefvtt9u3bx5AhQ8jMzHRdN3PmTC644ALi4+OZMmUKEydOZPLkybz33nt/+jkmTpzIQw89xPjx4/n666+ZMmUKV111levP7dVXX82NN94IwLRp01iwYAELFiygb9++h/14ZWVlnHbaacyaNYsnn3ySqVOn0qJFC8aNG1fnX/8BTqeT8847j6eeeoq//OUvfP311zz11FPMnj2bIUOGUFZWdswfW0REpN4YIiIiUq927dplAMZFF11Uq+t/++03AzAmTJhgOb5w4UIDMO655x7XsXbt2hmXX36528c45ZRTjFNOOcX1+ocffjAAY/DgwW7XvvPOOwZgnH/++Zbj8+bNMwDjscceMwzDMEpKSoy4uDjjnHPOsVxXU1Nj9OrVy+jfv/9Rf10bN240AOPpp582qqqqjPLycmPFihVGWlqa0bJlS2Pjxo2ua3/++WcDMO66666jfswBAwYYoaGhdXrPn5kzZ47h7+9vPPzww3967SmnnGIAxpIlS1zHcnNzDX9/fyM0NNTYvn276/iKFSsMwHjppZdcxwYOHGgkJiYaRUVFrmPV1dVG9+7djdatWxtOp9MwDMMYN26cERoaauzatctyXZcuXQzA9Xu3ZcsWIyAgwPj73/9uqbOwsNBITEw0xowZ4zr24IMPGod+63fgvTfeeKPlvUVFRUaLFi2MCy+88Ki/Fwf+jP3www+GYZh/Llq1amX06NHDqKmpsXy8xMREIz093XXspJNOMtq0aWNUVFRYrouPjzf++O3pH//Mn3322Ubv3r2PWtszzzxj+X061B+z8tprrxmA8cUXX1iuu+aaawzAeOedd4743gMuv/xyo127dq7XkydPNgDjs88+s1y3ePFiAzBeffXVo9YvIiLSGLRCSERExGY//PADgNujYP3796dr167H9XjW6NGjj3ju4osvtrxOT0+nXbt2rnrmz59PXl4el19+OdXV1a4fTqeTM888k8WLF9dqB69//vOfBAYGEhISQu/evVm1ahVffvml2yM2tWEYRr3PQTrllFOorq7mgQceqNX1LVu25MQTT3S9jouLIzExkd69e9OqVSvX8a5duwK4toIvKSlh4cKFjBkzhoiICNd1/v7+XHrppWzbto21a9cC5p+JYcOG0bx5c8t1f1y18s0331BdXc1f//pXy/HIyEiGDh3Kjz/+eMRfx4H3XnbZZZb/vyEhIZxyyil13j1s7dq17Nixg0svvRQ/v4PfYkZERDB69Gh+/vlnSktLKSkpYcmSJYwaNYqgoCDLdeecc86ffp7+/fvzyy+/MGHCBL755hsKCwvrVOcf/fDDD0RGRloe4QT4y1/+cswf86uvviImJoZzzjnH8nvbu3dvWrRo0eA7s4mIiNSGhkqLiIjUs4SEBMLCwlyPRv2Z3NxcwGw0/FGrVq1cDYVjcbiPeUCLFi0Oe+xAPQdm/IwZM+aIHyMvL4/w8PCj1vCPf/yDSy65hIqKCn7++Wfuu+8+zjvvPH755Rfi4+MBc/A08Ke/Z5s3b3Y9hlfb99S3uLg4t2NBQUFuxw80O8rLywFzZpNhGEf8/wwH/yzk5uYe8f/PoQ78P0pPT3e79kDz7kgOvPekk0467PlDmzq18Wd/jp1Op+v3wDA
"text/plain": [
"<Figure size 1400x800 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"draw_roc_curve(X_test, y_test)"
]
},
2024-03-11 09:36:25 +01:00
{
"cell_type": "markdown",
"id": "ab122f66-1591-43ea-a364-2564f09b2bb3",
"metadata": {},
"source": [
"# Segmentation du score de prédiction"
]
},
2024-03-10 13:30:10 +01:00
{
"cell_type": "code",
2024-03-11 09:36:25 +01:00
"execution_count": 61,
"id": "279e18c7-29d8-4328-963a-18babd13c2c8",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABA4AAAIjCAYAAACDPFmSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAD8YklEQVR4nOzdd1gUV/s38O8ufekgUgyICCIWFIMoVixYUCOWYEsQW0LUWFBRYgNDFAuW6BNjEhVjNKapsaCIBWPsUVGfYIlERB9RogZQUVzYef/w3fm5sgtLE2W/n+vySubMmTP3zD0M7NkzZySCIAggIiIiIiIiIlJDWt0BEBEREREREdHrix0HRERERERERKQROw6IiIiIiIiISCN2HBARERERERGRRuw4ICIiIiIiIiKN2HFARERERERERBqx44CIiIiIiIiINGLHARERERERERFpxI4DIiIiIiIiItKIHQdERERUIUlJSTAwMMD27durOxSiKiOXy9GtWzf4+/tDLpdXdzjVatiwYfD09MS9e/eqOxQiekXYcUBEVAkSEhIgkUjwxx9/VHco5bZ582YsX768usOocgEBAQgICKjuMF57aWlpiI6ORkZGRon1bt26hffeew8rVqxAcHCw1u1HR0dDIpGUKab8/HxER0cjJSWl2Drlz2Bp8b6pynO+XpWMjAxIJBIkJCRUdyiVJiwsDK6uriplBgYG+OWXX/D06VNMnTpV47av6h6jLsZX4csvv8SBAwewd+9e1KpV65Xvv7JJJBJER0e/8v2+qntWeY4vMTFR4zaurq4ICwurcFz05mHHARERAdCdjgPSTlpaGmJiYkr8o7awsBCDBg3CBx98gLFjx5ap/dGjR+P48eNl2iY/Px8xMTFqOw569eqF48ePw9HRsUxtEpWFubk5EhMTsWPHDvz444/VHc4rd/bsWcyePRuJiYmoV69edYdTKY4fP47Ro0dXdxhVpjzHl5iYiJiYGLXrtm3bhtmzZ1dGaPSG0a/uAIiIqHrl5+dDJpNVdxhUAdWVQ319fRw9erRM2yhjfeutt/DWW29VWix2dnaws7OrtPaINHF0dMT169erO4xX4uV7S4sWLfDPP/9Uyb6ePHkCY2PjVz6ypnXr1q90f69aZR+fj49PpbZHbw6OOCAiqiJhYWEwMzPD5cuX0b17d5iamsLR0RFxcXEAgBMn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
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"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()"
]
},
{
"cell_type": "code",
"execution_count": 70,
2024-03-10 13:30:10 +01:00
"id": "210b931c-6d46-4ebf-a9c7-d1ee05c3fadf",
"metadata": {},
2024-03-10 11:09:53 +01:00
"outputs": [],
2024-03-11 09:36:25 +01:00
"source": [
"# Création d'un dataframe avec le score\n",
"dataset_for_segmentation = dataset_test[['customer_id'] + numeric_features + categorical_features]\n",
"\n",
"y_predict_proba = pipeline.predict_proba(X_test)[:, 1]\n",
"\n",
"dataset_for_segmentation['prediction_probability'] = y_predict_proba\n",
"\n",
"# Arrondir les valeurs de la colonne 'prediction_probability' et les multiplier par 10\n",
"dataset_for_segmentation['category'] = dataset_for_segmentation['prediction_probability'].apply(lambda x: int(x * 10))\n",
"\n",
"dataset_for_segmentation['prediction'] = y_pred\n",
"\n",
"def premiere_partie(chaine):\n",
" if chaine:\n",
" return chaine.split('_')[0]\n",
" else:\n",
" return None\n",
"\n",
"dataset_for_segmentation['company_number'] = dataset_for_segmentation['customer_id'].apply(lambda x: premiere_partie(x))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "055e47dd-9ff3-4853-a46d-d5a5edc1f361",
"metadata": {},
"outputs": [],
2024-03-10 11:09:53 +01:00
"source": []
2024-03-11 09:36:25 +01:00
},
{
"cell_type": "code",
"execution_count": 73,
"id": "969f1f92-d715-4d74-85a7-437e72838cb5",
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\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>time_between_purchase</th>\n",
" <th>nb_tickets_internet</th>\n",
" <th>fidelity</th>\n",
" <th>gender_female</th>\n",
" <th>gender_male</th>\n",
" <th>gender_other</th>\n",
" <th>nb_campaigns</th>\n",
" <th>nb_campaigns_opened</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" <th>mean</th>\n",
" </tr>\n",
" <tr>\n",
" <th>category</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.113637</td>\n",
" <td>0.006274</td>\n",
" <td>1.586366</td>\n",
" <td>0.005821</td>\n",
" <td>0.000647</td>\n",
" <td>548.790455</td>\n",
" <td>548.773103</td>\n",
" <td>-0.977118</td>\n",
" <td>0.001585</td>\n",
" <td>0.000776</td>\n",
" <td>0.000000</td>\n",
" <td>0.000032</td>\n",
" <td>0.999968</td>\n",
" <td>13.984219</td>\n",
" <td>1.302720</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.810841</td>\n",
" <td>0.128432</td>\n",
" <td>9.611292</td>\n",
" <td>0.125295</td>\n",
" <td>0.018186</td>\n",
" <td>525.437516</td>\n",
" <td>525.275222</td>\n",
" <td>-0.729328</td>\n",
" <td>0.054312</td>\n",
" <td>0.111832</td>\n",
" <td>0.245480</td>\n",
" <td>0.495929</td>\n",
" <td>0.258591</td>\n",
" <td>18.413562</td>\n",
" <td>3.718711</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1.159419</td>\n",
" <td>0.339253</td>\n",
" <td>15.182143</td>\n",
" <td>0.337577</td>\n",
" <td>0.323824</td>\n",
" <td>501.529129</td>\n",
" <td>501.415505</td>\n",
" <td>-0.554439</td>\n",
" <td>0.969939</td>\n",
" <td>0.304757</td>\n",
" <td>0.392570</td>\n",
" <td>0.297258</td>\n",
" <td>0.310173</td>\n",
" <td>17.395042</td>\n",
" <td>2.608084</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2.153080</td>\n",
" <td>0.744161</td>\n",
" <td>27.820044</td>\n",
" <td>0.734881</td>\n",
" <td>0.600982</td>\n",
" <td>287.051054</td>\n",
" <td>286.675385</td>\n",
" <td>0.105360</td>\n",
" <td>1.776035</td>\n",
" <td>0.659878</td>\n",
" <td>0.288813</td>\n",
" <td>0.253244</td>\n",
" <td>0.457943</td>\n",
" <td>16.790421</td>\n",
" <td>4.173954</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2.044749</td>\n",
" <td>0.777640</td>\n",
" <td>27.353145</td>\n",
" <td>0.754549</td>\n",
" <td>0.079213</td>\n",
" <td>297.179255</td>\n",
" <td>295.019902</td>\n",
" <td>1.898178</td>\n",
" <td>0.293760</td>\n",
" <td>0.894877</td>\n",
" <td>0.666980</td>\n",
" <td>0.301424</td>\n",
" <td>0.031596</td>\n",
" <td>16.954707</td>\n",
" <td>6.060621</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>3.237988</td>\n",
" <td>0.958520</td>\n",
" <td>46.637380</td>\n",
" <td>0.807655</td>\n",
" <td>0.484785</td>\n",
" <td>387.464785</td>\n",
" <td>380.145068</td>\n",
" <td>7.111357</td>\n",
" <td>2.080397</td>\n",
" <td>1.164958</td>\n",
" <td>0.497758</td>\n",
" <td>0.259769</td>\n",
" <td>0.242473</td>\n",
" <td>27.006406</td>\n",
" <td>12.457719</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>3.592233</td>\n",
" <td>1.102881</td>\n",
" <td>49.989226</td>\n",
" <td>0.878014</td>\n",
" <td>0.599906</td>\n",
" <td>268.627019</td>\n",
" <td>250.949344</td>\n",
" <td>17.539247</td>\n",
" <td>2.525994</td>\n",
" <td>1.420921</td>\n",
" <td>0.534607</td>\n",
" <td>0.304259</td>\n",
" <td>0.161134</td>\n",
" <td>14.073285</td>\n",
" <td>4.604134</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>3.747016</td>\n",
" <td>1.391266</td>\n",
" <td>40.710335</td>\n",
" <td>0.914702</td>\n",
" <td>0.160990</td>\n",
" <td>309.716173</td>\n",
" <td>274.795570</td>\n",
" <td>34.796876</td>\n",
" <td>0.844250</td>\n",
" <td>1.963028</td>\n",
" <td>0.650364</td>\n",
" <td>0.263464</td>\n",
" <td>0.086172</td>\n",
" <td>26.186317</td>\n",
" <td>8.891703</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>5.698276</td>\n",
" <td>1.567006</td>\n",
" <td>63.033699</td>\n",
" <td>0.907915</td>\n",
" <td>0.334248</td>\n",
" <td>326.485952</td>\n",
" <td>257.940194</td>\n",
" <td>68.425460</td>\n",
" <td>2.794279</td>\n",
" <td>2.413009</td>\n",
" <td>0.606583</td>\n",
" <td>0.251567</td>\n",
" <td>0.141850</td>\n",
" <td>30.987461</td>\n",
" <td>11.676332</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>14.505956</td>\n",
" <td>3.211571</td>\n",
" <td>107.288514</td>\n",
" <td>1.011628</td>\n",
" <td>0.157119</td>\n",
" <td>369.696066</td>\n",
" <td>209.280306</td>\n",
" <td>160.348544</td>\n",
" <td>3.514464</td>\n",
" <td>5.394498</td>\n",
" <td>0.669314</td>\n",
" <td>0.223766</td>\n",
" <td>0.106920</td>\n",
" <td>45.928247</td>\n",
" <td>18.241634</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>2262.859155</td>\n",
" <td>45.619718</td>\n",
" <td>11051.732394</td>\n",
" <td>1.464789</td>\n",
" <td>0.154930</td>\n",
" <td>467.111875</td>\n",
" <td>31.146796</td>\n",
" <td>435.950994</td>\n",
" <td>54.295775</td>\n",
" <td>64.704225</td>\n",
" <td>0.507042</td>\n",
" <td>0.295775</td>\n",
" <td>0.197183</td>\n",
" <td>53.352113</td>\n",
" <td>26.070423</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" nb_tickets nb_purchases total_amount nb_suppliers \\\n",
" mean mean mean mean \n",
"category \n",
"0 0.113637 0.006274 1.586366 0.005821 \n",
"1 0.810841 0.128432 9.611292 0.125295 \n",
"2 1.159419 0.339253 15.182143 0.337577 \n",
"3 2.153080 0.744161 27.820044 0.734881 \n",
"4 2.044749 0.777640 27.353145 0.754549 \n",
"5 3.237988 0.958520 46.637380 0.807655 \n",
"6 3.592233 1.102881 49.989226 0.878014 \n",
"7 3.747016 1.391266 40.710335 0.914702 \n",
"8 5.698276 1.567006 63.033699 0.907915 \n",
"9 14.505956 3.211571 107.288514 1.011628 \n",
"10 2262.859155 45.619718 11051.732394 1.464789 \n",
"\n",
" vente_internet_max purchase_date_min purchase_date_max \\\n",
" mean mean mean \n",
"category \n",
"0 0.000647 548.790455 548.773103 \n",
"1 0.018186 525.437516 525.275222 \n",
"2 0.323824 501.529129 501.415505 \n",
"3 0.600982 287.051054 286.675385 \n",
"4 0.079213 297.179255 295.019902 \n",
"5 0.484785 387.464785 380.145068 \n",
"6 0.599906 268.627019 250.949344 \n",
"7 0.160990 309.716173 274.795570 \n",
"8 0.334248 326.485952 257.940194 \n",
"9 0.157119 369.696066 209.280306 \n",
"10 0.154930 467.111875 31.146796 \n",
"\n",
" time_between_purchase nb_tickets_internet fidelity gender_female \\\n",
" mean mean mean mean \n",
"category \n",
"0 -0.977118 0.001585 0.000776 0.000000 \n",
"1 -0.729328 0.054312 0.111832 0.245480 \n",
"2 -0.554439 0.969939 0.304757 0.392570 \n",
"3 0.105360 1.776035 0.659878 0.288813 \n",
"4 1.898178 0.293760 0.894877 0.666980 \n",
"5 7.111357 2.080397 1.164958 0.497758 \n",
"6 17.539247 2.525994 1.420921 0.534607 \n",
"7 34.796876 0.844250 1.963028 0.650364 \n",
"8 68.425460 2.794279 2.413009 0.606583 \n",
"9 160.348544 3.514464 5.394498 0.669314 \n",
"10 435.950994 54.295775 64.704225 0.507042 \n",
"\n",
" gender_male gender_other nb_campaigns nb_campaigns_opened \n",
" mean mean mean mean \n",
"category \n",
"0 0.000032 0.999968 13.984219 1.302720 \n",
"1 0.495929 0.258591 18.413562 3.718711 \n",
"2 0.297258 0.310173 17.395042 2.608084 \n",
"3 0.253244 0.457943 16.790421 4.173954 \n",
"4 0.301424 0.031596 16.954707 6.060621 \n",
"5 0.259769 0.242473 27.006406 12.457719 \n",
"6 0.304259 0.161134 14.073285 4.604134 \n",
"7 0.263464 0.086172 26.186317 8.891703 \n",
"8 0.251567 0.141850 30.987461 11.676332 \n",
"9 0.223766 0.106920 45.928247 18.241634 \n",
"10 0.295775 0.197183 53.352113 26.070423 "
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Grouper le DataFrame par la colonne 'category' et calculer la moyenne pour chaque groupe\n",
"summary_stats = dataset_for_segmentation.groupby('category')[numeric_features].describe()\n",
"\n",
"# Sélectionner uniquement la colonne 'mean' pour chaque variable numérique\n",
"mean_stats = summary_stats.loc[:, (slice(None), 'mean')]\n",
"\n",
"# Afficher le DataFrame résultant\n",
"mean_stats"
]
},
{
"cell_type": "code",
"execution_count": 75,
"id": "14da601e-7b1b-469c-bab1-de8fad4047f2",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plot histogram\n",
"plt.figure(figsize=(8, 6))\n",
"plt.hist(y_predict_proba, bins=10, range=(0, 1), color='blue', alpha=0.7)\n",
"\n",
"# Réglage des limites des axes x et y\n",
"plt.xlim(0, 1)\n",
"plt.ylim(0, None) # Laissez le maximum sur l'axe y pour s'ajuster automatiquement\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()\n"
]
2024-03-18 10:35:48 +01:00
},
{
"cell_type": "markdown",
"id": "98119520-17ae-4b15-afb2-3e2ba0ceaeb0",
"metadata": {},
"source": [
"### Random Forest"
]
},
{
"cell_type": "markdown",
"id": "59280d0d-b03e-445c-b9e8-689960275b7d",
"metadata": {},
"source": [
"#### Benchmark "
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "d585a6b9-6943-45a3-b37b-4fb3c0164a0c",
"metadata": {},
"outputs": [],
"source": [
"pipeline_rf = Pipeline(steps=[\n",
" ('preprocessor', preproc),\n",
" ('randomF', RandomForestClassifier(class_weight = weight_dict,\n",
" n_jobs=-1)) \n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "6f1aacc1-c251-43bd-8681-919ec5efbd87",
"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",
" 'time_between_purchase',\n",
" 'nb_tickets_internet',\n",
" 'is_email_true', 'opt_in',\n",
" 'gender_female',\n",
" 'gender_male',\n",
" 'gender_other',\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",
" ('randomF',\n",
" RandomForestClassifier(class_weight={0.0: 0.5837086520288036,\n",
" 1.0: 3.486549107420539},\n",
" n_jobs=-1))])</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-15\" type=\"checkbox\" ><label for=\"sk-estimator-id-15\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> Pipeline<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.pipeline.Pipeline.html\">?<span>Documentation for Pipeline</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>Pipeline(steps=[('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",
" 'time_between_purchase',\n",
" 'nb_tickets_internet',\n",
" 'is_email_true', 'opt_in',\n",
" 'gender_female',\n",
" 'gender_male',\n",
" 'gender_other',\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",
" ('randomF',\n",
" RandomForestClassifier(class_weight={0.0: 0.5837086520288036,\n",
" 1.0: 3.486549107420539},\n",
" n_jobs=-1))])</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-16\" type=\"checkbox\" ><label for=\"sk-estimator-id-16\" 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",
" 'time_between_purchase',\n",
" 'nb_tickets_internet', 'is_email_true',\n",
" 'opt_in', 'gender_female', 'gender_male',\n",
" 'gender_other', 'nb_campaigns',\n",
" 'nb_campaigns_opened']),\n",
" ('cat',\n",
" Pipeline(steps=[('onehot',\n",
" OneHotEncoder(handle_unknown='ignore',\n",
" sparse_output=False))]),\n",
" ['opt_in'])])</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-17\" type=\"checkbox\" ><label for=\"sk-estimator-id-17\" 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', 'time_between_purchase', 'nb_tickets_internet', 'is_email_true', 'opt_in', 'gender_female', 'gender_male', 'gender_other', '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-18\" type=\"checkbox\" ><label for=\"sk-estimator-id-18\" 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-19\" type=\"checkbox\" ><label for=\"sk-estimator-id-19\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">cat</label><div class=\"sk-toggleable__content fitted\"><pre>['opt_in']</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-20\" type=\"checkbox\" ><label for=\"sk-estimator-id-20\" 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-21\" type=\"checkbox\" ><label for=\"sk-estimator-id-21\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> RandomForestClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier(class_weight={0.0: 0.5837086520288036,\n",
" 1.0: 3.486549107420539},\n",
" n_jobs=-1)</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",
" 'time_between_purchase',\n",
" 'nb_tickets_internet',\n",
" 'is_email_true', 'opt_in',\n",
" 'gender_female',\n",
" 'gender_male',\n",
" 'gender_other',\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",
" ('randomF',\n",
" RandomForestClassifier(class_weight={0.0: 0.5837086520288036,\n",
" 1.0: 3.486549107420539},\n",
" n_jobs=-1))])"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipeline_rf.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "ad83f5de-3e0d-40d0-bcb0-427530642d22",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy Score: 0.8915667665667666\n",
"F1 Score: 0.5773505313539385\n",
"Recall Score: 0.5198685171658145\n"
]
}
],
"source": [
"y_pred = pipeline_rf.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": 36,
"id": "d48d7b80-1a30-47f4-a179-e7522d2a905a",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAHFCAYAAAA+FskAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZvklEQVR4nO3deVxU5f4H8M/IMgLKyCKMo7gjSeCGiWi5JILKktdKDSO5KvrLLRLU1Aq9FbilprhlbrlEJuJ1JVSMIkSR5CpKaomiyYjKiIo4EJzfH15PdwQU7IzD4Od9X+f1knO+5znPGe/E1+/zPOfIBEEQQERERFTL1TN0B4iIiIiqg0kLERERGQUmLURERGQUmLQQERGRUWDSQkREREaBSQsREREZBSYtREREZBSYtBAREZFRYNJCRERERoFJC9VpJ0+exD//+U+0atUK9evXR4MGDdClSxfMnz8fBQUFer32iRMn0Lt3bygUCshkMixZskTya8hkMsyePVvydp9kw4YNkMlkkMlk+OGHHyocFwQBbdu2hUwmQ58+fZ7qGitWrMCGDRtqdM4PP/xQZZ+IyPiZGroDRPqyZs0ajB8/Hi4uLpg6dSpcXV1RWlqK48ePY9WqVThy5Aji4+P1dv1Ro0ahqKgIsbGxsLGxQcuWLSW/xpEjR9CsWTPJ262uhg0bYu3atRUSk+TkZPz+++9o2LDhU7e9YsUK2NvbIyQkpNrndOnSBUeOHIGrq+tTX5eIai8mLVQnHTlyBO+++y769++PnTt3Qi6Xi8f69++P8PBwJCQk6LUPWVlZCA0NxcCBA/V2je7du+ut7eoYNmwYtmzZguXLl8Pa2lrcv3btWnh5eeH27dvPpB+lpaWQyWSwtrY2+GdCRPrD4SGqk6KioiCTyfDll1/qJCwPmZubIzAwUPy5vLwc8+fPxwsvvAC5XA4HBwe88847uHLlis55ffr0gZubG9LT0/HKK6/A0tISrVu3xty5c1FeXg7gr6GTP//8EytXrhSHUQBg9uzZ4p//18NzLl68KO5LSkpCnz59YGdnBwsLCzRv3hyvv/467t27J8ZUNjyUlZWF1157DTY2Nqhfvz46deqEjRs36sQ8HEb55ptvMGvWLKhUKlhbW8Pb2xtnz56t3ocM4K233gIAfPPNN+K+wsJCxMXFYdSoUZWeM2fOHHh6esLW1hbW1tbo0qUL1q5di/99d2vLli1x+vRpJCcni5/fw0rVw75v2rQJ4eHhaNq0KeRyOX777bcKw0M3btyAk5MTevTogdLSUrH9M2fOwMrKCsHBwdW+VyIyPCYtVOeUlZUhKSkJHh4ecHJyqtY57777LqZPn47+/ftj165d+OSTT5CQkIAePXrgxo0bOrFqtRojRozA22+/jV27dmHgwIGYMWMGNm/eDADw8/PDkSNHAABvvPEGjhw5Iv5cXRcvXoSfnx/Mzc2xbt06JCQkYO7cubCyskJJSUmV5509exY9evTA6dOnsXTpUuzYsQOurq4ICQnB/PnzK8TPnDkTly5dwldffYUvv/wS58+fR0BAAMrKyqrVT2tra7zxxhtYt26duO+bb75BvXr1MGzYsCrvbdy4cdi2bRt27NiBIUOGYNKkSfjkk0/EmPj4eLRu3RqdO3cWP79Hh/JmzJiB3NxcrFq1Crt374aDg0OFa9nb2yM2Nhbp6emYPn06AODevXt488030bx5c6xatapa90lEtYRAVMeo1WoBgDB8+PBqxWdnZwsAhPHjx+vsP3r0qABAmDlzprivd+/eAgDh6NGjOrGurq6Cr6+vzj4AwoQJE3T2RUZGCpV97davXy8AEHJycgRBEITt27cLAITMzMzH9h2AEBkZKf48fPhwQS6XC7m5uTpxAwcOFCwtLYVbt24JgiAIhw8fFgAIgwYN0onbtm2bAEA4cuTIY6/7sL/p6eliW1lZWYIgCMJLL70khISECIIgCC+++KLQu3fvKtspKysTSktLhX/961+CnZ2dUF5eLh6r6tyH1+vVq1eVxw4fPqyzf968eQIAIT4+Xhg5cqRgYWEhnDx58rH3SES1Dyst9Nw7fPgwAFSY8NmtWze0b98ehw4d0tmvVCrRrVs3nX0dOnTApUuXJOtTp06dYG5ujrFjx2Ljxo24cOFCtc5LSkpCv379KlSYQkJCcO/evQoVn/8dIgMe3AeAGt1L79690aZNG6xbtw6nTp1Cenp6lUNDD/vo7e0NhUIBExMTmJmZ4eOPP8bNmzeRn59f7eu+/vrr1Y6dOnUq/Pz88NZbb2Hjxo1YtmwZ3N3dq30+EdUOTFqozrG3t4elpSVycnKqFX/z5k0AQJMmTSocU6lU4vGH7OzsKsTJ5XIUFxc/RW8r16ZNGxw8eBAODg6YMGEC2rRpgzZt2uCLL7547Hk3b96s8j4eHv9fj97Lw/k/NbkXmUyGf/7zn9i8eTNWrVqFdu3a4ZVXXqk09tixY/Dx8QHwYHXXzz//jPT0dMyaNavG163sPh/Xx5CQENy/fx9KpZJzWYiMFJMWqnNMTEzQr18/ZGRkVJhIW5mHv7jz8vIqHLt69Srs7e0l61v9+vUBAFqtVmf/o/NmAOCVV17B7t27UVhYiLS0NHh5eSEsLAyxsbFVtm9nZ1flfQCQ9F7+V0hICG7cuIFVq1bhn//8Z5VxsbGxMDMzw549ezB06FD06NEDXbt2faprVjahuSp5eXmYMGECOnXqhJs3byIiIuKprklEhsWkheqkGTNmQBAEhIaGVjpxtbS0FLt37wYAvPrqqwAgTqR9KD09HdnZ2ejXr59k/Xq4AubkyZM6+x/2pTImJibw9PTE8uXLAQC//PJLlbH9+vVDUlKSmKQ89PXXX8PS0lJvy4GbNm2KqVOnIiAgACNHjqwyTiaTwdTUFCYmJuK+4uJibNq0qUKsVNWrsrIyvPXWW5DJZNi/fz+io6OxbNky7Nix42+3TUTPFp/TQnWSl5cXVq5cifHjx8PDwwPvvvsuXnzxRZSWluLEiRP48ssv4ebmhoCAALi4uGDs2LFYtmwZ6tWrh4EDB+LixYv46KOP4OTkhPfff1+yfg0aNAi2trYYPXo0/vWvf8HU1BQbNmzA5cuXdeJWrVqFpKQk+Pn5oXnz5rh//764Qsfb27vK9iMjI7Fnzx707dsXH3/8MWxtbbFlyxbs3bsX8+fPh0KhkOxeHjV37twnxvj5+WHRokUICgrC2LFjcfPmTSxcuLDSZenu7u6IjY3Ft99+i9atW6N+/fpPNQ8lMjISP/30ExITE6FUKhEeHo7k5GSMHj0anTt3RqtWrWrcJhEZBpMWqrNCQ0PRrVs3LF68GPPmzYNarYaZmRnatWuHoKAgTJw4UYxduXIl2rRpg7Vr12L58uVQKBQYMGAAoqOjK53D8rSsra2RkJCAsLAwvP3222jUqBHGjBmDgQMHYsyYMWJcp06dkJiYiMjISKjVajRo0ABubm7YtWuXOCekMi4uLkhNTcXMmTMxYcIEFBcXo3379li/fn2NniyrL6+++irWrVuHefPmISAgAE2bNkVoaCgcHBwwevRondg5c+YgLy8PoaGhuHPnDlq0aKHzHJvqOHDgAKKjo/HRRx/pVMw2bNiAzp07Y9iwYUhJSYG5ubkUt0dEeiYThP95ohMRERFRLcU5LURERGQUmLQQERGRUWDSQkREREaBSQsREREZBSYtREREZBSYtBAREZFRYNJCRERERqFOPlzOovPEJwcRPYc06TGG7gJRrVP/GfwmlOr3UvGJ5/s7zEoLERERGYU6WWkhIiKqVWSsEUiBSQsREZG+yWSG7kGdwKSFiIhI31hpkQQ/RSIiIjIKrLQQERHpG4eHJMGkhYiISN84PCQJfopERERkFFhpISIi0jcOD0mCSQsREZG+cXhIEvwUiYiIyCiw0kJERKRvHB6SBJMWIiIifePwkCT4KRIREZFRYKWFiIhI3zg8JAkmLURERPrG4SFJMGkhIiLSN1ZaJMHUj4iIiIwCKy1ERET6xuEhSTBpISIi0jcmLZLgp0hERERGgZUWIiIifavHibhSYNJCRESkbxwekgQ/RSI
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABIQAAALCCAYAAACvAwh9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hUZfrG8e+k94SEHnpv0osIIoigYAFRRHRta2N1dQWxoiI2bKuuuvbuKiL9J6CAIlKVKr13Qk2A9D7n98eBgcMAJpDkzOTcn+vKxZx32hP0nhOevOd9XYZhGIiIiIiIiIiIiGME2F2AiIiIiIiIiIiULTWEREREREREREQcRg0hERERERERERGHUUNIRERERERERMRh1BASEREREREREXEYNYRERERERERERBxGDSEREREREREREYdRQ0hERERERERExGHUEBIRERERERERcRg1hEREREREREREHEYNIRERESk1zz77LC6Xy+srNDSU6tWrc/nll/PJJ5+Qn59f5Nf87bffuPfee2natClxcXGEhYVRs2ZNrrzySt5//32ys7OL/FqFhYV8//333HrrrTRq1Ii4uDhCQkKoXLkyXbt25YknnmDNmjXn8q1brFq1iscee4yOHTtSpUoVQkJCiI2NpVmzZtx2221MmTKlWH8HIiIiIufLZRiGYXcRIiIiUj49++yzjBo1CoAqVap4xtPT08nKyvIct2/fnpkzZ1KhQoUzvlZKSgq33nor06dP94yFhoYSFhZGamqqZywxMZHPP/+cXr16nbW233//ndtuu41NmzZ5xoKDg4mOjubo0aO43W7P+IABAxgzZgwhISFF+K5PSE9PZ8iQIYwZM4bjP3K5XC5iY2PJzs4mNzfX89j69evzzTff0KlTp2K9h4iIiMi50AwhERERKRP79+/3fGVmZrJz507uvvtuAJYuXcqDDz54xuceOHCACy+8kOnTpxMYGMgDDzzA2rVrycnJ4ejRoxw5coTPP/+cmjVrkpSURN++ffn+++/P+Ho//PAD3bt3Z9OmTSQkJDB69Gg2bdpEXl4eKSkp5OXlsWTJEh5//HFiYmKYOHGipYFVFEeOHKFz5858++23ANx444389ttv5OTkcOTIEXJyckhKSuKTTz6hZcuWbN26lUWLFhXrPURERETOlWYIiYiISKk5eYbQmX7kuOyyy/jll18ICQkhJSWFqKgoy/2GYXDZZZcxe/ZsgoODmTBhAldfffVpXyslJYWePXuycuVKIiMjWbp0KU2aNLE8ZvPmzbRv3560tDSaNWvGjBkzqFGjxhm/h8OHD/P3v/+dL774gri4uCJ/73379uXHH38kKCiIb7/9loEDB57xsYZh8MEHH+ByuRgyZEiR30NERETkXGmGkIiIiNjq8ssvByAvL4/Nmzd73T916lRmz54NwIgRI87YDAJISEhg3LhxhIWFkZmZydNPP+31mKeeeoq0tDTCwsKYNGnSWZtBAPHx8UyePJnY2Ngif08//vgjP/74IwDPPPPMWZtBYF5G9o9//IN77rnHM7Zjxw7Pmks7duw443Pr1KmDy+Xiiy++sIyf+vytW7dyzz33ULduXUJDQ6lTpw4HDx4kODgYl8vF//3f/521xqeffhqXy0WDBg1Oe/+KFSv4+9//Tv369YmIiCAqKopWrVrx1FNPkZycfNbXFhERkbKnhpCIiIjY6uSZQ4WFhV73v/feewBER0fz8MMP/+XrNWzYkMGDBwMwceJE9u/f77nvwIEDjB8/HoCbb76ZRo0aFblOl8tV5Me+++67AMTGxjJs2LAiPy8goHR+NFu4cCGtW7fm448/9jSBACpXruxpyH399ddnfL5hGHzzzTcA3HLLLV73jxw5knbt2vH555+zbds2XC4X+fn5rFq1ihdffJGWLVuyYsWKUvjORERE5FypISQiIiK2mjFjBmA2XOrWrWu5r6CggHnz5gHQu3dvr8vJzmTAgAEAuN1ufvvtN8/4r7/+6lks+tprrz3v2k+noKCAuXPnAtCrVy8iIyNL5X2K495776V58+YsWbKEzMxMMjIymDlzJgC33norYK6rdPTo0dM+f8GCBWzfvh3wbgi99dZbPPfcc0RFRTF69Gj27dtHZmYmWVlZLF26lEsvvZR9+/ZxzTXXkJGRUXrfpIiIiBSLGkIiIiJii127dnHPPfd4Lge7+uqrSUhIsDxmx44dZGZmAtCmTZsiv3br1q09t0/eNn7t2rWe28V5veLYuXOnp/FRWu9RXAkJCfz888+0b9/eM3Z8dtQ111xDbGwsubm5Z1yI+/jsoa5du1KvXj3PeHJyMiNGjMDlcjFp0iQef/xxqlatCkBgYCDt2rVjxowZtGvXjj179vDJJ5+U1rcoIiIixaSGkIiIiJSJqlWrer4iIyOpXbs2H3/8MQBNmjTxXBp2spSUFM/tU5tFZ1OxYsXTvsbJt+Pj44tVf1GVxXsU1z//+c8zzq4KCwvzrHF0usvGTm4UnTo76JtvviErK4v27dvTs2fP075+UFCQ5xK+47PBRERExH5BdhcgIiIiznDgwIHTjt966618+OGHhIWFnfX5xVnD50zKYnPVk9+jJGouCV26dDnr/bfeeiuffPKJ59Kwky/dmzp1KkePHiU0NJQbbrjB8rz58+cD5iys4zODTic7OxswZ0+JiIiIb9AMIRERESkThmFgGAZut5u9e/fywQcfEBcXx1dffcU777xz2uecPCuoODtVnfzYk1/j5JlDhw8fLk75RXam2Ul2qly58lnv79q1K3Xr1sUwDP73v/9Z7js+a+iaa64hLi7Oct/evXsBs+Fz4MCBM36lpaUBkJWVVULfkYiIiJwvNYRERESkTLlcLqpVq8a9997LpEmTcLlcPPbYY561hE5Wu3Ztz6LMy5cvL/J7nLyjVfPmzU97u7R2vapdu7bn8ixf2VkrMDDwrPe7XC7+9re/AdbLxlJSUpg+fTpwYvHpkx3fFW7IkCGeht/Zvnbs2FFC35GIiIicLzWERERExDbdu3fnlltuwTAM/vnPf3ptOx8cHMzFF18MwMyZM0lPTy/S606cOBEwt3Hv3r27Z7xHjx6erd0nTZpUAt+Bt6CgILp16wbArFmzPItin8vrHJeTk3PGx6Wmpp7T65/qeMNn8+bN/P777wCMHTuW/Px8KlWqxBVXXOH1nOOXia1evbpEahAREZGyo4aQiIiI2OqZZ54hMDCQ9evX8+WXX3rd/49//AOAjIwM3njjjb98vc2bN/Pdd98B5tbyJ69tU6VKFa677joAvv32WzZt2lTkOouz/tD9998PmM2aotR8nNvt9tyuUKGC5/bu3btP+/hNmzadcav44mrQoAGdO3cGTswSOv7n4MGDLQ2q446vTfT7779rfSARERE/o4aQiIiI2Kp+/foMGjQIgOeff578/HzL/VdffbVnls+LL77I1KlTz/haKSkpDBw4kJycHCIiInj++ee9HvPCCy8QFRVFdnY2AwYMICkp6az1HTlyhOuuu65YM3H69u1L7969AXjuuecYP378Xz7no48+8uy6BhAZGUn9+vUBmDBhwmmf8+KLLxa5pqI4Pkto7NixrFu3zjNT6HSXi4G561h4eDiFhYXcf//9XjO8TuZ2u0useSUiIiLnTw0hERERsd0TTzyBy+Vix44dfPrpp5b7XC4XY8aMoV69euTn53Pttdfyr3/9i/Xr13sek5qaypdffknbtm1ZuXIlgYGBfPLJJzRt2tTrvRo1asTXX39NSEgIa9eupXXr1rzyyits2bLF85jCwkJWrFjBM888Q7169TyXoBXHt99+S9OmTSkoKOCGG27g5ptvZt68eZaG1759+/jyyy9p164d9957r2c3ruOOb9f+2Wef8d5773nu3717N3fddRdjx44lIiKi2LWdyaBBgwgJCSElJYXbbrsNgKZNm9KuXbvTPr5q1aq8/PLLAEybNo1evXqxYMECT2PIMAw2bNjAG2+8QYsWLc7azBMREZEyZoiIiIiUkpEjRxqAUZQfOfr162cARo0aNYycnByv+w8ePGhcfvnlntcDjLC
"text/plain": [
"<Figure size 1400x800 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtUAAAIiCAYAAAAHJDTKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABfUklEQVR4nO3de1iUdf7/8dcIw3AQR4E4JZKWkoaah1XR3dQUPKFrVloUauuh1spM/bZZ2ypb6pbZYbWD25rmKV1L3VIXxTLT8KxYHjIrjxt4BFQ0GOH+/eGPWUdQkRsEnOfjurh0Pvd77vt9z4cbX95zz43FMAxDAAAAAEqtWkU3AAAAAFR1hGoAAADAJEI1AAAAYBKhGgAAADCJUA0AAACYRKgGAAAATCJUAwAAACYRqgEAAACTCNUAAACASYRqAMBNZcWKFbJarVqyZElFtwLAjRCqgWuYOXOmLBaLtmzZUuzy+Ph43XbbbS5jt912mwYOHHhd20lNTdW4ceOUlZVVukZRJg4cOCCLxaKZM2dWdCvlonD/Xn/99TJb51dffSWLxaJPPvnkmrXjxo2TxWJxGevQoYM6dOjgMmaxWDRu3Djn4927d2vcuHE6cODAVdd/5MgRPfroo3r77bfVu3fvEu7BzeXy1+5GGDhwYJGfg1XJrl27NGzYMMXExMjPz08Wi0VfffVVRbeFKoZQDZSDxYsX66WXXrqu56SmpiopKYlQjZva4MGDtX79+mvWrV+/XoMHD3Y+3r17t5KSkq4aqi9cuKB+/fpp6NChGjZsWFm0CzexZcsWLVmyRAEBAerUqVNFt4MqyrOiGwBuRs2aNavoFq6bw+GQxWKRpyc/Fqqac+fOydfXt6LbKJHatWurdu3a16xr06bNda/b09NT33zzTWnaqlI4VsteYmKiBgwYIEn65JNP9Pnnn1dwR6iKOFMNlIPLL/8oKCjQK6+8oqioKPn4+KhmzZpq0qSJ3n77bUkX3xL/v//7P0lS3bp1ZbFYXN5+LCgo0GuvvaY777xTNptNwcHB6t+/v44cOeKyXcMwNGHCBEVGRsrb21stW7ZUSkpKkbfXC9+unz17tkaNGqVbb71VNptNP/74o44fP65hw4apUaNGql69uoKDg3Xvvfdq7dq1LtsqvIxg0qRJevXVV3XbbbfJx8dHHTp00A8//CCHw6Hnn39e4eHhstvtuu+++3Ts2LEir1N8fLyWLl2qZs2aycfHRw0bNtTSpUslXbz0pmHDhvLz81OrVq2KvQRny5Yt6tWrlwICAuTt7a1mzZrpX//6V4nm6ZdfflHfvn3l7+8vu92ufv36KSMjo9jakmzn3LlzGj16tOrWrStvb28FBASoZcuW+vjjj6/aR+ElRikpKXrssccUEBAgPz8/9ezZUz///LNLbYcOHRQdHa2vv/5abdu2la+vr/7whz9Ikg4dOqRHH31UwcHBstlsatiwoSZPnqyCgoIi2ywoKND48eNVp04d5/fKF1984VLz448/6rHHHlP9+vXl6+urW2+9VT179tR3331X7H78+uuvGjlypEJDQ+Xj46P27dtr+/btLjXFXf5RnEsvYZg5c6YefPBBSVLHjh2dx8ell+isWrVKnTp1Uo0aNeTr66t27doV2Z/jx49r6NChioiIkM1m0y233KJ27dpp1apVV+2lsOft27erT58+qlGjhux2ux599FEdP37cpbakx+qVLhG7nmO1pEp6TF/NvHnzFBMTo+rVq6t69eq6++67NX369Ks+55133tE999yj4OBg+fn5qXHjxnrttdfkcDhc6rZv3674+Hjn9214eLh69Ojh8potXLhQrVu3lt1ul6+vr+rVq+f8vi90+vRp5/Hn5eWlW2+9VSNGjFBOTs41969aNeIQzOO/uUAJ5efn68KFC0XGDcO45nNfe+01jRs3Tn/+8591zz33yOFw6Pvvv3de6jF48GCdOnVKU6ZM0aJFixQWFiZJatSokSTpj3/8o/7xj3/oqaeeUnx8vA4cOKCXXnpJX331lbZt26agoCBJ0osvvqiJEydq6NCh6tOnjw4fPqzBgwfL4XCoQYMGRfoaM2aMYmJi9P7776tatWoKDg52hoSxY8cqNDRUZ8+e1eLFi9WhQwd98cUXRa59feedd9SkSRO98847ysrK0qhRo9SzZ0+1bt1aVqtVH374oQ4ePKjRo0dr8ODB+uyzz1yev2PHDo0ZM0Yvvvii7Ha7kpKS1KdPH40ZM0ZffPGFJkyYIIvFoj/96U+Kj4/X/v375ePjI0lavXq1unbtqtatW+v999+X3W7X/Pnz1a9fP507d+6q17WfP39enTt31i+//KKJEyeqQYMGWrZsmfr161ektqTbGTlypGbPnq1XXnlFzZo1U05Ojnbu3KmTJ09e/Rvk/xs0aJBiY2M1b948HT58WH/+85/VoUMHffvtt6pZs6azLj09XY8++qiee+45TZgwQdWqVdPx48fVtm1b5eXl6eWXX9Ztt92mpUuXavTo0frpp5/07rvvumxr6tSpioyM1FtvveUMgt26ddOaNWsUExMj6eJ/OgIDA/W3v/1Nt9xyi06dOqWPPvpIrVu31vbt2xUVFeWyzhdeeEHNmzfXP//5T2VnZ2vcuHHq0KGDtm/frnr16pXoNShOjx49NGHCBL3wwgt655131Lx5c0nS7bffLkmaM2eO+vfvr9///vf66KOPZLVaNW3aNHXp0kUrVqxwvp2fmJiobdu2afz48WrQoIGysrK0bdu2Es/Pfffdp759++qJJ57Qrl279NJLL2n37t3auHGjrFarpJIfq9eruGO1pE6dOiWp5Mf05f7yl7/o5ZdfVp8+fTRq1CjZ7Xbt3LlTBw8evOrzfvrpJyUkJDhD7o4dOzR+/Hh9//33+vDDDyVJOTk5io2NVd26dfXOO+8oJCREGRkZWr16tc6cOSPp4qVA/fr1U79+/TRu3Dh5e3vr4MGD+vLLL53bOnfunNq3b68jR47ohRdeUJMmTbRr1y795S9/0XfffadVq1aV6D9zgCkGgKuaMWOGIemqX5GRkS7PiYyMNAYMGOB8HB8fb9x9991X3c6kSZMMScb+/ftdxvfs2WNIMoYNG+YyvnHjRkOS8cILLxiGYRinTp0ybDab0a9fP5e69evXG5KM9u3bO8dWr15tSDLuueeea+7/hQsXDIfDYXTq1Mm47777nOP79+83JBlNmzY18vPzneNvvfWWIcno1auXy3pGjBhhSDKys7OdY5GRkYaPj49x5MgR51haWpohyQgLCzNycnKc40uWLDEkGZ999plz7M477zSaNWtmOBwOl23Fx8cbYWFhLn1d7r333jMkGf/+979dxocMGWJIMmbMmHHd24mOjjZ69+59xW1eSeH32KWvr2EYxjfffGNIMl555RXnWPv27Q1JxhdffOFS+/zzzxuSjI0bN7qM//GPfzQsFouxd+9ewzD+N2/h4eHG+fPnnXWnT582AgICjM6dO1+xzwsXLhh5eXlG/fr1jWeffdY5Xvj91Lx5c6OgoMA5fuDAAcNqtRqDBw92jo0dO9a4/J+e9u3bu3x/GoZhSDLGjh3rfLxw4UJDkrF69WqXupycHCMgIMDo2bOny3h+fr7RtGlTo1WrVs6x6tWrGyNGjLji/l1JYc+X7rNhGMbcuXMNScacOXMMwyj5sWoYRX9GFLr8tbieY7XQ5a/d5a50TBfn559/Njw8PIxHHnnkqnUDBgwo8nPwUvn5+YbD4TBmzZpleHh4GKdOnTIMwzC2bNliSDKWLFlyxee+/vrrhiQjKyvrijUTJ040qlWrZmzevNll/JNPPjEkGcuXL79q/5e60vcacC283wGU0KxZs7R58+YiX7/97W+v+dxWrVppx44dGjZsmFasWKHTp0+XeLurV6+WpCJnXVu1aqWGDRs63+LesGGDcnNz1bdvX5e6Nm3aXPFT+ffff3+x4++//76aN28ub29veXp6ymq16osvvtCePXuK1Hbv3t3lrdOGDRtKunh28VKF44cOHXIZv/vuu3XrrbcWqevQoYPLdcKF44Vnx3788Ud9//33euSRRyR
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"draw_confusion_matrix(y_test, y_pred)\n",
"draw_roc_curve(X_test, y_test)\n",
"draw_features_importance(pipeline_rf, 'randomF', randomF =True)\n",
"draw_prob_distribution(X_test)"
]
2024-03-08 14:48:38 +01:00
}
],
"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
}