Telco Churn

This example uses the Telco Churn dataset to predict which Telco user is likely to churn; that is, customers that will likely stop using Telco. You can download the Jupyter Notebook of the study here.

  • Churn - customers that left within the last month
  • Services - services of each customer (phone, multiple lines, internet, online security, online backup, device protection, tech support, and streaming TV and movies)
  • Customer account information - how long they’ve been a customer, contract, payment method, paperless billing, monthly charges, and total charges
  • Customer demographics - gender, age range, and if they have partners and dependents

We will follow the data science cycle (Data Exploration - Data Preparation - Data Modeling - Model Evaluation - Model Deployment) to solve this problem.

Initialization

This example uses the following version of VerticaPy:

In [1]:
import verticapy as vp
vp.__version__
Out[1]:
'0.9.0'

Connect to Vertica. This example uses an existing connection called "VerticaDSN." For details on how to create a connection, use see the connection tutorial.

In [2]:
vp.connect("VerticaDSN")

Let's create a Virtual DataFrame of the dataset. The dataset is available here.

In [3]:
churn = vp.read_csv('data/churn.csv')
display(churn)
Abc
customerID
Varchar(20)
Abc
gender
Varchar(20)
123
SeniorCitizen
Int
010
Partner
Boolean
010
Dependents
Boolean
123
tenure
Int
010
PhoneService
Boolean
Abc
MultipleLines
Varchar(100)
Abc
InternetService
Varchar(22)
Abc
OnlineSecurity
Varchar(38)
Abc
OnlineBackup
Varchar(38)
Abc
DeviceProtection
Varchar(38)
Abc
TechSupport
Varchar(38)
Abc
StreamingTV
Varchar(38)
Abc
StreamingMovies
Varchar(38)
Abc
Contract
Varchar(28)
010
PaperlessBilling
Boolean
Abc
PaymentMethod
Varchar(50)
123
MonthlyCharges
Numeric(8,3)
123
TotalCharges
Numeric(9,3)
010
Churn
Boolean
10002-ORFBOFemale0
9
NoDSLNoYesNoYesYesNoOne year
Mailed check65.6593.3
20003-MKNFEMale0
9
YesDSLNoNoNoNoNoYesMonth-to-month
Mailed check59.9542.4
30004-TLHLJMale0
4
NoFiber opticNoNoYesNoNoNoMonth-to-month
Electronic check73.9280.85
40011-IGKFFMale1
13
NoFiber opticNoYesYesNoYesYesMonth-to-month
Electronic check98.01237.85
50013-EXCHZFemale1
3
NoFiber opticNoNoNoYesYesNoMonth-to-month
Mailed check83.9267.4
60013-MHZWFFemale0
9
NoDSLNoNoNoYesYesYesMonth-to-month
Credit card (automatic)69.4571.45
70013-SMEOEFemale1
71
NoFiber opticYesYesYesYesYesYesTwo year
Bank transfer (automatic)109.77904.25
80014-BMAQUMale0
63
YesFiber opticYesNoNoYesNoNoTwo year
Credit card (automatic)84.655377.8
90015-UOCOJFemale1
7
NoDSLYesNoNoNoNoNoMonth-to-month
Electronic check48.2340.35
100016-QLJISFemale0
65
YesDSLYesYesYesYesYesYesTwo year
Mailed check90.455957.9
110017-DINOCMale0
54
No phone serviceDSLYesNoNoYesYesNoTwo year
Credit card (automatic)45.22460.55
120017-IUDMWFemale0
72
YesFiber opticYesYesYesYesYesYesTwo year
Credit card (automatic)116.88456.75
130018-NYROUFemale0
5
NoFiber opticNoNoNoNoNoNoMonth-to-month
Electronic check68.95351.5
140019-EFAEPFemale0
72
YesFiber opticYesYesYesNoYesNoTwo year
Bank transfer (automatic)101.37261.25
150019-GFNTWFemale0
56
No phone serviceDSLYesYesYesYesNoNoTwo year
Bank transfer (automatic)45.052560.1
160020-INWCKFemale0
71
YesFiber opticNoYesYesNoNoYesTwo year
Credit card (automatic)95.756849.4
170020-JDNXPFemale0
34
No phone serviceDSLYesNoYesYesYesYesOne year
Mailed check61.251993.2
180021-IKXGCFemale1
1
YesFiber opticNoNoNoNoNoNoMonth-to-month
Electronic check72.172.1
190022-TCJCIMale1
45
NoDSLYesNoYesNoNoYesOne year
Credit card (automatic)62.72791.5
200023-HGHWLMale1
1
No phone serviceDSLNoNoNoNoNoNoMonth-to-month
Electronic check25.125.1
210023-UYUPNFemale1
50
YesNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceOne year
Electronic check25.21306.3
220023-XUOPTFemale0
13
YesFiber opticNoYesYesNoYesNoMonth-to-month
Electronic check94.11215.6
230027-KWYKWFemale0
23
YesFiber opticNoNoNoNoYesNoMonth-to-month
Electronic check83.751849.95
240030-FNXPPFemale0
3
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceMonth-to-month
Mailed check19.8557.2
250031-PVLZIFemale0
4
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceMonth-to-month
Mailed check20.3576.35
260032-PGELSFemale0
1
No phone serviceDSLYesNoNoNoNoNoMonth-to-month
Bank transfer (automatic)30.530.5
270036-IHMOTFemale0
55
NoFiber opticNoYesYesYesYesYesOne year
Bank transfer (automatic)103.75656.75
280040-HALCWMale0
54
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceTwo year
Credit card (automatic)20.41090.6
290042-JVWOJMale0
26
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceOne year
Bank transfer (automatic)19.6471.85
300042-RLHYPFemale0
69
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceTwo year
Bank transfer (automatic)19.71396.9
310048-LUMLSMale0
37
NoFiber opticNoNoNoNoYesYesOne year
Credit card (automatic)91.23247.55
320048-PIHNLFemale0
49
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceOne year
Bank transfer (automatic)20.45900.9
330052-DCKONMale0
66
YesFiber opticYesYesYesYesYesYesOne year
Bank transfer (automatic)115.87942.15
340052-YNYOTFemale0
67
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceOne year
Electronic check20.551343.4
350056-EPFBGMale0
20
No phone serviceDSLYesNoYesYesNoNoTwo year
Credit card (automatic)39.4825.4
360057-QBUQHFemale0
43
YesNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceTwo year
Electronic check25.11070.15
370058-EVZWMFemale0
55
YesFiber opticYesNoNoNoYesNoMonth-to-month
Bank transfer (automatic)89.84959.6
380060-FUALYFemale0
59
YesFiber opticYesYesNoNoYesNoMonth-to-month
Electronic check94.755597.65
390064-SUDOGFemale0
12
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceTwo year
Bank transfer (automatic)20.3224.5
400064-YIJGFMale0
27
YesFiber opticNoNoNoNoNoNoMonth-to-month
Bank transfer (automatic)75.751929.0
410067-DKWBLMale1
2
NoDSLYesNoNoNoNoNoMonth-to-month
Electronic check49.2591.1
420068-FIGTFFemale0
27
NoDSLNoYesYesYesYesYesOne year
Mailed check78.22078.95
430071-NDAFPMale0
25
YesNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceTwo year
Credit card (automatic)25.5630.6
440074-HDKDGMale0
25
NoDSLYesYesYesNoNoNoOne year
Bank transfer (automatic)61.61611.0
450076-LVEPSMale0
29
No phone serviceDSLYesYesYesYesNoNoMonth-to-month
Mailed check45.01242.45
460078-XZMHTMale0
72
YesDSLNoYesYesYesYesYesTwo year
Bank transfer (automatic)85.156316.2
470080-EMYVYFemale0
14
NoDSLNoYesNoNoNoNoOne year
Credit card (automatic)51.45727.85
480080-OROZOFemale0
35
NoFiber opticNoNoYesYesYesYesOne year
Electronic check99.253532.0
490082-LDZUEMale0
1
NoDSLNoNoNoNoNoNoMonth-to-month
Mailed check44.344.3
500082-OQIQYMale0
29
NoFiber opticNoNoNoYesYesYesMonth-to-month
Electronic check94.22607.6
510083-PIVIKMale0
64
YesDSLYesYesYesYesYesNoOne year
Electronic check81.255567.55
520089-IIQKOFemale0
39
YesFiber opticNoNoNoYesYesYesMonth-to-month
Credit card (automatic)99.953767.4
530093-EXYQLFemale1
40
NoFiber opticNoNoNoNoYesYesMonth-to-month
Electronic check91.553673.6
540093-XWZFYMale0
40
YesFiber opticNoYesYesNoYesYesMonth-to-month
Credit card (automatic)104.54036.85
550094-OIFMOFemale1
11
NoFiber opticNoYesNoNoYesYesMonth-to-month
Electronic check95.01120.3
560096-BXERSFemale0
6
YesDSLNoNoNoNoNoNoMonth-to-month
Electronic check50.35314.55
570096-FCPUFMale0
30
YesDSLYesNoNoNoNoYesMonth-to-month
Mailed check64.51888.45
580098-BOWSOMale0
27
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceMonth-to-month
Electronic check19.4529.8
590100-DUVFCMale1
70
YesFiber opticNoYesYesNoYesYesOne year
Electronic check104.87308.95
600103-CSITQFemale0
57
YesFiber opticNoYesYesYesYesYesOne year
Bank transfer (automatic)109.46252.7
610104-PPXDVMale0
58
NoDSLNoNoYesNoNoNoOne year
Credit card (automatic)50.32878.55
620106-GHRQRMale0
16
YesDSLNoYesYesNoNoYesMonth-to-month
Bank transfer (automatic)71.41212.1
630106-UGRDOFemale0
69
YesFiber opticYesYesYesYesYesYesTwo year
Electronic check116.08182.85
640107-WESLMMale0
1
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceMonth-to-month
Electronic check19.8519.85
650107-YHINAMale0
1
YesFiber opticNoNoYesNoYesYesMonth-to-month
Electronic check99.7599.75
660111-KLBQGMale1
32
NoFiber opticNoYesNoNoYesYesMonth-to-month
Mailed check93.952861.45
670112-QAWRZMale0
16
YesFiber opticNoNoYesNoYesNoMonth-to-month
Bank transfer (automatic)90.81442.2
680112-QWPNCMale0
49
YesDSLYesNoYesYesYesYesOne year
Electronic check84.354059.35
690114-IGABWFemale0
71
No phone serviceDSLNoYesYesYesYesYesTwo year
Bank transfer (automatic)58.254145.9
700114-PEGZZFemale0
33
YesFiber opticNoYesYesNoYesYesMonth-to-month
Electronic check107.553645.5
710114-RSRRWFemale0
10
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceMonth-to-month
Bank transfer (automatic)19.95187.75
720115-TFERTMale0
21
YesFiber opticNoYesYesYesYesYesMonth-to-month
Electronic check111.22317.1
730117-LFRMWMale0
37
No phone serviceDSLYesYesYesNoNoNoMonth-to-month
Bank transfer (automatic)40.21448.8
740118-JPNOYFemale1
26
NoFiber opticYesNoNoNoYesNoMonth-to-month
Credit card (automatic)85.82193.65
750121-SNYRKMale0
50
No phone serviceDSLYesNoNoYesNoNoOne year
Mailed check35.41748.9
760122-OAHPZFemale0
7
YesFiber opticNoNoNoNoNoNoMonth-to-month
Electronic check73.85511.25
770123-CRBRTFemale0
61
YesDSLYesYesYesYesYesYesTwo year
Mailed check88.15526.75
780125-LZQXKMale0
15
NoFiber opticNoNoYesYesYesYesMonth-to-month
Electronic check101.351553.95
790128-MKWSGFemale0
26
No phone serviceDSLYesNoNoYesNoYesMonth-to-month
Mailed check45.81147.0
800129-KPTWJMale0
72
NoFiber opticNoNoYesNoYesYesMonth-to-month
Electronic check94.656747.35
810129-QMPDRMale0
44
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceOne year
Bank transfer (automatic)20.5865.05
820130-SXOUNMale0
66
YesFiber opticNoYesNoNoNoYesMonth-to-month
Credit card (automatic)89.45976.9
830133-BMFZOFemale0
2
NoFiber opticYesYesNoYesNoNoMonth-to-month
Electronic check86.25181.65
840134-XWXCEFemale1
44
NoDSLNoNoYesYesYesYesOne year
Bank transfer (automatic)74.853268.05
850135-NMXAPFemale0
12
YesFiber opticNoYesNoNoYesNoMonth-to-month
Bank transfer (automatic)89.751052.4
860136-IFMYDMale1
69
YesFiber opticNoYesYesYesYesYesTwo year
Electronic check109.957634.25
870137-OCGABFemale0
1
YesFiber opticNoYesNoNoNoNoMonth-to-month
Mailed check80.280.2
880137-UDEUOFemale0
3
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceMonth-to-month
Mailed check19.8563.75
890139-IVFJGFemale0
2
NoFiber opticYesYesNoNoYesNoMonth-to-month
Electronic check90.35190.5
900141-YEAYSFemale1
27
YesFiber opticNoYesYesNoNoNoMonth-to-month
Bank transfer (automatic)86.452401.05
910142-GVYSNMale0
26
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceMonth-to-month
Electronic check20.3511.25
920147-ESWWRFemale1
39
YesFiber opticNoNoNoYesYesYesMonth-to-month
Electronic check101.253949.15
930148-DCDOSMale0
25
YesFiber opticNoNoNoNoYesYesMonth-to-month
Bank transfer (automatic)94.72362.1
940151-ONTOVFemale0
1
NoFiber opticNoNoNoNoNoNoMonth-to-month
Mailed check70.970.9
950156-FVPTAMale0
22
NoDSLYesNoNoYesNoNoMonth-to-month
Electronic check54.21152.7
960164-APGRBFemale0
72
YesFiber opticYesYesYesYesYesYesTwo year
Electronic check114.98496.7
970164-XAIRPFemale0
24
NoNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceTwo year
Bank transfer (automatic)19.55470.2
980168-XZKBBFemale0
19
YesFiber opticNoNoNoNoYesNoMonth-to-month
Electronic check86.851564.4
990174-QRVVYMale0
71
YesNoNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceNo internet serviceTwo year
Credit card (automatic)25.351847.55
1000177-PXBATMale1
33
YesFiber opticYesNoYesYesYesYesMonth-to-month
Bank transfer (automatic)109.93694.7
Rows: 1-100 | Columns: 21

