You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.0 KiB

# Telco Customer Churn Analysis Script
# Load required libraries
library(ggplot2)
library(dplyr)
library(rpart)
library(e1071)
library(caret)
library(pROC)
# Load dataset
telco <- read.csv("Telco-Customer-Churn.csv", stringsAsFactors = TRUE)
telco$TotalCharges <- as.numeric(as.character(telco$TotalCharges))
telco <- telco[!is.na(telco$TotalCharges), ]
telco$Churn <- factor(telco$Churn, levels = c("No", "Yes"))
# Split data
set.seed(42)
trainIndex <- createDataPartition(telco$Churn, p = 0.7, list = FALSE)
train <- telco[trainIndex, ]
test <- telco[-trainIndex, ]
# Decision Tree model
dt_model <- rpart(Churn ~ tenure + MonthlyCharges + TotalCharges + SeniorCitizen,
data = train, method = "class")
dt_pred <- predict(dt_model, test, type = "class")
dt_conf <- confusionMatrix(dt_pred, test$Churn)
# Naive Bayes model
nb_model <- naiveBayes(Churn ~ tenure + MonthlyCharges + TotalCharges + SeniorCitizen,
data = train)
nb_pred <- predict(nb_model, test)
nb_conf <- confusionMatrix(nb_pred, test$Churn)
# ROC