R - 로지스틱 회귀분석 #2





지난번에 이어 로지스틱 회귀 분석 실습을 계속합니다. 이번에는 날씨 정보로 추후 비가 올지 안올지를 예측하는 예제입니다. 그리고 로지스틱 회귀분석은 독립변수의 선형결합을 활용하여 사건의 발생 가능성을 예측하는 기법으로서 데이터 마이닝이나 의학 등 통계 분야에서 널리 사용되고 있는 분석 기법입니다.


코드

#날씨관련정보로 비유무 예측
weather <-read.csv("testdata/weather.csv",stringsAsFactors = F) #
dim(weather) #366행 15열 짜리
head(weather,3)
str(weather) #전체자료 읽기
weather_df <- weather[,c(-1,-6,-8,-14)]# 일부 몇개만 뺌 -6 하면 WindGustDir 빠짐
dim(weather_df) # 4개를 빼서 11열이 됨
str(weather_df)

weather_df$RainTomorrow[weather_df$RainTomorrow=="Yes"] <-1 #레인 투머로우 값을 yes 값을 1로 바꿈 no는 0 (비가오면 1이되고 비가안오면 0이됨)
weather_df$RainTomorrow[weather_df$RainTomorrow=="No"] <-0
weather_df$RainTomorrow<-as.numeric(weather_df$RainTomorrow)
str(weather_df)

#학습데이터와 검정데이터로 분리(7:3)
idx<-sample(1:nrow(weather_df),nrow(weather_df)*0.7)
train <-weather_df[idx,]
test <- weather_df[-idx,]
nrow(train);nrow(test)

#로지스틱 회쉬 모델생성
weather_model <- glm(RainTomorrow ~ ., data = train, family = 'binomial') # 독립변수 값이 한개 일때 glm을 쓴다. RainTomorrow(독립변수) 이항형 일경우 binomial을 지정한다. train으로 모델을 만듬
weather_model
summary(weather_model) #설명력은 보여주지 않음

#예측치 생성
pred<-predict(weather_model, newdata=test, type='response')
pred
#로직변환 (로지스틱함수를 쓰거나 if문을 써도 된다.)
test[1,]
#0 또는 1값으로 바꿔주기

result_pred <- ifelse(pred>=0.5 ,1 ,0) #pred 값이 0.5보다 크면 1(비가 옴)이고 작으면 0(비가 안옴)이다
result_pred

table(result_pred)

# 정확도 확인 : confusion matrix 2행 2열 표를 만듬 (table)
table(result_pred, test$RainTomorrow) #table(모델의 예측치, 종속변수y)
(84+11) /nrow(test) # 0.8636364 accuracy(정확도가) 86.4%의 정확도가 있다. 필요한변수만 쓰면된다.(forward)

# ROC curve (민감도)
install.packages('ROCR')
library(ROCR)

pr<-prediction(pred, test$RainTomorrow)
pr
prf <-performance(pr, measure = "tpr",x.measure="fpr" ) #y축 =measure = "tpr", x축 =x.measure="fpr"
plot(prf) # auc가 true positive rate 에 0.1에 가까이 갈수록 좋은 모델이다.
#AUC 영역값 구하기
auc <-performance(pr,measure = "auc")#리스트 값으로 나옴 y.values 값만 찾으면 됨
auc<-auc@y.values[[1]]
auc





샘플 데이터




본 포스팅은 KIC 캠퍼스에서 박영권 강사의 지도하에 공부하며 작성한 리포트입니다.
혹시 잘못된 내용이 있거나 문제 소지시 댓글 남겨주시면 조치하겠습니다.




'스터디 > ML·AL' 카테고리의 다른 글

R - ctree#2  (0) 2018.05.08
R - ctree #1  (0) 2018.05.08
R - 로지스틱 회귀분석 #3  (0) 2018.05.08
R - 로지스틱 회귀분석 #2  (0) 2018.05.08
R - 로지스틱 회귀분석 #1  (0) 2018.05.08
앤드류 응 교수의 새로운 책 draft를 메일로 받아보세요  (0) 2018.04.30
R - 다중 회귀분석 예제  (0) 2018.04.30

댓글(0)

Designed by JB FACTORY