Data Exploration and Preparation

Let's examine our data.

In [6]:
churn.describe(method = "categorical", unique = True)


Out[6]:
dtype
count
top
top_percent
unique
"customerID"varchar(20)70430002-ORFBO0.0147043.0
"gender"varchar(20)7043Male50.4762.0
"SeniorCitizen"int7043083.7852.0
"Partner"boolean7043051.6972.0
"Dependents"boolean7043070.0412.0
"tenure"int704318.70473.0
"PhoneService"boolean7043190.3172.0
"MultipleLines"varchar(100)7043No48.1333.0
"InternetService"varchar(22)7043Fiber optic43.9593.0
"OnlineSecurity"varchar(38)7043No49.6663.0
"OnlineBackup"varchar(38)7043No43.8453.0
"DeviceProtection"varchar(38)7043No43.9443.0
"TechSupport"varchar(38)7043No49.3113.0
"StreamingTV"varchar(38)7043No39.8983.0
"StreamingMovies"varchar(38)7043No39.5433.0
"Contract"varchar(28)7043Month-to-month55.0193.0
"PaperlessBilling"boolean7043159.2222.0
"PaymentMethod"varchar(50)7043Electronic check33.5794.0
"MonthlyCharges"numeric(8,3)704320.050.8661585.0
"TotalCharges"numeric(9,3)7032[null]0.1566530.0
"Churn"boolean7043073.4632.0
Rows: 1-21 | Columns: 6

