{ "cells": [ { "cell_type": "markdown", "metadata": { "cell_id": "7088943d-f7b9-4b97-b640-6a775e1e8450", "tags": [] }, "source": [ "# Customer Churn Prediction\n", "Last Update: 08/02/2020
\n", "PyCaret Version: 2.0
\n", "Author: Alexandre Farias
\n", "Email: afarias@tuta.io\n", "\n", "![](https://res.cloudinary.com/dn1j6dpd7/image/fetch/f_auto,q_auto,w_736/https://www.livechat.com/wp-content/uploads/2016/04/customer-churn@2x.jpg)\n", "Image Source: [What Is Churn Rate and Why It Will Mess With Your Growth](https://www.livechat.com/success/churn-rate/)" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "9b238085-0cbf-4c9e-afa5-88b72a835fae", "tags": [] }, "source": [ "# 1. Introduction\n", "Customer Churn is when customers leave a service in a given period of time, which is bad for business.
\n", "This work has as objective to build a machine learning model to predict which customers will leave the service, the dataset used on this notebook is the [Telco Customer Churn](https://www.kaggle.com/blastchar/telco-customer-churn) hosted at Kaggle. Also, an Exploratory Data Analysis is made to a better understand about the data. \n", "Another point on this work is use Deepnote as development enviroment and the [PyCaret 2.0](https://pycaret.org/) Python Module to make all the experiment pipeline. " ] }, { "cell_type": "markdown", "metadata": { "cell_id": "1e78a237-948f-480d-ba96-3503917949ad", "tags": [] }, "source": [ "# 1.1 Enviroment Setup\n", "The Modules used for this work, highlights for PyCaret 2.0 and good plots by [Plotly](https://plotly.com/)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cell_id": "464a9356-824f-4c4d-9945-224698b09877", "output_cleared": false }, "outputs": [], "source": [ "# Standard\n", "import pandas as pd\n", "import numpy as np\n", "import os\n", "# Pycaret\n", "from pycaret.classification import *\n", "# Plots\n", "from plotly.offline import iplot\n", "import plotly.graph_objects as go\n", "from plotly.subplots import make_subplots\n", "import seaborn as sns\n", "# Sklearn tools\n", "from sklearn.preprocessing import LabelEncoder\n", "from sklearn.metrics import *\n", "# Extras\n", "from datetime import date\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")\n", "# Datapath and Setup\n", "os.chdir(\"..\")\n", "PATH = os.getcwd()+os.sep\n", "RANDOM_SEED = 142\n", "K_FOLDS = 5" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "2bcfc94d-a561-405d-ac35-65ac706a54dc", "tags": [] }, "source": [ "And the helper functions used on this notebook." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "cell_id": "28308802-8246-4878-aa00-e65ee5bd184a", "tags": [] }, "outputs": [], "source": [ "# Helper functions for structured data\n", "# Get info about the dataset\n", "def dataset_info(dataset, dataset_name: str):\n", " print(f\"Dataset Name: {dataset_name} \\\n", " | Number of Samples: {dataset.shape[0]} \\\n", " | Number of Columns: {dataset.shape[1]}\")\n", " print(30*\"=\")\n", " print(\"Column Data Type\")\n", " print(dataset.dtypes)\n", " print(30*\"=\")\n", " missing_data = dataset.isnull().sum()\n", " if sum(missing_data) > 0:\n", " print(missing_data[missing_data.values > 0])\n", " else:\n", " print(\"No Missing Data on this Dataset!\")\n", " print(30*\"=\")\n", " print(\"Memory Usage: {} MB\".\\\n", " format(np.round(\n", " dataset.memory_usage(index=True).sum() / 10e5, 3\n", " )))\n", "# Dataset Sampling\n", "def data_sampling(dataset, frac: float, random_seed: int):\n", " data_sampled_a = dataset.sample(frac=frac, random_state=random_seed)\n", " data_sampled_b = dataset.drop(data_sampled_a.index).reset_index(drop=True)\n", " data_sampled_a.reset_index(drop=True, inplace=True)\n", " return data_sampled_a, data_sampled_b \n", "# Bar Plot\n", "def bar_plot(data, plot_title: str, x_axis: str, y_axis: str):\n", " colors = [\"#0080ff\",] * len(data)\n", " colors[0] = \"#ff8000\"\n", " trace = go.Bar(y=data.values, x=data.index, text=data.values, \n", " marker_color=colors)\n", " layout = go.Layout(autosize=False, height=600,\n", " title={\"text\" : plot_title,\n", " \"y\" : 0.9,\n", " \"x\" : 0.5,\n", " \"xanchor\" : \"center\",\n", " \"yanchor\" : \"top\"}, \n", " xaxis={\"title\" : x_axis},\n", " yaxis={\"title\" : y_axis},)\n", " fig = go.Figure(data=trace, layout=layout)\n", " fig.update_layout(template=\"simple_white\")\n", " fig.update_traces(textposition=\"outside\",\n", " textfont_size=14,\n", " marker=dict(line=dict(color=\"#000000\", width=2))) \n", " fig.update_yaxes(automargin=True)\n", " iplot(fig)\n", "# Plot Pie Chart\n", "def pie_plot(data, plot_title: str):\n", " trace = go.Pie(labels=data.index, values=data.values)\n", " layout = go.Layout(autosize=False,\n", " title={\"text\" : plot_title,\n", " \"y\" : 0.9,\n", " \"x\" : 0.5,\n", " \"xanchor\" : \"center\",\n", " \"yanchor\" : \"top\"})\n", " fig = go.Figure(data=trace, layout=layout)\n", " fig.update_traces(textfont_size=14,\n", " marker=dict(line=dict(color=\"#000000\", width=2)))\n", " fig.update_yaxes(automargin=True) \n", " iplot(fig)\n", "# Histogram\n", "def histogram_plot(data, plot_title: str, y_axis: str):\n", " trace = go.Histogram(x=data)\n", " layout = go.Layout(autosize=False,\n", " title={\"text\" : plot_title,\n", " \"y\" : 0.9,\n", " \"x\" : 0.5,\n", " \"xanchor\" : \"center\",\n", " \"yanchor\" : \"top\"}, \n", " yaxis={\"title\" : y_axis})\n", " fig = go.Figure(data=trace, layout=layout)\n", " fig.update_traces(marker=dict(line=dict(color=\"#000000\", width=2)))\n", " fig.update_layout(template=\"simple_white\")\n", " fig.update_yaxes(automargin=True)\n", " iplot(fig)\n", "# Particular case: Histogram subplot (1, 2)\n", "def histogram_subplot(dataset_a, dataset_b, feature_a: str,\n", " feature_b: str, title: str, title_a: str, title_b: str):\n", " fig = make_subplots(rows=1, cols=2, subplot_titles=(\n", " title_a,\n", " title_b\n", " )\n", " )\n", " fig.add_trace(go.Histogram(x=dataset_a[feature_a],\n", " showlegend=False),\n", " row=1, col=1)\n", " fig.add_trace(go.Histogram(x=dataset_b[feature_b],\n", " showlegend=False),\n", " row=1, col=2)\n", " fig.update_layout(template=\"simple_white\")\n", " fig.update_layout(autosize=False,\n", " title={\"text\" : title,\n", " \"y\" : 0.9,\n", " \"x\" : 0.5,\n", " \"xanchor\" : \"center\",\n", " \"yanchor\" : \"top\"}, \n", " yaxis={\"title\" : \"Frequency\"})\n", " fig.update_traces(marker=dict(line=dict(color=\"#000000\", width=2)))\n", " fig.update_yaxes(automargin=True)\n", " iplot(fig)\n", "# Calculate scores with Test/Unseen labeled data\n", "def test_score_report(data_unseen, predict_unseen):\n", " le = LabelEncoder()\n", " data_unseen[\"Label\"] = le.fit_transform(data_unseen.Churn.values)\n", " data_unseen[\"Label\"] = data_unseen[\"Label\"].astype(int)\n", " accuracy = accuracy_score(data_unseen[\"Label\"], predict_unseen[\"Label\"])\n", " roc_auc = roc_auc_score(data_unseen[\"Label\"], predict_unseen[\"Label\"])\n", " precision = precision_score(data_unseen[\"Label\"], predict_unseen[\"Label\"])\n", " recall = recall_score(data_unseen[\"Label\"], predict_unseen[\"Label\"])\n", " f1 = f1_score(data_unseen[\"Label\"], predict_unseen[\"Label\"])\n", "\n", " df_unseen = pd.DataFrame({\n", " \"Accuracy\" : [accuracy],\n", " \"AUC\" : [roc_auc],\n", " \"Recall\" : [recall],\n", " \"Precision\" : [precision],\n", " \"F1 Score\" : [f1]\n", " })\n", " return df_unseen\n", "# Confusion Matrix\n", "def conf_mat(data_unseen, predict_unseen):\n", " unique_label = data_unseen[\"Label\"].unique()\n", " cmtx = pd.DataFrame(\n", " confusion_matrix(data_unseen[\"Label\"],\n", " predict_unseen[\"Label\"],\n", " labels=unique_label), \n", " index=['{:}'.format(x) for x in unique_label], \n", " columns=['{:}'.format(x) for x in unique_label]\n", " )\n", " ax = sns.heatmap(cmtx, annot=True, fmt=\"d\", cmap=\"YlGnBu\")\n", " ax.set_ylabel('Predicted')\n", " ax.set_xlabel('Target');\n", " ax.set_title(\"Predict Unseen Confusion Matrix\", size=14);" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "5ae1c017-271e-410e-abd5-0be3b8727766", "tags": [] }, "source": [ "# 2. Load Data\n", "\n", "The Dataset is load as a Pandas dataframe and show a gimplse of the data.\n", "A good thing about Deepnote is that the displayed dataframes shows the column type, helping to understand the features." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "cell_id": "cec0aaf1-7373-484e-bcdd-e39fa067e8ad", "output_cleared": false, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
customerIDgenderSeniorCitizenPartnerDependentstenurePhoneServiceMultipleLinesInternetServiceOnlineSecurity...DeviceProtectionTechSupportStreamingTVStreamingMoviesContractPaperlessBillingPaymentMethodMonthlyChargesTotalChargesChurn
07590-VHVEGFemale0YesNo1NoNo phone serviceDSLNo...NoNoNoNoMonth-to-monthYesElectronic check29.8529.85No
15575-GNVDEMale0NoNo34YesNoDSLYes...YesNoNoNoOne yearNoMailed check56.951889.5No
23668-QPYBKMale0NoNo2YesNoDSLYes...NoNoNoNoMonth-to-monthYesMailed check53.85108.15Yes
\n", "

3 rows × 21 columns

\n", "
" ], "text/plain": [ " customerID gender SeniorCitizen Partner Dependents tenure PhoneService \\\n", "0 7590-VHVEG Female 0 Yes No 1 No \n", "1 5575-GNVDE Male 0 No No 34 Yes \n", "2 3668-QPYBK Male 0 No No 2 Yes \n", "\n", " MultipleLines InternetService OnlineSecurity ... DeviceProtection \\\n", "0 No phone service DSL No ... No \n", "1 No DSL Yes ... Yes \n", "2 No DSL Yes ... No \n", "\n", " TechSupport StreamingTV StreamingMovies Contract PaperlessBilling \\\n", "0 No No No Month-to-month Yes \n", "1 No No No One year No \n", "2 No No No Month-to-month Yes \n", "\n", " PaymentMethod MonthlyCharges TotalCharges Churn \n", "0 Electronic check 29.85 29.85 No \n", "1 Mailed check 56.95 1889.5 No \n", "2 Mailed check 53.85 108.15 Yes \n", "\n", "[3 rows x 21 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dataset = pd.read_csv(PATH+\"data\"+os.sep+\"customers.csv\")\n", "dataset.head(3)" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "6ec2b507-2382-46dc-a15e-b0795b6c6e6e", "tags": [] }, "source": [ "Check for duplicated samples." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "cell_id": "8827849f-c74e-419a-adff-0a0d71e75f1c", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
customerIDgenderSeniorCitizenPartnerDependentstenurePhoneServiceMultipleLinesInternetServiceOnlineSecurity...DeviceProtectionTechSupportStreamingTVStreamingMoviesContractPaperlessBillingPaymentMethodMonthlyChargesTotalChargesChurn
\n", "

0 rows × 21 columns

\n", "
" ], "text/plain": [ "Empty DataFrame\n", "Columns: [customerID, gender, SeniorCitizen, Partner, Dependents, tenure, PhoneService, MultipleLines, InternetService, OnlineSecurity, OnlineBackup, DeviceProtection, TechSupport, StreamingTV, StreamingMovies, Contract, PaperlessBilling, PaymentMethod, MonthlyCharges, TotalCharges, Churn]\n", "Index: []\n", "\n", "[0 rows x 21 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dataset[dataset.duplicated()]" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "9b3cb07f-e86e-494a-87ec-04aeafbc5144", "tags": [] }, "source": [ "There are no duplicated samples on the dataset.
\n", "More information about the dataset is needed as the number of samples, memory size allocation, etc.
\n", "The result is showed on the following output (The Data Type is just showed for convenience, to make this notebook useful on other enviroments)." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "cell_id": "7a4a0d96-1085-4179-9523-fe1774edff40", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Dataset Name: customers | Number of Samples: 7043 | Number of Columns: 21\n", "==============================\n", "Column Data Type\n", "customerID object\n", "gender object\n", "SeniorCitizen int64\n", "Partner object\n", "Dependents object\n", "tenure int64\n", "PhoneService object\n", "MultipleLines object\n", "InternetService object\n", "OnlineSecurity object\n", "OnlineBackup object\n", "DeviceProtection object\n", "TechSupport object\n", "StreamingTV object\n", "StreamingMovies object\n", "Contract object\n", "PaperlessBilling object\n", "PaymentMethod object\n", "MonthlyCharges float64\n", "TotalCharges object\n", "Churn object\n", "dtype: object\n", "==============================\n", "No Missing Data on this Dataset!\n", "==============================\n", "Memory Usage: 1.183 MB\n" ] } ], "source": [ "dataset_info(dataset, \"customers\")" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "f8a7621d-34b8-49d8-85a6-ac7b71a545ba", "tags": [] }, "source": [ "The dataset has a small memory size allocation (1.183 MB) and is composed for many Categorical (object) features and only a few numeric, but one of the categorical features doesn't look right, the `TotalCharges`, as showed on the displayed dataframe, the festure is numeric.
\n", "`TotalCharges` is converted from Object to float64, the same of `MonthlyCharges` feature." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "cell_id": "3520f897-c87b-4a90-9814-8edfd3220119", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The Feature TotalCharges is type float64 now!\n" ] } ], "source": [ "dataset[\"TotalCharges\"] = pd.to_numeric(dataset[\"TotalCharges\"], errors=\"coerce\")\n", "print(f\"The Feature TotalCharges is type {dataset.TotalCharges.dtype} now!\")" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "74bc6ebf-5467-4c13-af9f-4d2744ba11ec", "tags": [] }, "source": [ "# 3. Exploratory Data Analysis" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "aceeb11e-7a7d-4367-9492-1714689c6c5a", "tags": [] }, "source": [ "# 3.1 Churn Distribution\n", "The Client Churn Distribution is checked for any imbalance, as the feature is the target, it's important to choose what strategy to adopt when dealing with imbalanced classes.
\n", "Below, a Pie Chart shows the feature distribution.\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "cell_id": "0e06fe3a-30b9-4ff2-b803-951dd0b8e46c", "tags": [] }, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "labels": [ "No", "Yes" ], "marker": { "line": { "color": "#000000", "width": 2 } }, "textfont": { "size": 14 }, "type": "pie", "values": [ 5174, 1869 ] } ], "layout": { "autosize": false, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Client Churn Distribution", "x": 0.5, "xanchor": "center", "y": 0.9, "yanchor": "top" }, "yaxis": { "automargin": true } } }, "text/html": [ "
\n", " \n", " \n", "
\n", " \n", "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pie_plot(dataset[\"Churn\"].value_counts(), \n", " plot_title=\"Client Churn Distribution\")" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "e30ae2f1-f982-462f-80f3-1bc64e1d31d1", "tags": [] }, "source": [ "There's some imbalance on Churn Distribution, 26.5% of the clients have churned, and small occurences of a label could lead to bad predictor.
\n", "It's possible to choose some ways to work with this case:\n", "* Make a random over-sampling, duplicating some samples of the minority class until this reach a balance, but this could lead to an overfitted model.\n", "* Make a random down-sampling, removing some samples from the majority class until this reach a balance, but this leads to information loss and not feeding the model with the collected samples.\n", "* Make a random down-sampling, removing some samples from the majority class until this reach a balance, but this leads to information loss and not feeding the model with the collected samples.\n", "* Another resampling technique, as SMOTE.\n", "* Choosing a metric that deals with imbalanced datasets, like F1 Score.\n", "\n", "The Churn problem is about client retention, is worth to check about false positives, so precision and recall metrics are a must for this situtation.
\n", "F1 Score is used to check the quality of the model predictions, as the metric is an harmonic mean of precision and recall." ] }, { "cell_type": "markdown", "metadata": { "cell_id": "61904ad8-8f19-4ed5-bf91-8fbabcb40de1", "tags": [] }, "source": [ "# 3.2 Analysis of the Contract Type\n" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "84546349-680a-41c9-9a0f-3dc2f376a8b2", "tags": [] }, "source": [ "The contract type is a good feature to analyze what happens to a client churn from that service, a plot from the contract types of not churned clients is showed below." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "cell_id": "b560ac2d-e6c1-49ec-980e-da39712c2f85", "tags": [] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "marker": { "color": [ "#ff8000", "#0080ff", "#0080ff" ], "line": { "color": "#000000", "width": 2 } }, "text": [ 2220, 1647, 1307 ], "textfont": { "size": 14 }, "textposition": "outside", "type": "bar", "x": [ "Month-to-month", "Two year", "One year" ], "y": [ 2220, 1647, 1307 ] } ], "layout": { "autosize": false, "height": 600, "template": { "data": { "bar": [ { "error_x": { "color": "rgb(36,36,36)" }, "error_y": { "color": "rgb(36,36,36)" }, "marker": { "line": { "color": "white", "width": 0.5 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "white", "width": 0.5 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "baxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "line": { "color": "white", "width": 0.6 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "rgb(237,237,237)" }, "line": { "color": "white" } }, "header": { "fill": { "color": "rgb(217,217,217)" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowhead": 0, "arrowwidth": 1 }, "coloraxis": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "colorscale": { "diverging": [ [ 0, "rgb(103,0,31)" ], [ 0.1, "rgb(178,24,43)" ], [ 0.2, "rgb(214,96,77)" ], [ 0.3, "rgb(244,165,130)" ], [ 0.4, "rgb(253,219,199)" ], [ 0.5, "rgb(247,247,247)" ], [ 0.6, "rgb(209,229,240)" ], [ 0.7, "rgb(146,197,222)" ], [ 0.8, "rgb(67,147,195)" ], [ 0.9, "rgb(33,102,172)" ], [ 1, "rgb(5,48,97)" ] ], "sequential": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "sequentialminus": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ] }, "colorway": [ "#1F77B4", "#FF7F0E", "#2CA02C", "#D62728", "#9467BD", "#8C564B", "#E377C2", "#7F7F7F", "#BCBD22", "#17BECF" ], "font": { "color": "rgb(36,36,36)" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "white", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "white", "polar": { "angularaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "radialaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "scene": { "xaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "zaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } }, "shapedefaults": { "fillcolor": "black", "line": { "width": 0 }, "opacity": 0.3 }, "ternary": { "aaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "baxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "caxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } } }, "title": { "text": "Contract Types of not Churned Clients", "x": 0.5, "xanchor": "center", "y": 0.9, "yanchor": "top" }, "xaxis": { "title": { "text": "Contract" } }, "yaxis": { "automargin": true, "title": { "text": "Count" } } } }, "text/html": [ "
\n", " \n", " \n", "
\n", " \n", "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_aux = dataset.query('Churn == \"No\"')\n", "df_aux = df_aux[\"Contract\"].value_counts()\n", "bar_plot(df_aux, \"Contract Types of not Churned Clients\",\n", " \"Contract\", \"Count\")" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "a5778511-9798-45f7-8022-db6210e76fc6", "tags": [] }, "source": [ "Is showed that a Month-to-month contract is the firts when compared to annual contracts, but the difference between the number of contracts is not so big.
\n", "To a better comparation, the same plot is showed for the churned clients." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "cell_id": "d73d0256-a7f9-48af-9b08-741ece81ff43", "tags": [] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "marker": { "color": [ "#ff8000", "#0080ff", "#0080ff" ], "line": { "color": "#000000", "width": 2 } }, "text": [ 1655, 166, 48 ], "textfont": { "size": 14 }, "textposition": "outside", "type": "bar", "x": [ "Month-to-month", "One year", "Two year" ], "y": [ 1655, 166, 48 ] } ], "layout": { "autosize": false, "height": 600, "template": { "data": { "bar": [ { "error_x": { "color": "rgb(36,36,36)" }, "error_y": { "color": "rgb(36,36,36)" }, "marker": { "line": { "color": "white", "width": 0.5 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "white", "width": 0.5 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "baxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "line": { "color": "white", "width": 0.6 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "rgb(237,237,237)" }, "line": { "color": "white" } }, "header": { "fill": { "color": "rgb(217,217,217)" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowhead": 0, "arrowwidth": 1 }, "coloraxis": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "colorscale": { "diverging": [ [ 0, "rgb(103,0,31)" ], [ 0.1, "rgb(178,24,43)" ], [ 0.2, "rgb(214,96,77)" ], [ 0.3, "rgb(244,165,130)" ], [ 0.4, "rgb(253,219,199)" ], [ 0.5, "rgb(247,247,247)" ], [ 0.6, "rgb(209,229,240)" ], [ 0.7, "rgb(146,197,222)" ], [ 0.8, "rgb(67,147,195)" ], [ 0.9, "rgb(33,102,172)" ], [ 1, "rgb(5,48,97)" ] ], "sequential": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "sequentialminus": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ] }, "colorway": [ "#1F77B4", "#FF7F0E", "#2CA02C", "#D62728", "#9467BD", "#8C564B", "#E377C2", "#7F7F7F", "#BCBD22", "#17BECF" ], "font": { "color": "rgb(36,36,36)" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "white", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "white", "polar": { "angularaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "radialaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "scene": { "xaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "zaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } }, "shapedefaults": { "fillcolor": "black", "line": { "width": 0 }, "opacity": 0.3 }, "ternary": { "aaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "baxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "caxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } } }, "title": { "text": "Contract Types of Churned Clients", "x": 0.5, "xanchor": "center", "y": 0.9, "yanchor": "top" }, "xaxis": { "title": { "text": "Contract" } }, "yaxis": { "automargin": true, "title": { "text": "Count" } } } }, "text/html": [ "
\n", " \n", " \n", "
\n", " \n", "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_aux = dataset.query('Churn == \"Yes\"')\n", "df_aux = df_aux[\"Contract\"].value_counts()\n", "bar_plot(df_aux, \"Contract Types of Churned Clients\",\n", " \"Contract\", \"Count\")" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "da76f779-776c-4d75-bd18-d0e9c4e8e439", "tags": [] }, "source": [ "Now, the difference between a Month-to-month and annual contractts is bigger, and can lead to a conclusion that annual contracts are better to retain the clients, perhaps fidelity promotions could aid to reduce the churn rate.
\n", "As the problem can be examined more deep on Month-to-month contract types, a good idea is see the Monthly Charges and Total Charges distribution for the not churned clients of this contract.\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "cell_id": "632a627e-7764-4629-9408-93e86f15d99e", "tags": [] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "marker": { "line": { "color": "#000000", "width": 2 } }, "showlegend": false, "type": "histogram", "x": [ 29.85, 89.1, 29.75, 49.95, 105.5, 90.05, 59.6, 55.3, 95.5, 20.2, 45.25, 74.8, 76.2, 84.5, 49.25, 90.25, 69.5, 100.5, 89.9, 75.3, 79.85, 49.05, 64.5, 54.65, 74.75, 50.55, 103.8, 99.3, 33.75, 82.05, 74.7, 111.05, 20.2, 19.45, 24.3, 91.65, 89.85, 85.2, 20.7, 50.7, 20.85, 19.75, 85.95, 75, 69.5, 68.55, 19.7, 80.9, 84.15, 56, 69.7, 20.4, 24.7, 105.35, 45.3, 51.8, 30.4, 56.6, 96.55, 111.35, 20.75, 80.05, 78.3, 68.85, 25.25, 86.8, 58.75, 80, 89.9, 93.5, 25.15, 73.15, 94.4, 54.8, 75.35, 19.85, 45, 89.85, 105, 107.05, 64.95, 55, 50.55, 55.15, 51.2, 25.4, 54.45, 44.35, 89.35, 19.7, 20.25, 100.8, 74.55, 90.4, 81.85, 101.15, 19.25, 89.05, 69.35, 91.5, 44.8, 102.7, 82.9, 35.9, 82.65, 94.8, 54.65, 67.45, 72.1, 44.95, 89.15, 54.1, 20.2, 75.9, 59.95, 19.15, 96.1, 25.35, 90.4, 44, 95.6, 84.8, 44.3, 19.9, 95.05, 109.9, 54.6, 93.95, 74.95, 87.35, 70.65, 73.25, 24.3, 69.85, 40.7, 51.65, 85.95, 75.6, 53.45, 44.45, 89.85, 55.05, 112.95, 101.55, 64.8, 80.4, 94.75, 69.75, 60.2, 104.15, 20, 75.1, 19.65, 69.45, 70.05, 53.6, 76.05, 75.7, 81.45, 100.15, 59, 20.4, 60.9, 84.05, 78, 19.85, 106.45, 105.45, 95, 70.05, 20.05, 51.6, 85.5, 79.95, 89.55, 81.55, 58.95, 19.55, 19.75, 19.9, 70.2, 49.3, 23.6, 69.7, 64.3, 110.85, 70.5, 94.55, 19.65, 19, 20, 84.3, 45.6, 65.55, 74.55, 48.85, 25.25, 87.55, 78.55, 34.55, 95.15, 84.25, 55, 25.25, 70, 24.8, 95.1, 20.35, 45.25, 20.05, 74.75, 30.2, 24.85, 107.95, 81.4, 64.4, 71.1, 49.9, 83.4, 20.45, 20.65, 83.15, 84.9, 20.55, 49.25, 75.3, 80.1, 81, 86, 89.15, 85.65, 50.35, 80.35, 21.25, 80.85, 20.35, 75.5, 90.15, 50.6, 79.35, 80.45, 44.05, 75.05, 56.7, 71.35, 90.35, 19.85, 20.8, 35.8, 78.85, 74.25, 20.45, 40.3, 44.8, 54.75, 60.85, 45, 64.2, 25.55, 20, 55.2, 20.05, 84.6, 106.35, 63.95, 25.55, 44.85, 88.8, 93.25, 79.2, 30.85, 24.85, 64.35, 20.5, 34.8, 54.65, 20.05, 84.35, 89.3, 81.1, 94.3, 94.4, 19.5, 56.4, 19.95, 89, 75.4, 80.7, 20.45, 75.4, 81.7, 76.3, 75.1, 83.25, 19.9, 30.15, 79.85, 104.1, 20.5, 91.35, 75.6, 55.1, 58.95, 95.1, 56.75, 81.75, 86.1, 29.8, 60.9, 20.85, 93.85, 75.25, 19.5, 43.8, 19.75, 19.15, 70.3, 69.55, 20, 50.15, 95.9, 49.5, 40.05, 19.5, 51.05, 84.7, 86.1, 70.35, 69.75, 71.6, 49.15, 70.2, 99.3, 50.25, 35.5, 50.2, 62.25, 89.25, 21.1, 96.65, 69.55, 98.85, 87.65, 74.75, 80.55, 81.25, 55.7, 24.8, 20, 79.75, 50.15, 98.85, 105.25, 70.55, 49.05, 19.4, 86.05, 19.25, 81.95, 65.15, 20.2, 75.2, 56.8, 75.5, 60.25, 40.35, 18.85, 54.85, 94.1, 95.1, 53.8, 100.4, 80, 94.3, 53.75, 87.9, 85.7, 50.45, 60, 19.45, 78.9, 49.4, 25.55, 70.15, 69.4, 69.55, 70.45, 65.75, 24.6, 100.85, 87.2, 64.4, 58.7, 20.15, 64.5, 28.5, 90.45, 105.15, 19.45, 50.3, 80.15, 51.25, 80.25, 19.45, 88.2, 62.8, 107.5, 80.7, 75.6, 59.55, 19.95, 24.6, 66.7, 19.95, 54.25, 25.15, 75.35, 20.5, 49.65, 20.45, 19.5, 75.2, 111.45, 70.15, 82.15, 60.9, 95.3, 19.85, 66.8, 70.7, 58.35, 85.8, 20.35, 82.85, 84.35, 19.95, 66.25, 92.55, 101.45, 95.5, 49.85, 89.55, 99.8, 74.15, 73.85, 20.75, 68.95, 109.4, 49, 55.8, 98.55, 50.05, 20.85, 19.5, 19.35, 69.5, 48.8, 94.5, 20.65, 95.9, 64.95, 74.6, 49.2, 19.2, 88.65, 95.95, 20.25, 96.85, 51.25, 19.55, 79.5, 98.15, 20.25, 79.15, 94.25, 40.2, 71.1, 88.45, 84.8, 92.6, 20.55, 19.6, 43.55, 109.85, 20.65, 95.4, 56.2, 25.75, 19.6, 64.2, 50.3, 80.3, 50, 85.9, 80.8, 81.5, 20.9, 67.25, 20.35, 34.65, 69.35, 81.55, 67.8, 111.4, 46.3, 20.05, 36, 48.95, 64.95, 21.1, 18.85, 70.35, 19.7, 59.45, 29.05, 59.2, 75.9, 90.05, 102.6, 43.8, 19.85, 90.35, 80.95, 56.15, 34.4, 90.8, 25.6, 25.4, 108.8, 76.85, 115.65, 74.6, 80.15, 45.75, 50.15, 70.55, 58.85, 97.55, 35.65, 90.45, 73.85, 82.75, 61.35, 54.75, 107.95, 83.8, 94.9, 94.2, 49.9, 71.05, 19.05, 44.25, 20.4, 71.4, 110.75, 54.3, 19.4, 89.65, 45.4, 93.25, 48.75, 54.9, 91.15, 66.05, 30.4, 69.4, 73.65, 43.85, 69.7, 20.65, 79.35, 75.5, 19.2, 74.35, 45.65, 54.2, 90.65, 50.9, 74.85, 63.55, 47.95, 45, 90.05, 75.95, 67.45, 50.5, 44.05, 45.55, 93.8, 20.75, 44.65, 60.2, 70.3, 31.1, 50.95, 69.1, 43.95, 69.95, 90.95, 92, 78.5, 30.5, 64.6, 51.1, 54.95, 20.45, 60.35, 85.35, 81.05, 20.5, 20.2, 20.9, 21.05, 54.65, 49.8, 90.4, 50.2, 95.5, 95.4, 53.1, 84.85, 34.25, 88.6, 70.7, 54.8, 85.6, 90.7, 95.25, 19.95, 83.55, 75.5, 20.15, 85.7, 61.8, 49.9, 86.25, 60.95, 25.05, 63.95, 74.3, 70.6, 64.45, 69.65, 24.7, 77.4, 85.4, 103.85, 108.45, 81, 92.95, 85.35, 100.75, 19.9, 101.05, 106.05, 75.3, 24.7, 29.5, 24.8, 19.65, 94.05, 90.75, 78.85, 80.55, 70.2, 93.35, 44.95, 20.2, 61.9, 80.15, 20.45, 80.45, 44.45, 74.55, 20.15, 106.6, 91, 66.85, 20.15, 50.5, 72.9, 19, 19.55, 84.1, 50.1, 74.6, 96.6, 60.85, 43.95, 86.05, 50.2, 31.2, 20.2, 63.85, 19.55, 108.95, 89.95, 101.15, 70.5, 69.9, 71.45, 95.85, 100.8, 54.45, 70.5, 69.35, 51.2, 52.15, 91.55, 49.85, 104.15, 48.2, 100.15, 55.9, 64.4, 85.3, 45.2, 90.25, 97.7, 69.85, 104.5, 20.7, 90.6, 95.45, 19.95, 85.7, 102.05, 64.4, 65.2, 85.05, 55.8, 106.4, 46.1, 20.05, 33.6, 84, 19.7, 80.35, 45.2, 72.75, 39.2, 44.75, 82.65, 93.9, 25.7, 19.4, 55.3, 103.75, 26.05, 91.05, 29.65, 50.2, 105.3, 55.45, 59.25, 90.7, 30.25, 49.85, 93, 54.55, 19.7, 80.45, 35.75, 86.45, 38.55, 39.9, 70.05, 20.3, 35.65, 19.65, 59.8, 73.55, 61.4, 19.45, 81.5, 74.4, 74.9, 59.65, 74.45, 20.45, 70.45, 85.65, 19.85, 106.35, 86.05, 44.55, 45, 20.5, 60.45, 20.35, 90.75, 19.6, 53.8, 99.65, 91.45, 100.4, 76.15, 69.95, 20.05, 19.45, 19.2, 50, 60, 84.55, 45.45, 19.25, 108.25, 101.3, 20, 105.3, 65.25, 19.6, 49.4, 88.4, 100.6, 19.45, 75.15, 70.1, 100.55, 104.35, 80.45, 68.35, 80.55, 66.7, 86.4, 83.4, 94.95, 59.9, 19.8, 20, 59.6, 84.35, 55.55, 66.1, 52.1, 105.4, 20.05, 91, 49.8, 19.65, 19.85, 96.35, 24.15, 44, 53.95, 29.35, 20.45, 25.25, 44.9, 20.5, 24.5, 108.25, 20.4, 55.3, 20.25, 72.95, 89.45, 19.4, 24.85, 41.35, 19.6, 20.25, 19.65, 81.05, 67.6, 70.15, 84.8, 63.15, 29.1, 50.05, 20, 44.4, 94.1, 88.95, 48.85, 80.1, 56.05, 89.8, 20.35, 97.1, 36.65, 55.2, 26.35, 50.15, 98.7, 84.4, 25.1, 48.25, 94.2, 62.15, 79.3, 20.3, 99, 50.15, 20.55, 101.4, 44.6, 63.75, 84.6, 85.75, 87, 79.95, 64.9, 104.95, 20.45, 74.1, 35.5, 48.8, 93.5, 44.45, 43.35, 89.8, 69.9, 105.35, 19.4, 102.65, 50.95, 75.6, 80.75, 90.4, 20.2, 20.25, 99, 80.3, 19.55, 100.75, 53.75, 46.35, 90.4, 60.65, 24.1, 19.5, 85.95, 19.2, 90, 34, 25.25, 60.6, 74.75, 20.6, 20.4, 20.3, 25, 80.45, 89.2, 19.95, 19.95, 20.4, 20.7, 69.3, 49.9, 44.45, 55.05, 34.25, 100.05, 68.65, 45.8, 75.75, 20.55, 50.95, 59.45, 24.3, 95.65, 84.8, 20.4, 94.45, 79.8, 74.05, 49.15, 19.1, 95.4, 75.15, 69.95, 19, 38.85, 20.35, 74.3, 19.2, 76.45, 72.8, 18.95, 101.75, 75.45, 64.1, 25.65, 75.1, 54.4, 72.75, 19.05, 94.85, 69.6, 90.7, 101.4, 48.8, 20, 89.85, 19.8, 29.35, 80.55, 55.25, 20, 19.65, 80, 80.25, 20.45, 29.75, 44.9, 29.8, 71.95, 20.75, 56.3, 84.45, 29.9, 55.3, 49.45, 39.7, 54.5, 55.55, 104.5, 101.8, 93.2, 24.4, 70.55, 85.8, 91.1, 100.85, 105.1, 84.9, 88.5, 35, 55.15, 50.95, 64, 49.3, 20.05, 94.75, 80, 44.8, 20.3, 19.2, 59.1, 20.25, 75.55, 70.25, 50.3, 25, 75.35, 43.8, 84.05, 85.05, 53.45, 19.95, 74.65, 55.6, 48.7, 104.9, 19.4, 19.3, 20.65, 55.15, 70.6, 19, 90.7, 84.3, 20.45, 86.8, 87.8, 69.85, 56.3, 109.55, 69.5, 94.3, 71.3, 98.8, 44.95, 35.65, 19.5, 100.05, 55.7, 91.15, 83.85, 45.9, 19.7, 91.5, 51.3, 104.75, 85.75, 74.15, 50.7, 45, 77.8, 83.45, 59.9, 29.2, 46.6, 74.3, 69.3, 24.95, 84.75, 19.75, 44.9, 75.25, 20.95, 55.5, 19.45, 84.85, 19.6, 74.2, 69, 79.15, 40.65, 95.7, 71.05, 59.45, 43.9, 90.5, 99.15, 62.1, 79.5, 19.55, 20.35, 51.7, 65.1, 81.2, 80.5, 75, 69.05, 59.7, 40.75, 95.7, 46.3, 81.3, 20, 66.15, 19.6, 49.8, 73.7, 54.25, 50, 72.25, 96.1, 55.3, 69.5, 79.65, 71.25, 19.7, 104.1, 19.05, 69.7, 89.9, 19.4, 54.25, 88.4, 50.8, 111.5, 24.25, 20.5, 30.55, 84.9, 75.35, 98.05, 69.15, 98.85, 89.6, 83.25, 84.3, 50.75, 78.5, 48.95, 99.65, 54.55, 20.45, 69.8, 84.05, 49.2, 71.65, 106.5, 58.5, 109.45, 29.15, 20.05, 49.55, 73.6, 49, 25.45, 77.75, 26.2, 50.4, 84.05, 105.2, 75.75, 95.3, 19.85, 69.1, 20.25, 54.75, 81.45, 100.3, 20, 79.85, 73.55, 19.3, 44.55, 54.45, 112.9, 94.05, 55.3, 74.75, 100.5, 20.05, 95, 45.45, 20, 49.2, 19.65, 72.8, 109.65, 65, 114.1, 20.65, 25.35, 102.55, 24, 103.1, 43.75, 100.65, 44.8, 79.8, 88.85, 74.95, 19.7, 51.3, 109.1, 29.9, 80.6, 20.8, 89.95, 69.95, 66.3, 94.65, 34.7, 95.95, 71.05, 19.7, 68.25, 20.15, 50.95, 25.15, 20.25, 44, 55.8, 57.65, 94.8, 45.9, 57.55, 29.25, 69.95, 50.9, 90.7, 85.2, 54.55, 38.5, 92.9, 54.5, 99.75, 20.4, 54.35, 108.1, 45.35, 18.85, 25.05, 51, 84.65, 44.65, 93.25, 20.25, 94.1, 51.35, 50.15, 98.9, 60.25, 56.25, 50.1, 50.15, 74, 38.9, 79.55, 46.3, 95.8, 78.15, 20.9, 49.9, 68.9, 20.25, 76, 74, 82.3, 89.4, 99.15, 29.45, 59.15, 44.75, 49.55, 99.45, 74.8, 71.55, 94.95, 86.1, 19.55, 84.05, 36.25, 98.6, 103.65, 20.1, 80.5, 39.85, 103.85, 67.8, 19.35, 89, 55, 19.75, 45.2, 89.75, 49.95, 87.95, 19.5, 86.55, 45.65, 73.3, 101.35, 33.6, 20.7, 108.75, 19.75, 70.05, 84.75, 85.55, 43.55, 54.9, 75.1, 25.05, 19.3, 70.3, 20.25, 19.95, 19.75, 64.1, 90.55, 56.1, 88.75, 99.4, 104.45, 25.75, 20.95, 25.4, 35, 70.2, 90.95, 88.05, 46, 58.55, 110.1, 69.75, 50.6, 79.1, 80.35, 70.15, 67.45, 20.75, 69.9, 51.1, 90.55, 76.4, 84.95, 99.65, 45.4, 48.65, 66.4, 44.55, 20.35, 91.8, 50.35, 18.8, 20.45, 98.7, 89.45, 85.6, 79.85, 20.15, 80, 48.75, 20.25, 100.4, 57.95, 59.5, 19.2, 59.55, 103.1, 24.7, 110.2, 62.45, 89.55, 78.9, 20.35, 94.65, 49.9, 20.75, 75.4, 21.05, 88.85, 66.4, 69.2, 61.4, 69.8, 75.65, 90.7, 80.5, 60.6, 44.75, 107.7, 93.9, 19.4, 75, 78.2, 94.2, 44.65, 98.1, 19.55, 54.2, 40.15, 70.35, 89.2, 19.75, 84.3, 66.05, 19.9, 68.15, 80.6, 83.2, 45.55, 75.3, 93.4, 73.75, 88.15, 49.2, 49, 49.8, 20.95, 79.3, 44.15, 105.5, 92.7, 96.95, 20.45, 108.2, 20.15, 55.75, 105.35, 18.95, 69.8, 106.15, 25.25, 19.75, 60.95, 81.15, 85.9, 95, 21.2, 20.3, 56.25, 103.65, 35.1, 99.1, 59.55, 20.25, 54.6, 20.7, 94.75, 49.45, 83.8, 95.35, 74.05, 89.6, 54.2, 19.3, 65.05, 18.75, 93.6, 24.4, 65.25, 50.55, 70.7, 45.25, 70.3, 26.45, 75.8, 25.1, 44.45, 20.15, 19.2, 19.25, 61.2, 35.05, 44, 20, 58.4, 94.1, 90.85, 19.9, 66.4, 100.7, 19.85, 94.65, 45.85, 104.35, 61.15, 78.95, 96.85, 96.6, 84.6, 79, 94.65, 100.45, 91.25, 72.45, 69.15, 91.55, 68.95, 51.55, 96.8, 70.05, 78.75, 19.55, 54.7, 84.85, 20, 19.35, 74.9, 19.8, 54.65, 91.7, 20.3, 99.8, 19.9, 83.05, 41.1, 45, 104.25, 78.35, 33.45, 94.6, 69.15, 24.9, 48.8, 63.05, 100.85, 80.55, 19.3, 59.05, 76.55, 94.9, 20.45, 92.55, 65.6, 84.35, 85.15, 49.7, 30.2, 56.35, 107.55, 39.2, 79.55, 19.6, 99.95, 59.8, 49.75, 44.55, 103.45, 57.2, 97.05, 18.9, 74.45, 24.4, 55.5, 84.3, 100.2, 20.4, 94.75, 44.35, 74.55, 50.1, 19.85, 19.55, 93.8, 59.65, 79.55, 29.8, 45.5, 30.05, 49.5, 111.15, 20.6, 94.5, 20.1, 34.65, 52.3, 65, 95.6, 69.8, 50.3, 101.5, 89.15, 19.4, 78.8, 96.8, 104.6, 80.05, 45.15, 73.15, 105.35, 45.65, 79.95, 75.85, 48.8, 35.2, 66.3, 75.35, 104.45, 92.15, 95.7, 71.35, 40.6, 20.35, 54.4, 20.45, 96.75, 106.65, 59.45, 58.6, 49.7, 73.5, 83.4, 85.9, 75.65, 49.85, 103.05, 99.7, 81.9, 19.75, 72.6, 116.5, 89.25, 19.25, 30.75, 86.2, 30.1, 20.1, 20.35, 94.55, 76.25, 74.35, 54.15, 19.45, 34.95, 53.65, 19.65, 45.9, 44.8, 45.8, 104.4, 101.5, 54.3, 103.95, 70.7, 24.85, 91.2, 59.45, 92.55, 24.5, 20.6, 65.5, 21.15, 96.2, 44.4, 20.3, 81.15, 54.75, 89.3, 94.55, 107.5, 76.05, 77.9, 90.65, 44.85, 59.65, 66.4, 109.6, 48.8, 20.55, 108.75, 105.9, 65.5, 40.45, 70.45, 90.1, 66.25, 89.7, 81.9, 19.1, 50, 85.45, 98.65, 61.65, 89.35, 95.4, 19.25, 20.35, 90.8, 104.95, 61.3, 64.4, 45.8, 30.5, 69.15, 105.1, 19.75, 70.4, 86.2, 94, 50.3, 80.55, 100.45, 84.75, 95.3, 54.5, 49.6, 45.45, 107.75, 44.75, 19.7, 51, 88.85, 79, 74.2, 81, 49.6, 84.6, 69.05, 45.4, 50.75, 25.2, 55.7, 65.35, 25.1, 20.2, 101.3, 55.3, 48.45, 55.7, 64.65, 69.2, 20.05, 95.4, 80.35, 78.85, 86.55, 42.4, 19.6, 80.2, 31.65, 94.15, 20.65, 76.85, 20.15, 95.1, 95.15, 20.45, 19.15, 83.75, 19.4, 70.8, 60.2, 100.4, 54.5, 20.75, 20.35, 51.1, 89.8, 20.55, 64.05, 74.85, 25, 26.35, 54.7, 20.65, 69.1, 20.05, 48.6, 49.75, 94.75, 93, 19.85, 95.25, 25.05, 20.15, 101.25, 69.6, 19.75, 35, 74.65, 54.8, 85.3, 79.3, 76.5, 86.85, 19.65, 45.55, 78.1, 20.3, 55.3, 80.65, 51.05, 19.9, 87.3, 20.05, 83.25, 99.85, 19.9, 19.05, 96.5, 25.7, 91.55, 105.7, 70.25, 20.4, 60.55, 65.6, 20.3, 89.2, 74.8, 25.15, 50.85, 102.4, 55.5, 106.4, 88.8, 80.05, 75.55, 49.55, 66.4, 85.95, 20.6, 44.6, 70.55, 20.05, 90.05, 34.3, 105.05, 51.4, 71.85, 75.4, 78.75, 70.4, 76.1, 48.8, 50.55, 44.65, 70.5, 20.85, 19.65, 44, 75.4, 20.3, 50.3, 50.25, 51.65, 59.85, 75.7, 50.85, 85, 44.3, 60.9, 34.2, 54.3, 19.95, 78.8, 89.25, 78.65, 89.1, 59.9, 108.9, 33.6, 34.85, 95.3, 44.95, 24.7, 100.3, 25.45, 50.7, 55, 55.05, 35.9, 80.75, 61.75, 87.6, 89.15, 20.05, 34.3, 84.25, 50.35, 79.15, 94.7, 74.95, 89.75, 24.9, 30.35, 19.35, 74.55, 56.15, 20.45, 18.9, 45.2, 19.45, 94.9, 29.3, 109.4, 19.95, 76.6, 85.3, 65.85, 99.4, 20, 55, 61.55, 45.9, 87.1, 49.5, 73.8, 18.8, 54.1, 49.8, 95, 19.65, 70.2, 19.75, 19.95, 25.15, 54.15, 59.8, 83.85, 75.3, 66.65, 59.45, 78.1, 39.9, 53.4, 24.9, 44.7, 83.85, 20.2, 19.95, 90, 91.05, 85.8, 19.65, 74.35, 89.1, 70.65, 90.05, 19.4, 88.75, 91, 55.7, 20.05, 55.65, 74.7, 80.7, 25.15, 95.65, 89.4, 20.05, 20.7, 100.6, 74, 99.05, 74.5, 19.25, 39.45, 44.85, 19.9, 45.25, 33.45, 44.95, 93.5, 20.05, 79.45, 80, 54.9, 19.9, 70.35, 73.85, 21.05, 24.95, 75.85, 90.15, 69.65, 74.3, 20.25, 96.9, 104.1, 56.55, 68.6, 69.05, 20.05, 94.4, 54.95, 79.4, 62.8, 74.9, 74.85, 92.95, 104.35, 19.55, 56.85, 49.75, 92.4, 91.95, 73.1, 50.65, 70.1, 84.9, 19.35, 61, 106.9, 101.35, 55.35, 19.5, 90.65, 19.55, 87.75, 81.3, 44.3, 49.15, 29.45, 85.3, 70.35, 74.15, 75.05, 75.9, 53.45, 69.95, 97, 73.55, 29.8, 103.05, 20.3, 56.25, 60.9, 59.65, 54.85, 34, 65.8, 105.8, 24.4, 73.05, 51.15, 54.35, 100, 98.7, 73.8, 20.05, 106.2, 99.7, 29.15, 90.1, 59.05, 20.3, 103.5, 20.05, 96.35, 66.6, 44.5, 80.1, 20.4, 50.1, 86.65, 20.15, 78.75, 55.55, 79, 74.6, 20.1, 20.05, 19.85, 20.2, 67.45, 29.75, 54.65, 29.3, 83.85, 103.65, 99.05, 43.95, 23.5, 94.3, 29.15, 50.25, 74.65, 48.25, 96.55, 85.6, 51.1, 19.9, 98.35, 85.45, 95.9, 100.75, 89.2, 19.5, 45.3, 89.55, 50.35, 20.35, 55.9, 24, 79.9, 89.75, 19.4, 19.9, 55.7, 78.9, 20.65, 19.65, 29.9, 45, 44.8, 51.1, 24.7, 109.95, 20.8, 85.1, 69.05, 70.15, 89.1, 90.35, 85.7, 94, 93.35, 50.55, 81.3, 20.7, 79.05, 103.6, 79.7, 19.3, 55.75, 89.65, 45.85, 55.95, 69, 83.55, 61.9, 20, 92.85, 74.6, 94.6, 49.2, 86.05, 35.15, 105.35, 80.7, 89.85, 29.05, 80.4, 43.85, 44.5, 53.55, 85.5, 89.4, 79.85, 74.45, 64.4, 20.05, 56.75, 35.75, 19.1, 45.55, 49.4, 19.8, 45.05, 86.25, 95.55, 102.6, 94.2, 49.7, 24.2, 65.45, 83.2, 25, 69.5, 93.6, 76.1, 80.5, 35.75, 95.1, 93.4, 89.2, 85.2, 49.95, 19.2, 103.5, 84.8, 95.05, 73.35, 44.4, 20.05, 69.5, 78.7, 29.6 ], "xaxis": "x", "yaxis": "y" }, { "marker": { "line": { "color": "#000000", "width": 2 } }, "showlegend": false, "type": "histogram", "x": [ 29.85, 1949.4, 301.9, 587.45, 2686.05, 1862.9, 2970.3, 1530.6, 181.65, 20.2, 45.25, 3548.3, 981.45, 3906.7, 97, 3838.75, 1752.65, 4707.1, 5450.7, 244.1, 887.35, 49.05, 177.4, 482.25, 2111.3, 565.35, 4327.5, 918.75, 1009.25, 2570.2, 74.7, 7107, 20.2, 19.45, 100.2, 3954.1, 248.4, 2151.6, 112.75, 350.35, 62.9, 19.75, 1215.65, 1778.5, 1071.4, 564.35, 113.5, 1152.8, 1821.95, 764.55, 135.2, 321.4, 780.2, 1559.25, 45.3, 1023.85, 82.15, 2379.1, 1901.65, 6519.75, 20.75, 1112.3, 1033.95, 2958.95, 25.25, 1975.85, 3437.45, 624.6, 2723.15, 4747.5, 702, 1305.95, 6126.15, 731.3, 273.4, 193.05, 1228.65, 4925.35, 2007.25, 2172.05, 1339.8, 771.95, 244.75, 322.9, 498.25, 25.4, 3687.75, 927.15, 567.8, 220.35, 20.25, 3437.5, 3015.75, 356.65, 3141.7, 3741.85, 19.25, 1886.25, 341.6, 3236.35, 44.8, 5138.1, 880.05, 973.65, 1470.05, 3565.65, 1830.1, 4508.65, 72.1, 996.85, 574.35, 889, 83.75, 1373.05, 1406, 19.15, 3646.8, 25.35, 4063, 44, 2595.25, 2309.55, 89.3, 367.55, 3944.5, 3694.7, 1803.7, 2861.45, 2149.05, 4473, 3545.05, 1195.75, 132.25, 515.45, 449.3, 2838.55, 858.6, 1395.05, 119.5, 1183.8, 3161.2, 55.05, 1882.55, 5070.4, 1166.7, 2937.65, 759.55, 1545.4, 3582.4, 2494.65, 38, 75.1, 100.9, 1614.05, 564.4, 1315.35, 2747.2, 554.05, 1671.6, 1415, 114.15, 20.4, 1785.65, 4326.8, 851.8, 19.85, 6300.15, 5916.95, 2852.4, 302.6, 265.45, 1442, 4713.4, 174.45, 1021.75, 5029.05, 601.6, 19.55, 311.6, 19.9, 760.05, 49.3, 89.05, 516.15, 445.95, 3204.4, 597.9, 3365.4, 38.8, 19, 61.7, 2438.6, 45.6, 237.2, 1170.5, 631.4, 186.3, 4884.85, 522.95, 362.6, 2395.7, 1968.1, 2473.95, 394.85, 1732.6, 475.25, 865.1, 697.65, 428.7, 20.05, 238.1, 1453.1, 493.4, 313.6, 3775.85, 195.65, 71.1, 49.9, 4149.45, 20.45, 20.65, 2848.45, 2516.2, 33.6, 208.45, 2263.4, 2211.8, 1683.7, 1164.05, 4245.55, 2664.3, 1277.5, 5589.3, 204.55, 356.1, 92.75, 1901.05, 2423.4, 1653.45, 3344.1, 137.1, 202.15, 202.9, 1652.95, 515.75, 190.5, 57.2, 20.8, 363.15, 1600.25, 3089.1, 237.3, 92.5, 220.45, 1510.3, 2003.6, 298.7, 143.65, 507.4, 20, 1058.1, 94.15, 2088.05, 6751.35, 318.1, 372.45, 1442.6, 3340.55, 5774.55, 2854.95, 394.1, 62, 352.65, 104.3, 113.95, 1665.2, 20.05, 609.65, 2823, 2619.25, 2679.7, 4914.9, 27.55, 234.85, 170.9, 1288.3, 1643.55, 2193, 255.35, 1189.4, 1820.9, 2404.15, 1212.85, 308.05, 320.45, 382.2, 2001, 5645.8, 77.6, 2896.55, 535.55, 1253.15, 955.15, 2162.6, 245.15, 2028.8, 2723.75, 220.45, 551.95, 60.65, 4733.1, 888.65, 413, 540.95, 19.75, 537.35, 132.4, 284.9, 417.7, 160.85, 827.45, 49.5, 162.45, 470.2, 2066, 392.5, 3861.45, 2552.9, 3557.7, 1957.1, 649.4, 1046.5, 4209.95, 152.3, 552.7, 1815.3, 612.95, 2210.2, 21.1, 5580.8, 200.2, 4564.9, 2766.4, 1129.35, 80.55, 580.1, 259.4, 324.15, 417.65, 769.1, 2058.5, 3145.9, 4997.5, 1493.55, 593.05, 529.8, 3865.6, 48.35, 2070.05, 723.35, 98.35, 775.3, 1074.65, 2324.7, 170.5, 1677.85, 18.85, 370.4, 5475.9, 2326.05, 283.95, 3217.65, 1029.35, 3953.15, 3196, 1500.5, 256.75, 765.45, 1259.35, 340.85, 1348.95, 611.65, 467.85, 194.2, 571.45, 521.35, 4300.45, 1111.2, 190.1, 4847.35, 4017.45, 1398.6, 168.6, 536.35, 1888.45, 629.35, 2117.25, 4730.9, 19.45, 92.75, 194.55, 612.1, 303.7, 86.05, 4159.45, 62.8, 3242.5, 1614.2, 402.5, 1646.45, 147.5, 86.35, 579, 187.75, 1221.55, 25.15, 1114.55, 563.05, 2553.35, 250.8, 178.85, 633.85, 5315.1, 735.5, 4904.85, 2033.85, 2192.9, 19.85, 3970.4, 129.2, 740.55, 2440.25, 20.35, 319.6, 1938.05, 58.3, 546.45, 4039, 2948.6, 3418.2, 865.75, 6373.1, 5985.75, 741.4, 3122.4, 739.9, 593.85, 7227.45, 1291.35, 154.55, 2031.95, 50.05, 473.9, 106.8, 152.6, 1199.4, 2555.05, 2979.2, 654.85, 2234.95, 547.8, 74.6, 571.15, 156.85, 2683.2, 4456.65, 36.8, 1235.55, 51.25, 19.55, 795.65, 4993.4, 61.45, 4018.55, 6081.4, 1478.85, 1247.75, 2130.55, 1203.9, 1579.7, 96.1, 55.25, 335.4, 7002.95, 158.95, 293.15, 1093.4, 882.55, 300.4, 475, 217.1, 4896.35, 1474.9, 2199.05, 457.1, 3107.3, 518.3, 832.3, 45.3, 246.6, 261.65, 4509.5, 653.15, 1183.05, 639.45, 20.05, 780.15, 273.25, 493.65, 385.55, 84.2, 120.25, 675.6, 1611.65, 44.75, 1191.2, 866.4, 2627.2, 4009.2, 43.8, 573.05, 3419.3, 4859.1, 1439.35, 592.75, 4921.2, 901.25, 1139.2, 7082.45, 663.55, 5125.5, 548.9, 319.85, 344.2, 1655.35, 1943.9, 465.7, 6669.05, 425.1, 5044.8, 196.4, 417.75, 3169.55, 438.05, 318.6, 163.7, 273.2, 1608.15, 1441.95, 2168.15, 19.05, 313.45, 745.3, 1212.1, 5832, 654.5, 415.4, 3161.6, 80.95, 6669.45, 48.75, 1505.15, 168.5, 1652.4, 1621.35, 3058.3, 1642.75, 43.85, 1490.4, 716.4, 1835.3, 75.5, 19.2, 4453.3, 323.45, 1739.6, 5931, 2333.85, 572.45, 1381.8, 47.95, 45, 4931.8, 3273.8, 3252, 2566.3, 44.05, 45.55, 4539.35, 67.1, 1156.55, 1834.15, 1706.45, 419.7, 207.35, 1083.7, 2007.85, 2657.55, 1612.2, 266.8, 571.05, 167.2, 174.2, 1269.6, 1348.5, 471.55, 1404.65, 1961.6, 81.05, 76.95, 20.2, 20.9, 21.05, 189.1, 49.8, 5099.15, 668.85, 1916.2, 4613.95, 2459.8, 2048.8, 163.55, 2888.7, 553.4, 1291.3, 1868.4, 2845.15, 1021.55, 268.4, 1329.15, 637.4, 117.95, 4616.1, 750.1, 1410.25, 1340.1, 134.6, 125.5, 2737.05, 74.3, 70.6, 1867.6, 1043.3, 24.7, 206.15, 5869.4, 4946.05, 4964.7, 4085.75, 3415.25, 2896.6, 4669.2, 283.75, 5594, 7554.05, 1702.9, 467.15, 1423.05, 223.9, 391.7, 811.65, 174.75, 3126.85, 1406.65, 834.7, 3092, 2168.9, 65.95, 2647.1, 1790.65, 20.45, 2429.1, 44.45, 3023.55, 20.15, 5893.95, 1430.05, 458.1, 341.35, 147.75, 818.45, 348.8, 128.6, 1737.45, 50.1, 1797.75, 2684.35, 111.4, 43.95, 308.1, 109.25, 926.2, 382.2, 4264.6, 161.15, 7111.3, 1648.45, 3956.7, 294.2, 3883.3, 371.6, 95.85, 6690.75, 1588.7, 829.3, 712.25, 51.2, 2583.75, 3673.6, 49.85, 4495.65, 340.35, 908.55, 157.55, 581.7, 420.45, 45.2, 743.75, 3410, 199.85, 5068.05, 73.05, 1020.2, 6223.3, 82.9, 2067, 3452.55, 1802.15, 3687.85, 1391.15, 274.35, 3211.9, 130.15, 85.5, 2117.2, 424.75, 168.9, 253.8, 2065.15, 2447.45, 1838.15, 44.75, 1185, 1743.9, 25.7, 50.6, 2654.05, 5969.95, 565.75, 4370.75, 90.05, 2169.4, 550.6, 55.45, 436.6, 1781.35, 63.75, 617.15, 870.25, 601.25, 111.65, 3398.9, 389.8, 2401.05, 156.1, 2796.35, 70.05, 511.25, 646.05, 60.65, 824.85, 2094.65, 438.9, 674.55, 162.55, 1972.35, 490.55, 683.25, 294.45, 162.3, 70.45, 659.45, 119.3, 4849.1, 244.85, 220.75, 89.75, 255.5, 1440.75, 869.9, 512.25, 93.45, 1389.85, 2404.85, 171.45, 715, 1992.95, 562.7, 33.7, 227.45, 37.2, 892.7, 487.75, 3713.95, 141.7, 617.65, 5935.1, 2974.5, 198.7, 1275.65, 3791.6, 780.25, 408.25, 2191.15, 5611.7, 246.25, 525, 70.1, 2878.75, 3205.6, 1137.05, 1299.8, 188.1, 1077.05, 4922.4, 83.4, 2142.8, 287.85, 19.8, 40.9, 2094.9, 1302.65, 55.55, 1912.15, 670.65, 6713.2, 91.45, 2626.15, 1049.05, 169.75, 51.6, 3190.25, 812.5, 44, 2215.4, 216.45, 20.45, 996.45, 839.65, 402.85, 46.4, 6780.1, 94.5, 55.3, 208, 3829.75, 5294.6, 168.65, 434.8, 107.25, 851.2, 109.8, 19.65, 5135.35, 2000.2, 931.75, 3958.85, 816.8, 688, 288.35, 185.4, 265.8, 4107.3, 2072.75, 736.8, 336.15, 1522.65, 4959.6, 442.6, 184.15, 1315, 220.65, 378.6, 50.15, 4920.55, 1936.85, 79.8, 202.25, 999.9, 113.1, 2015.8, 246.7, 6017.9, 50.15, 252.75, 6841.05, 44.6, 226.2, 1017.35, 2146.5, 1850.65, 1043.4, 716.1, 6236.75, 20.45, 450.9, 432.25, 297.35, 2970.8, 2181.55, 371.4, 4667, 69.9, 3465.05, 198.1, 4108.15, 605.75, 661.55, 4116.9, 4494.65, 55.7, 493.95, 5038.15, 324.2, 19.55, 2793.55, 648.65, 672.7, 268.45, 196.9, 439.2, 19.5, 2107.15, 19.2, 3371.75, 442.45, 25.25, 1156.35, 144.8, 414.95, 181.8, 459.95, 25, 3162.65, 4040.2, 107.05, 38.15, 184.1, 137.6, 1813.1, 49.9, 82.7, 2030.75, 828.2, 3810.55, 1493.2, 45.8, 777.3, 187.35, 307.6, 2136.9, 38.45, 1640, 888.75, 42.9, 5073.1, 4526.85, 678.45, 1237.3, 19.1, 3474.2, 392.65, 1205.5, 78.9, 1025.15, 122, 74.3, 702.9, 1117.55, 930.05, 110.15, 1669.4, 3545.1, 504.05, 440.2, 1151.55, 1249.25, 317.75, 461.3, 335.75, 1394.55, 3413.25, 3143.65, 664.4, 63.6, 3091.75, 272.95, 381.2, 653.9, 55.25, 109.2, 92.05, 3168.75, 3439, 42.45, 96.85, 111.05, 94.4, 923.85, 141.1, 628.65, 1287.85, 118.25, 875.35, 799, 710.05, 568.2, 551.3, 3684.95, 1752.45, 2157.3, 24.4, 433.95, 4433.3, 964.35, 399.25, 3634.8, 3369.05, 3645.05, 135.75, 1319.85, 229.4, 370.25, 1233.25, 83.3, 3653, 241.3, 2104.55, 20.3, 19.2, 1011.05, 535.35, 75.55, 70.25, 908.75, 316.2, 564.65, 2106.05, 186.05, 999.8, 1461.45, 416.4, 4869.35, 580.8, 2495.2, 5913.95, 19.4, 44.4, 155.9, 3673.15, 70.6, 73.45, 5586.45, 1537.9, 82.85, 5327.25, 2621.75, 837.5, 401.5, 6118.95, 1800.05, 1948.35, 157.75, 2807.1, 44.95, 1025.15, 19.5, 4834, 3131.8, 3369.25, 2674.15, 199.75, 19.7, 1400.3, 411.6, 5841.35, 5688.45, 1345.75, 214.55, 865.85, 1358.6, 3147.15, 542.4, 98.5, 87.9, 1952.25, 153.8, 190.25, 1651.95, 78.3, 44.9, 576.7, 267.35, 934.15, 19.45, 3645.6, 314.45, 140.1, 1108, 79.15, 2070.75, 4729.75, 472.65, 1884.65, 278.4, 2595.85, 1956.4, 2096.1, 2665, 543.8, 20.35, 3005.8, 2586, 3292.3, 232.35, 658.1, 653.95, 1825.5, 359.4, 2338.35, 46.3, 3541.1, 1087.25, 2522.4, 717.3, 1734.2, 1558.7, 2538.2, 1750.85, 2575.45, 6019.35, 1284.2, 653.25, 1928.7, 71.25, 216.2, 3121.1, 157.65, 572.85, 2433.5, 641.15, 583, 788.6, 202.3, 4915.15, 838.5, 20.5, 30.55, 1398.25, 3161.4, 3990.6, 235, 3089.6, 2901.8, 4949.1, 2281.6, 50.75, 874.2, 1323.7, 5497.05, 2455.05, 357, 146.65, 134.05, 1701.65, 135.75, 4282.4, 224.85, 6572.85, 29.15, 20.05, 49.55, 232.5, 749.25, 134.75, 4266.4, 1077.5, 137.25, 966.55, 6936.85, 1929, 5817.7, 178.8, 435, 186.15, 445.85, 912, 4222.95, 20, 797.25, 1359.45, 54.7, 44.55, 87.3, 8061.5, 518.75, 238.5, 827.05, 2599.95, 284.3, 2462.55, 411.75, 198.6, 103.7, 19.65, 3249.4, 5405.8, 3363.8, 7132.15, 93.55, 566.1, 1742.5, 24, 970.45, 405.7, 2415.95, 176.2, 1001.2, 1594.75, 212.4, 340.35, 419.35, 5647.95, 29.9, 4348.1, 635.9, 1682.4, 143.9, 1559.45, 6079, 383.55, 1745.5, 1837.7, 180.7, 576.95, 68.45, 123.05, 468.35, 174.7, 44, 300.4, 992.7, 1563.9, 1332.4, 161.45, 226.95, 69.95, 2298.55, 237.65, 695.75, 825.1, 330.8, 1337.45, 2301.15, 4036, 20.4, 117.05, 5839.3, 45.35, 163.2, 189.95, 286.8, 5683.6, 369.15, 4631.7, 401.95, 701.3, 262.3, 2139.1, 5780.7, 662.95, 1765.95, 709.5, 50.15, 4052.4, 664.4, 718.55, 2546.85, 1346.3, 765.15, 247, 49.9, 1370.35, 20.25, 2215.25, 74, 214.4, 1871.15, 6171.2, 161.45, 336.7, 333.65, 393.45, 5623.7, 2971.7, 2427.35, 1760.25, 3551.65, 122.9, 2909.95, 374, 5581.05, 5676.65, 232.4, 2088.45, 1434.6, 2215, 842.25, 601.6, 605.45, 3094.05, 19.75, 492, 5496.9, 107.1, 522.35, 19.5, 1066.9, 985.05, 828.05, 6164.7, 33.6, 20.7, 6871.7, 208.25, 3062.45, 1816.75, 408.5, 1011.5, 2549.1, 1013.35, 152.95, 19.3, 220.4, 158.35, 19.95, 19.75, 2460.35, 5116.6, 1033.9, 1885.15, 5025, 4863.85, 25.75, 109.5, 546.85, 1782.4, 280.35, 2897.95, 801.3, 492.1, 1718.95, 4469.1, 1729.35, 1073.3, 1783.75, 1058.1, 123.8, 2731, 20.75, 497.3, 711.15, 2929.75, 838.7, 1443.65, 6951.15, 214.75, 235.2, 2727.8, 1462.6, 150.6, 5960.5, 314.55, 56, 330.8, 2249.1, 2807.65, 4902.8, 1857.75, 20.15, 1706.45, 179.85, 20.25, 2936.25, 1271.8, 530.05, 19.2, 1144.6, 6595, 149.05, 4972.1, 2045.55, 2187.15, 2976.95, 178.7, 1461.15, 2782.4, 452.2, 1322.55, 139.75, 3000.25, 2245.4, 944.65, 1864.65, 1221.65, 302.35, 1374.9, 1336.9, 1297.8, 44.75, 7320.9, 4200.25, 93.4, 1573.95, 1468.75, 2607.6, 322.5, 2510.7, 61.05, 140.4, 1626.05, 70.35, 5500.6, 19.75, 235.05, 574.5, 400.3, 2656.3, 2244.95, 1130, 2062.15, 720.45, 2979.3, 956.65, 3973.2, 447.9, 49, 836.35, 20.95, 2570, 44.15, 6487.2, 1556.85, 5432.2, 147.55, 2203.7, 130.5, 446.8, 3540.65, 130.55, 1540.35, 6411.25, 101.9, 313.4, 629.55, 2640.55, 2196.45, 3008.15, 222.65, 246.3, 969.85, 4747.85, 101.1, 6496.15, 59.55, 144.35, 1125.2, 39.85, 422.4, 314.6, 4331.4, 6382, 600.15, 5538.8, 690.5, 279.3, 1427.55, 53.15, 2404.1, 24.4, 209.9, 610.75, 70.7, 155.35, 144, 911.6, 1615.1, 1097.15, 369.3, 432.5, 532.1, 375.25, 125.95, 1620.25, 659.35, 377.55, 964.9, 2322.85, 6470.1, 57.4, 2019.8, 1522.7, 252, 6747.35, 105.6, 2271.85, 61.15, 494.95, 5219.65, 2877.95, 959.9, 929.3, 1285.05, 3414.65, 2964.05, 2156.25, 2275.1, 5511.65, 351.5, 106.2, 1743.05, 657.5, 426.35, 19.55, 235.05, 2633.4, 49.65, 46.35, 2659.45, 196.75, 1517.5, 3479.05, 20.3, 4391.25, 19.9, 1799.3, 1597.05, 524.35, 6812.95, 1837.9, 1500.25, 2283.15, 488.65, 505.95, 349.8, 1067.05, 3527.3, 1248.9, 144.95, 1882.8, 2065.4, 3848, 781.25, 4779.45, 250.1, 1745.2, 3670.5, 1167.8, 469.65, 1381.2, 3645.5, 849.9, 151.75, 299.4, 3767.4, 3641.5, 2535.55, 44.55, 1539.8, 223.75, 4385.05, 18.9, 1261.35, 253.9, 227.35, 2357.75, 198.5, 251.65, 5597.65, 768.05, 1215.8, 910.45, 52, 389.25, 1261, 2536.55, 958.25, 201.95, 285.2, 1529.45, 312.7, 6953.4, 541.5, 4156.8, 223.6, 768.45, 3765.05, 2157.5, 1273.3, 377.85, 355.1, 906.85, 1057.55, 19.4, 1641.3, 1826.7, 2180.55, 2835.9, 45.15, 2730.85, 5794.45, 747.2, 1267.95, 724.65, 1536.75, 607.3, 1923.5, 75.35, 2184.85, 3875.4, 1451.1, 2847.2, 1494.5, 41.85, 475.1, 150.75, 3403.4, 1672.1, 3043.7, 2723.4, 1081.25, 632.2, 4113.7, 3729.75, 399.45, 1336.15, 5925.75, 4747.2, 1028.9, 19.75, 154.3, 6382.55, 89.25, 86.05, 82.85, 893.2, 810.85, 43.15, 35.1, 3851.45, 684.85, 74.35, 1312.45, 159.2, 610.2, 404.35, 19.65, 505.95, 169.65, 1147, 4133.95, 2917.65, 54.3, 2964.8, 225.65, 955.75, 3382.3, 780.85, 1614.7, 270.15, 20.6, 573.15, 306.05, 639.7, 348.15, 40.25, 784.45, 1406.9, 4192.15, 1173.55, 7713.55, 2227.8, 2351.45, 2989.6, 2479.05, 638.95, 831.75, 5953, 953.65, 20.55, 5431.9, 6401.25, 616.9, 1912.85, 849.1, 90.1, 2907.35, 4952.95, 2078.55, 19.1, 1003.05, 2509.95, 2537, 1393.6, 89.35, 4445.3, 331.35, 673.2, 1442.2, 5222.35, 249.4, 253, 436.2, 118.4, 3649.6, 5083.55, 39.3, 2406.1, 4524.05, 1505.45, 913.3, 1411.65, 3096.9, 2613.4, 3275.15, 54.5, 962.9, 1233.15, 4882.8, 148.05, 129.55, 581.7, 929.45, 2576.8, 1993.25, 1923.85, 939.8, 84.6, 651.5, 45.4, 50.75, 321.05, 335.65, 1424.4, 382.8, 20.2, 1794.65, 501.2, 48.45, 55.7, 3735.45, 477.55, 42.7, 2025.1, 1747.2, 1043.8, 1857.25, 146.4, 356.15, 384.25, 389.95, 5731.85, 20.65, 4275.75, 84.5, 4060.55, 3532.85, 775.6, 477.6, 1849.95, 61.05, 1207, 563.5, 5749.8, 2076.05, 44.2, 215.25, 2092.9, 5629.55, 469.85, 733.95, 485.25, 78.25, 184.05, 1178.75, 109.3, 3168, 669.45, 48.6, 49.75, 1691.9, 2248.05, 63, 3314.15, 852.7, 91.4, 3949.15, 207.4, 19.75, 35, 383.65, 452.8, 1219.85, 2414.55, 1155.6, 1564.4, 19.65, 84.4, 864.85, 470.6, 108.65, 4807.35, 1815, 199.45, 1637.3, 20.05, 1611.15, 1992.55, 33.7, 454.05, 1392.25, 734.6, 1540.05, 3181.8, 229.7, 266.6, 1982.6, 339.9, 20.3, 2383.6, 1438.05, 99.95, 2036.55, 6444.05, 767.55, 4040.65, 1672.35, 1345.65, 2425.4, 2077.95, 1286.05, 514.6, 330.25, 122.7, 2419, 470.2, 3097, 577.15, 6914.95, 96.8, 3827.9, 533.05, 995.35, 154.8, 257.6, 720.1, 2832.75, 472.25, 1165.6, 72, 68.35, 44, 1380.4, 275.4, 846.8, 2997.45, 524.5, 2341.5, 5060.85, 466.6, 85, 44.3, 414.1, 256.6, 1296.8, 59.25, 2006.1, 487.05, 483.3, 5618.3, 788.35, 3625.2, 550.35, 1267.2, 5567.45, 3085.35, 24.7, 3541.4, 84.2, 50.7, 1165.55, 608.15, 35.9, 1321.3, 3024.15, 2724.25, 413.25, 218.5, 1004.75, 3847.6, 1098.85, 827.7, 3512.5, 151.75, 552.65, 24.9, 678.75, 683.75, 233.65, 291.45, 254.5, 347.65, 1841.9, 232.1, 360.55, 355.9, 7031.45, 109.6, 893, 781.4, 902.25, 5943.65, 275.7, 340.4, 1093.2, 521.9, 713.6, 1265.65, 4003.85, 251.25, 1373, 49.8, 3440.25, 67.55, 70.2, 294.9, 19.95, 476.8, 101.65, 1130.85, 3532.25, 1570.7, 520.95, 357.6, 1122.4, 2020.9, 3579.15, 49.7, 276.5, 5588.8, 50.6, 58, 2024.1, 2871.5, 2193.65, 31.2, 533.6, 1620.8, 293.85, 4137.2, 19.4, 5348.65, 3180.5, 2237.55, 358.5, 2421.75, 1294.6, 374.8, 331.85, 5088.4, 5976.9, 20.05, 57.5, 3270.25, 3919.15, 5295.7, 217.45, 19.25, 2021.35, 2564.95, 45.75, 74.2, 1175.85, 926.25, 2341.55, 163.6, 145.15, 3769.7, 3725.5, 601.55, 139.25, 401.3, 235.8, 1364.75, 647.5, 2044.95, 921.4, 4018.35, 20.25, 2085.45, 5135.15, 118.25, 1108.6, 1815.65, 75.45, 4014.6, 568.85, 4238.45, 418.3, 136.05, 708.2, 4122.9, 6578.55, 19.55, 1861.1, 3069.45, 2349.8, 3301.05, 4144.9, 1905.4, 141.65, 5785.65, 275.9, 2130.45, 3756.45, 3334.9, 920.5, 150.35, 367.95, 19.55, 1242.2, 3190.65, 2666.75, 295.65, 1459.35, 4297.95, 3454.6, 1387, 786.3, 1375.6, 718.1, 320.4, 1334.45, 4764, 786.5, 5364.8, 20.3, 2419.55, 688.5, 867.1, 355.1, 1505.35, 1679.65, 2998, 24.4, 1959.5, 1275.7, 1647, 3320.6, 5669.5, 704.3, 95.55, 6375.2, 1566.75, 110.05, 816.8, 1253.5, 41.2, 6548.65, 299.3, 3915.4, 979.5, 90.05, 398.55, 63.15, 484.05, 2208.75, 238.15, 1218.25, 1405.3, 1902, 239.05, 39.8, 406.05, 138.85, 123.65, 1801.1, 790.7, 54.65, 1224.05, 2310.2, 3988.5, 3554.6, 85.1, 173, 3893.6, 357.15, 2221.55, 3090.65, 1293.8, 500.1, 1601.5, 1232.9, 19.9, 4889.2, 2289.9, 6503.2, 1313.25, 990.3, 805.2, 528.45, 2259.35, 1411.35, 20.35, 238.5, 226.55, 3313.4, 1938.9, 460.25, 19.9, 3171.6, 299.75, 702.05, 19.65, 92.25, 1242.45, 559.2, 531.15, 465.85, 3782.4, 460.2, 4600.95, 1793.25, 886.7, 1879.25, 434.5, 3778.1, 5438.95, 5386.5, 235.65, 2272.8, 83.75, 4663.4, 1806.35, 497.6, 19.3, 266.95, 2623.65, 45.85, 1082.8, 147.8, 2570.2, 2924.05, 32.7, 5305.05, 3720.35, 5025.8, 1498.55, 1818.9, 1051.05, 3688.6, 239.45, 244.45, 129.6, 4981.15, 2751, 1307.8, 53.55, 791.7, 4869.5, 4308.25, 221.1, 316.9, 471.7, 503.25, 961.4, 53.05, 2108.35, 232.55, 309.4, 523.1, 770.5, 3930.6, 897.75, 5895.45, 1218.25, 24.2, 554.45, 2032.3, 789.2, 1652.1, 3366.05, 2093.4, 1011.8, 1022.5, 3691.2, 3756.4, 3645.75, 2874.45, 49.95, 239, 6479.4, 3626.35, 1679.4, 931.55, 263.05, 39.25, 2625.25, 1495.1, 346.45 ], "xaxis": "x2", "yaxis": "y2" } ], "layout": { "annotations": [ { "font": { "size": 16 }, "showarrow": false, "text": "(a) Monthtly Charges Distribution", "x": 0.225, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "bottom", "yref": "paper" }, { "font": { "size": 16 }, "showarrow": false, "text": "(b) Total Charges Distribution", "x": 0.775, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "bottom", "yref": "paper" } ], "autosize": false, "template": { "data": { "bar": [ { "error_x": { "color": "rgb(36,36,36)" }, "error_y": { "color": "rgb(36,36,36)" }, "marker": { "line": { "color": "white", "width": 0.5 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "white", "width": 0.5 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "baxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "line": { "color": "white", "width": 0.6 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "rgb(237,237,237)" }, "line": { "color": "white" } }, "header": { "fill": { "color": "rgb(217,217,217)" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowhead": 0, "arrowwidth": 1 }, "coloraxis": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "colorscale": { "diverging": [ [ 0, "rgb(103,0,31)" ], [ 0.1, "rgb(178,24,43)" ], [ 0.2, "rgb(214,96,77)" ], [ 0.3, "rgb(244,165,130)" ], [ 0.4, "rgb(253,219,199)" ], [ 0.5, "rgb(247,247,247)" ], [ 0.6, "rgb(209,229,240)" ], [ 0.7, "rgb(146,197,222)" ], [ 0.8, "rgb(67,147,195)" ], [ 0.9, "rgb(33,102,172)" ], [ 1, "rgb(5,48,97)" ] ], "sequential": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "sequentialminus": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ] }, "colorway": [ "#1F77B4", "#FF7F0E", "#2CA02C", "#D62728", "#9467BD", "#8C564B", "#E377C2", "#7F7F7F", "#BCBD22", "#17BECF" ], "font": { "color": "rgb(36,36,36)" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "white", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "white", "polar": { "angularaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "radialaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "scene": { "xaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "zaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } }, "shapedefaults": { "fillcolor": "black", "line": { "width": 0 }, "opacity": 0.3 }, "ternary": { "aaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "baxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "caxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } } }, "title": { "text": "Charges Distribution for Month-to-month contracts for not Churned Clients", "x": 0.5, "xanchor": "center", "y": 0.9, "yanchor": "top" }, "xaxis": { "anchor": "y", "domain": [ 0, 0.45 ] }, "xaxis2": { "anchor": "y2", "domain": [ 0.55, 1 ] }, "yaxis": { "anchor": "x", "automargin": true, "domain": [ 0, 1 ], "title": { "text": "Frequency" } }, "yaxis2": { "anchor": "x2", "automargin": true, "domain": [ 0, 1 ] } } }, "text/html": [ "
\n", " \n", " \n", "
\n", " \n", "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_aux = dataset.query('(Contract == \"Month-to-month\") and (Churn == \"No\")')\n", "histogram_subplot(df_aux, df_aux, \"MonthlyCharges\", \"TotalCharges\", \n", " \"Charges Distribution for Month-to-month contracts for not Churned Clients\",\n", " \"(a) Monthtly Charges Distribution\", \"(b) Total Charges Distribution\")" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "af9de48f-100b-441c-98c0-76a28a29fc46", "tags": [] }, "source": [ "From the plots, can be said that many clients just got charged with a few values, principally for the Total Charges.
\n", "On the following plots, the same features are analyzed, but for churned clients." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "cell_id": "3a7d59f0-0bfa-40a1-80bc-d8208382cf9c", "tags": [] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "marker": { "line": { "color": "#000000", "width": 2 } }, "showlegend": false, "type": "histogram", "x": [ 53.85, 70.7, 99.65, 104.8, 103.7, 55.2, 39.65, 20.15, 99.35, 30.2, 64.7, 69.7, 106.35, 97.85, 80.65, 99.1, 80.65, 95.45, 94.4, 79.35, 75.15, 78.95, 21.05, 98.5, 96.75, 76.5, 100.25, 74.4, 78.05, 58.6, 35.45, 44.35, 70.45, 71.15, 45.65, 95, 82.4, 70.9, 45.3, 104.4, 74.45, 76.45, 29.95, 84.5, 79.25, 24.8, 91, 79.9, 106.6, 46, 70.15, 50.05, 55.2, 84.6, 54.4, 95, 74.4, 48.55, 70.4, 40.2, 44.6, 41.15, 106.9, 94.45, 24.8, 70.6, 85.4, 105.05, 95.15, 70, 74.5, 44.85, 76.1, 73.6, 95.45, 74.9, 80.6, 93.15, 70.35, 73.85, 80.6, 103.4, 90.4, 84.8, 41.9, 80.25, 30.75, 96.5, 85.65, 104.95, 50.65, 90.85, 19.95, 85.45, 73.95, 99.45, 19.9, 19.6, 81.35, 83.3, 75.3, 19.4, 45.4, 105.9, 69.55, 81.05, 101.15, 99.8, 55.95, 55, 74.7, 80.25, 96.1, 69, 45.3, 83.55, 74.35, 74.4, 28.45, 99.7, 94.1, 94.2, 80.5, 74.35, 104.8, 75.2, 75.6, 100.05, 85, 86.05, 45.55, 86.3, 80.35, 100.25, 19, 75.3, 89.2, 85.7, 61.65, 105.25, 29.95, 65, 20, 90.05, 110.75, 105.5, 85.25, 56.15, 89.55, 94.55, 45.7, 89.5, 69.55, 74.6, 19.65, 24.25, 69.65, 45.65, 75.05, 49.15, 34.7, 80, 49.25, 75.1, 50.15, 79.85, 19.55, 85.95, 45.35, 94.5, 91.7, 87.25, 98.55, 98.55, 85.9, 89.25, 70.3, 93.35, 19.9, 88.9, 82, 45.35, 52.2, 98.5, 85.35, 101.3, 69.55, 86.2, 111.2, 89.45, 95.6, 78.85, 44.4, 89.9, 50.8, 73.65, 95.1, 94.65, 80.6, 50.8, 105.1, 110.1, 83.9, 100.55, 103.85, 24.6, 98.9, 98.3, 93.85, 100.5, 72.85, 73.55, 79.4, 81.15, 84.6, 79.05, 74.4, 99.05, 44.95, 44.7, 45.7, 100.3, 19.25, 96, 90.55, 30.35, 69.9, 86.6, 80.6, 85.3, 70, 94.3, 95.35, 75.5, 90.1, 68.95, 99.55, 57.45, 100.6, 83.75, 88.3, 92.1, 79.45, 90.45, 69.75, 19.65, 43.65, 39.5, 97.1, 80, 84.7, 89.55, 90.6, 90.05, 99.05, 69.75, 49.05, 98.05, 114.5, 80.95, 74.3, 89.7, 100.45, 56.15, 94.4, 78.95, 105.65, 74.65, 64.7, 104.05, 35.55, 95.15, 96.65, 80.4, 31.35, 89.75, 19.85, 109.9, 101.35, 60.05, 60.15, 90.45, 74.9, 80.25, 69, 66.35, 86, 80.3, 90.55, 75.9, 45.85, 49.95, 78.3, 76.95, 96.15, 45.3, 19.4, 90.15, 45.05, 75.8, 79.3, 30.9, 89.6, 89.5, 75, 44.75, 44.05, 85.6, 86.6, 85.2, 97.65, 109.55, 19.45, 20.35, 69.25, 25.2, 45, 20.15, 105, 54.7, 87.25, 79.95, 88.35, 94.75, 95.05, 78.45, 70.2, 41.05, 85.6, 79.2, 49.95, 69.25, 94.25, 99.8, 35, 76, 93.85, 84.3, 84.4, 101.1, 50.45, 99.95, 91.4, 75.55, 80.8, 100, 20.55, 85.3, 70.4, 98.8, 74.4, 98.75, 104.7, 96.7, 55.05, 88.2, 75.65, 74.7, 76.65, 25.8, 42.6, 68.85, 90, 75.35, 100.85, 69.95, 45.85, 91.7, 95.6, 74.95, 95.35, 45, 99.5, 59.5, 80.45, 77.95, 74.7, 88.8, 90.25, 64.65, 89.05, 94.75, 86.45, 75.75, 85.35, 45.05, 109.8, 84.65, 79.5, 85.8, 79.1, 44.3, 105.95, 69.75, 94.65, 96.05, 50.15, 113.6, 78.9, 60.05, 34.7, 85.3, 104.4, 99.75, 74.4, 74.25, 59.85, 69.6, 45.4, 19.5, 69.9, 87.15, 84.75, 89.95, 113.2, 90.5, 79, 71.65, 20.35, 84.25, 78.1, 89.65, 98.7, 76.35, 79.15, 85, 85.3, 86.55, 73.85, 44.85, 45.1, 96, 20.05, 45.55, 35.1, 46.2, 45.15, 43.3, 57.15, 73.2, 85.35, 45.95, 83.75, 70.05, 86, 100.5, 72.65, 21, 45.1, 50.4, 78.95, 94.45, 84.8, 50.9, 99.8, 107.35, 19.55, 79.1, 25.5, 80.75, 91.85, 75.35, 75.45, 49.55, 81.1, 74.95, 93.55, 102.1, 90.9, 29.2, 89.15, 84.75, 45.7, 69.95, 44.6, 74.95, 89.85, 47.15, 80.2, 87.1, 75.9, 98.75, 86.45, 45.3, 81, 88.15, 20.2, 90.8, 79.35, 96.8, 83.35, 49.4, 79.2, 48.7, 95.6, 59.75, 108.15, 71.35, 20.15, 69.75, 93.2, 80.85, 33.65, 79.95, 19.3, 85.2, 75.25, 54.35, 24.95, 75.3, 70.55, 86.15, 85, 80.55, 75.8, 98.5, 95.25, 74.4, 85.15, 88.55, 54.75, 91.3, 79.5, 70.1, 95.25, 86.25, 100.8, 86.3, 89.95, 76.45, 70, 102.45, 80.1, 80.2, 98.15, 112.95, 70.9, 86.85, 99.85, 74.5, 109.15, 65.2, 99.5, 71.55, 93.9, 48.75, 85.65, 106.7, 25.15, 47.8, 98.6, 83.05, 70.4, 94.25, 45.95, 70.15, 85.55, 70.3, 106.35, 88.35, 94.2, 96.25, 70.7, 94.55, 35.9, 99.25, 24.45, 103.35, 84.8, 99.95, 90, 104.85, 74.2, 89.35, 77.15, 35.25, 48.55, 98.4, 93.85, 100.7, 80.45, 55.25, 54.45, 75.35, 75.7, 74.25, 89.7, 96.4, 69.5, 85.25, 19.4, 83.3, 80.1, 98.15, 93.7, 105.95, 95.75, 94.05, 54.75, 95.65, 94.6, 98.9, 76.05, 69.75, 34.5, 105.55, 30.1, 70.3, 80.2, 44.6, 19.6, 110.45, 70.7, 99.25, 84.8, 54.45, 85.3, 83.35, 33.5, 90.35, 90.75, 89.6, 49.25, 19.75, 95.15, 101.35, 70.05, 74.65, 50.4, 79.65, 79.85, 78.75, 80.45, 50.1, 76.4, 98.7, 100.8, 51.55, 79.25, 94.85, 85.7, 44.4, 89.5, 86.05, 44.55, 35.4, 95.65, 20.95, 34.7, 19.75, 92.55, 74.3, 85.35, 98.1, 74.55, 100.95, 94.9, 104.9, 88.35, 94.65, 74.4, 79.9, 69.7, 98.1, 20.5, 99.6, 81.95, 69.35, 91.1, 86.1, 94.7, 85.1, 99.15, 102.95, 45.05, 71, 70.55, 79.7, 59, 69.25, 70.95, 89, 99.4, 73.5, 95.5, 92.35, 74.55, 83.8, 54.45, 99.8, 105.85, 75.45, 93.85, 100.75, 31, 80, 70.25, 100.15, 94.5, 33.9, 89.95, 84.45, 79.5, 89.15, 74.95, 74.4, 55.3, 55.15, 84.95, 43.25, 79.55, 71.05, 84.5, 30.3, 30.4, 45.4, 84.15, 19.75, 85.4, 75.2, 106.4, 84.4, 56.25, 85.55, 68.65, 77.85, 105.35, 87.05, 53.5, 25.1, 79.65, 54.2, 19.45, 84.45, 85.95, 59.4, 30.6, 99.55, 70, 45.3, 29.85, 95.1, 19.8, 76.65, 99.15, 44.95, 49.55, 95.9, 81.5, 84.1, 36.45, 25.05, 49.85, 55.55, 104.3, 93.85, 50.45, 74.65, 94.2, 20.1, 83.8, 55.15, 86.65, 106.75, 78.45, 87.45, 70.75, 101.35, 81.7, 68.25, 79.15, 95.45, 69.1, 69.6, 77.95, 78.45, 29.5, 70.75, 84.45, 85.65, 97.8, 46.3, 106.3, 89.4, 83.15, 74.15, 99.5, 44.15, 53.9, 85.45, 50.85, 59.2, 83.2, 54.9, 103.9, 19.25, 75.45, 54.85, 95.1, 75.5, 73.75, 96.05, 88.95, 50.7, 53.4, 101.9, 50.6, 89.5, 69.8, 93.8, 101.05, 94.7, 61.45, 90.55, 88.8, 85.2, 91.4, 106.15, 45.3, 73.25, 51.05, 85.35, 75.35, 75.2, 20.9, 43.3, 84.8, 95.05, 50.35, 74.6, 19.7, 59.45, 45.15, 93.8, 96.2, 79.6, 85.25, 80.5, 89.8, 50.75, 89.65, 72.9, 40, 99.45, 86.25, 45.65, 70.1, 70.2, 55.35, 84.2, 45.85, 75.25, 100.15, 105.75, 48.35, 24.4, 20.95, 49.55, 20.25, 50.15, 95.9, 25.25, 45.15, 84.4, 75.1, 101.75, 45.8, 20.1, 40.65, 101, 69.1, 75, 71.15, 54.15, 49.15, 19.4, 79.15, 80.4, 102, 20.65, 70.8, 89.05, 96.6, 104.5, 50.6, 49.35, 94.25, 68.95, 93.85, 76.05, 24.45, 89.35, 80.35, 55.8, 79.05, 95, 25.2, 98.4, 101.4, 89.8, 91.25, 49.1, 65.25, 85.45, 71.65, 104.65, 74.25, 74.2, 101, 100.2, 96.5, 70.85, 73.9, 100.2, 74.05, 101.55, 45.75, 74.95, 80.15, 35.2, 78.8, 106.4, 49.4, 69.1, 90.2, 93.55, 80.85, 20.55, 78.55, 78.65, 42.9, 34.25, 58.5, 96.2, 74.4, 105.3, 73.85, 84.55, 85.8, 24.45, 105.7, 24.25, 76.5, 93.5, 74.9, 69.6, 24.05, 50.55, 100.55, 20.5, 74.8, 24.45, 71, 40.3, 50.6, 84.85, 65.7, 70.5, 94.85, 19.75, 65.45, 98.7, 69.6, 100.2, 78.05, 73.6, 74.75, 20.2, 93.55, 25.05, 95.55, 39.3, 20.25, 23.9, 85.45, 84.8, 75.2, 74.9, 101.25, 18.95, 28.6, 24.35, 98.65, 79.9, 103.3, 96.2, 102.95, 90.6, 50.8, 90.05, 75.85, 68.5, 73.5, 69.95, 70.05, 94, 61.15, 84.45, 19.6, 66.4, 100.05, 90.2, 79.85, 49.6, 91.85, 40.1, 73.9, 89.8, 72.25, 96.55, 40.1, 101.25, 79.55, 89.1, 94.4, 78.25, 44.15, 75.75, 19.1, 80.3, 74.9, 80.85, 24.75, 90.85, 79.7, 86.5, 103.95, 25.1, 48.95, 83.55, 89.15, 70.45, 24.75, 103.3, 78.5, 19.85, 79.9, 99.7, 58.6, 98.5, 50.45, 94.65, 100.25, 88.45, 69.85, 81.7, 79.9, 25.4, 83.75, 20.9, 69.4, 74.9, 74.15, 70.1, 78.3, 96.8, 94.4, 84.3, 99.55, 81.25, 19.95, 99.25, 79.35, 79.75, 100.05, 69.35, 85.8, 50.55, 80.55, 84.5, 84.3, 67.75, 85.25, 80.05, 20, 48.8, 85.05, 102.8, 99.95, 79.5, 79.65, 94.7, 92.5, 19.45, 75.55, 70, 104.4, 86.2, 51.2, 19.5, 74.9, 74.9, 100.25, 102.8, 99.85, 94.2, 83.85, 88.3, 94.7, 100.65, 78.85, 44.45, 84.9, 20.25, 74.35, 62.05, 104.1, 39.1, 76.5, 49.2, 23.15, 80.85, 60.1, 78.95, 45.15, 79.4, 99.3, 80.65, 71.1, 94, 89.85, 46, 66.25, 90, 53.95, 105.5, 81, 69.8, 73.75, 54.55, 76.25, 93.9, 70.4, 91.15, 70.95, 99.5, 83.9, 117.45, 104.4, 29.4, 44.65, 25.25, 84.05, 85.7, 74.7, 90.8, 106.15, 90.85, 35.75, 46, 89.4, 19.8, 50.9, 81, 98.35, 51, 91.65, 90.85, 69.4, 94.45, 20.15, 95.7, 74.95, 47.95, 63.6, 36.85, 44.1, 50.75, 39.3, 96.05, 75.1, 44.7, 55, 74.35, 55.7, 19.85, 70.3, 85.55, 94.5, 85.35, 79.65, 79.6, 90.6, 20.2, 99.15, 55.9, 82.35, 40.4, 75.35, 94.7, 30.5, 77, 20.1, 75.3, 85.5, 20.05, 70.4, 75.3, 94, 30.45, 96.1, 104.25, 80.2, 104.2, 69.65, 80.8, 80.3, 84.1, 69.35, 79.6, 36.45, 89.4, 80.35, 40.65, 84.9, 73.55, 20.15, 98.75, 101.15, 88.7, 79.75, 94.55, 69.05, 101.1, 55.25, 90.1, 53.75, 89.3, 95.2, 45.7, 74.5, 79.65, 101.3, 80.05, 89.2, 83.65, 19.5, 51.25, 45.6, 49.65, 20, 34, 92.5, 88.35, 74.45, 64.75, 89.8, 29.65, 84.5, 90.7, 70.3, 74.75, 50.8, 80.25, 78.9, 84.75, 85.45, 19.9, 99.45, 70.6, 81, 84.85, 89.15, 24.8, 80.85, 89.45, 72.15, 76.4, 61.6, 79.9, 96.15, 19.65, 84.65, 69.55, 31.05, 51, 44.35, 79.7, 55, 84.85, 73.65, 77.75, 84.35, 84.95, 73.85, 46, 79.4, 71.8, 46, 51.75, 94.4, 70.15, 34.7, 81.1, 20.55, 106.75, 89.45, 97.9, 55.7, 79.8, 39.05, 83.9, 69.85, 53.55, 84.95, 80.5, 19.3, 49.65, 88.45, 90.5, 94.85, 69.95, 48.6, 55.8, 80.15, 75.5, 20.2, 74.75, 104.05, 96.65, 20.05, 103.45, 19.9, 46.35, 19.95, 79.6, 75.9, 76.2, 19.25, 84.3, 79, 70.25, 84.6, 24.1, 60, 86.55, 20.85, 50.75, 85.15, 54.2, 104.4, 105.1, 75.7, 90.8, 97.95, 108.15, 80.5, 104.3, 71.35, 89.4, 20.6, 99.95, 81, 70.15, 70.15, 69.65, 89.3, 87.55, 96.3, 85.2, 35.1, 81.3, 19.6, 85.45, 71, 85.05, 44.4, 70.3, 79.35, 90.8, 70.45, 75.8, 71.3, 69.1, 88.25, 70, 97.35, 25.9, 55.65, 69.65, 100.6, 86, 29.6, 95.6, 100.85, 40.2, 84.5, 78.95, 20.2, 85.2, 98, 94.45, 105, 93.85, 84, 48.75, 84.85, 56.65, 89.9, 78.55, 99.45, 25.2, 55, 89.75, 85.15, 94.6, 94.25, 105.2, 82.85, 103.85, 83.6, 91.5, 80.85, 49.05, 105.3, 88.95, 36.5, 70.75, 40.15, 94.45, 97.35, 45.3, 94.95, 44.55, 23.45, 29.7, 101.1, 50.65, 55.4, 90.6, 86.85, 99.05, 55.1, 102.25, 95.9, 95.05, 53.85, 104.2, 50.25, 99.5, 71, 93.2, 19.35, 19.85, 104.2, 79.25, 44.9, 70.1, 29.65, 77.85, 54.3, 95.15, 80.5, 72.2, 51.5, 89.55, 95.25, 85, 85.75, 98.25, 25.7, 69, 46.05, 76.4, 100.5, 40.05, 69.95, 93.3, 49.15, 35.05, 73, 83.85, 70.1, 70.65, 20.35, 99, 83.95, 19.7, 75.55, 77.65, 95, 95.85, 79.15, 19.65, 79, 91.85, 49.9, 100.35, 74.95, 49.25, 103.7, 20.3, 101.95, 94, 89.3, 74.3, 44.65, 84.05, 80.7, 101.7, 20.4, 55.1, 91.05, 77.5, 69.25, 50.5, 74.4, 100.05, 100.55, 95.65, 94.4, 55, 101.45, 67.95, 69.5, 18.85, 69.2, 69.65, 101.85, 82.3, 79.25, 84.6, 93.4, 94.2, 25.05, 25.1, 48.95, 45.3, 85.85, 95.2, 55.3, 74.85, 79.85, 76, 104.75, 74.65, 56.25, 106.1, 79.75, 68.65, 20.25, 100.2, 74.9, 70.85, 69.8, 54.55, 70.75, 94.1, 29.7, 105, 25.3, 20.1, 69.9, 101.4, 80.8, 62.05, 76.45, 91.3, 95.75, 62.65, 74.5, 102.1, 50.15, 86.5, 81.45, 69.15, 79.55, 91.05, 79.2, 45.25, 74.3, 74.1, 100.6, 75, 70.75, 50.25, 79.2, 96, 100.1, 56.5, 85, 49.4, 55, 69.2, 92.5, 69.65, 48.55, 20.2, 39.65, 56.7, 74.95, 29.7, 50.35, 70.3, 98.8, 99.85, 80.3, 80.45, 86.8, 84.2, 99, 100.75, 91.75, 79.55, 111.1, 89.1, 101.9, 91.65, 88.85, 25.3, 95.45, 91.1, 69.7, 89.5, 35.15, 73.75, 101.35, 55.9, 105.9, 43.95, 45.1, 70.25, 55.35, 103, 69.35, 73.85, 75.15, 69.6, 80.15, 30.5, 107.4, 82, 75.4, 101.25, 89.5, 74.4, 20.5, 74.35, 99.75, 39, 94.1, 95.65, 88.05, 35.45, 49.9, 104.5, 75.05, 81, 74.45, 60.4, 70.65, 44.2, 75.75, 102.95, 74.4 ], "xaxis": "x", "yaxis": "y" }, { "marker": { "line": { "color": "#000000", "width": 2 } }, "showlegend": false, "type": "histogram", "x": [ 108.15, 151.65, 820.5, 3046.05, 5036.3, 528.35, 39.65, 20.15, 4749.15, 30.2, 1093.1, 316.9, 3549.25, 1105.4, 144.15, 1426.4, 633.3, 1752.55, 857.25, 79.35, 496.9, 927.35, 113.85, 2514.5, 5238.9, 2868.15, 1064.65, 229.55, 2135.5, 1502.65, 35.45, 81.25, 70.45, 563.65, 45.65, 655.5, 1592.35, 273, 2651.2, 242.8, 1145.7, 503.6, 29.95, 662.65, 1111.65, 24.8, 531, 79.9, 1934.45, 84.5, 268.35, 179.35, 55.2, 84.6, 114.1, 1120.3, 1074.3, 48.55, 147.15, 40.2, 80.55, 132.2, 1364.3, 1511.2, 24.8, 70.6, 401.1, 5624.85, 1779.95, 70, 606.55, 435.4, 1712.7, 73.6, 396.1, 2303.35, 415.55, 2231.05, 139.05, 511.25, 155.8, 6603, 168.2, 371.9, 840.1, 846, 805.1, 492.55, 181.5, 2566.5, 50.65, 90.85, 214.75, 4874.7, 2524.45, 7007.6, 19.9, 19.6, 233.7, 1845.9, 75.3, 1182.55, 518.9, 6396.45, 69.55, 2227.1, 385.9, 673.25, 734.35, 55, 74.7, 1861.5, 453.4, 994.8, 2145, 680.05, 74.35, 139.4, 131.05, 1238.45, 1782.4, 167.5, 502.85, 334.8, 4131.95, 1929.35, 1758.6, 3480, 85, 834.1, 597, 3266, 2596.15, 3527.6, 233.55, 75.3, 346.2, 85.7, 713.75, 6786.4, 248.95, 663.05, 137.6, 4547.25, 4687.9, 6985.65, 855.3, 2499.3, 89.55, 1899.65, 45.7, 161.5, 222.3, 74.6, 164.3, 96.05, 145.15, 191.05, 75.05, 2550.9, 62.25, 80, 91.1, 270.7, 168.15, 2015.35, 19.55, 381.3, 141.5, 3105.55, 2758.15, 3941.7, 1008.55, 1842.8, 1269.55, 1907.85, 208.85, 1444.65, 19.9, 454.15, 184.65, 89.5, 52.2, 1058.25, 489.45, 4113.1, 69.55, 178.7, 2317.1, 1430.25, 644.35, 292.8, 44.4, 89.9, 50.8, 1463.5, 307.4, 2104.55, 319.15, 3027.4, 1582.75, 1043.3, 497.55, 6215.35, 5017.9, 24.6, 1120.95, 923.5, 1625.65, 918.6, 688.65, 73.55, 205.05, 952.3, 360.1, 434.5, 215.8, 3395.8, 85.15, 44.7, 45.7, 832.35, 112.3, 174.8, 90.55, 1359.7, 69.9, 86.6, 2656.5, 2917.5, 2416.1, 424.45, 660.9, 1893.95, 1612.75, 119.75, 3204.65, 990.85, 819.4, 2070.6, 273.75, 729.95, 3013.05, 1266.1, 2347.9, 19.65, 526.95, 210.75, 3706.95, 412.5, 832.05, 185.55, 1943.2, 2169.8, 4853.75, 144.55, 91.1, 713, 4527.45, 171.15, 940.35, 1047.7, 1622.45, 168.15, 387.2, 2839.65, 4284.8, 544.55, 941, 1133.65, 35.55, 196.9, 1162.85, 224.05, 31.35, 1052.4, 19.85, 669.45, 1553.95, 1236.15, 60.15, 593.45, 74.9, 80.25, 1149.65, 740.8, 1532.45, 250.05, 2282.55, 143.35, 45.85, 810.2, 2564.3, 228.4, 1529.2, 45.3, 289.3, 987.95, 45.05, 75.8, 523.15, 59.05, 6127.6, 676.7, 632.95, 270.95, 483.7, 1345.55, 1281, 1553.9, 3207.55, 5124.55, 19.45, 76.35, 69.25, 25.2, 96.45, 20.15, 7133.25, 169.45, 1258.6, 857.2, 1639.3, 889.9, 1290, 330.05, 237.95, 2452.7, 813.85, 79.2, 49.95, 1554, 3217.55, 442.85, 553, 76, 170.85, 1308.4, 732.5, 1504.05, 50.45, 1132.75, 193.6, 349.65, 332.45, 1534.75, 20.55, 424.15, 281, 3475.55, 896.75, 2407.3, 4346.4, 2082.95, 102.75, 1775.8, 1146.65, 74.7, 1313.55, 25.8, 72.4, 1970.5, 190.05, 1025.95, 819.55, 330.15, 45.85, 91.7, 1555.65, 74.95, 898.35, 127.1, 6710.5, 415.95, 950.2, 3384, 165.4, 88.8, 2755.35, 994.55, 1169.35, 2293.6, 3029.1, 655.9, 1463.45, 770.6, 3587.25, 3541.35, 868.5, 85.8, 79.1, 134.5, 5341.8, 324.6, 4812.75, 4399.5, 50.15, 4594.95, 2384.15, 1616.15, 34.7, 264.8, 2200.25, 99.75, 299.7, 639.65, 59.85, 69.6, 418.8, 19.5, 69.9, 183.75, 264.85, 1178.4, 4689.5, 1201.15, 143.65, 71.65, 77.5, 3264.5, 947.3, 1761.05, 973.25, 76.35, 1676.95, 2642.05, 2661.1, 2697.4, 1424.5, 2572.95, 45.1, 2122.45, 20.05, 402.6, 68.75, 46.2, 45.15, 43.3, 2250.65, 1441.1, 4338.6, 45.95, 247.25, 70.05, 165.45, 3653.35, 1194.3, 21, 45.1, 1527.5, 378.4, 5124.6, 3862.55, 50.9, 4872.45, 5118.95, 658.95, 246.5, 215.2, 159.45, 5940.85, 75.35, 75.45, 1210.4, 576.65, 825.7, 93.55, 5885.4, 1259, 309.1, 2257.75, 1350.15, 45.7, 69.95, 97.1, 1710.45, 2165.05, 223.15, 181.1, 341.45, 357.75, 4533.7, 830.85, 45.3, 371.65, 1390.6, 20.2, 2361.8, 1730.35, 2030.3, 4065, 106.55, 1742.75, 340.25, 95.6, 2934.3, 4600.7, 71.35, 20.15, 69.75, 2931, 1400.85, 137.85, 79.95, 19.3, 627.4, 242, 54.35, 100.4, 75.3, 70.55, 2745.7, 2624.25, 184.1, 160.75, 3004.15, 1233.65, 527.9, 2555.9, 179.25, 1338.15, 91.3, 79.5, 467.55, 5427.05, 587.1, 100.8, 1180.95, 2625.55, 1233.4, 740, 102.45, 217.55, 146.05, 567.45, 1384.75, 70.9, 220.95, 2331.3, 74.5, 6941.2, 1043.35, 6822.15, 71.55, 5029.2, 633.4, 321.65, 1253.9, 25.15, 92.45, 2933.2, 1258.3, 1214.05, 1973.75, 45.95, 70.15, 85.55, 2416.55, 3520.75, 88.35, 777.3, 512.45, 141.45, 3640.45, 35.9, 3777.15, 47.5, 847.3, 546.95, 3186.65, 1527.35, 1531.4, 1133.9, 461.7, 77.15, 35.25, 201, 5149.5, 5574.75, 4541.2, 1072, 1715.65, 706.85, 2636.05, 189.2, 74.25, 2187.55, 1581.2, 69.5, 3132.75, 19.4, 803.3, 679.3, 1230.25, 4154.8, 2655.25, 5742.9, 2866.45, 54.75, 3759.05, 94.6, 2911.3, 231.8, 69.75, 279.25, 6281.45, 1131.3, 738.2, 80.2, 260.8, 19.6, 3655.45, 140.7, 665.45, 84.8, 1127.35, 4045.65, 2757.85, 600, 2238.5, 90.75, 365.65, 90.35, 19.75, 1789.25, 2317.1, 266.9, 301.4, 206.6, 604.7, 1471.75, 412.1, 583.45, 50.1, 151.8, 293.65, 1308.1, 765.5, 793.55, 462.8, 169.8, 44.4, 477.7, 86.05, 174.3, 1077.5, 95.65, 20.95, 329.8, 297.3, 1515.1, 1178.25, 758.6, 396.3, 622.9, 329.95, 1048.85, 3351.55, 262.05, 2649.15, 74.4, 3326.2, 560.85, 1060.2, 20.5, 347.65, 81.95, 451.1, 455.3, 1235.55, 2362.1, 1873.7, 6010.05, 7101.5, 45.05, 71, 3309.25, 79.7, 1254.7, 69.25, 1767.35, 1820.45, 1742.95, 73.5, 829.1, 2602.9, 824.75, 1029.75, 2854.55, 4259.3, 2239.65, 480.75, 635.6, 2095, 95.05, 4242.35, 331.9, 6283.3, 2659.4, 298.45, 6143.15, 1059.55, 2180.55, 89.15, 1036.75, 2276.95, 196.15, 1206.05, 1378.25, 219, 79.55, 3444.85, 84.5, 1380.1, 78.65, 45.4, 2585.95, 58.85, 425.9, 3678.3, 2483.5, 556.35, 389.1, 187.45, 261.25, 299.2, 323.25, 762.1, 53.5, 25.1, 2365.15, 308.25, 19.45, 1058.6, 2628.6, 1023.9, 856.35, 3734.25, 1144.5, 45.3, 75.6, 180.25, 19.8, 333.6, 465.05, 431, 878.35, 2448.75, 1329.2, 4348.65, 93.7, 25.05, 365.55, 2342.2, 5278.15, 93.85, 50.45, 521.1, 1046.1, 20.1, 1900.25, 159.15, 856.65, 4056.75, 2435.15, 2874.15, 1974.8, 1218.55, 81.7, 2171.15, 317.25, 3474.05, 69.1, 69.6, 305.55, 78.45, 255.25, 146.9, 762.5, 338.9, 4913.3, 46.3, 4443.45, 1095.65, 446.05, 811.8, 1056.95, 44.15, 834.15, 85.45, 239.55, 59.2, 1060.6, 54.9, 2254.2, 180.3, 158.4, 104.2, 95.1, 438, 325.45, 1148.1, 355.2, 151.3, 188.7, 5549.4, 50.6, 863.1, 69.8, 4750.95, 2391.8, 1687.95, 229.55, 90.55, 2274.35, 602.55, 449.75, 4512.7, 196.95, 131.05, 415.05, 754.65, 75.35, 3198.6, 20.9, 123.65, 906.85, 4888.7, 237.25, 74.6, 342.4, 892.65, 438.4, 3019.5, 3183.4, 79.6, 1734.5, 2088.8, 502.6, 50.75, 1208.35, 651.4, 223.45, 919.4, 181.65, 45.65, 551.35, 115.95, 165.2, 4146.05, 81, 3017.65, 1164.3, 2710.25, 810.7, 36.55, 85.5, 49.55, 178.5, 115.1, 2745.2, 25.25, 416.45, 4116.15, 75.1, 4273.45, 45.8, 20.1, 328.95, 4680.05, 69.1, 999.45, 71.15, 1240.25, 270.8, 374.5, 1520.9, 3605.2, 1145.35, 38.7, 70.8, 1448.6, 291.9, 5921.35, 249.95, 219.65, 669, 68.95, 196.75, 318.9, 24.45, 631.85, 307.4, 55.8, 79.05, 95, 25.2, 4187.75, 3496.3, 914.3, 2351.8, 679.55, 1994.3, 1505.85, 71.65, 2542.45, 210.3, 74.2, 4388.4, 420.2, 3436.1, 70.85, 280.85, 2983.8, 1565.7, 298.35, 45.75, 815.5, 80.15, 108.95, 78.8, 5127.95, 874.8, 69.1, 1776.55, 536.4, 80.85, 51.15, 149.55, 78.65, 42.9, 139.35, 539.85, 4718.25, 434.1, 545.2, 1284.2, 646.85, 1727.5, 86.6, 2979.5, 24.25, 837.95, 362.2, 2068.55, 131.65, 24.05, 50.55, 1415.55, 20.5, 321.9, 482.8, 914, 1172.95, 155.35, 3303.05, 134.35, 70.5, 953.45, 19.75, 937.6, 5812.6, 69.6, 6851.65, 78.05, 520, 706.6, 20.2, 2264.05, 56.35, 2510.2, 2111.45, 20.25, 300.8, 85.45, 2043.45, 2576.2, 469.8, 1457.25, 185.6, 973.55, 41.85, 2862.75, 343.95, 2890.65, 1222.05, 2496.7, 90.6, 288.05, 368.1, 256.6, 68.5, 791.75, 69.95, 346.4, 773.65, 1422.05, 2467.1, 59.75, 94.55, 6871.9, 1454.15, 2404.15, 114.7, 257.05, 40.1, 2217.15, 1129.1, 2568.55, 3580.3, 293.3, 2440.15, 79.55, 89.1, 1607.2, 1490.95, 92.65, 606.25, 19.1, 80.3, 74.9, 751.65, 66.95, 4515.85, 165, 1808.7, 7446.9, 25.1, 1880.85, 477.55, 1496.9, 70.45, 24.75, 2012.7, 242.05, 63.75, 260.9, 2967.35, 939.7, 1037.75, 50.45, 3624.3, 100.25, 1422.1, 69.85, 858.6, 324.3, 399.6, 3273.55, 20.9, 69.4, 541.15, 3229.4, 70.1, 909.25, 5283.95, 1617.5, 84.3, 1131.2, 585.95, 19.95, 2186.4, 661.25, 1111.85, 3046.15, 69.35, 272.2, 50.55, 80.55, 916.9, 1855.65, 116.65, 2287.25, 830.7, 20, 1054.6, 85.05, 2110.15, 547.65, 4370.25, 251.75, 740.3, 452.7, 19.45, 166.3, 70, 3409.6, 1270.2, 1561.5, 31.55, 321.75, 147.15, 2387.75, 2660.2, 990.9, 193.8, 790.15, 2467.75, 1914.9, 5688.05, 1772.25, 44.45, 3067.2, 20.25, 74.35, 62.05, 541.9, 971.3, 162.45, 216.9, 245.2, 302.75, 60.1, 78.95, 98.5, 244.65, 2431.35, 1451.9, 71.1, 94, 1424.95, 193.6, 620.55, 1993.8, 53.95, 829.55, 1312.15, 69.8, 545.15, 494.05, 2841.55, 486.85, 204.7, 2995.45, 137.95, 3762, 3233.6, 5438.9, 1081.45, 221.9, 74.9, 58.9, 333.55, 3171.15, 74.7, 455.5, 3152.5, 3186.7, 35.75, 181.6, 1539.45, 58.15, 225.6, 340.85, 2515.3, 305.95, 365.4, 90.85, 69.4, 742.95, 20.15, 4816.7, 1834.95, 305.1, 155.65, 108.7, 44.1, 712.75, 1637.4, 1740.7, 552.95, 93.7, 1046.5, 834.2, 899.8, 108.05, 70.3, 851.75, 575.45, 1375.15, 152.7, 195.05, 1660, 20.2, 3615.6, 2184.35, 1852.85, 77.15, 338.1, 673.1, 208.7, 237.75, 221.35, 75.3, 4042.3, 164.85, 70.4, 1147.45, 1078.9, 226.45, 4364.1, 2433.9, 1217.25, 1743.5, 69.65, 713.1, 526.7, 3021.6, 191.35, 2718.3, 36.45, 2001.5, 3825.85, 933.3, 764.95, 145.4, 156.25, 1587.55, 842.9, 1761.45, 164.5, 2724.6, 318.5, 3744.05, 2139.2, 521.3, 608, 577.6, 292.85, 198, 609.9, 79.65, 2812.2, 80.05, 2698.35, 1465.75, 146.3, 51.25, 45.6, 267.35, 288.05, 853, 934.1, 1222.8, 74.45, 2345.2, 2335.3, 291.4, 453.75, 1597.25, 235.5, 799.65, 50.8, 144.55, 2447.95, 3050.15, 4517.25, 19.9, 1200.15, 70.6, 389.6, 523.5, 2277.65, 24.8, 1008.7, 853.1, 794.25, 160.8, 1174.35, 741.7, 3019.25, 19.65, 84.65, 69.55, 347.25, 354.05, 44.35, 586.05, 3092.65, 415.55, 73.65, 4458.15, 474.9, 668.4, 926.25, 46, 1156.1, 1167.8, 221.7, 201.1, 2838.7, 70.15, 296.1, 81.1, 20.55, 6252.9, 240.45, 315.3, 55.7, 973.45, 669.85, 267.4, 69.85, 53.55, 2169.75, 896.9, 19.3, 49.65, 370.65, 1910.6, 890.6, 529.5, 48.6, 2109.35, 2265.25, 220.6, 20.2, 229.5, 2470.1, 1244.5, 20.05, 3994.45, 19.9, 667.7, 19.95, 79.6, 75.9, 76.2, 19.25, 3588.4, 522.95, 70.25, 865.55, 409.9, 60, 649.65, 20.85, 2011.4, 503.6, 1152.7, 2157.95, 7548.1, 75.7, 1951, 384.5, 3432.9, 463.05, 2867.75, 71.35, 1132.35, 20.6, 1931.75, 818.05, 916.75, 70.15, 69.65, 89.3, 3078.1, 1426.75, 474.8, 446.1, 416.3, 35.85, 1451.6, 71, 746.5, 44.4, 70.3, 79.35, 809.75, 1470.95, 246.3, 1389.2, 1474.75, 1460.65, 153.05, 2119.5, 135, 1400.55, 69.65, 1060.2, 86, 79.45, 4783.5, 4740, 1448.8, 4254.85, 1101.85, 20.2, 3969.35, 1237.85, 498.1, 294.45, 2381.55, 613.4, 442.2, 84.85, 654.85, 2806.9, 1422.65, 4138.05, 102.5, 757.1, 608.8, 1139.2, 279.55, 1483.25, 4400.75, 460.25, 5485.5, 404.2, 242.95, 866.45, 2076.2, 7299.65, 2291.2, 1032, 70.75, 130.75, 2653.65, 3457.9, 45.3, 178.1, 480.6, 23.45, 29.7, 6039.9, 151.3, 55.4, 90.6, 156.35, 2952.85, 113.35, 1359, 1777.9, 4504.55, 259.8, 5568.35, 2203.65, 2369.05, 672.55, 1573.7, 126.05, 64.55, 3243.45, 79.25, 44.9, 659.65, 118.5, 3365.85, 195.3, 997.65, 80.5, 305.55, 900.5, 3856.75, 3959.35, 3969.4, 470.95, 560.6, 25.7, 506.9, 80.35, 76.4, 514, 880.2, 69.95, 93.3, 169.05, 35.05, 73, 2716.3, 70.1, 142.35, 33.2, 287.4, 2254.2, 19.7, 413.65, 714.15, 2497.2, 197.7, 79.15, 655.85, 303.15, 1574.45, 49.9, 1358.85, 2869.85, 49.25, 5071.05, 20.3, 700.85, 181.7, 4016.85, 74.3, 44.65, 1095.3, 788.8, 364.55, 20.4, 154.65, 2954.5, 3807.35, 418.4, 50.5, 74.4, 4871.05, 4398.15, 167.3, 94.4, 55, 101.45, 350.3, 69.5, 18.85, 69.2, 69.65, 4086.3, 82.3, 267.6, 1115.2, 5435.6, 4186.3, 25.05, 712.85, 48.95, 45.3, 167.3, 930.4, 324.25, 156.4, 152.45, 1130.85, 4323.45, 703.55, 56.25, 2249.95, 159.4, 68.65, 327.45, 1369.8, 1107.25, 70.85, 134.7, 2978.3, 450.8, 1215.6, 91.7, 4026.4, 25.3, 20.1, 69.9, 4528, 80.8, 118.3, 76.45, 1094.5, 573.75, 2274.9, 74.5, 1068.85, 762.25, 582.5, 2122.05, 69.15, 723.4, 289.1, 172.85, 85.5, 1096.25, 228, 5746.15, 209.1, 154.85, 593.75, 3233.85, 1062.1, 5440.9, 235.1, 85, 184.4, 2010.55, 69.2, 3473.4, 220.1, 501, 20.2, 733.35, 113.55, 308.7, 438.25, 50.35, 70.3, 5617.75, 1776.95, 2483.05, 5224.35, 620.35, 519.15, 1301.7, 1129.75, 865.8, 79.55, 6014.85, 2368.4, 3545.35, 1301, 372.45, 77.75, 95.45, 1135.7, 69.7, 573.3, 99.75, 871.4, 780.5, 365.35, 334.65, 43.95, 45.1, 2868.05, 449.75, 4414.3, 69.35, 4092.85, 216.75, 69.6, 385, 30.5, 5121.3, 1127.2, 1747.85, 2754.45, 2196.15, 1692.6, 20.5, 265.35, 1836.25, 679.85, 2804.45, 778.1, 4367.35, 106.85, 130.1, 4036.85, 256.25, 1917.1, 74.45, 272.15, 70.65, 403.35, 75.75, 6886.25, 306.6 ], "xaxis": "x2", "yaxis": "y2" } ], "layout": { "annotations": [ { "font": { "size": 16 }, "showarrow": false, "text": "(a) Monthtly Charges Distribution", "x": 0.225, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "bottom", "yref": "paper" }, { "font": { "size": 16 }, "showarrow": false, "text": "(b) Total Charges Distribution", "x": 0.775, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "bottom", "yref": "paper" } ], "autosize": false, "template": { "data": { "bar": [ { "error_x": { "color": "rgb(36,36,36)" }, "error_y": { "color": "rgb(36,36,36)" }, "marker": { "line": { "color": "white", "width": 0.5 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "white", "width": 0.5 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "baxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "line": { "color": "white", "width": 0.6 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "rgb(237,237,237)" }, "line": { "color": "white" } }, "header": { "fill": { "color": "rgb(217,217,217)" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowhead": 0, "arrowwidth": 1 }, "coloraxis": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "colorscale": { "diverging": [ [ 0, "rgb(103,0,31)" ], [ 0.1, "rgb(178,24,43)" ], [ 0.2, "rgb(214,96,77)" ], [ 0.3, "rgb(244,165,130)" ], [ 0.4, "rgb(253,219,199)" ], [ 0.5, "rgb(247,247,247)" ], [ 0.6, "rgb(209,229,240)" ], [ 0.7, "rgb(146,197,222)" ], [ 0.8, "rgb(67,147,195)" ], [ 0.9, "rgb(33,102,172)" ], [ 1, "rgb(5,48,97)" ] ], "sequential": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "sequentialminus": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ] }, "colorway": [ "#1F77B4", "#FF7F0E", "#2CA02C", "#D62728", "#9467BD", "#8C564B", "#E377C2", "#7F7F7F", "#BCBD22", "#17BECF" ], "font": { "color": "rgb(36,36,36)" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "white", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "white", "polar": { "angularaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "radialaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "scene": { "xaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "zaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } }, "shapedefaults": { "fillcolor": "black", "line": { "width": 0 }, "opacity": 0.3 }, "ternary": { "aaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "baxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "caxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } } }, "title": { "text": "Charges Distribution for Month-to-month contracts for Churned Clients", "x": 0.5, "xanchor": "center", "y": 0.9, "yanchor": "top" }, "xaxis": { "anchor": "y", "domain": [ 0, 0.45 ] }, "xaxis2": { "anchor": "y2", "domain": [ 0.55, 1 ] }, "yaxis": { "anchor": "x", "automargin": true, "domain": [ 0, 1 ], "title": { "text": "Frequency" } }, "yaxis2": { "anchor": "x2", "automargin": true, "domain": [ 0, 1 ] } } }, "text/html": [ "
\n", " \n", " \n", "
\n", " \n", "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_aux = dataset.query('(Contract == \"Month-to-month\") and (Churn == \"Yes\")')\n", "histogram_subplot(df_aux, df_aux, \"MonthlyCharges\", \"TotalCharges\", \n", " \"Charges Distribution for Month-to-month contracts for Churned Clients\",\n", " \"(a) Monthtly Charges Distribution\", \"(b) Total Charges Distribution\")" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "0a9867c9-7fbc-491c-ac50-c033404f654f", "tags": [] }, "source": [ "Total Charges had the same behaviour, but the Monthly Charges for many churned clients was high, maybe the amount of chage value could lead the client to leave the service.
\n", "Still on the Month-to-month contract, it's time to analyze the most used Payment methods of churned clients." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "cell_id": "5b9d7be6-7b0a-4276-bf80-0e955af80524", "tags": [] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "marker": { "color": [ "#ff8000", "#0080ff", "#0080ff", "#0080ff" ], "line": { "color": "#000000", "width": 2 } }, "text": [ 1071, 308, 258, 232 ], "textfont": { "size": 14 }, "textposition": "outside", "type": "bar", "x": [ "Electronic check", "Mailed check", "Bank transfer (automatic)", "Credit card (automatic)" ], "y": [ 1071, 308, 258, 232 ] } ], "layout": { "autosize": false, "height": 600, "template": { "data": { "bar": [ { "error_x": { "color": "rgb(36,36,36)" }, "error_y": { "color": "rgb(36,36,36)" }, "marker": { "line": { "color": "white", "width": 0.5 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "white", "width": 0.5 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "baxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "line": { "color": "white", "width": 0.6 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "rgb(237,237,237)" }, "line": { "color": "white" } }, "header": { "fill": { "color": "rgb(217,217,217)" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowhead": 0, "arrowwidth": 1 }, "coloraxis": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "colorscale": { "diverging": [ [ 0, "rgb(103,0,31)" ], [ 0.1, "rgb(178,24,43)" ], [ 0.2, "rgb(214,96,77)" ], [ 0.3, "rgb(244,165,130)" ], [ 0.4, "rgb(253,219,199)" ], [ 0.5, "rgb(247,247,247)" ], [ 0.6, "rgb(209,229,240)" ], [ 0.7, "rgb(146,197,222)" ], [ 0.8, "rgb(67,147,195)" ], [ 0.9, "rgb(33,102,172)" ], [ 1, "rgb(5,48,97)" ] ], "sequential": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "sequentialminus": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ] }, "colorway": [ "#1F77B4", "#FF7F0E", "#2CA02C", "#D62728", "#9467BD", "#8C564B", "#E377C2", "#7F7F7F", "#BCBD22", "#17BECF" ], "font": { "color": "rgb(36,36,36)" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "white", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "white", "polar": { "angularaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "radialaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "scene": { "xaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "zaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } }, "shapedefaults": { "fillcolor": "black", "line": { "width": 0 }, "opacity": 0.3 }, "ternary": { "aaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "baxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "caxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } } }, "title": { "text": "Payment Method of Month-to-month contract Churned Clients", "x": 0.5, "xanchor": "center", "y": 0.9, "yanchor": "top" }, "xaxis": { "title": { "text": "Payment Method" } }, "yaxis": { "automargin": true, "title": { "text": "Count" } } } }, "text/html": [ "
\n", " \n", " \n", "
\n", " \n", "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_aux = dataset.query(('Contract == Month-to-month') and ('Churn == \"Yes\"'))\n", "df_aux = df_aux[\"PaymentMethod\"].value_counts()\n", "bar_plot(df_aux, \"Payment Method of Month-to-month contract Churned Clients\",\n", " \"Payment Method\", \"Count\")" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "0b85ae6a-63cf-457b-a105-f013d1798415", "tags": [] }, "source": [ "Many Churned Clients used to pay with electronic checks, automatic payments, as bank transfers or credit card have a few churned clients. A good idea could make promotions to clients that use automatic payment methods.
\n", "Lastly, the tenure of the churned clients." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "cell_id": "0bcdd312-51fd-4748-8035-889060017e5c", "tags": [] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "marker": { "color": [ "#ff8000", "#0080ff", "#0080ff", "#0080ff", "#0080ff" ], "line": { "color": "#000000", "width": 2 } }, "text": [ 380, 123, 94, 83, 64 ], "textfont": { "size": 14 }, "textposition": "outside", "type": "bar", "x": [ 1, 2, 3, 4, 5 ], "y": [ 380, 123, 94, 83, 64 ] } ], "layout": { "autosize": false, "height": 600, "template": { "data": { "bar": [ { "error_x": { "color": "rgb(36,36,36)" }, "error_y": { "color": "rgb(36,36,36)" }, "marker": { "line": { "color": "white", "width": 0.5 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "white", "width": 0.5 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "baxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "line": { "color": "white", "width": 0.6 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "rgb(237,237,237)" }, "line": { "color": "white" } }, "header": { "fill": { "color": "rgb(217,217,217)" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowhead": 0, "arrowwidth": 1 }, "coloraxis": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "colorscale": { "diverging": [ [ 0, "rgb(103,0,31)" ], [ 0.1, "rgb(178,24,43)" ], [ 0.2, "rgb(214,96,77)" ], [ 0.3, "rgb(244,165,130)" ], [ 0.4, "rgb(253,219,199)" ], [ 0.5, "rgb(247,247,247)" ], [ 0.6, "rgb(209,229,240)" ], [ 0.7, "rgb(146,197,222)" ], [ 0.8, "rgb(67,147,195)" ], [ 0.9, "rgb(33,102,172)" ], [ 1, "rgb(5,48,97)" ] ], "sequential": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "sequentialminus": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ] }, "colorway": [ "#1F77B4", "#FF7F0E", "#2CA02C", "#D62728", "#9467BD", "#8C564B", "#E377C2", "#7F7F7F", "#BCBD22", "#17BECF" ], "font": { "color": "rgb(36,36,36)" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "white", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "white", "polar": { "angularaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "radialaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "scene": { "xaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "zaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } }, "shapedefaults": { "fillcolor": "black", "line": { "width": 0 }, "opacity": 0.3 }, "ternary": { "aaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "baxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "caxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } } }, "title": { "text": "Tenure of Month-to-month contract for Churned Clients", "x": 0.5, "xanchor": "center", "y": 0.9, "yanchor": "top" }, "xaxis": { "title": { "text": "Tenure" } }, "yaxis": { "automargin": true, "title": { "text": "Count" } } } }, "text/html": [ "
\n", " \n", " \n", "
\n", " \n", "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_aux = dataset.query(('Contract == Month-to-month') and ('Churn == \"Yes\"'))\n", "df_aux = df_aux[\"tenure\"].value_counts().head(5)\n", "bar_plot(df_aux, \"Tenure of Month-to-month contract for Churned Clients\",\n", " \"Tenure\", \"Count\")" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "007f6510-4a74-46a4-952b-225af9f37d03", "tags": [] }, "source": [ "Most clients just used the service for one month, seems like the clients used to service to check the quality or the couldn't stay for the amount of charges, as the Monthly Charges for these clients was high and the Total Charges was small, as the client just stayed a little time. " ] }, { "cell_type": "markdown", "metadata": { "cell_id": "8546f71b-652c-4909-b31b-b11cd7cc52c1", "tags": [] }, "source": [ "# 4. Setting up PyCaret" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "f96ae182-aead-4514-af36-6ffcf5df7e2e", "tags": [] }, "source": [ "Before setting up PyCaret, a random sample of 10% size of the dataset will be get to make predictions with unseen data. " ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "cell_id": "d6011a29-86c1-44e5-b754-8d952ddce4cc", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There are 704 samples for Unseen Data.\n" ] } ], "source": [ "data, data_unseen = data_sampling(dataset, 0.9, RANDOM_SEED)\n", "print(f\"There are {data_unseen.shape[0]} samples for Unseen Data.\")" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "506eea27-2ffc-48ba-a05f-19ba290d3d1e", "tags": [] }, "source": [ "The PyCaret's setup is made with 90% of data samples and just use one function (`setup`) from the module.
\n", "It's possible configure with variuos options, as data pre-processing, feature engineering, etc. The easy and efficient of PyCaret buy a lot of time when prototyping models.
\n", "Each setup is an experiment and for this problem, is used the following options:\n", "* Normalization of the numerical features with Z-Score.\n", "* Feature Selection with permutation importance techniques.\n", "* Outliers Removal.\n", "* Features Removal based on Multicollinearity.\n", "* Features Scalling Transformation.\n", "* Ignore low variance on Features.\n", "* PCA for Dimensionality Reduction, as the dataset has many features.\n", "* Numeric binning on the features `MonthlyCharges` and `TotalCharges`.\n", "* 70% of samples for Train and 30% for test.\n", "* Fix Imbalance with SMOTE.\n", "* The models will store their metric results via Mlflow, to acess Mlflow UI, type mlflow on the your cmd or !mlflow ui on a cell on the bottom of this notebook. " ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "cell_id": "6f4ed29e-1357-47b2-a4e4-637ce4119bbc", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Setup Succesfully Completed!\n" ] }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Description Value
0session_id142
1Target TypeBinary
2Label EncodedNo: 0, Yes: 1
3Original Data(6339, 21)
4Missing Values True
5Numeric Features 4
6Categorical Features 16
7Ordinal Features False
8High Cardinality Features False
9High Cardinality Method None
10Sampled Data(6022, 21)
11Transformed Train Set(4215, 40)
12Transformed Test Set(1807, 40)
13Numeric Imputer mean
14Categorical Imputer constant
15Normalize True
16Normalize Method zscore
17Transformation True
18Transformation Method yeo-johnson
19PCA True
20PCA Method linear
21PCA Components 0.990000
22Ignore Low Variance True
23Combine Rare Levels False
24Rare Level Threshold None
25Numeric Binning True
26Remove Outliers True
27Outliers Threshold 0.050000
28Remove Multicollinearity True
29Multicollinearity Threshold 0.900000
30Clustering False
31Clustering Iteration None
32Polynomial Features False
33Polynomial Degree None
34Trignometry Features False
35Polynomial Threshold None
36Group Features False
37Feature Selection True
38Features Selection Threshold 0.800000
39Feature Interaction False
40Feature Ratio False
41Interaction Threshold None
42Fix ImbalanceTrue
43Fix Imbalance MethodSMOTE
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "exp01 = setup(data=data, target=\"Churn\", session_id=RANDOM_SEED, ignore_features=[\"customerID\"], \n", " numeric_features=[\"SeniorCitizen\"], normalize=True,\n", " feature_selection=True, remove_outliers=True,\n", " remove_multicollinearity=True, fix_imbalance=True,\n", " transformation=True, ignore_low_variance=True, pca=True, \n", " bin_numeric_features=[\"MonthlyCharges\", \"TotalCharges\"],\n", " silent=True, experiment_name=\"customer-churn-prediction\",\n", " log_experiment=True)" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "8d33c0f2-51f2-4b29-8548-7b354dd14b00", "tags": [] }, "source": [ "PyCaret shows at first if all features types are with it correspondent type, if everything is right, press enter on the blank bar and the setup is finished showing a summary of the experiment. " ] }, { "cell_type": "markdown", "metadata": { "cell_id": "4ae241d1-57c6-4dcc-91c0-5d6f10b11bf1", "tags": [] }, "source": [ "# 5. Model Build" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "cc8f9047-81a4-46cc-902e-5450348b5b33", "tags": [] }, "source": [ "A great tool on PyCaret is build many models and compare a metric for the bests!
\n", "The models are sorted by F1 Score due Precision and Recall are importants for the evaluation.
\n", "The cross-validation is made with 5-folds." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "cell_id": "922945dc-4001-4a47-b782-9515570044cf", "tags": [] }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Model Accuracy AUC Recall Prec. F1 Kappa MCC TT (Sec)
0Logistic Regression0.75160.83730.77770.53490.63360.45530.47390.0468
1Ridge Classifier0.74160.00000.78970.52160.62790.44240.46530.0136
2Linear Discriminant Analysis0.74140.83580.78970.52130.62770.44210.46500.0485
3SVM - Linear Kernel0.74190.00000.73560.52530.61150.42670.44170.0532
4Ada Boost Classifier0.74640.80420.70040.53130.60400.42260.43161.3652
5Quadratic Discriminant Analysis0.74140.81390.70820.52350.60150.41640.42740.0310
6Light Gradient Boosting Machine0.76920.80940.62660.57720.60000.43840.43980.9825
7K Neighbors Classifier0.68370.76360.76140.45680.57090.34450.37280.0920
8Extreme Gradient Boosting0.75990.79340.57600.56460.56960.40330.40382.7836
9Extra Trees Classifier0.76560.78780.53820.58300.55930.40010.40090.5752
10Random Forest Classifier0.75990.78060.53910.57010.55410.39000.39030.2290
11Naive Bayes0.70700.74210.65060.47790.55100.34100.35000.0137
12Decision Tree Classifier0.69770.65590.54590.46050.49940.28520.28750.4045
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "top_model = compare_models(fold=K_FOLDS,\n", " sort=\"F1\",\n", " n_select=1, \n", " blacklist=[\"gbc\", \"catboost\"])" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "0bdc63ac-21e4-4d6f-afa3-a12cce4e2023", "tags": [] }, "source": [ "The best model suggested by PyCaret is the Logistic Regreesion, with a F1 Score around 0.63 and a good Recall, around 0.77.
\n", "Time to tune the model. The `choose_better` argument get the best model between the tuned and best model." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "cell_id": "be5c3da4-91f5-43f1-a5dd-a36802be9dc5", "tags": [] }, "outputs": [], "source": [ "tuned_model = tune_model(estimator=top_model, fold=K_FOLDS,\n", " optimize=\"F1\", choose_better=True,\n", " verbose=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's see the hyperparameters of the chosen model" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Parameters
C8.261
class_weightbalanced
dualFalse
fit_interceptTrue
intercept_scaling1
l1_ratioNone
max_iter100
multi_classauto
n_jobs-1
penaltyl2
random_state142
solverlbfgs
tol0.0001
verbose0
warm_startFalse
\n", "
" ], "text/plain": [ " Parameters\n", "C 8.261\n", "class_weight balanced\n", "dual False\n", "fit_intercept True\n", "intercept_scaling 1\n", "l1_ratio None\n", "max_iter 100\n", "multi_class auto\n", "n_jobs -1\n", "penalty l2\n", "random_state 142\n", "solver lbfgs\n", "tol 0.0001\n", "verbose 0\n", "warm_start False" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_model(tuned_model, plot=\"parameter\")" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "590b1194-08b9-4c9e-9329-9b1efab65302", "tags": [] }, "source": [ "PyCaret also has functions to make ensembles, for this implementation, a bagged model is build." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "cell_id": "66bf4246-2a40-494b-bd2e-69bd8897ff23", "tags": [] }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Accuracy AUC Recall Prec. F1 Kappa MCC
00.77110.86680.84550.55650.67120.50680.5329
10.72480.83320.76820.50140.60680.40920.4312
20.74500.82740.72530.52810.61120.42840.4403
30.74730.83260.74680.53050.62030.43900.4534
40.74610.82650.77680.52770.62850.44620.4654
Mean0.74690.83730.77250.52880.62760.44590.4647
SD0.01470.01500.04060.01740.02310.03290.0360
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "bagged_model = ensemble_model(tuned_model, fold=K_FOLDS)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And now a boosted model." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Accuracy AUC Recall Prec. F1 Kappa MCC
00.77460.86970.85410.56060.67690.51500.5420
10.74140.83650.78970.52120.62800.44230.4647
20.74970.83010.72530.53480.61570.43630.4474
30.75440.83190.75540.53990.62970.45350.4678
40.75090.82610.78540.53350.63540.45650.4762
Mean0.75420.83890.78200.53800.63710.46070.4796
SD0.01110.01580.04290.01280.02090.02810.0325
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "boosted_model = ensemble_model(tuned_model, fold=K_FOLDS,\n", " method=\"Boosting\")" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "282646c1-03c4-4ad2-a39c-cc99f0fafddb", "tags": [] }, "source": [ "The boosted model improved a bit the F1 Score, it's also possible make blended and stacked models with PyCaret, both models are created using the the tuned and boosted models." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "cell_id": "bb52afc0-9e6b-4be8-8e41-c51e0f88317c", "tags": [] }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Accuracy AUC Recall Prec. F1 Kappa MCC
00.77700.00000.84120.56480.67590.51570.5395
10.74140.00000.76820.52190.62150.43580.4546
20.75090.00000.71240.53720.61250.43420.4436
30.75560.00000.74680.54210.62820.45290.4658
40.75800.00000.78110.54330.64080.46710.4846
Mean0.75660.00000.77000.54190.63580.46120.4776
SD0.01170.00000.04250.01380.02210.02980.0338
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "blended_model = blend_models(estimator_list=[tuned_model, boosted_model],\n", " fold=K_FOLDS)" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "a76c2608-fb6d-4ee9-b706-88391ff104cc", "tags": [] }, "source": [ "The best model still is the boosted model.
\n", "Let's plot some metric curves, matrices and see what is the model classifier, starting with the hyperparameters and the used model classifier." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Parameters
algorithmSAMME.R
base_estimator__C8.261
base_estimator__class_weightbalanced
base_estimator__dualFalse
base_estimator__fit_interceptTrue
base_estimator__intercept_scaling1
base_estimator__l1_ratioNone
base_estimator__max_iter100
base_estimator__multi_classauto
base_estimator__n_jobs-1
base_estimator__penaltyl2
base_estimator__random_state142
base_estimator__solverlbfgs
base_estimator__tol0.0001
base_estimator__verbose0
base_estimator__warm_startFalse
base_estimatorLogisticRegression(C=8.261000000000001, class_...
learning_rate1
n_estimators10
random_state142
\n", "
" ], "text/plain": [ " Parameters\n", "algorithm SAMME.R\n", "base_estimator__C 8.261\n", "base_estimator__class_weight balanced\n", "base_estimator__dual False\n", "base_estimator__fit_intercept True\n", "base_estimator__intercept_scaling 1\n", "base_estimator__l1_ratio None\n", "base_estimator__max_iter 100\n", "base_estimator__multi_class auto\n", "base_estimator__n_jobs -1\n", "base_estimator__penalty l2\n", "base_estimator__random_state 142\n", "base_estimator__solver lbfgs\n", "base_estimator__tol 0.0001\n", "base_estimator__verbose 0\n", "base_estimator__warm_start False\n", "base_estimator LogisticRegression(C=8.261000000000001, class_...\n", "learning_rate 1\n", "n_estimators 10\n", "random_state 142" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Model: \n" ] } ], "source": [ "best_model = boosted_model\n", "plot_model(best_model, plot=\"parameter\")\n", "print(f\"Model: {type(best_model)}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's plot the ROC curve, PR Curve, Confusion Matrix and Metrics for each class." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "cell_id": "b112eea9-4394-414c-8aec-00a046bc7782", "scrolled": false, "tags": [] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_model(best_model, plot=\"auc\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The AUC for each class was good: 0.85." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfYAAAFlCAYAAAAZGcpRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAABXm0lEQVR4nO3dd3gU1dvG8e/sbnohBELvgdB7L0EQUalShAAKqCgiKBYEQQURBRF8fyoidqWoFEGkKSgdEZHee+8JkN52d+a8fyysxAQIZdlk83yuy8vszOzMM2dD7p12jqaUUgghhBDCI5jcXYAQQggh7h4JdiGEEMKDSLALIYQQHkSCXQghhPAgEuxCCCGEB5FgF0IIITyIxd0FiNzt9OnTtG7dmoiICOc0pRR9+vTh0UcfvSvb+PjjjyldujSdOnW67jKPPPIIM2bMIDg4+K5s8/7778fLywtfX180TcNqtWIymRg2bBjNmze/K9u4VsWKFdmwYQOrV69m2bJlfPHFF5mWSU9P57PPPmP16tUopTAMgw4dOvDMM8+gadpdr+lG/vzzT0aOHEmBAgX4/vvv8fX1ve11denShbS0NJYsWXLd/di1axcvvvgiK1euvOG6evfuzZkzZwgKCkIphc1mo127djz//PO3Xd/17Ny5k7lz5zJmzBgAdF1n+vTpLFq0CF3XsdlstGzZkhdffBFvb2+GDx9OhQoV6Nev312rYcWKFWzYsIE333yTffv28cILLxAcHEynTp04efIkb7755l3blsg9JNjFHfP19WXBggXO1xcuXKB9+/ZUq1aNSpUq3fH6X3zxxZsuc+3275YPPviA6tWrO18vXbqU119/nT///POub+tmlFIMHDiQsmXLMnv2bHx8fIiNjeXZZ58lJSWFl1566Z7Ws2TJErp168bAgQPvaD07duzAarXi5eXFunXr7sqXpmHDhvHwww8DkJCQQNu2bWncuDF169a943Vf6/Dhw1y4cMH5evTo0cTHxzNt2jSCgoJISUnh1Vdf5Y033mDixIl3ddtXtWrVilatWgGOkG/YsCFjx451ybZE7iHBLu66woULU7p0aY4fP87evXuZO3cuqampBAYGMmPGDH766SdmzpyJYRiEhIQwcuRIwsPDSU5O5t1332Xr1q2YzWYeeOABXn75ZUaMGOE80pk0aRJ//PEHXl5e5M+fn/fe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7+68dBAeHk7JkiU5cOAAQUFBGT7Lixcv3jRAsmrza7d97XavUkoxa9Ys4uPjuf/++wFITU3ln3/+4eWXX860L9fu88SJE9m5cyddu3alYcOG2O3267ZjaGgo7du3588//6RFixaZbs5TSmG327MM5avzevToQcuWLVm/fj3r1q1j8uTJLF26NMOyNWrU4OjRoyQlJTm/xILjfpORI0cyadIk57Tz588TFRVF9+7dqVu3Lg8//DCrVq1yrufqDXF///033bp146uvvrru9OwwDIOPP/6Y8PBwwPEF9Np2yOrzEbmbPO4m7qlmzZqxZMkSoqOjAcc11r59+wLQuHFj5s+fj2EYWK1WBg8ezKZNm5zv3b9/P+3btyc8PJxnn32WJ554gl27dmVYf2RkJPPmzXMeAc2YMYP69evj7e193Zp69uzJggULWLBgwXVvPKpTpw6dOnVi9OjRGIZxW/vx559/MmjQINq2bQs4bhzTdT1b7Va7dm3KlSvHe++9R3p6OuAI3XfffZcSJUoAjhDbvXs34Lix68CBA9dd39Uj8E8//ZRu3boBULZs2Qxf0s6dO0f79u2d67yeyMhIZs6cic1mwzAMfvjhB5o2bXrD96xfv55Lly6xfPlyVq5cycqVK1m3bh1hYWHMnj2bpk2bsn79es6fPw/8e9YGHHfk9+3bl06dOlGgQAH++uuv67ajzWZj/fr11KhRg3LlymGxWPj9998BR+guW7aMJk2aEBkZya+//srly5cBmDdvHiEhIZQuXZoePXqwb98+unTpwjvvvENCQgIxMTGYzWbnl8bChQvToUMHXn/9dZKSkgBISkpi9OjRhISEZPhCuXv3bkJDQxk4cCDNmjVzhrqu63zwwQdMmTKFBx54gDfeeIPy5ctz6NCh607PjmbNmjF16lSUUlitVp577jnnWSThmeSIXdxTzZo145lnnuGpp55C0zQCAwOZPHkymqbx/PPPM3bsWB555BF0Xadt27Y8+OCDzkecKlWqRJs2bejatSv+/v74+vpmepzn0Ucf5dy5c3Tr1g3DMChdujQffPDBXan9lVdeoU2bNsyZM4cePXrc8n7ExMQwaNAg/P39CQwMpH79+pw8eTLb2580aRIffvghXbp0wWw2YxgGnTp1cj4+9dxzzzF8+HDWrFlDuXLlbnqKtVu3bs6wAPD29mbKlCmMHTuW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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_model(best_model, plot=\"pr\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The PR curve got an average precision around 0.7, which is good." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAFkCAYAAADv13iSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAr5klEQVR4nO3dd3xOd//H8Xd2EDWClCBUEUSQu0ntNtFy125pUYJqqdv6VVE71KiatVpK3RQ1a+9ZNapG1ayWao1YISEiiazr/P7wcN1S0lQryRev5191znXO+ZxLbq/7nGvEwbIsSwAAwEiOWT0AAABIG6EGAMBghBoAAIMRagAADEaoAQAwGKEGAMBghBpGSkpKUvXq1fXOO++k+Zj169crNDQ03X2FhISoTp06atSokRo0aKB69epp4cKFD3Ncu23btmnChAn2PyckJGj8+PFq3Lix/fjTpk3TnU9FhoaGav369Q91hvnz52vatGmSpJ07dyo4OFhNmzbVvHnz7Mv/iVOnTqlr165q0KCBGjZsqFatWmn//v3/aJ93z3nr1q0H3r5///767rvv/tEMdyxdulSlS5fWxIkTUy23LEu1atVS/fr1093H4sWL9dVXX9133d1/P8Bf4ZzVAwD3s2nTJvn6+uro0aM6deqUSpQo8Y/2N2bMGJUvX16SdPHiRdWpU0c1a9ZUwYIFH8a4dkeOHFF0dLSk2/+wd+rUScWLF9fChQvl5uama9eu6d1331VcXJzee++9h3rsO1q0aGH/7zVr1uj1119Xp06dHsq+f/vtN7Vp00YjRoxQjRo1JEm7d+9Wx44dNX/+fJUsWfJv7fefzjl8+PC/tV1aChUqpJUrV6pbt272Zfv379etW7eULVu2dLf/4Ycf0nwu7v77Af4KQg0jzZ8/X3Xr1lXRokX15ZdfasiQIZKkCRMmaNWqVcqdO7d8fHzsj//99981ZMgQxcbG6sqVK/L19dX48ePl5uZ2z76jo6OVLVs2Zc+eXdLtf4BHjRql+Ph4ubi46L333lPNmjUlSZ9++qnWrFkjJycnFS9eXAMHDlT+/Pm1ceNGTZkyRQ4ODnJyctIHH3wgV1dXLViwQCkpKcqZM6eqVaum3377TdOmTZOTk5MkKU+ePBo1apTOnz9/z1xTp07Vli1bdOvWLcXHx6t37956+eWXderUKfXv31+JiYmyLEtNmzZVy5Yt01w+adIkXbt2TYUKFdKWLVvk5uammJgYZc+eXdeuXVNYWJguX76sIUOG6OLFi0pKSlK9evXUsWNHhYeHq2XLlipRooTOnz+vOXPmqECBAvYZp0+friZNmtgjLUlVqlTR2LFj5e7uLknavHmzJk+eLJvNphw5cqhv377y9/fXpEmTdP78eV25ckXnz5+Xl5eXRo8erZUrV6Y5pyT7+YSFhd33eQ8MDFRoaKhatmypf//73w98/LvP745SpUrp4sWLOnDggAICAiRJy5YtU8OGDbVjxw5J0tWrVxUWFqbIyEhduXJF3t7eGj9+vA4cOKCtW7dq165dcnd3V1RUlA4ePKiIiAiVLl1aPj4+unbtmjp16qTGjRtr+PDheuGFFzR+/HgdOnRIM2bMkKMjNztxFwswzMmTJ61y5cpZUVFR1qFDhyx/f38rKirK2rRpk1W3bl0rJibGSkpKsjp06GC1atXKsizL+vjjj63ly5dblmVZiYmJVv369a3169dblmVZwcHBVu3ata2GDRtaderUsXx9fa1x48ZZlmVZUVFRVpUqVayDBw9almVZJ06csIKCgqyzZ89aX3/9tdWsWTMrNjbWsizLmjhxotWuXTvLsiyrVq1a1o8//mhZlmXt2LHDmjRpkv0xH374oWVZljVjxgyrW7duf3qurVq1statW2eFh4dboaGhVnx8vGVZlrV69Wqrfv36lmVZVt++fa3PP//csizLioiIsN577z0rJSUlzeV3z9C7d2/riy++uGe20NBQa8uWLZZlWdatW7es0NBQa82aNda5c+esUqVKWfv27bvvvPXr17e2bduW5vn8+uuvVtWqVa2zZ89almVZ3333nVWtWjUrJibGmjhxolWrVi0rJibGsizLevfdd60JEyb86Zx//HNaz/ud5/HvHv9uS5YssTp06GDNmDHDCgsLsyzLsuLi4qzatWtbu3btsurVq2dZlmXNmjXL/vzbbDbrnXfesWbMmHHf86lTp46VlJR0z/ns2LHDqlGjhrVx40brhRdesCIjI9N8bvHk4ooaxpk/f76Cg4OVJ08e5cmTR4ULF9aiRYsUERGhl19+WR4eHpKkJk2aaM6cOZKkXr16adeuXZo+fbpOnz6tiIgIxcXF2fd5963vc+fOqW3btipZsqRy5sypokWLqkKFCpKkkiVLKiAgQHv37tX27dv12muv2a+8W7duralTpyoxMVH16tVTly5d9MILL6hatWpq3779Pefh6Ohofy06Pd7e3ho1apRWrVqlM2fO6NChQ4qNjZUkvfzyy+rdu7cOHz6sKlWqaMCAAXJ0dExzeXri4uK0b98+RUdH219Pj4uL088//yx/f385OzurYsWK993WwcFBNpstzX1///33qly5sooUKSLp9tV23rx5dfToUUlSUFCQ/e+vbNmy9pcJ/qr0nveHefwGDRqoUaNG6t+/vzZt2qSQkBD7nRFJatOmjfbv36+ZM2fq9OnTOnnypP3n6I8qVqwoZ+d7/7mtXr266tatq65du2ru3LnKmzfvAz0feDJwfwVGiYuL04oVK/TDDz8oJCREISEhunLliubOnavk5ORU4bv7H833339fixYtkre3t9q2baty5cqlGckiRYooJCRE+/btU0pKihwcHFKttyxLycnJstlsqdbZbDYlJydLkrp376558+bJz89PS5cuVcuWLe85ToUKFXTkyBGlpKSkWn748GH16tUr1bJjx46pWbNmunnzpqpVq5bqTXTBwcHasGGDXnnlFR0/flwNGjTQpUuX0lyeHpvNJsuytGDBAq1YsUIrVqzQwoUL9e6770qSXF1d7xsV6XZwDh48eM/yyZMna+XKlfc8Z9L/nk9J9tvj0u3o3+/v6I/Lk5KS7P+d3vP+MI5/R/78+VW2bFlt375dy5cv16uvvppq/ejRozVhwgTlyZNHzZo1U7Vq1dLc353/s/dHlmXp1KlTypcv332fV0Ai1DDMndefd+zYoa1bt2rr1q3avHmz4uLi9Nxzz2n9+vW6ceOGbDabVqxYYd9u586d6ty5s+rWrStJOnTo0D2BvOPOFaW/v78qVqyo3377TYcPH5YknTx5Uvv27VNQUJBq1KihJUuW2K/M58yZo8DAQDk6OiokJETx8fFq0aKFBg0apF9++UWJiYlycnKyR6FSpUp65plnNGLECCUkJEi6/brmsGHDVLhw4VQz7du3T35+fnrrrbcUFBSkLVu22Ofv0aOH1q5dq3r16mnQoEHy8PDQ2bNn01yeHg8PD1WsWFEzZ86UJN24cUMtWrTQli1b0t327bff1uLFi7Vz5077su3bt2vOnDny9fVVlSpVtHPnTp07d07S7TeaXbx4Mc0rzfvJkyePjh07JsuydPPmTX3zzTeSpOTk5DSf9zsexvHv1rhxY82cOVMxMTEqVapUqnU7d+5UmzZt1LhxY3l6euq7776z/53d/XPwZ2bNmqW4uDgtWbJEs2bNsv8cAnfj1jeMMn/+fL311luprpafeuophYaGatasWWrSpImaNGmip556Sr6+vrp27Zqk21danTt3Vvbs2eXh4aHAwMBU0erZs6fc3d3l4OCg+Ph4vfLKK2rSpImk229QGzp0qG7duiUHBweNGDFCxYsXl4+Pjy5evKjXX39dNptNPj4+GjNmjJydndWvXz/17NlTzs7OcnBw0EcffSRXV1dVrlxZPXv21NChQzVw4EBNnDhRn3zyiV577TU5OTnJZrOpcePGevvtt1Odd/369bVx40a98sorstlsCg4OVnR0tG7evKlOnTqpf//+WrhwoZycnPTSSy8pMDBQnp6e912+Z8+edJ/nMWPGaOjQoWrQoIESExNVv359NWzYUOHh4X+6nY+Pj6ZOnarx48dr5MiRstlsyps3r6ZMmWIP2aBBg9SlSxelpKTI3d1dU6dOVc6cOf/aD4Bkf8NW7dq15eXlpaCgIFmW9afP+x3PPvvsPz7+3V566SUNGjRI3bt3v2dd586dNWrUKE2YMEEuLi4KCAiw/8zVrFlTH3/88Z/u+6efftLUqVP19ddfy8vLS/369VOPHj20bNky++15QJIcrL/6IhoAAMh03PoGAMBghBoAAIMRagAADGbcm8lsNptiY2Pl4uJyz8csAAB43FiWpaSkJOXIkeO+34VgXKhjY2N14sSJrB4DAIBMVapUqft+QsG4ULu4uEiS3p7SRxE3IrN4GuDJ8fuc3foxMv2PdgF4uMrlrKQTJ07Y+/dHxoX6zu3uiBuRungtIounAZ4cbm5ukjOf1gQy253vAkjr5V7eTAYAgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAA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Qg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYjFADAGAwQg0AgMGcs3qAP7IsS5KUkpSSxZMATxYvLy+52FyzegzgiZMvXz5J/+vfHzlYaa3JIjExMTpx4kRWjwEAQKYqVaqUcubMec9y40Jts9kUGxsrFxcXOTg4ZPU4AABkKMuylJSUpBw5csjR8d5XpI0LNQAA+B/eTAYAgMEINQAABiPUAAAYjFADAGAwQg0AgMEINQAABiPUAAAYzLivEMWj4+DBg9q/f78uXbqkhIQEZcuWTV5eXgoMDJS/v39WjwcAjwW+8AQPLDIyUt26ddMPP/wgb29vFShQQK6urkpMTFRERITOnz+v559/XhMmTFDu3LmzelwAeKQRajywbt266fLlyxo3bpy8vb3vWR8eHq4ePXqocOHCGjt2bBZMCACPD0KNB1apUiXNmzdPZcqUSfMxx44dU9u2bbVv375MnAx4/A0cOPAvP3bo0KEZOAkyC69R44HlyJFD169f/9PHREVFydmZHy/gYXNwcNCiRYtUqFCh+97RuvtxeDzwLyke2KuvvqrevXvr/fffV1BQkLy8vOTk5CSbzaYrV65o7969GjlypBo3bpzVowKPnSFDhsjT01MLFy7U+PHj5enpmdUjIYNx6xsPzGazaeLEiZozZ47i4uIkSY6OjrLZbJKk7Nmz680339R7770nJyenrBwVeGy1bt1aRYsW1bBhw7J6FGQwQo2/LSkpScePH9fly5cVHx8vd3d3Pf300/L19ZWrq2tWjwc81s6dO6eDBw+qQYMGWT0KMhihBgDAYHwzGQAABiPUAAAYjFADmSw8PFx+fn5q1KiRGjdurHr16umtt97SpUuX/vY+ly5dqj59+kiS2rdvr8uXL6f52IkTJ2r//v0PtP/SpUvfd/lvv/2mjh07qkGDBmrQoIF69OihqKgoSdKkSZM0adKkBzoOgHsRaiALFChQQCtWrNDy5cu1Zs0alS5dWqNGjXoo+54+fbq8vLzSXL9v3z6lpKT84+NcvnxZrVu31htvvKFVq1Zp5cqVKlmypLp06fKP9w3gf/gcNWCA559/XuPGjZMkhYSEyN/fX8ePH9e8efO0Y8cOffnll7LZbCpXrpwGDRokNzc3LV++XFOmTJGHh4e8vb2VPXt2+/azZ89W/vz59eGHH+qHH36Qi4uLOnXqpMTERB09elQDBgzQ5MmT5e7ursGDB+v69etyd3fXwIEDVbZsWYWHh6tXr16Ki4tThQoV7jvz/PnzVblyZYWEhEi6/QUb7du3V+HChZWcnJzqsXPnztWKFSsUHx8vFxcXjR07Vs8884xGjhypXbt2ydHRUS+99JK6dOmi3bt3a/To0ZKkXLlyaezYscqbN29GPfWA8biiBrJYUlKSNmzYoIoVK9qX1axZUxs2bFBUVJQWLVqkBQsWaMWKFfL09NSMGTN0+fJljRkzRl999ZUWLlyo2NjYe/Z753Pu69at08yZM/Xpp5+qbt268vPz07Bhw1S6dGn17t1bvXr10rJlyzR06FB1795d0u2vnnzttde0YsUKBQQE3Hfu48ePq1y5cqmWOTk5qX79+qm+le7mzZvavHmz5syZo9WrV+vFF1/UV199pfPnz2v79u1auXKl5s+fr19//VUJCQn67LPPNHjwYC1dulRVq1bVTz/99BCeZeDRxRU1kAUiIiLUqFEjSVJiYqL8/f3Vo0cP+/o7V7F79uzRmTNn9MYbb0i6HfWyZcvqxx9/VKVKlZQvXz5JUoMGDfT999+nOsa+ffv0xhtvyNHRUfnz59eaNWtSrY+NjdXRo0fVt29f+7K4uDhdu3ZNe/futf9ClYYNG2rAgAH3nIODg8Nf+ry8h4eHxo4dqzVr1uj06dPasWOHypQpIy8vL7m5ual58+YKDg5Wz5495ebmplq1aqlLly566aWXVKtWLVWrVi3dYwCPM0INZIE7r1Gnxc3NTZKUkpKiV155xR7K2NhYpaSkaPfu3br7KxDu973qzs7Oqb7v+cyZMypYsKD9zzabTa6urqnmuHTpkv1Xk97Zv4ODgxwd77355ufnp6NHj6ZaZrPZ1K1bNw0ePNi+7OLFiwoNDVWrVq1Us2ZN5cuXT8ePH5ezs7MWL16svXv3avv27WrevLnmzJmjtm3bKjg4WN98841Gjx6tw4cP6z//+U+azxXwuOPWN2Cw559/Xps2bVJkZKQsy9LgwYP15Zdf6l//+pcOHjyoy5cvy2azae3atfdsGxgYqLVr18qyLEVGRqpVq1ZKTEyUk5OTUlJSlDNnThUrVswe6l27dqlly5aSpKpVq2rlypWSpI0bNyohIeGe/Tdr1kzffvutvv32W0m3w/7ZZ58pMjLSfqUvSUeOHJGPj4/atm2r8uXLa/PmzUpJSdFPP/2kVq1aKTAwUL1791aJEiX0+++/6/XXX1dsbKzatm2rtm3bcusbTzyuqAGD+fr6qkuXLmrTpo1sNpvKlCmjDh06yM3NTQMGDFDbtm2VLVs2Pfvss/ds++abb2rYsGFq2LChpNu/HtHDw0M1atTQoEGDNHLkSI0ePVqDBw/WF198IRcXF33yySdycHBQWFiYevXqpYULF8rPz085cuS4Z//58+fX9OnTNWrUKI0ZM0YpKSkqW7asPv3001SPq1atmubPn6+6devKsiwFBgbq5MmTKlu2rCpWrKj69esrW7ZsCggIUM2aNZUtWzb16dNHzs7Oyp49O99ljSceXyEKAIDBuPUNAIDBCDUAAAYj1AAAGIxQAwBgMEINAIDBCDUAAAYj1AAAGOz/AZY/PXRbPzTIAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_model(best_model, plot=\"confusion_matrix\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Confusion Matrix shows that the churned clients have been classified as not churn in 50% of the predictions" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAggAAAGACAYAAADI95pLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAAA/GklEQVR4nO3dd3RU1d7G8e+UFEICSSD0XgJK6KAiRqRJDUSDBhQURRAFEQmKFRQQIiBIERD0AqK0i7w0r4iAXBBB6UXpPXRIApn0zJz3D2QgHprXhEjyfNZiLU7b8zuZnMwze+85YzEMw0BERETkGtacLkBERET+eRQQRERExEQBQUREREwUEERERMREAUFERERMFBBERETERAFB3NLT03nooYd44YUXbrjPsmXL6NKlyy3batKkCS1atKB9+/aEhYXRpk0b5s6dm5Xluq1evZqxY8e6l1NTU/nkk08IDw93P/6UKVO48oneLl26sGzZsiytYfbs2UyZMgWAn376icaNG9OhQwdmzZrlXv93HDx4kFdeeYWwsDDatWtH586d2bRpEwAxMTHUrl37bz/Gn3Xv3p0DBw4AMGjQIJo0acKYMWMyrf+rduzYwcCBAwHYuXMnffr0ybJ6u3TpQpMmTWjfvr37eW/RogULFy7Msse4leeff57Y2Ng79ngi2cme0wXIP8cPP/xA1apV2bVrFwcPHqRixYp/q71Ro0ZRvXp1AE6dOkWLFi14+OGHKV68eFaU67Zz504uXrwIgGEYvPzyy5QvX565c+fi5eVFXFwcL774IklJSfTt2zdLH/uKTp06uf//7bff8sQTT/Dyyy9nSduHDh3i2WefZfjw4YSGhgKwfv16evbsyezZs8mXL1+WPM6fTZ061f3/uXPnsnr1aooVK/a32jxw4ABnzpwBoHr16owbN+5vtfdnb7zxBi1btnQv79y5k06dOtGsWTN8fX2z9LGuZ926ddn+GCJ3igKCuM2ePZvWrVtTpkwZZsyYweDBgwEYO3YsS5Yswd/fn7Jly7r3P3z4MIMHDyYxMZFz585RtWpVPvnkE7y8vExtX7x4kXz58uHj4wPApk2bGDFiBMnJyXh4eNC3b18efvhhAD799FO+/fZbbDYb5cuX57333iMoKIjly5czadIkLBYLNpuNN954A09PT+bMmYPT6cTPz4+GDRty6NAhpkyZgs1m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nIwaNYrJkydTpkwZpkyZQr9+/W66/lZsNlum5yolJYWDBw+yevVq93k1bdo00/yMG7nZ8w64w8CVfW4VAgMDA/nkk0+YNWsWy5cvd7fZoEED989/0aJFzJs3j8qVK7vP59rHt1qtN/1dBdxBViQ3UkAQ9/yCtWvXsmrVKlatWsWKFStISkqiXr16LFu2jEuXLuFyuVi0aJH7uJ9++olevXrRunVrALZv3256Yb7iyjvoGjVqUKtWLQ4dOsSOHTsA2L9/Pxs3buS+++4jNDSUb775xt0TMXPmTOrXr4/VaqVJkyYkJyfTqVMnBg0axN69e0lLS8Nms7n/YNeuXZsKFSowfPhwUlNTgcvj8kOHDqVUqVKZatq4cSMhISE899xz3HfffaxcudJdf1RUFP/5z39o06YNgwYNwtfXl2PHjt1w/a34+vpSq1Ytpk2bBsClS5fo1KkTK1euvOWx3bp149///jc//fSTe92aNWuYOXMmVatWzbTvTz/9xLPPPkt4eDiFChXi559/xul0EhsbS6NGjfD396dr16707duXnTt33nD97bj//vtZv349Z8+eBWDOnDmMHDmSdevW0bhxY5566ilCQkJYsWKF++d67XN1rYceeoivvvoKwzBIS0tj3rx5PPjgg7dVx42ULl2anj178uGHH5KUlESDBg1Yt24dBw8eBOC///0v7dq1IyUlBYCVK1eSkJCAy+Vi3rx5NG7cmAoVKmC3290h48yZM3z//fc3rO1G5ydyN9IQgzB79myee+65TO+gChQoQJcuXZg+fToRERFERERQoEABqlatSlxcHHD5HX2vXr3w8fHB19eX+vXrZ3qx7N+/P97e3lgsFpKTk2nVqhURERHA5YmPQ4YMISUlBYvFwvDhwylfvjxly5bl1KlTPPHEE7hcLsqWLcuoUaOw2+28/fbb9O/fH7vdjsViYdiwYXh6evLAAw/Qv39/hgwZwnvvvce4ceMYM2YMjz/+ODabDZfLRXh4ON26dct03m3btmX58uW0atUKl8tF48aNuXjxIg6Hg5dffpl33nmHuXPnYrPZaNasGfXr16dQoULXXf/LL7/c8uc8atQohgwZQlhYGGlpabRt25Z27doRExNz0+PKli3L5MmT+eSTT/joo49wuVwEBgYyadIkgoODMx3fq1cvRowYwdixY/Hw8KBOnTocO3aMwMBAXnrpJbp27Yq3tzc2m42hQ4fecP3tqFKlCq+//rq75yUoKIhhw4bhcDiIiooiLCyMjIwMGjZsyPLly3G5XNSqVYtPP/2U3r17Z/q47LvvvsvQoUMJCwsjPT2d0NBQevbseVt13Ey3bt1YuHAhkyZNIioqisGDB9OvXz8Mw8ButzNp0iT38EfhwoXp3r07cXFx1K9fn549e+Lh4cHEiRMZOnQo48ePx+l00qtXLx544IHrPuctW7akS5cujB8/nuDg4L9dv0hOshi3O2ArIpJLXfkUypV7NIiIhhhERETkOtSDICIiIibqQRAREckltm/fft3b4a9atYqIiAgiIyOZN2/ebbWlSYoiIiK5wNSpU1m8eLHp9uvp6ekMHz6c+fPnky9fPjp16kTjxo0JCgq6aXtZGhBcLheJiYl4eHiYPjssIiLyT2MYBunp6eTPn/+2bnr2d2VkZNzw4+C3YrPZbni/FIAyZcowfvx43njjjUzrDx48SJkyZShYsCAAdevWZdOmTbRq1eqmj5elASExMZF9+/ZlZZMiIiLZLjg4GD8/v2x9jIyMDDauWYdnwf/ti8NsNhshISE3DAktWrS47semHQ5HpnPLnz8/Dofjlo+XpQHBw8MDgEpbx+KZejErm5ZsYH1hHqcf+Hs3o5E7o9iGn3F2fzSny5DbZJu6HONwdE6XIbchvWQ/9u3b5379yk5OpxPPgr6s6/YBKWcv/KVjvYsUouEXg3A6nTftRbgeX19f923k4fKb+dsJQ1kaEK4MK3imXsQrVd+J/k9n9fLC9sdd8OSfzcvLC+fF8zldhtwmm5cXhjXp1jtKjrP88U2fd3JYPOXsBZJP3bnruWLFihw9epT4+Hh8fHzYtGmT6cZx16NJiiIiIrnQkiVLSEpKIjIykjfffJNu3bphGAYREREULVr0lscrIIiIiOQSV76JFyAsLMy9/soX8f0Vug+CiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiT2nCxAREclL6gPGXzzGkh2F3IJ6EERERMREAUFERERMFBBERETERAFBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERETERAFBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERETERAFBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERETERAFBRERETBQQRERExEQBQUREREwUEERERHIBl8vFwIEDiYyMpEuXLhw9ejTT9sWLF/PYY48RERHBrFmzbtmePbsKFRERkTtnxYoVpKWlMXfuXLZt20Z0dDSTJk1ybx8xYgRLly7Fx8eHNm3a0KZNGwoWLHjD9hQQREREcoHNmzcTGhoKQK1atdi1a1em7VWqVCEhIQG73Y5hGFgslpu2p4AgIiKSCzgcDnx9fd3LNpuNjIwM7PbLL/WVK1cmIiKCfPny0bx5cwoUKHDT9jQHQUREJBfw9fUlMTHRvexyudzhYM+ePaxevZqVK1eyatUqYmNj+e67727angKCiIhILlCnTh3WrFkDwLZt2wgODnZv8/Pzw9vbGy8vL2w2G4GBgVy6dOmm7WmIQUREJBdo3rw569ato2PHjhiGwbBhw1iyZAlJSUlERkYSGRnJU089hYeHB2XKlOGxxx67aXsKCCIiIrmA1Wpl8ODBmdZVrFjR/f9OnTrRqVOn228vyyoTERGRXEMBQUREREw0xCAiInIHVSiags2S9JeOcRZJ4Xw21XMj6kEQEREREwUEERERMVFAEBEREZM8Nwfh299jeec/R0jNMKhe3IfPIytTwDvzj6H/4kPM336BQJ/L64OD8jHnmaqZ9omYvpsSBTwZ//jlj5BsPJZAv0WHSExz4XQZvN6kFJ3rFrkzJ5WLeTdtQoE338Ti5Un67t3ERb2O4XC4t/t0iMC3R3f3stXPD1vx4pyqdx/+w4ZiL1fOvc1eujSpG37hwnPP41GzJv4fDMLi44PFaiNh4kSSFvzfnTy1XOfbMwm8+/tZUl0G1Qt4MbVWCQp42DLts/NSCq/uPM2ldBc2C0ysWZy6/vm4mO6k+7aT7HWk4TIMupT2543Khfk9IZUum2PcxzsN2JWQyr/rleKxEje/Taz8dVHRq5i/bC+BBfMBUKV8AF9/HEZU9I98v/YwGU4X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Bf7+/pQtW5ZKlSrh4eFBaGhoph6G61FAEBERyQXq1KnDmjVrANi2bRvBwcHubaVLlyYxMZGjR48CsGnTJipXrnzT9jQHQUREJBdo3rw569ato2PHjhiGwbBhw1iyZAlJSUlERkby4YcfEhUVhWEY1K5dm0ceeeSm7SkgiIiI5AJWq5XBgwdnWlexYkX3/xs0aMD8+fNvv70sq0xERERyDQUEERERMVFAEBERERMFBBERETFRQBARERETBQQRERExUUAQEREREwUEERERMVFAEBERERMFBBERETHRrZZFRETuIMv9/lhSXX/tGC//7CnmJtSDICIiIiYKCCIiImKigCAiIiImCggiIiJiooAgIiIiJgoIIiIiYqKAICIiIiYKCCIiImKigCAiIiImCggiIiJiooAgIiIiJgoIIiIiYqKAICIiIiYKCCIiImKigCAiIiIm9uxo1PrCPKxeXtnRtGSxUieO53QJcptsi37L6RLkL7AEf5TTJcjtSE3N6Qr+sdSDICIiIibZ0oMwtnwTkk+dz46mJQsNMvYSU7J0Tpcht6HUieOsslTJ6TLkNjXRtXXXCDp0IKdL+MdSD4KIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIkCgoiIiJgoIIiIiIiJAoKIiIiYKCCIiIiIiQKCiIiImCggiIiIiIk9pwsQERHJSyzlC2Bxuv7aMbYC2VTNjakHQUREREwUEERERMREAUFERERMFBBERETERAFBRERETBQQRERExEQBQUREREwUEERERMREAUFERERMFBBERERyAZfLxcCBA4mMjKRLly4cPXr0uvu99957jBo16pbtKSCIiIjkAitWrCAtLY25c+cSFRVFdHS0aZ85c+awb9++22pPAUFERCQX2Lx5M6GhoQDUqlWLXbt2Zdq+detWtm/fTmRk5G21p4AgIiKSCzgcDnx9fd3LNpuNjIwMAM6ePcuECRMYOHDgbbenb3MUERHJBXx9fUlMTHQvu1wu7PbLL/PLli0jLi6OHj16cO7cOVJSUqhQoQKPP/74DdtTQBAREckF6tSpw48//kjr1q3Ztm0bwcHB7m3PPPMMzzzzDAALFizg0KFDNw0HoIAgIiKSKzRv3px169bRsWNHDMNg2LBhLFmyhKSk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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_model(best_model, plot=\"class_report\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The model has done a good work on the metrics for the class 0 (Not Churned) but got a Precision close to 0.5 for class 1 (Churned)." ] }, { "cell_type": "markdown", "metadata": { "cell_id": "c1d1172b-74f5-445e-bfa7-d06b05834269", "tags": [] }, "source": [ "# 6. Prediction on Test Data" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "3c3a666c-a86e-4315-ba38-c659e60f9a18", "tags": [] }, "source": [ "The test is made with the remaining 30% of data that PyCaret got on the setup, it's important to see that the model is not overfitting." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "cell_id": "49f5255a-960e-4245-a7bd-6b86c5018e91", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ModelAccuracyAUCRecallPrec.F1KappaMCC
0Ada Boost Classifier0.75650.85370.7720.54210.6370.46210.4784
\n", "
" ], "text/plain": [ " Model Accuracy AUC Recall Prec. F1 Kappa \\\n", "0 Ada Boost Classifier 0.7565 0.8537 0.772 0.5421 0.637 0.4621 \n", "\n", " MCC \n", "0 0.4784 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "predict_model(best_model);" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "80c031f4-190f-4991-a95c-1a00055a80a6", "tags": [] }, "source": [ "As everything is right with the model, it's time to finalize it fitting all the data." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "cell_id": "d0909c9b-9391-4ad0-bd22-f9a5bbcd679f", "tags": [] }, "outputs": [], "source": [ "final_model = finalize_model(best_model)" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "4d403f19-594d-40d7-92be-84094ccac0ba", "tags": [] }, "source": [ "# 7. Prediction on Unseen Data" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "949f3cc4-95ff-45c2-ba2c-e9fdaa356aa6", "tags": [] }, "source": [ "The remaining 10% data is used to make predictions with unseen samples, what could include some outliers, it's how real world data works.
\n", "Just Kappa Score is not showed, as the focus is the F1 Score, as Precision and Recall are importants to get False Positives and False Negatives.
\n", "It's not necessary to make any transformation on the data, PyCaret do this." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "cell_id": "f2774b74-956e-4869-a3fd-3b041c16f22e", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Accuracy AUC Recall Precision F1 Score\n", " 0.767045 0.789801 0.833333 0.507246 0.630631\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc4AAAFoCAYAAADeoxtDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAyn0lEQVR4nO3de1iUdf7/8ecwMGiAkqcyFVASTQ1FycOKJiqhlqamprjYauVqWWpaiHkgD5HVslvkgTW39osHwmDN3c1cJcxSs2JTPJGGZ02j0hUwAWF+f/RzVjYEBhlvB1+P65pL5565P/d7Ri5efg73fZusVqsVERERqRQXowsQERFxJgpOEREROyg4RURE7KDgFBERsYOCU0RExA4KThERETsoOGuQ3r1706pVK9ujbdu29OnThz//+c/VepxRo0YRHx8PwIwZM5g+fXqF+1itVtasWUNJSUmZr8fHxzNq1KgyX+vZsyepqalVL9hA69ev59FHHyUoKIiQkBCee+45jh8/Xm3tHzhwgD59+tC+fXs++eSTKreTmppKz549q62uq0VGRtKqVSvef//9X712+PBhWrVqdc1/+/9V0c8RQKtWrdi+fXuV6xWpiKvRBUj1mjFjBg899BAAly9f5vPPP+fFF1+kUaNGDB48uNqP9+KLL1bqfV9++SUxMTEMHz4cF5db4/9rixYtIjU1lalTp9K1a1dyc3NZvHgxERERrF27lsaNG1/3MeLj4/Hz8+Ovf/0rDRo0qHI7AwYMoFevXtddz7W4ubmRnp7OsGHDSm3fvHkzJpOp0u1U5ufos88+o27dutdVr0h5bo3fYLcQT09PGjZsSMOGDWncuDFDhgyhW7du/Otf/3LI8by8vPDy8qrwfbfadTa++uor3nnnHd566y1GjhyJn58f9957L2+++SYeHh4sW7asWo6Tm5tLu3btaNq0KbVq1apyO7Vq1aJevXrVUlNZgoOD2b59OwUFBaW2b968mQ4dOlS6ncr8HDVs2BCLxWJviSKVpuC8Bbi6utp+kURGRjJv3jzCwsLo0aMHP/30E2fOnOGpp56iQ4cO9OrVi9dff53CwkLb/ps2bSI8PJwOHTqwYMGCUr+8/neo9p///CcPPvgg7du3Z9iwYXz99decPHmSMWPGANC2bVt27txZ5c8yY8YMFixYwHPPPUeHDh0IDw8vNYy7c+dOhg4dSmBgIL169SIhIcH2WmFhIQsXLqRr16506dKFyZMn88MPP9heL+97SE1NZdSoUbz11lt07dqVkJAQFi5ceM0hw3Xr1hEYGMh9991XarvFYuGNN95gwoQJtm2pqakMGDCAwMBAhg4dWur76d27NytXrmTkyJG27zQzM9P22hdffMGyZcvo3bs3J0+epFWrVhw7dsy2/9VD4EVFRcydO5du3brRvn17xo4dy+HDh201XD1Um52dzeOPP07Hjh0JCQkhPj7e9lnj4+OZOnUq8+bNo1OnToSGhpb6nsvSvn17PDw8+Pzzz23bvv/+e44ePUqXLl1KvTc9PZ0hQ4Zw77330qlTJ6ZMmUJeXl6ZP0czZswgKiqKwYMH06VLF7755hvbUG12djbt2rVj7dq1ts8/aNAgoqOjy61VpCIKzhqsqKiIf/3rX2zbto3evXvbtqemphIbG8uSJUu4/fbbefrpp6lbty4pKSm8/vrrbNmyhbi4OAC+/fZbpkyZwqhRo0hJSaGwsJCvv/66zOPt2LGDF154gYiICNavX0+XLl34/e9/T926dW1zolu3biUoKOi6PldSUhL33HMPqamphISEEBMTw/nz5ykuLubZZ58lNDSUDz/8kDlz5rB48WI+/fRTAOLi4ti1axcJCQkkJiZitVr5/e9/j9VqxWq1lvs9AOzZs4fs7GxWrVrFlClTWLlypa3t/5WVlcW9995b5mutW7e2DdOmpqYyb948xo8fzwcffED37t0ZP348p0+ftr3/rbfe4oknnuC9997D3d2d+fPnA/D+++8TFBTEY489Vub84f9atWoV27ZtIyEhgfXr1+Ph4VFmiPz0009ERETQqFEj1q5dS0xMDKtWreIvf/mL7T2bNm3CbDazdu1aHn30UeLi4vj222/LPX5oaChpaWm25x9//DE9evTA1fW/M0YnTpzgmWeeYeTIkWzYsIE33niDzz//nDVr1tC4ceMyf47Wr1/P008/zfLly2nZsqWtLX9/fyZMmEBcXBwXLlxg+fLlnDt3TsEp101znDXMvHnzePnllwG4dOkStWrV4rHHHmPQoEG29/Ts2ZPg4GDgl7A7efIkycnJmM1mAObMmcO4ceOYPn06KSkpdOzYkd/97ncAzJ49m48//rjMY69Zs4b+/fszevRoAKZNm4bVaiU3N9c251S/fv1SvyirIiAggCeffBKAqVOnsnLlSg4dOkTLli05f/489evXp2nTpjRt2pR3332XZs2a8fPPP7Ny5UqSk5Np06YNAK+++ipdunQhIyODoqKicr8H+GXOeN68eXh5eeHv78+qVavYs2cP999//69qzM3NxdPTs8LPkpiYyOjRo23zz9OmTeOLL74gMTGRqKgoAAYPHkzfvn0BGDduHJMmTQKgXr16uLm5Ubt2berVq8fFixfLPdbJkyepVasWTZs2pV69esTExHD06NFfve8f//gH7u7uzJs3Dzc3N/z9/cnJyeGNN97giSeeAH4Zop8xYwZms5kJEybwzjvvsHfvXu6+++5rHr9Pnz7MmTPH9nzz5s0MGzaMQ4cO2bYVFxfz4osv8uijjwLQtGlTfvOb3/Dtt99iNpvL/Dm65557CAsLK/OY48ePZ8OGDcyaNYv09HTi4+OpU6dOud+TSEUUnDXMpEmT6NevHwDu7u40bNjQFgRXNGnSxPb37OxsLly4YAtS+GUeqaioiNOnT5OdnU2rVq1sr7m5uZV6frXs7GyGDx9ue+7i4sILL7wA/NKTKI+rq+s1569KSkpKhW2zZs1sf78STpcvX8bb25vx48fz0ksvsXTpUkJDQxk0aBANGzbk4MGDFBUV2UL9ioKCAo4cOUJBQUG53wPA7bffXmo+19PTk8uXL5dZ8+23386FCxfK/czwy3c2ceLEUts6dOhgG0It6/OWlJRQXFz8q3/Xivz2t79l8+bN9OjRg44dO9KnTx8eeeSRMmtq06YNbm5utm1BQUGcO3eOn376CfjlZ+jq43t4eFBUVFTu8bt160Zubi579+7Fz8+PXbt28cYbb5QKTj8/PywWC0uXLuXQoUMcOnSIb7/9lgcffPCa7TZt2vSar1ksFl566SVGjx5Nv379HLoASm4dCs4apl69evj6+pb7nqsXTly+fBlfX98y56juvPPOMve/+hdqZbZXRp06dcjLy/vV9is91qt7CWUd50roTps2jSFDhpCWlkZ6ejqRkZEsWLDA1stMTEz81WKmevXqkZKSUuH3UN5x/1e7du2uOaS9du1a9u/fz9y5c8tc0FNcXExxcbHteVkLXco6blmrU68Odj8/PzZu3MjWrVvZsmULy5YtIzk5+Ven+ri7u/+qnSvzm1f+rMq/tbu7OyEhIaSnp+Pv709wcDAeHh6l3pOVlcWoUaMIDQ2lU6dO/O53v+Ovf/1rue1WtBDom2++wWw2s2fPHi5evMhtt91md+0iV9Mc5y2uefPmnDlzBm9vb3x9ffH19SUnJ4c//OEPWK1WWrZsyZ49e2zvLy4u5ptvvimzLV9fX/bv3297brVaGTBgAFu3bq3wlINWrVpx9OhRzp07V2p7VlYWly5d4p577qnws+Tk5BATE0OTJk148sknWb16NUOHDmXDhg00a9YMs9nMuXPnbJ+zXr16xMbGcurUqQq/B3sNGjSIffv28cUXX5TafunSJVasWGHrnbVo0YLdu3eXes/u3btp3ry53ce8EmZX/wfk5MmTtr+vW7eOzZs3ExYWxsKFC1m3bh3Z2dm/+vf09/dn//79pXqQX3/9Nd7e3te98rZPnz6kp6eTlpZW5vDqBx98QMeOHYmLi2P06NEEBgZy7Ngx27+BPaeuAJw9e5a4uDgWLlyIxWLhT3/603XVLwIKzlteSEgIzZo1Y/r06WRlZfH1118za9YsXFxccHd3Z/jw4ezfv5+33nqLw4cPExsby5kzZ8psa8yYMXz44YesXbuWY8eO8frrr/Of//yHoKAg2//y9+/f/6tTEgA6duxIq1atePbZZ/n3v//NiRMn+OSTT3j++ecZOHAgd9xxR4WfpW7dumzevJmFCxdy7NgxMjMz+eqrr2jbti2enp4MHz6c+fPns2PHDrKzs4mKiuLgwYP4+flV+D3YKzAwkIiICCZNmsTatWs5fvw4X331FePHj+fixYs888wzAIwdO5bVq1ezbt06jhw5wh/+8AcOHDjAiBEj7D5mgwYNaNy4MQkJCZw4cYJ169axZcsW2+u5ubksXLiQzz77jJMnT5KSksJtt92Gn59fqXYeeughSkpKmDNnDtnZ2aSlpREfH8/IkSOv+xzcXr168c033/DJJ58QGhr6q9e9vb05ePAgu3fv5ujRo7zyyivs2bPHFuIV/Rz9r5deeok2bdowZMgQ5syZw8qVK22rkkWqSsF5izObzSxZsgSz2czIkSOZMGECwcHBLFiwAPhleG/ZsmV89NFHDB48mHPnztGjR48y2+rUqRPz588nISGBgQMHkpGRQUJCAl5eXgQEBBASEkJERARbt2791b4uLi68/fbb+Pj4MHnyZPr3789LL71E7969bYudKnL13NjgwYMZP3483bt35+mnnwYgOjqa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HgpOkSpYuXIlCxYswN/fnx07dvDyyy/Tt29fALy9vVm2bBlFRUX07duXhIQEWrduzYIFC2z7R0VFMWfOHNq0acO3337L008/zcaNGxk5ciSAQlPkJqbgFKmC1157jfT0dD766CN2795d6sL5gYGBABw8eJD69evTunVrAIYNG8bChQvJz89n7969REdH2/a5ePEi586du7EfQkSqRMEpUgURERF06dKFLl260K1bN6ZPn257rVatWsAvt2wrKSn51b4lJSVYLJZSc6VnzpzB29vb4XWLyPXT6Sgidjp//jxHjx5l8uTJ9OzZk7S0NIqLi3/1vhYtWnDhwgW++eYbAP7+978D4OXlhZ+fny04t23bxujRowHdH1XEGajHKWInb29vhg0bxoMPPoirqytdu3bl0qVLXLx4sdT7LBYLr776KlFRUbi4uNC8eXNbb/S1114jJiaGt99+Gzc3N/74xz9iMpm47777iIqKokGDBkRGRhrx8USkAro7ioiDlJSU8PrrrzNp0iRuu+023nnnHc6ePcuMGTOMLk1EroN6nCIO4uLiYuudurm50aRJExYuXGh0WSJyndTjFBERsYMWB4mIiNhBwSkiImIHBaeIiIgdFJwiIiJ2UHCKiIjYQcEpIiJih/8H/9dovj+s0X4AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "predict_unseen = predict_model(final_model, data=data_unseen);\n", "score_unseen = test_score_report(data_unseen, predict_unseen)\n", "print(score_unseen.to_string(index=False))\n", "conf_mat(data_unseen, predict_unseen)" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "44ccff9f-85ca-415a-8057-aec964fdf547", "tags": [] }, "source": [ "And the Unseen Data predicts as the trained model! The model was sucessful built! " ] }, { "cell_type": "markdown", "metadata": { "cell_id": "ee75d6f1-e02e-410a-b705-27503849659e", "tags": [] }, "source": [ "# 8. Save Experiment and Model" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "52e2e634-b24b-4a3a-b75f-ed22f217d916", "tags": [] }, "source": [ "PyCaret allows to save all the pipeline experiment and the model to deploy.
\n", "It's recommended to save with date of the experiments." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "cell_id": "a774416a-ff50-44c6-b542-eb25a3d4daa6", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Transformation Pipeline and Model Succesfully Saved\n" ] } ], "source": [ "save_model(final_model, PATH+\"models\"+os.sep+\"modelCCP_\"+date.today().strftime(\"%m-%d-%Y\"))" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "b62c91e5-db7d-49f8-9747-7e9f0c71cf47", "tags": [] }, "source": [ "# 9. Conclusion" ] }, { "cell_type": "markdown", "metadata": { "cell_id": "90128e4b-60f7-4c8d-8add-f76174294f61", "tags": [] }, "source": [ "From the results and explanations presented here, some conclusion can be draw:\n", "* The type of contract has a strict relationship with churned clients, Month-to-month contracts with high amount of charges could lead a client to leave the service.\n", "* The Best Model is an AdaBoostClassifier with Logistic Regression as Base Estimator.\n", "* For the predictions made by the model and based on the precision and recall scores, as F1 Score try to show a balance between these two metrics, the precision was near 50%, what means that the model predict correctly 50% of classified clients as churned, on other hand, the recall was good, where around 83% of the actually churned clients was predict correctly.\n", "* The metrics must be used in favor of the business interests: Is needed a more correct prediction of the churned clients or get a more amount of these clients on the predictions?\n", "\n", "From the tools and enviroment used:\n", "* PyCaret is incredible, it speed up the model build a lot and the pre-processing is very useful, beyond of the functions to save and deploy the model." ] } ], "metadata": { "deepnote_execution_queue": [], "deepnote_notebook_id": "497b2b00-2745-4e74-8e16-e5aa6c3bc967", "deepnote_published_id": "d199ab1b-3789-4aa7-ab73-a81f9f5bf811", "kernelspec": { "display_name": "Python 3", "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.7.7" } }, "nbformat": 4, "nbformat_minor": 2 }