R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readr)
## Warning: package 'readr' was built under R version 4.2.3
library(C50)
## Warning: package 'C50' was built under R version 4.2.3
library(gmodels)
## Warning: package 'gmodels' was built under R version 4.2.3
set.seed(1234)
project <- read.csv("C:\\Users\\hussain7108\\Desktop\\churn (1).csv", stringsAsFactors = TRUE)

project <- subset(project, select = -c(Phone))
project <-subset(project, select = -c(State))

View(project)
str(project)
## 'data.frame':    3333 obs. of  19 variables:
##  $ Account.Length: int  128 107 137 84 75 118 121 147 117 141 ...
##  $ Area.Code     : int  415 415 415 408 415 510 510 415 408 415 ...
##  $ Int.l.Plan    : Factor w/ 2 levels "no","yes": 1 1 1 2 2 2 1 2 1 2 ...
##  $ VMail.Plan    : Factor w/ 2 levels "no","yes": 2 2 1 1 1 1 2 1 1 2 ...
##  $ VMail.Message : int  25 26 0 0 0 0 24 0 0 37 ...
##  $ Day.Mins      : num  265 162 243 299 167 ...
##  $ Day.Calls     : int  110 123 114 71 113 98 88 79 97 84 ...
##  $ Day.Charge    : num  45.1 27.5 41.4 50.9 28.3 ...
##  $ Eve.Mins      : num  197.4 195.5 121.2 61.9 148.3 ...
##  $ Eve.Calls     : int  99 103 110 88 122 101 108 94 80 111 ...
##  $ Eve.Charge    : num  16.78 16.62 10.3 5.26 12.61 ...
##  $ Night.Mins    : num  245 254 163 197 187 ...
##  $ Night.Calls   : int  91 103 104 89 121 118 118 96 90 97 ...
##  $ Night.Charge  : num  11.01 11.45 7.32 8.86 8.41 ...
##  $ Intl.Mins     : num  10 13.7 12.2 6.6 10.1 6.3 7.5 7.1 8.7 11.2 ...
##  $ Intl.Calls    : int  3 3 5 7 3 6 7 6 4 5 ...
##  $ Intl.Charge   : num  2.7 3.7 3.29 1.78 2.73 1.7 2.03 1.92 2.35 3.02 ...
##  $ CustServ.Calls: int  1 1 0 2 3 0 3 0 1 0 ...
##  $ Churn.        : Factor w/ 2 levels "False.","True.": 1 1 1 1 1 1 1 1 1 1 ...
table(project$Int.l.Plan)
## 
##   no  yes 
## 3010  323
table(project$VMail.Plan)
## 
##   no  yes 
## 2411  922
table(project$Churn.)
## 
## False.  True. 
##   2850    483
train_sample <- sample(3333, 3000)
str(train_sample)
##  int [1:3000] 3066 3173 1004 623 2953 2693 934 400 2948 2146 ...
project_train <- project[train_sample, ]
project_test  <- project[-train_sample, ]
prop.table(table(project_train$Churn.))
## 
## False.  True. 
##  0.855  0.145
prop.table(table(project_test$Churn.))
## 
##    False.     True. 
## 0.8558559 0.1441441
project_model <- C5.0(project_train[-19], project_train$Churn.)
project_model 
## 
## Call:
## C5.0.default(x = project_train[-19], y = project_train$Churn.)
## 
## Classification Tree
## Number of samples: 3000 
## Number of predictors: 18 
## 
## Tree size: 27 
## 
## Non-standard options: attempt to group attributes
summary(project_model)
## 
## Call:
## C5.0.default(x = project_train[-19], y = project_train$Churn.)
## 
## 
## C5.0 [Release 2.07 GPL Edition]      Thu May  9 14:17:07 2024
## -------------------------------
## 
## Class specified by attribute `outcome'
## 
## Read 3000 cases (19 attributes) from undefined.data
## 
## Decision tree:
## 
## Day.Mins > 264.4:
## :...VMail.Plan = yes:
## :   :...Int.l.Plan = no: False. (39/1)
## :   :   Int.l.Plan = yes: True. (8/3)
## :   VMail.Plan = no:
## :   :...Eve.Mins > 188:
## :       :...Night.Mins > 126.9: True. (82/1)
## :       :   Night.Mins <= 126.9:
## :       :   :...Day.Mins <= 277: False. (4)
## :       :       Day.Mins > 277: True. (3)
## :       Eve.Mins <= 188:
## :       :...Day.Mins > 310.4: True. (8)
## :           Day.Mins <= 310.4:
## :           :...Eve.Charge <= 12.26: False. (13)
## :               Eve.Charge > 12.26:
## :               :...Night.Mins <= 196.5: False. (15/2)
## :                   Night.Mins > 196.5: True. (17/3)
## Day.Mins <= 264.4:
## :...CustServ.Calls > 3:
##     :...Day.Mins > 174.3:
##     :   :...Eve.Charge > 11.48: False. (94/10)
##     :   :   Eve.Charge <= 11.48:
##     :   :   :...Intl.Calls <= 6: True. (10/1)
##     :   :       Intl.Calls > 6: False. (2)
##     :   Day.Mins <= 174.3:
##     :   :...Eve.Charge <= 18.05: True. (76/3)
##     :       Eve.Charge > 18.05:
##     :       :...Day.Mins <= 134.5: True. (19/1)
##     :           Day.Mins > 134.5:
##     :           :...Intl.Calls > 3: False. (14)
##     :               Intl.Calls <= 3:
##     :               :...Day.Mins <= 163.2: True. (8/2)
##     :                   Day.Mins > 163.2: False. (5)
##     CustServ.Calls <= 3:
##     :...Int.l.Plan = yes:
##         :...Intl.Calls <= 2: True. (47)
##         :   Intl.Calls > 2:
##         :   :...Intl.Mins <= 13.1: False. (154/4)
##         :       Intl.Mins > 13.1: True. (40)
##         Int.l.Plan = no:
##         :...Day.Mins <= 221.8: False. (1968/53)
##             Day.Mins > 221.8:
##             :...Eve.Charge <= 20.5: False. (287/17)
##                 Eve.Charge > 20.5:
##                 :...VMail.Plan = yes: False. (22)
##                     VMail.Plan = no:
##                     :...Night.Mins > 172.5: True. (48/8)
##                         Night.Mins <= 172.5:
##                         :...Day.Mins <= 246.6: False. (11)
##                             Day.Mins > 246.6:
##                             :...Day.Charge <= 43.33: True. (4)
##                                 Day.Charge > 43.33: False. (2)
## 
## 
## Evaluation on training data (3000 cases):
## 
##      Decision Tree   
##    ----------------  
##    Size      Errors  
## 
##      27  109( 3.6%)   <<
## 
## 
##     (a)   (b)    <-classified as
##    ----  ----
##    2543    22    (a): class False.
##      87   348    (b): class True.
## 
## 
##  Attribute usage:
## 
##  100.00% Day.Mins
##   93.70% CustServ.Calls
##   87.67% Int.l.Plan
##   21.57% Eve.Charge
##    9.33% Intl.Calls
##    9.20% VMail.Plan
##    6.47% Intl.Mins
##    6.20% Night.Mins
##    4.73% Eve.Mins
##    0.20% Day.Charge
## 
## 
## Time: 0.0 secs
project_pred <- predict(project_model, project_test)