Several variables are categorical, and since they all have low cardinalities, we can compute their dummies. We can also convert all booleans to numeric.

In [7]:
for column in ["DeviceProtection", 
               "MultipleLines",
               "PaperlessBilling",
               "Churn",
               "TechSupport",
               "Partner",
               "StreamingTV",
               "OnlineBackup",
               "Dependents",
               "OnlineSecurity",
               "PhoneService",
               "StreamingMovies"]:
    churn[column].decode("Yes", 1, 0)
churn.one_hot_encode().drop(["customerID", 
                             "gender", 
                             "Contract", 
                             "PaymentMethod", 
                             "InternetService"])
Out[7]:
123
SeniorCitizen
Int
123
Partner
Integer
123
Dependents
Integer
123
tenure
Int
123
PhoneService
Integer
123
MultipleLines
Integer
123
OnlineSecurity
Integer
123
OnlineBackup
Integer
123
DeviceProtection
Integer
123
TechSupport
Integer
123
StreamingTV
Integer
123
StreamingMovies
Integer
123
PaperlessBilling
Integer
123
MonthlyCharges
Numeric(8,3)
123
TotalCharges
Numeric(9,3)
123
Churn
Integer
123
gender_Female
Bool
123
InternetService_DSL
Bool
123
InternetService_Fiber_optic
Bool
123
Contract_Month-to-month
Bool
123
Contract_One_year
Bool
123
Bool
123
Bool
123
PaymentMethod_Electronic_check
Bool
1011910010110165.6593.30110010
2000911000001059.9542.40010100
3000410001000173.9280.851001101
41101310011011198.01237.851001101
5110310000110183.9267.41101100
6001910000111169.4571.450110100
711071101111111109.77904.250101000
80106311100100184.655377.80001000
9100710100000148.2340.350110101
100116511111111190.455957.90110000
110005400100110045.22460.550010000
1201172111111111116.88456.750101000
13010510000000168.95351.50101101
1400072111110101101.37261.250101000
150005600111100045.052560.10110000
160117111011001195.756849.40101000
170113400101111061.251993.20110010
18100111000000172.172.10101101
191004510101001062.72791.51010010
20100100000000125.125.11010101
211105011000000025.21306.30100011
220101311011010094.11215.61101101
230112311000010183.751849.950101101
24000310000000019.8557.20100100
25011410000000020.3576.351100100
26011100100000030.530.51110100
2701155100111111103.75656.750101010
280115410000000020.41090.60000000
290002610000000119.6471.850000010
300116910000000019.71396.90100000
310113710000011091.23247.550001010
320104910000000020.45900.90100010
3301066111111110115.87942.150001010
340006710000000020.551343.40100011
350112000101100139.4825.40010000
360014311000000125.11070.150100001
370105511100010189.84959.60101100
380105911110010194.755597.650101101
390111210000000020.3224.5010