Repository: archd3sai/Customer-Survival-Analysis-and-Churn-Prediction Branch: master Commit: bc6fe108b6be Files: 13 Total size: 38.1 MB Directory structure: gitextract_o9jxgrhd/ ├── Churn Prediction Model.ipynb ├── Customers Survival Analysis.ipynb ├── Exploratory Data Analysis.ipynb ├── Images/ │ └── README.md ├── LICENSE.md ├── Procfile ├── README.md ├── app.py ├── explainer.bz2 ├── model.pkl ├── requirements.txt ├── survivemodel.pkl └── templates/ └── index.html ================================================ FILE CONTENTS ================================================ ================================================ FILE: Churn Prediction Model.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Customer Churn Prediction" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "sns.set_style('darkgrid')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Data Preparation based on EDA" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def datapreparation(filepath):\n", " \n", " df = pd.read_csv(filepath)\n", " df.drop([\"customerID\"], inplace = True, axis = 1)\n", " \n", " df.TotalCharges = df.TotalCharges.replace(\" \",np.nan)\n", " df.TotalCharges.fillna(0, inplace = True)\n", " df.TotalCharges = df.TotalCharges.astype(float)\n", " \n", " cols1 = ['Partner', 'Dependents', 'PaperlessBilling', 'Churn', 'PhoneService']\n", " for col in cols1:\n", " df[col] = df[col].apply(lambda x: 0 if x == \"No\" else 1)\n", " \n", " df.gender = df.gender.apply(lambda x: 0 if x == \"Male\" else 1)\n", " df.MultipleLines = df.MultipleLines.map({'No phone service': 0, 'No': 0, 'Yes': 1})\n", " \n", " cols2 = ['OnlineSecurity', 'OnlineBackup', 'DeviceProtection', 'TechSupport', 'StreamingTV', 'StreamingMovies']\n", " for col in cols2:\n", " df[col] = df[col].map({'No internet service': 0, 'No': 0, 'Yes': 1})\n", " \n", " df = pd.get_dummies(df, columns=['InternetService', 'Contract', 'PaymentMethod'], drop_first=True)\n", " \n", " return df" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | gender | \n", "SeniorCitizen | \n", "Partner | \n", "Dependents | \n", "tenure | \n", "PhoneService | \n", "MultipleLines | \n", "OnlineSecurity | \n", "OnlineBackup | \n", "DeviceProtection | \n", "... | \n", "MonthlyCharges | \n", "TotalCharges | \n", "Churn | \n", "InternetService_Fiber optic | \n", "InternetService_No | \n", "Contract_One year | \n", "Contract_Two year | \n", "PaymentMethod_Credit card (automatic) | \n", "PaymentMethod_Electronic check | \n", "PaymentMethod_Mailed check | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "... | \n", "29.85 | \n", "29.85 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "
| 1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "34 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "... | \n", "56.95 | \n", "1889.50 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "
| 2 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "2 | \n", "1 | \n", "0 | \n", "1 | \n", "1 | \n", "0 | \n", "... | \n", "53.85 | \n", "108.15 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "
| 3 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "45 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "... | \n", "42.30 | \n", "1840.75 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 4 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "2 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "70.70 | \n", "151.65 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "
5 rows × 24 columns
\n", "| Weight | \n", "Feature | \n", "
|---|---|
| \n", " 0.0185\n", " \n", " ± 0.0058\n", " \n", " | \n", "\n", " InternetService_Fiber optic\n", " | \n", "
| \n", " 0.0064\n", " \n", " ± 0.0088\n", " \n", " | \n", "\n", " Contract_Two year\n", " | \n", "
| \n", " 0.0045\n", " \n", " ± 0.0058\n", " \n", " | \n", "\n", " OnlineSecurity\n", " | \n", "
| \n", " 0.0041\n", " \n", " ± 0.0134\n", " \n", " | \n", "\n", " Contract_One year\n", " | \n", "
| \n", " 0.0038\n", " \n", " ± 0.0086\n", " \n", " | \n", "\n", " PaymentMethod_Electronic check\n", " | \n", "
| \n", " 0.0037\n", " \n", " ± 0.0071\n", " \n", " | \n", "\n", " InternetService_No\n", " | \n", "
| \n", " 0.0028\n", " \n", " ± 0.0094\n", " \n", " | \n", "\n", " tenure\n", " | \n", "
| \n", " 0.0026\n", " \n", " ± 0.0011\n", " \n", " | \n", "\n", " OnlineBackup\n", " | \n", "
| \n", " 0.0020\n", " \n", " ± 0.0078\n", " \n", " | \n", "\n", " MonthlyCharges\n", " | \n", "
| \n", " 0.0010\n", " \n", " ± 0.0014\n", " \n", " | \n", "\n", " DeviceProtection\n", " | \n", "
| \n", " 0.0009\n", " \n", " ± 0.0083\n", " \n", " | \n", "\n", " PaperlessBilling\n", " | \n", "
| \n", " 0.0007\n", " \n", " ± 0.0030\n", " \n", " | \n", "\n", " TechSupport\n", " | \n", "
| \n", " 0.0004\n", " \n", " ± 0.0032\n", " \n", " | \n", "\n", " StreamingMovies\n", " | \n", "
| \n", " 0.0003\n", " \n", " ± 0.0017\n", " \n", " | \n", "\n", " gender\n", " | \n", "
| \n", " 0.0001\n", " \n", " ± 0.0019\n", " \n", " | \n", "\n", " PhoneService\n", " | \n", "
| \n", " -0.0000\n", " \n", " ± 0.0009\n", " \n", " | \n", "\n", " MultipleLines\n", " | \n", "
| \n", " -0.0001\n", " \n", " ± 0.0006\n", " \n", " | \n", "\n", " StreamingTV\n", " | \n", "
| \n", " -0.0004\n", " \n", " ± 0.0044\n", " \n", " | \n", "\n", " SeniorCitizen\n", " | \n", "
| \n", " -0.0009\n", " \n", " ± 0.0033\n", " \n", " | \n", "\n", " Dependents\n", " | \n", "
| \n", " -0.0020\n", " \n", " ± 0.0026\n", " \n", " | \n", "\n", " PaymentMethod_Credit card (automatic)\n", " | \n", "
| \n", " -0.0040\n", " \n", " ± 0.0064\n", " \n", " | \n", "\n", " TotalCharges\n", " | \n", "
| \n", " -0.0040\n", " \n", " ± 0.0039\n", " \n", " | \n", "\n", " Partner\n", " | \n", "
| \n", " -0.0075\n", " \n", " ± 0.0033\n", " \n", " | \n", "\n", " PaymentMethod_Mailed check\n", " | \n", "
| \n", " | customerID | \n", "gender | \n", "SeniorCitizen | \n", "Partner | \n", "Dependents | \n", "tenure | \n", "PhoneService | \n", "MultipleLines | \n", "InternetService | \n", "OnlineSecurity | \n", "... | \n", "DeviceProtection | \n", "TechSupport | \n", "StreamingTV | \n", "StreamingMovies | \n", "Contract | \n", "PaperlessBilling | \n", "PaymentMethod | \n", "MonthlyCharges | \n", "TotalCharges | \n", "Churn | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "7590-VHVEG | \n", "Female | \n", "0 | \n", "Yes | \n", "No | \n", "1 | \n", "No | \n", "No phone service | \n", "DSL | \n", "No | \n", "... | \n", "No | \n", "No | \n", "No | \n", "No | \n", "Month-to-month | \n", "Yes | \n", "Electronic check | \n", "29.85 | \n", "29.85 | \n", "No | \n", "
| 1 | \n", "5575-GNVDE | \n", "Male | \n", "0 | \n", "No | \n", "No | \n", "34 | \n", "Yes | \n", "No | \n", "DSL | \n", "Yes | \n", "... | \n", "Yes | \n", "No | \n", "No | \n", "No | \n", "One year | \n", "No | \n", "Mailed check | \n", "56.95 | \n", "1889.5 | \n", "No | \n", "
| 2 | \n", "3668-QPYBK | \n", "Male | \n", "0 | \n", "No | \n", "No | \n", "2 | \n", "Yes | \n", "No | \n", "DSL | \n", "Yes | \n", "... | \n", "No | \n", "No | \n", "No | \n", "No | \n", "Month-to-month | \n", "Yes | \n", "Mailed check | \n", "53.85 | \n", "108.15 | \n", "Yes | \n", "
| 3 | \n", "7795-CFOCW | \n", "Male | \n", "0 | \n", "No | \n", "No | \n", "45 | \n", "No | \n", "No phone service | \n", "DSL | \n", "Yes | \n", "... | \n", "Yes | \n", "Yes | \n", "No | \n", "No | \n", "One year | \n", "No | \n", "Bank transfer (automatic) | \n", "42.30 | \n", "1840.75 | \n", "No | \n", "
| 4 | \n", "9237-HQITU | \n", "Female | \n", "0 | \n", "No | \n", "No | \n", "2 | \n", "Yes | \n", "No | \n", "Fiber optic | \n", "No | \n", "... | \n", "No | \n", "No | \n", "No | \n", "No | \n", "Month-to-month | \n", "Yes | \n", "Electronic check | \n", "70.70 | \n", "151.65 | \n", "Yes | \n", "
5 rows × 21 columns
\n", "| \n", " | customerID | \n", "tenure | \n", "MonthlyCharges | \n", "TotalCharges | \n", "Churn | \n", "gender_Male | \n", "SeniorCitizen_1 | \n", "Partner_Yes | \n", "Dependents_Yes | \n", "PhoneService_Yes | \n", "... | \n", "StreamingTV_No internet service | \n", "StreamingTV_Yes | \n", "StreamingMovies_No internet service | \n", "StreamingMovies_Yes | \n", "Contract_One year | \n", "Contract_Two year | \n", "PaperlessBilling_Yes | \n", "PaymentMethod_Credit card (automatic) | \n", "PaymentMethod_Electronic check | \n", "PaymentMethod_Mailed check | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "7590-VHVEG | \n", "1 | \n", "29.85 | \n", "29.85 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "
| 1 | \n", "5575-GNVDE | \n", "34 | \n", "56.95 | \n", "1889.5 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "
| 2 | \n", "3668-QPYBK | \n", "2 | \n", "53.85 | \n", "108.15 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "
| 3 | \n", "7795-CFOCW | \n", "45 | \n", "42.30 | \n", "1840.75 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 4 | \n", "9237-HQITU | \n", "2 | \n", "70.70 | \n", "151.65 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "
5 rows × 32 columns
\n", "| \n", " | MonthlyCharges | \n", "TotalCharges | \n", "gender_Male | \n", "SeniorCitizen_1 | \n", "Partner_Yes | \n", "Dependents_Yes | \n", "PhoneService_Yes | \n", "MultipleLines_No phone service | \n", "MultipleLines_Yes | \n", "InternetService_Fiber optic | \n", "... | \n", "StreamingTV_Yes | \n", "StreamingMovies_No internet service | \n", "StreamingMovies_Yes | \n", "Contract_One year | \n", "Contract_Two year | \n", "PaperlessBilling_Yes | \n", "PaymentMethod_Credit card (automatic) | \n", "PaymentMethod_Electronic check | \n", "PaymentMethod_Mailed check | \n", "const | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "29.85 | \n", "29.85 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "1.0 | \n", "
| 1 | \n", "56.95 | \n", "1889.5 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "1.0 | \n", "
| 2 | \n", "53.85 | \n", "108.15 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "1.0 | \n", "
| 3 | \n", "42.30 | \n", "1840.75 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1.0 | \n", "
| 4 | \n", "70.70 | \n", "151.65 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "1 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "1.0 | \n", "
5 rows × 30 columns
\n", "| \n", " | gender | \n", "SeniorCitizen | \n", "Partner | \n", "Dependents | \n", "tenure | \n", "PhoneService | \n", "MultipleLines | \n", "OnlineSecurity | \n", "OnlineBackup | \n", "DeviceProtection | \n", "... | \n", "MonthlyCharges | \n", "TotalCharges | \n", "Churn | \n", "InternetService_Fiber optic | \n", "InternetService_No | \n", "Contract_One year | \n", "Contract_Two year | \n", "PaymentMethod_Credit card (automatic) | \n", "PaymentMethod_Electronic check | \n", "PaymentMethod_Mailed check | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "... | \n", "29.85 | \n", "29.85 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "
| 1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "34 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "... | \n", "56.95 | \n", "1889.50 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "
| 2 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "2 | \n", "1 | \n", "0 | \n", "1 | \n", "1 | \n", "0 | \n", "... | \n", "53.85 | \n", "108.15 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "
| 3 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "45 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "1 | \n", "... | \n", "42.30 | \n", "1840.75 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
| 4 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "2 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "... | \n", "70.70 | \n", "151.65 | \n", "1 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "
5 rows × 24 columns
\n", "| \n", " | customerID | \n", "gender | \n", "SeniorCitizen | \n", "Partner | \n", "Dependents | \n", "tenure | \n", "PhoneService | \n", "MultipleLines | \n", "InternetService | \n", "OnlineSecurity | \n", "... | \n", "DeviceProtection | \n", "TechSupport | \n", "StreamingTV | \n", "StreamingMovies | \n", "Contract | \n", "PaperlessBilling | \n", "PaymentMethod | \n", "MonthlyCharges | \n", "TotalCharges | \n", "Churn | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "7590-VHVEG | \n", "Female | \n", "0 | \n", "Yes | \n", "No | \n", "1 | \n", "No | \n", "No phone service | \n", "DSL | \n", "No | \n", "... | \n", "No | \n", "No | \n", "No | \n", "No | \n", "Month-to-month | \n", "Yes | \n", "Electronic check | \n", "29.85 | \n", "29.85 | \n", "No | \n", "
| 1 | \n", "5575-GNVDE | \n", "Male | \n", "0 | \n", "No | \n", "No | \n", "34 | \n", "Yes | \n", "No | \n", "DSL | \n", "Yes | \n", "... | \n", "Yes | \n", "No | \n", "No | \n", "No | \n", "One year | \n", "No | \n", "Mailed check | \n", "56.95 | \n", "1889.5 | \n", "No | \n", "
| 2 | \n", "3668-QPYBK | \n", "Male | \n", "0 | \n", "No | \n", "No | \n", "2 | \n", "Yes | \n", "No | \n", "DSL | \n", "Yes | \n", "... | \n", "No | \n", "No | \n", "No | \n", "No | \n", "Month-to-month | \n", "Yes | \n", "Mailed check | \n", "53.85 | \n", "108.15 | \n", "Yes | \n", "
| 3 | \n", "7795-CFOCW | \n", "Male | \n", "0 | \n", "No | \n", "No | \n", "45 | \n", "No | \n", "No phone service | \n", "DSL | \n", "Yes | \n", "... | \n", "Yes | \n", "Yes | \n", "No | \n", "No | \n", "One year | \n", "No | \n", "Bank transfer (automatic) | \n", "42.30 | \n", "1840.75 | \n", "No | \n", "
| 4 | \n", "9237-HQITU | \n", "Female | \n", "0 | \n", "No | \n", "No | \n", "2 | \n", "Yes | \n", "No | \n", "Fiber optic | \n", "No | \n", "... | \n", "No | \n", "No | \n", "No | \n", "No | \n", "Month-to-month | \n", "Yes | \n", "Electronic check | \n", "70.70 | \n", "151.65 | \n", "Yes | \n", "
5 rows × 21 columns
\n", "| \n", " | gender | \n", "SeniorCitizen | \n", "Partner | \n", "Dependents | \n", "tenure | \n", "PhoneService | \n", "MultipleLines | \n", "InternetService | \n", "OnlineSecurity | \n", "OnlineBackup | \n", "... | \n", "TechSupport | \n", "StreamingTV | \n", "StreamingMovies | \n", "Contract | \n", "PaperlessBilling | \n", "PaymentMethod | \n", "MonthlyCharges | \n", "TotalCharges | \n", "Churn | \n", "tenure_group | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 11 | \n", "Male | \n", "0 | \n", "No | \n", "No | \n", "16 | \n", "Yes | \n", "No | \n", "No | \n", "No internet service | \n", "No internet service | \n", "... | \n", "No internet service | \n", "No internet service | \n", "No internet service | \n", "Two year | \n", "No | \n", "Credit card (automatic) | \n", "18.95 | \n", "326.8 | \n", "No | \n", "2 | \n", "
| 16 | \n", "Female | \n", "0 | \n", "No | \n", "No | \n", "52 | \n", "Yes | \n", "No | \n", "No | \n", "No internet service | \n", "No internet service | \n", "... | \n", "No internet service | \n", "No internet service | \n", "No internet service | \n", "One year | \n", "No | \n", "Mailed check | \n", "20.65 | \n", "1022.95 | \n", "No | \n", "5 | \n", "
| 21 | \n", "Male | \n", "0 | \n", "Yes | \n", "No | \n", "12 | \n", "Yes | \n", "No | \n", "No | \n", "No internet service | \n", "No internet service | \n", "... | \n", "No internet service | \n", "No internet service | \n", "No internet service | \n", "One year | \n", "No | \n", "Bank transfer (automatic) | \n", "19.80 | \n", "202.25 | \n", "No | \n", "1 | \n", "
| 22 | \n", "Male | \n", "0 | \n", "No | \n", "No | \n", "1 | \n", "Yes | \n", "No | \n", "No | \n", "No internet service | \n", "No internet service | \n", "... | \n", "No internet service | \n", "No internet service | \n", "No internet service | \n", "Month-to-month | \n", "No | \n", "Mailed check | \n", "20.15 | \n", "20.15 | \n", "Yes | \n", "1 | \n", "
| 33 | \n", "Male | \n", "0 | \n", "No | \n", "No | \n", "1 | \n", "Yes | \n", "No | \n", "No | \n", "No internet service | \n", "No internet service | \n", "... | \n", "No internet service | \n", "No internet service | \n", "No internet service | \n", "Month-to-month | \n", "No | \n", "Bank transfer (automatic) | \n", "20.20 | \n", "20.2 | \n", "No | \n", "1 | \n", "
5 rows × 21 columns
\n", "| \n", " | gender | \n", "SeniorCitizen | \n", "Partner | \n", "Dependents | \n", "tenure | \n", "PhoneService | \n", "MultipleLines | \n", "InternetService | \n", "OnlineSecurity | \n", "OnlineBackup | \n", "... | \n", "TechSupport | \n", "StreamingTV | \n", "StreamingMovies | \n", "Contract | \n", "PaperlessBilling | \n", "PaymentMethod | \n", "MonthlyCharges | \n", "TotalCharges | \n", "Churn | \n", "tenure_group | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 488 | \n", "Female | \n", "0 | \n", "Yes | \n", "Yes | \n", "0 | \n", "No | \n", "No phone service | \n", "DSL | \n", "Yes | \n", "No | \n", "... | \n", "Yes | \n", "Yes | \n", "No | \n", "Two year | \n", "Yes | \n", "Bank transfer (automatic) | \n", "52.55 | \n", "NaN | \n", "No | \n", "1 | \n", "
| 753 | \n", "Male | \n", "0 | \n", "No | \n", "Yes | \n", "0 | \n", "Yes | \n", "No | \n", "No | \n", "No internet service | \n", "No internet service | \n", "... | \n", "No internet service | \n", "No internet service | \n", "No internet service | \n", "Two year | \n", "No | \n", "Mailed check | \n", "20.25 | \n", "NaN | \n", "No | \n", "1 | \n", "
| 936 | \n", "Female | \n", "0 | \n", "Yes | \n", "Yes | \n", "0 | \n", "Yes | \n", "No | \n", "DSL | \n", "Yes | \n", "Yes | \n", "... | \n", "No | \n", "Yes | \n", "Yes | \n", "Two year | \n", "No | \n", "Mailed check | \n", "80.85 | \n", "NaN | \n", "No | \n", "1 | \n", "
| 1082 | \n", "Male | \n", "0 | \n", "Yes | \n", "Yes | \n", "0 | \n", "Yes | \n", "Yes | \n", "No | \n", "No internet service | \n", "No internet service | \n", "... | \n", "No internet service | \n", "No internet service | \n", "No internet service | \n", "Two year | \n", "No | \n", "Mailed check | \n", "25.75 | \n", "NaN | \n", "No | \n", "1 | \n", "
| 1340 | \n", "Female | \n", "0 | \n", "Yes | \n", "Yes | \n", "0 | \n", "No | \n", "No phone service | \n", "DSL | \n", "Yes | \n", "Yes | \n", "... | \n", "Yes | \n", "Yes | \n", "No | \n", "Two year | \n", "No | \n", "Credit card (automatic) | \n", "56.05 | \n", "NaN | \n", "No | \n", "1 | \n", "
| 3331 | \n", "Male | \n", "0 | \n", "Yes | \n", "Yes | \n", "0 | \n", "Yes | \n", "No | \n", "No | \n", "No internet service | \n", "No internet service | \n", "... | \n", "No internet service | \n", "No internet service | \n", "No internet service | \n", "Two year | \n", "No | \n", "Mailed check | \n", "19.85 | \n", "NaN | \n", "No | \n", "1 | \n", "
| 3826 | \n", "Male | \n", "0 | \n", "Yes | \n", "Yes | \n", "0 | \n", "Yes | \n", "Yes | \n", "No | \n", "No internet service | \n", "No internet service | \n", "... | \n", "No internet service | \n", "No internet service | \n", "No internet service | \n", "Two year | \n", "No | \n", "Mailed check | \n", "25.35 | \n", "NaN | \n", "No | \n", "1 | \n", "
| 4380 | \n", "Female | \n", "0 | \n", "Yes | \n", "Yes | \n", "0 | \n", "Yes | \n", "No | \n", "No | \n", "No internet service | \n", "No internet service | \n", "... | \n", "No internet service | \n", "No internet service | \n", "No internet service | \n", "Two year | \n", "No | \n", "Mailed check | \n", "20.00 | \n", "NaN | \n", "No | \n", "1 | \n", "
| 5218 | \n", "Male | \n", "0 | \n", "Yes | \n", "Yes | \n", "0 | \n", "Yes | \n", "No | \n", "No | \n", "No internet service | \n", "No internet service | \n", "... | \n", "No internet service | \n", "No internet service | \n", "No internet service | \n", "One year | \n", "Yes | \n", "Mailed check | \n", "19.70 | \n", "NaN | \n", "No | \n", "1 | \n", "
| 6670 | \n", "Female | \n", "0 | \n", "Yes | \n", "Yes | \n", "0 | \n", "Yes | \n", "Yes | \n", "DSL | \n", "No | \n", "Yes | \n", "... | \n", "Yes | \n", "Yes | \n", "No | \n", "Two year | \n", "No | \n", "Mailed check | \n", "73.35 | \n", "NaN | \n", "No | \n", "1 | \n", "
| 6754 | \n", "Male | \n", "0 | \n", "No | \n", "Yes | \n", "0 | \n", "Yes | \n", "Yes | \n", "DSL | \n", "Yes | \n", "Yes | \n", "... | \n", "Yes | \n", "No | \n", "No | \n", "Two year | \n", "Yes | \n", "Bank transfer (automatic) | \n", "61.90 | \n", "NaN | \n", "No | \n", "1 | \n", "
11 rows × 21 columns
\n", "
## Project Organization
```
.
├── Images/ : contains images
├── static/ : plots to show gauge chart, hazard and survival curve, shap values in Flask App
│ └── images/
│ ├── hazard.png
│ ├── surv.png
│ ├── shap.png
│ └── new_plot.png
├── templates/ : contains html template for flask app
│ └── index.html
├── Customer Survival Analysis.ipynb : Survival Analysis kaplan-Meier curve, log-rank test and Cox-proportional Hazard model
├── Exploratory Data Analysis.ipynb : Data Analysis to understand customer data
├── Churn Prediction Model.ipynb : Random Forest model to predict customer churn
├── app.py : Flask App
├── app-pic.png : Final App image
├── explainer.bz2 : Shap Explainer
├── model.pkl : Random Forest model
├── survivemodel.pkl : Cox-proportional Hazard model
├── requirements.txt : requirements to run this model
├── Procfile : procfile for app deployment
├── LICENSE.md : MIT License
└── README.md : Report
```
## Customer Survival Analysis
**Survival Analysis:**
Survival analysis is generally defined as a set of methods for analyzing data where the outcome variable is the time until the occurrence of an event of interest. The event can be death, occurrence of a disease, marriage, divorce, etc. The time to event or survival time can be measured in days, weeks, years, etc.
For example, if the event of interest is heart attack, then the survival time can be the time in years until a person develops a heart attack.
**Objective:**
The objective of this analysis is to utilize non-parametric and semi-parametric methods of survival analysis to answer the following questions.
- How the likelihood of the customer churn changes over time?
- How we can model the relationship between customer churn, time, and other customer characteristics?
- What are the significant factors that drive customer churn?
- What is the survival and Hazard curve of a specific customer?
- What is the expected lifetime value of a customer?
**Kaplan-Meier Survival Curve:**