728x90
#https://www.datamanim.com/dataset/03_dataq/typetwo.html
#분류
#서비스 이탈예측 데이터
#데이터 설명 : 고객의 신상정보 데이터를 통한 회사 서비스 이탈 예측 (종속변수 : Exited)
#데이터 불러오기
x_train = read.csv("https://raw.githubusercontent.com/Datamanim/datarepo/main/churnk/X_train.csv",
stringsAsFactors = T)
y_train = read.csv("https://raw.githubusercontent.com/Datamanim/datarepo/main/churnk/y_train.csv",
stringsAsFactors = T)
x_test = read.csv("https://raw.githubusercontent.com/Datamanim/datarepo/main/churnk/X_test.csv",
stringsAsFactors = T)
x_label = read.csv("https://raw.githubusercontent.com/Datamanim/datarepo/main/churnk/y_test.csv",
stringsAsFactors = T)
library(dplyr)
library(caret)
library(car)
library(lmtest)
#install.packages("ModelMetrics")
#install.packages("randomForest")
#install.packages("rpart")
library(ModelMetrics)
library(randomForest)
library(rpart)
library(e1071)
# 결측치 확인
#apply(is.na(x_train), 2, sum)
#apply(is.na(x_test), 2, sum)
#apply(is.na(y_train), 2, sum)
#학습데이터, 테스트데이터 전처리
x_train = merge(x_train, y_train, by='CustomerId')
x_test = merge(x_test, x_label, by='CustomerId')
x_test = x_test[, c(3, 6, 7, 8, 9, 10, 11, 12, 13)]
x_train = x_train[, c(3, 6, 7, 8, 9, 10, 11, 12, 13)]
#모델 생성
m1 = rpart(Exited~., data=x_train) #의사결정나무(rpart)
m2 = glm(Exited~., data=x_train, family="binomial") #로지스틱 회귀분석(glm)
m3 = randomForest(Exited~., data=x_train, ntree=100) #랜덤포레스트
m4 = svm(Exited~., data=x_train) #SVM
#예측
pd1 = predict(m1, newdata=x_test)
pd2 = predict(m2, newdata=x_test)
pd3 = predict(m3, newdata=x_test, type = "response")
# - response: 예측값
# - prob: 예측 확률의 행렬
# - vote: 투표 결과 행렬
pd4 = predict(m4, newdata=x_test)
#AUC로 모델 평가
auc1 = auc(x_train$Exited, pd1)
auc2 = auc(x_train$Exited, pd2)
auc3 = auc(x_train$Exited, pd3)
auc4 = auc(x_train$Exited, pd4)
#우수한 AUC 값을 가진 모델을 테스트데이터 예측에 활용한다.
#ROCR 패키지를 사용하는 경우 아래와 같이 수행한다.
library(ROCR) #prediction, performance 평가를 위한 라이브러리 불러오기
prd1 = prediction(pd1, x_test$Exited)
prd2 = prediction(pd2, x_test$Exited)
prd3 = prediction(pd3, x_test$Exited)
prd4 = prediction(pd4, x_test$Exited)
#AUC로 모델 평가
pf1 = performance(prd1, measure = "auc")
pf2 = performance(prd2, measure = "auc")
pf3 = performance(prd3, measure = "auc")
pf4 = performance(prd4, measure = "auc")
cat("ctree auc:", pf1@y.values[[1]], '\n')
cat("glm auc:", pf2@y.values[[1]], '\n')
cat("randomForest auc:", pf3@y.values[[1]], '\n')
cat("svm auc:", pf4@y.values[[1]], '\n')
728x90
'BAE(Certification) > [작업형2] 정형데이터 분석' 카테고리의 다른 글
[작업형2] 자동차 시장 세분화 : 22년 4회 기출 (0) | 2023.06.21 |
---|---|
[작업형2] 입학여부 확률 구하기 (0) | 2023.06.20 |
[작업형2] PimaIndiansDiabetes2 데이터 연습 (0) | 2023.06.20 |
[작업형2] Travel Insurance : 21년 3회 기출 (0) | 2023.05.25 |
[작업형2] 전자상거래 배송 데이터 : 21년 2회 기출 (0) | 2023.05.18 |