CrossTable(project_test$Churn., project_pred,
           prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,
           dnn = c('actual Churn', 'predicted Churn'))
## 
##  
##    Cell Contents
## |-------------------------|
## |                       N |
## |         N / Table Total |
## |-------------------------|
## 
##  
## Total Observations in Table:  333 
## 
##  
##              | predicted Churn 
## actual Churn |    False. |     True. | Row Total | 
## -------------|-----------|-----------|-----------|
##       False. |       281 |         4 |       285 | 
##              |     0.844 |     0.012 |           | 
## -------------|-----------|-----------|-----------|
##        True. |        15 |        33 |        48 | 
##              |     0.045 |     0.099 |           | 
## -------------|-----------|-----------|-----------|
## Column Total |       296 |        37 |       333 | 
## -------------|-----------|-----------|-----------|
## 
## 
project_boost10 <- C5.0(project_train[-19], project_train$Churn.,
                        trials = 10)
project_boost10
## 
## Call:
## C5.0.default(x = project_train[-19], y = project_train$Churn., trials = 10)
## 
## Classification Tree
## Number of samples: 3000 
## Number of predictors: 18 
## 
## Number of boosting iterations: 10 
## Average tree size: 30.2 
## 
## Non-standard options: attempt to group attributes
summary(project_boost10)
## 
## Call:
## C5.0.default(x = project_train[-19], y = project_train$Churn., trials = 10)
## 
## 
## C5.0 [Release 2.07 GPL Edition]      Thu May  9 14:17:07 2024
## -------------------------------
## 
## Class specified by attribute `outcome'
## 
## Read 3000 cases (19 attributes) from undefined.data
## 
## -----  Trial 0:  -----
## 
## Decision tree:
## 
## Day.Mins > 264.4:
## :...VMail.Plan = yes:
## :   :...Int.l.Plan = no: False. (39/1)
## :   :   Int.l.Plan = yes: True. (8/3)
## :   VMail.Plan = no:
## :   :...Eve.Mins > 188:
## :       :...Night.Mins > 126.9: True. (82/1)
## :       :   Night.Mins <= 126.9:
## :       :   :...Day.Mins <= 277: False. (4)
## :       :       Day.Mins > 277: True. (3)
## :       Eve.Mins <= 188:
## :       :...Day.Mins > 310.4: True. (8)
## :           Day.Mins <= 310.4:
## :           :...Eve.Charge <= 12.26: False. (13)
## :               Eve.Charge > 12.26:
## :               :...Night.Mins <= 196.5: False. (15/2)
## :                   Night.Mins > 196.5: True. (17/3)
## Day.Mins <= 264.4:
## :...CustServ.Calls > 3:
##     :...Day.Mins > 174.3:
##     :   :...Eve.Charge > 11.48: False. (94/10)
##     :   :   Eve.Charge <= 11.48:
##     :   :   :...Intl.Calls <= 6: True. (10/1)
##     :   :       Intl.Calls > 6: False. (2)
##     :   Day.Mins <= 174.3:
##     :   :...Eve.Charge <= 18.05: True. (76/3)
##     :       Eve.Charge > 18.05:
##     :       :...Day.Mins <= 134.5: True. (19/1)
##     :           Day.Mins > 134.5:
##     :           :...Intl.Calls > 3: False. (14)
##     :               Intl.Calls <= 3:
##     :               :...Day.Mins <= 163.2: True. (8/2)
##     :                   Day.Mins > 163.2: False. (5)
##     CustServ.Calls <= 3:
##     :...Int.l.Plan = yes:
##         :...Intl.Calls <= 2: True. (47)
##         :   Intl.Calls > 2:
##         :   :...Intl.Mins <= 13.1: False. (154/4)
##         :       Intl.Mins > 13.1: True. (40)
##         Int.l.Plan = no:
##         :...Day.Mins <= 221.8: False. (1968/53)
##             Day.Mins > 221.8:
##             :...Eve.Charge <= 20.5: False. (287/17)
##                 Eve.Charge > 20.5:
##                 :...VMail.Plan = yes: False. (22)
##                     VMail.Plan = no:
##                     :...Night.Mins > 172.5: True. (48/8)
##                         Night.Mins <= 172.5:
##                         :...Day.Mins <= 246.6: False. (11)
##                             Day.Mins > 246.6:
##                             :...Day.Charge <= 43.33: True. (4)
##                                 Day.Charge > 43.33: False. (2)
## 
## -----  Trial 1:  -----
## 
## Decision tree:
## 
## Day.Mins > 242.1:
## :...Eve.Charge > 17.37:
## :   :...VMail.Plan = no: True. (212.3/29.4)
## :   :   VMail.Plan = yes: False. (57.1/17.8)
## :   Eve.Charge <= 17.37:
## :   :...VMail.Plan = yes: False. (48.2/1.5)
## :       VMail.Plan = no:
## :       :...Day.Mins <= 275.4: False. (123.8/23.1)
## :           Day.Mins > 275.4: True. (44.4/9.1)
## Day.Mins <= 242.1:
## :...Eve.Charge > 27.6: True. (42.4/11.4)
##     Eve.Charge <= 27.6:
##     :...CustServ.Calls > 3:
##         :...Day.Mins <= 120.5: True. (23.5)
##         :   Day.Mins > 120.5:
##         :   :...Eve.Charge <= 15.81: True. (70/15.2)
##         :       Eve.Charge > 15.81: False. (144.6/46.4)
##         CustServ.Calls <= 3:
##         :...Night.Charge <= 5.4: False. (98/0.8)
##             Night.Charge > 5.4:
##             :...Eve.Calls <= 59: False. (34.2)
##                 Eve.Calls > 59:
##                 :...Int.l.Plan = yes: False. (151.9/58.5)
##                     Int.l.Plan = no:
##                     :...VMail.Message > 36: False. (103.2/29.5)
##                         VMail.Message <= 36:
##                         :...CustServ.Calls > 2: False. (249.1/25.2)
##                             CustServ.Calls <= 2:
##                             :...Eve.Charge <= 11.11: False. (101.8)
##                                 Eve.Charge > 11.11:
##                                 :...Eve.Charge <= 12.22: False. (110.1/51.7)
##                                     Eve.Charge > 12.22:
##                                     :...Eve.Charge <= 14.18: False. (156.4)
##                                         Eve.Charge > 14.18:
##                                         :...Intl.Calls > 9: False. (43.1/0.8)
##                                             Intl.Calls <= 9:
##                                             :...Night.Calls <= 115: False. (875.9/194.4)
##                                                 Night.Calls > 115: [S1]
## 
## SubTree [S1]
## 
## Intl.Calls > 6: False. (17.5)
## Intl.Calls <= 6:
## :...Intl.Mins <= 6.8: False. (19/0.8)
##     Intl.Mins > 6.8:
##     :...Night.Charge <= 10.74: False. (189.5/67.9)
##         Night.Charge > 10.74: True. (84.1/23.5)
## 
## -----  Trial 2:  -----
## 
## Decision tree:
## 
## Int.l.Plan = yes:
## :...Intl.Calls <= 2: True. (133.7)
## :   Intl.Calls > 2:
## :   :...Intl.Mins > 13.1: True. (90.9)
## :       Intl.Mins <= 13.1:
## :       :...Eve.Charge > 26.24: True. (22.1/4)
## :           Eve.Charge <= 26.24:
## :           :...Eve.Calls <= 62: True. (9.4/1.2)
## :               Eve.Calls > 62: False. (165.2/22.8)
## Int.l.Plan = no:
## :...Night.Charge <= 5.39: False. (100/4.7)
##     Night.Charge > 5.39:
##     :...CustServ.Calls > 4: True. (117.6/44)
##         CustServ.Calls <= 4:
##         :...Day.Mins > 245:
##             :...Eve.Charge <= 14.16: False. (65.1/5.3)
##             :   Eve.Charge > 14.16:
##             :   :...Night.Charge <= 8.37: False. (75.2/29.3)
##             :       Night.Charge > 8.37: True. (166/29.7)
##             Day.Mins <= 245:
##             :...Eve.Calls <= 59: False. (32.5/0.6)
##                 Eve.Calls > 59:
##                 :...VMail.Message > 39: True. (68.7/30.6)
##                     VMail.Message <= 39:
##                     :...VMail.Message > 36: False. (34)
##                         VMail.Message <= 36:
##                         :...Night.Calls > 132: False. (98.5/11.6)
##                             Night.Calls <= 132:
##                             :...Eve.Charge <= 11.11: False. (108/12.5)
##                                 Eve.Charge > 11.11:
##                                 :...Eve.Charge <= 12.22: True. (119.8/56.3)
##                                     Eve.Charge > 12.22:
##                                     :...Intl.Calls > 9: False. (41.8)
##                                         Intl.Calls <= 9:
##                                         :...Eve.Charge <= 14.18: False. (152.2/9.7)
##                                             Eve.Charge > 14.18:
##                                             :...Day.Mins <= 78.3: False. (27.2)
##                                                 Day.Mins > 78.3: [S1]
## 
## SubTree [S1]
## 
## Night.Calls > 124: True. (122.7/58.4)
## Night.Calls <= 124:
## :...CustServ.Calls > 1: False. (509.4/124.7)
##     CustServ.Calls <= 1:
##     :...Day.Calls <= 77: False. (63.1/2.2)
##         Day.Calls > 77:
##         :...Night.Calls <= 70: False. (25.9)
##             Night.Calls > 70:
##             :...Night.Calls > 121: False. (27.7/0.6)
##                 Night.Calls <= 121:
##                 :...VMail.Plan = yes: False. (140.6/44.1)
##                     VMail.Plan = no:
##                     :...Day.Mins > 212.4: True. (136.6/41.3)
##                         Day.Mins <= 212.4:
##                         :...Eve.Charge <= 15.91: False. (32.7)
##                             Eve.Charge > 15.91:
##                             :...Intl.Mins <= 7.3: False. (22.9)
##                                 Intl.Mins > 7.3:
##                                 :...Day.Calls <= 85: False. (16.7)
##                                     Day.Calls > 85:
##                                     :...Eve.Charge <= 17.89: True. (125/39.6)
##                                         Eve.Charge > 17.89: False. (149/50.1)
## 
## -----  Trial 3:  -----
## 
## Decision tree:
## 
## Int.l.Plan = yes:
## :...Intl.Calls <= 2: True. (109)
## :   Intl.Calls > 2:
## :   :...Intl.Mins > 13.1: True. (74.1)
## :       Intl.Mins <= 13.1:
## :       :...CustServ.Calls <= 3: False. (158.8/39.5)
## :           CustServ.Calls > 3: True. (26.6/7.1)
## Int.l.Plan = no:
## :...Day.Mins > 259.3:
##     :...VMail.Plan = yes: False. (48.1/7.2)
##     :   VMail.Plan = no:
##     :   :...Eve.Charge <= 14.21: False. (41.5/10.2)
##     :       Eve.Charge > 14.21: True. (140.3/26.4)
##     Day.Mins <= 259.3:
##     :...CustServ.Calls > 3:
##         :...Day.Mins > 187.9: False. (95.9/13.8)
##         :   Day.Mins <= 187.9:
##         :   :...Eve.Charge <= 21.25: True. (182.7/41.6)
##         :       Eve.Charge > 21.25: False. (28.1/3.9)
##         CustServ.Calls <= 3:
##         :...Night.Charge <= 5.4: False. (67.4/1.4)
##             Night.Charge > 5.4:
##             :...Eve.Charge <= 17.04:
##                 :...Intl.Mins > 11.8: False. (224.7/12.1)
##                 :   Intl.Mins <= 11.8:
##                 :   :...Night.Calls > 127: False. (53.4)
##                 :       Night.Calls <= 127:
##                 :       :...Night.Calls <= 110: False. (461.4/86.4)
##                 :           Night.Calls > 110:
##                 :           :...CustServ.Calls > 2: False. (18.3)
##                 :               CustServ.Calls <= 2:
##                 :               :...Eve.Charge <= 12.1: False. (23.2)
##                 :                   Eve.Charge > 12.1: True. (141.1/63.9)
##                 Eve.Charge > 17.04:
##                 :...Night.Calls <= 68: False. (33.4)
##                     Night.Calls > 68:
##                     :...Day.Mins <= 151.8: False. (262.8/45.6)
##                         Day.Mins > 151.8:
##                         :...Intl.Calls > 8: False. (32/3.5)
##                             Intl.Calls <= 8:
##                             :...Day.Calls > 128: True. (81.7/27.8)
##                                 Day.Calls <= 128:
##                                 :...Night.Calls > 132: False. (29.9)
##                                     Night.Calls <= 132:
##                                     :...Night.Charge <= 6.79: False. (34.8)
##                                         Night.Charge > 6.79:
##                                         :...Night.Mins > 274.2: True. (65.6/18.3)
##                                             Night.Mins <= 274.2:
##                                             :...Eve.Mins <= 205.6: False. (32.2)
##                                                 Eve.Mins > 205.6: [S1]
## 
## SubTree [S1]
## 
## Intl.Mins <= 7.8: False. (80.7/12.5)
## Intl.Mins > 7.8:
## :...Day.Calls <= 64: True. (29.8/5.5)
##     Day.Calls > 64:
##     :...Intl.Calls > 5: False. (69.1/17.3)
##         Intl.Calls <= 5:
##         :...Night.Calls <= 73: True. (22.3/3)
##             Night.Calls > 73:
##             :...Account.Length > 152: True. (59.5/16.8)
##                 Account.Length <= 152:
##                 :...Day.Mins <= 166.7: False. (25.3)
##                     Day.Mins > 166.7:
##                     :...Eve.Calls > 118: False. (34.2/4.1)
##                         Eve.Calls <= 118:
##                         :...CustServ.Calls <= 0: False. (44.6/9.5)
##                             CustServ.Calls > 0:
##                             :...Eve.Charge <= 18.68: False. (20.2)
##                                 Eve.Charge > 18.68: True. (147.2/50.1)
## 
## -----  Trial 4:  -----
## 
## Decision tree:
## 
## Int.l.Plan = yes:
## :...Intl.Calls <= 2: True. (87.6)
## :   Intl.Calls > 2:
## :   :...Intl.Mins > 13.1: True. (59.6)
## :       Intl.Mins <= 13.1:
## :       :...Day.Calls <= 66: True. (19.7/2.4)
## :           Day.Calls > 66:
## :           :...Intl.Calls <= 7: False. (133.2/33)
## :               Intl.Calls > 7: True. (32.6/11.6)
## Int.l.Plan = no:
## :...Day.Mins > 239.5:
##     :...Day.Mins > 313.8: True. (27.1)
##     :   Day.Mins <= 313.8:
##     :   :...VMail.Plan = yes: False. (75.5/8.4)
##     :       VMail.Plan = no:
##     :       :...Night.Charge > 10.47: True. (99/19.7)
##     :           Night.Charge <= 10.47:
##     :           :...Eve.Mins > 259: True. (23.4/1.4)
##     :               Eve.Mins <= 259:
##     :               :...Intl.Mins <= 7.2: False. (48.1/0.8)
##     :                   Intl.Mins > 7.2:
##     :                   :...Eve.Charge <= 20.43: False. (150/59.3)
##     :                       Eve.Charge > 20.43: True. (14.6/0.4)
##     Day.Mins <= 239.5:
##     :...CustServ.Calls > 3:
##         :...Day.Mins <= 138.6: True. (64.7/5.1)
##         :   Day.Mins > 138.6:
##         :   :...Eve.Charge > 19.7: False. (42.1)
##         :       Eve.Charge <= 19.7:
##         :       :...Night.Charge <= 6.85: True. (23.8/1.6)
##         :           Night.Charge > 6.85: False. (149.5/51.8)
##         CustServ.Calls <= 3:
##         :...Day.Calls <= 59: False. (37.2)
##             Day.Calls > 59:
##             :...Night.Charge <= 5.4: False. (46.9)
##                 Night.Charge > 5.4:
##                 :...Day.Mins <= 78.5: False. (36.1)
##                     Day.Mins > 78.5:
##                     :...Eve.Calls > 125:
##                         :...Night.Calls > 117: False. (30.2)
##                         :   Night.Calls <= 117:
##                         :   :...CustServ.Calls > 2: False. (16.1)
##                         :       CustServ.Calls <= 2:
##                         :       :...Intl.Calls <= 2: False. (19.4/1.4)
##                         :           Intl.Calls > 2: True. (139.8/62.2)
##                         Eve.Calls <= 125:
##                         :...Eve.Calls > 117: False. (117.6/6.9)
##                             Eve.Calls <= 117:
##                             :...Intl.Mins > 15.5: False. (28.9)
##                                 Intl.Mins <= 15.5:
##                                 :...VMail.Message > 43: True. (31.9/15)
##                                     VMail.Message <= 43:
##                                     :...Account.Length <= 91:
##                                         :...Day.Calls > 96: False. (295.1/17.7)
##                                         :   Day.Calls <= 96: [S1]
##                                         Account.Length > 91:
##                                         :...Account.Length <= 92: True. (27.3/8.6)
##                                             Account.Length > 92:
##                                             :...Night.Charge > 9.73: [S2]
##                                                 Night.Charge <= 9.73: [S3]
## 
## SubTree [S1]
## 
## Account.Length <= 24: True. (28.8/8)
## Account.Length > 24: False. (252/64.3)
## 
## SubTree [S2]
## 
## Eve.Charge <= 22.74: False. (272/20.4)
## Eve.Charge > 22.74: True. (34.7/12.8)
## 
## SubTree [S3]
## 
## Account.Length <= 97: False. (28.4)
## Account.Length > 97:
## :...Night.Mins <= 140: False. (28.4)
##     Night.Mins > 140:
##     :...Day.Calls > 119: True. (140.3/62.9)
##         Day.Calls <= 119:
##         :...Intl.Calls > 7: False. (33)
##             Intl.Calls <= 7:
##             :...VMail.Message > 33: False. (20.6)
##                 VMail.Message <= 33:
##                 :...Eve.Calls <= 83: False. (63/8.2)
##                     Eve.Calls > 83:
##                     :...Night.Charge <= 6.93: False. (11.4)
##                         Night.Charge > 6.93:
##                         :...Eve.Charge <= 20.81: False. (148.9/49.5)
##                             Eve.Charge > 20.81: True. (61.5/14)
## 
## -----  Trial 5:  -----
## 
## Decision tree:
## 
## Int.l.Plan = yes:
## :...Intl.Calls <= 2: True. (70.6)
## :   Intl.Calls > 2:
## :   :...Intl.Mins <= 13.1: False. (201/76.2)
## :       Intl.Mins > 13.1: True. (48)
## Int.l.Plan = no:
## :...Day.Mins > 263.1:
##     :...Eve.Charge <= 12.68: False. (15.8)
##     :   Eve.Charge > 12.68:
##     :   :...VMail.Plan = no: True. (155.5/29.9)
##     :       VMail.Plan = yes: False. (29.1/6.8)
##     Day.Mins <= 263.1:
##     :...CustServ.Calls > 3:
##         :...Day.Calls > 138: True. (16)
##         :   Day.Calls <= 138:
##         :   :...Day.Mins > 201.2: False. (63.6/10.7)
##         :       Day.Mins <= 201.2:
##         :       :...Eve.Charge <= 16.18: True. (98.7/14.1)
##         :           Eve.Charge > 16.18: False. (133.9/59.9)
##         CustServ.Calls <= 3:
##         :...Eve.Calls <= 59: False. (28.9)
##             Eve.Calls > 59:
##             :...Eve.Calls > 147: False. (27.6)
##                 Eve.Calls <= 147:
##                 :...Day.Mins <= 223.2: False. (1678.6/352.9)
##                     Day.Mins > 223.2:
##                     :...Eve.Charge <= 22.85: False. (369.1/115.9)
##                         Eve.Charge > 22.85: True. (63.6/11.7)
## 
## -----  Trial 6:  -----
## 
## Decision tree:
## 
## CustServ.Calls > 3:
## :...Day.Mins <= 153.4: True. (179.9/12.7)
## :   Day.Mins > 153.4:
## :   :...Day.Calls > 127: True. (29.9/2)
## :       Day.Calls <= 127:
## :       :...Eve.Calls > 125: False. (22.7/1.2)
## :           Eve.Calls <= 125:
## :           :...Eve.Charge <= 11.48: True. (33.6/2.1)
## :               Eve.Charge > 11.48: False. (208.8/91.6)
## CustServ.Calls <= 3:
## :...Int.l.Plan = yes:
##     :...Intl.Calls <= 2: True. (46.1)
##     :   Intl.Calls > 2:
##     :   :...Intl.Mins > 13.1: True. (38.7)
##     :       Intl.Mins <= 13.1:
##     :       :...Day.Mins <= 222.1: False. (59.5)
##     :           Day.Mins > 222.1: True. (116/31.4)
##     Int.l.Plan = no:
##     :...Day.Mins > 236.3:
##         :...VMail.Plan = yes: False. (79.4/21)
##         :   VMail.Plan = no:
##         :   :...Night.Charge <= 6.64: False. (56/10.7)
##         :       Night.Charge > 6.64:
##         :       :...Eve.Charge <= 15.56: False. (135.6/53.8)
##         :           Eve.Charge > 15.56:
##         :           :...Intl.Mins <= 7.4: False. (28.1/7.3)
##         :               Intl.Mins > 7.4: True. (206.7/25.3)
##         Day.Mins <= 236.3:
##         :...Night.Calls <= 68: False. (52.3)
##             Night.Calls > 68:
##             :...Night.Charge <= 5.4: False. (30.1)
##                 Night.Charge > 5.4:
##                 :...CustServ.Calls > 2:
##                     :...Eve.Mins <= 77.9: True. (11.6/0.5)
##                     :   Eve.Mins > 77.9: False. (157.7/26.8)
##                     CustServ.Calls <= 2:
##                     :...Eve.Charge <= 10.46: False. (43.2)
##                         Eve.Charge > 10.46:
##                         :...Intl.Mins <= 6.3: False. (83.9/12.1)
##                             Intl.Mins > 6.3:
##                             :...Eve.Charge <= 12.22: True. (131.6/64.9)
##                                 Eve.Charge > 12.22:
##                                 :...Eve.Charge <= 14.34: False. (122.9)
##                                     Eve.Charge > 14.34:
##                                     :...Intl.Calls > 9: False. (25.7)
##                                         Intl.Calls <= 9:
##                                         :...Eve.Calls > 103:
##                                             :...Night.Calls <= 84: False. (61/11.9)
##                                             :   Night.Calls > 84: [S1]
##                                             Eve.Calls <= 103:
##                                             :...Night.Charge <= 7.37: False. (62.2)
##                                                 Night.Charge > 7.37: [S2]
## 
## SubTree [S1]
## 
## Intl.Charge > 4.13: True. (28.1/6.6)
## Intl.Charge <= 4.13:
## :...Eve.Charge <= 15.91: False. (50.9/7.3)
##     Eve.Charge > 15.91:
##     :...Eve.Charge <= 17.87:
##         :...Eve.Calls <= 139: True. (155/52.4)
##         :   Eve.Calls > 139: False. (9.8)
##         Eve.Charge > 17.87:
##         :...Account.Length <= 118: False. (120.5/19.5)
##             Account.Length > 118: True. (122.6/55.8)
## 
## SubTree [S2]
## 
## Intl.Mins > 13.5: False. (38.5)
## Intl.Mins <= 13.5:
## :...Intl.Mins <= 8.2: False. (58/5.5)
##     Intl.Mins > 8.2:
##     :...Account.Length <= 59: False. (33.7)
##         Account.Length > 59:
##         :...Intl.Charge <= 2.27: True. (31.1/3.8)
##             Intl.Charge > 2.27:
##             :...Account.Length <= 61: True. (18.9/0.5)
##                 Account.Length > 61:
##                 :...VMail.Message > 27: False. (44.1)
##                     VMail.Message <= 27:
##                     :...Day.Mins <= 144.5: False. (28.8)
##                         Day.Mins > 144.5:
##                         :...Intl.Mins <= 9: False. (14.2)
##                             Intl.Mins > 9:
##                             :...Eve.Calls > 92: False. (48.3/9.2)
##                                 Eve.Calls <= 92:
##                                 :...Area.Code <= 415: True. (127/36.1)
##                                     Area.Code > 415: False. (45/17.5)
## 
## -----  Trial 7:  -----
## 
## Decision tree:
## 
## CustServ.Calls > 3:
## :...Day.Mins <= 175.7: True. (286.3/50.5)
## :   Day.Mins > 175.7:
## :   :...Night.Calls <= 116: False. (113.1/33.7)
## :       Night.Calls > 116: True. (56/13.1)
## CustServ.Calls <= 3:
## :...Day.Mins > 242.2:
##     :...Day.Charge > 52.77: True. (36.7/0.2)
##     :   Day.Charge <= 52.77:
##     :   :...VMail.Plan = yes: False. (57.4/3.9)
##     :       VMail.Plan = no:
##     :       :...Eve.Charge > 20.84: True. (97.4/7.3)
##     :           Eve.Charge <= 20.84:
##     :           :...Night.Charge > 9.43: True. (149.4/43)
##     :               Night.Charge <= 9.43:
##     :               :...Intl.Mins <= 13.9: False. (158.3/40.7)
##     :                   Intl.Mins > 13.9: True. (20.9/1.4)
##     Day.Mins <= 242.2:
##     :...Night.Calls <= 68: False. (52.8/2.3)
##         Night.Calls > 68:
##         :...Eve.Charge > 20.91:
##             :...VMail.Message > 22: False. (111.3/16.6)
##             :   VMail.Message <= 22:
##             :   :...Night.Mins <= 176.6: False. (56.1/3.3)
##             :       Night.Mins > 176.6:
##             :       :...Day.Charge > 35.65: True. (116.9/23.7)
##             :           Day.Charge <= 35.65:
##             :           :...Night.Calls <= 116: False. (152.7/36.5)
##             :               Night.Calls > 116: True. (60.9/23.4)
##             Eve.Charge <= 20.91:
##             :...Eve.Calls > 137: False. (48.6/0.8)
##                 Eve.Calls <= 137:
##                 :...Eve.Calls <= 66: False. (46.9/0.8)
##                     Eve.Calls > 66:
##                     :...Eve.Calls <= 71: True. (60.6/25.3)
##                         Eve.Calls > 71:
##                         :...Intl.Calls <= 1: False. (54.2/5.5)
##                             Intl.Calls > 1:
##                             :...Day.Calls <= 67: False. (58.1/0.8)
##                                 Day.Calls > 67:
##                                 :...Day.Calls <= 86:
##                                     :...Intl.Calls > 7: False. (17/0.8)
##                                     :   Intl.Calls <= 7:
##                                     :   :...Eve.Charge > 18.83: False. (19.4)
##                                     :       Eve.Charge <= 18.83:
##                                     :       :...Eve.Calls <= 132: False. (181.6/81.2)
##                                     :           Eve.Calls > 132: True. (14.4)
##                                     Day.Calls > 86:
##                                     :...Account.Length <= 44: False. (54.9/0.8)
##                                         Account.Length > 44:
##                                         :...Day.Calls > 124: False. (192.1/76)
##                                             Day.Calls <= 124:
##                                             :...VMail.Plan = yes: False. (169/8.6)
##                                                 VMail.Plan = no: [S1]
## 
## SubTree [S1]
## 
## CustServ.Calls > 1: False. (172.4/19.5)
## CustServ.Calls <= 1:
## :...Eve.Charge > 19.23: False. (33/0.8)
##     Eve.Charge <= 19.23:
##     :...Day.Calls <= 90: False. (29.4)
##         Day.Calls > 90:
##         :...Eve.Calls <= 96: False. (73.4/9.1)
##             Eve.Calls > 96:
##             :...Account.Length <= 128: False. (153.6/42.6)
##                 Account.Length > 128: True. (90.2/31.1)
## 
## -----  Trial 8:  -----
## 
## Decision tree:
## 
## Int.l.Plan = yes:
## :...Intl.Calls <= 2: True. (111.1)
## :   Intl.Calls > 2:
## :   :...Intl.Mins > 13.1: True. (90.8)
## :       Intl.Mins <= 13.1:
## :       :...Account.Length <= 64: False. (21.6)
## :           Account.Length > 64:
## :           :...CustServ.Calls > 4: True. (13.4)
## :               CustServ.Calls <= 4:
## :               :...Account.Length <= 77: True. (19.2/0.9)
## :                   Account.Length > 77: False. (177.1/64.8)
## Int.l.Plan = no:
## :...Day.Charge > 44.78: True. (233.8/73)
##     Day.Charge <= 44.78:
##     :...CustServ.Calls > 3:
##         :...Day.Mins <= 135.7: True. (75.2/6.9)
##         :   Day.Mins > 135.7:
##         :   :...Eve.Charge > 20.84: False. (42.3)
##         :       Eve.Charge <= 20.84:
##         :       :...Eve.Charge <= 11.48: True. (34.5/3.5)
##         :           Eve.Charge > 11.48:
##         :           :...Night.Calls > 133: False. (13.2)
##         :               Night.Calls <= 133:
##         :               :...Day.Mins <= 187.9: True. (160.4/58)
##         :                   Day.Mins > 187.9: False. (60.6/9.8)
##         CustServ.Calls <= 3:
##         :...Eve.Charge <= 14.34: False. (392.1/15.5)
##             Eve.Charge > 14.34:
##             :...Night.Calls <= 68: False. (32.4)
##                 Night.Calls > 68:
##                 :...Day.Mins > 221.8:
##                     :...VMail.Plan = yes: False. (51)
##                     :   VMail.Plan = no:
##                     :   :...Eve.Charge > 22.69: True. (59.7/7.4)
##                     :       Eve.Charge <= 22.69:
##                     :       :...Night.Charge <= 7.47: False. (37.3)
##                     :           Night.Charge > 7.47:
##                     :           :...Intl.Charge <= 1.73: False. (15.6)
##                     :               Intl.Charge > 1.73:
##                     :               :...Day.Charge <= 40.1: False. (71.8/15)
##                     :                   Day.Charge > 40.1: True. (170.3/68.5)
##                     Day.Mins <= 221.8:
##                     :...Intl.Calls <= 3:
##                         :...Night.Charge > 11.79: True. (77.2/35.5)
##                         :   Night.Charge <= 11.79:
##                         :   :...Intl.Mins <= 8.2: False. (63.7)
##                         :       Intl.Mins > 8.2:
##                         :       :...Intl.Mins <= 8.7: True. (35.4/10.9)
##                         :           Intl.Mins > 8.7: False. (292.7/65.6)
##                         Intl.Calls > 3:
##                         :...Night.Calls <= 93: False. (155.4)
##                             Night.Calls > 93:
##                             :...Intl.Calls > 7: False. (53.7)
##                                 Intl.Calls <= 7:
##                                 :...CustServ.Calls > 2: False. (32.1)
##                                     CustServ.Calls <= 2:
##                                     :...Eve.Charge > 22.28: False. (51.7)
##                                         Eve.Charge <= 22.28:
##                                         :...VMail.Message > 29: False. (32.2)
##                                             VMail.Message <= 29:
##                                             :...VMail.Message > 27: True. (21.8/5.6)
##                                                 VMail.Message <= 27: [S1]
## 
## SubTree [S1]
## 
## Day.Calls <= 63: True. (18.5/5.1)
## Day.Calls > 63: False. (257.4/55.9)
## 
## -----  Trial 9:  -----
## 
## Decision tree:
## 
## Int.l.Plan = yes:
## :...Intl.Calls <= 2: True. (93.2)
## :   Intl.Calls > 2:
## :   :...Intl.Mins > 13.1: True. (76.1)
## :       Intl.Mins <= 13.1:
## :       :...Account.Length <= 64: False. (18.1)
## :           Account.Length > 64:
## :           :...Intl.Mins > 12: False. (12.4)
## :               Intl.Mins <= 12:
## :               :...Day.Calls <= 123: True. (192.3/80.7)
## :                   Day.Calls > 123: False. (14.7)
## Int.l.Plan = no:
## :...CustServ.Calls > 3:
##     :...Day.Mins <= 135.7: True. (57.2)
##     :   Day.Mins > 135.7:
##     :   :...Intl.Calls > 3:
##     :       :...Day.Calls <= 135: False. (190/52.5)
##     :       :   Day.Calls > 135: True. (10.2/0.9)
##     :       Intl.Calls <= 3:
##     :       :...Day.Charge > 48.18: True. (12.8)
##     :           Day.Charge <= 48.18:
##     :           :...Night.Charge <= 12.42: True. (137.8/60.9)
##     :               Night.Charge > 12.42: False. (23.2)
##     CustServ.Calls <= 3:
##     :...Day.Mins <= 212.9: False. (1179.9/49.2)
##         Day.Mins > 212.9:
##         :...VMail.Plan = yes: False. (211.5/7.2)
##             VMail.Plan = no:
##             :...Day.Mins > 278.4: True. (85.5/24.8)
##                 Day.Mins <= 278.4:
##                 :...Eve.Charge > 19.11:
##                     :...Day.Mins > 246.6: True. (70.3/12.5)
##                     :   Day.Mins <= 246.6:
##                     :   :...Eve.Mins <= 273.7: False. (102.7/21.3)
##                     :       Eve.Mins > 273.7: True. (50.5/9.4)
##                     Eve.Charge <= 19.11:
##                     :...Night.Charge <= 8.18: False. (119.5)
##                         Night.Charge > 8.18:
##                         :...Eve.Charge <= 13.43: False. (62.7)
##                             Eve.Charge > 13.43:
##                             :...Day.Mins <= 259.3: False. (181.1/24.6)
##                                 Day.Mins > 259.3: True. (44.3/12.6)
## 
## 
## Evaluation on training data (3000 cases):
## 
## Trial        Decision Tree   
## -----      ----------------  
##    Size      Errors  
## 
##    0     27  109( 3.6%)
##    1     23  311(10.4%)
##    2     31  534(17.8%)
##    3     35  390(13.0%)
##    4     41  427(14.2%)
##    5     15  188( 6.3%)
##    6     42  481(16.0%)
##    7     33  367(12.2%)
##    8     33  269( 9.0%)
##    9     22  251( 8.4%)
## boost             69( 2.3%)   <<
## 
## 
##     (a)   (b)    <-classified as
##    ----  ----
##    2561     4    (a): class False.
##      65   370    (b): class True.
## 
## 
##  Attribute usage:
## 
##  100.00% Int.l.Plan
##  100.00% Day.Mins
##  100.00% Eve.Charge
##  100.00% CustServ.Calls
##   98.27% Night.Charge
##   92.63% Day.Charge
##   92.60% Eve.Calls
##   91.23% Night.Calls
##   90.17% Day.Calls
##   89.40% Intl.Calls
##   85.07% Intl.Mins
##   76.13% VMail.Message
##   72.53% Account.Length
##   60.37% VMail.Plan
##   39.60% Night.Mins
##   30.93% Eve.Mins
##   26.03% Intl.Charge
##    3.30% Area.Code
## 
## 
## Time: 0.3 secs
project_boost10_pred<-predict(project_boost10, project_test)

CrossTable(project_test$Churn., project_boost10_pred,
           prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,
           dnn = c('actual Churn', 'predicted Churn'))
## 
##  
##    Cell Contents
## |-------------------------|
## |                       N |
## |         N / Table Total |
## |-------------------------|
## 
##  
## Total Observations in Table:  333 
## 
##  
##              | predicted Churn 
## actual Churn |    False. |     True. | Row Total | 
## -------------|-----------|-----------|-----------|
##       False. |       282 |         3 |       285 | 
##              |     0.847 |     0.009 |           | 
## -------------|-----------|-----------|-----------|
##        True. |        12 |        36 |        48 | 
##              |     0.036 |     0.108 |           | 
## -------------|-----------|-----------|-----------|
## Column Total |       294 |        39 |       333 | 
## -------------|-----------|-----------|-----------|
## 
## 
matrix_dimensions <- list(c("no", "yes"), c("no", "yes"))
names(matrix_dimensions) <- c("predicted", "actual")
matrix_dimensions
## $predicted
## [1] "no"  "yes"
## 
## $actual
## [1] "no"  "yes"
error_cost <- matrix(c(0, 1, 4, 0), nrow = 2, dimnames = matrix_dimensions)
error_cost
##          actual
## predicted no yes
##       no   0   4
##       yes  1   0
project_cost <- C5.0(project_train[-19], project_train$Churn.)
project_cost_pred <- predict(project_cost, project_test)
CrossTable(project_test$Churn., project_cost_pred,
           prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,
           dnn = c('actual Churn', 'predicted Churn'))
## 
##  
##    Cell Contents
## |-------------------------|
## |                       N |
## |         N / Table Total |
## |-------------------------|
## 
##  
## Total Observations in Table:  333 
## 
##  
##              | predicted Churn 
## actual Churn |    False. |     True. | Row Total | 
## -------------|-----------|-----------|-----------|
##       False. |       281 |         4 |       285 | 
##              |     0.844 |     0.012 |           | 
## -------------|-----------|-----------|-----------|
##        True. |        15 |        33 |        48 | 
##              |     0.045 |     0.099 |           | 
## -------------|-----------|-----------|-----------|
## Column Total |       296 |        37 |       333 | 
## -------------|-----------|-----------|-----------|
## 
##