Data Analysis

R/머신러닝 & 딥러닝

[R] 로지스틱 회귀분석관련 실습

Holy_Water 2022. 11. 4. 18:08

핵심 함수

glm() 로지스틱 회귀모델 생성 함수

predict() 로지스틱 회귀모델 예측치 생성 함수

ifelse()

- (조건,참,거짓) 특정 조건을 통해서 간단히 전처리할 수 있는 함수

- 조건을 제시하고 해당할 때의 반환값, 해당하지 않을 떄의 반환값을 순서대로 한줄로 구현 가능한 장점이 있음

prediction()

predict( )는 일반 함수Generic Function로 여러 가지 방식으로 모델을 만들었을 때 해당 모델로부터 새로운 데이터에 대한 예측값을 구하는 데 사용할 수 있다

performance()

prediction 객체를 performance( ) 함수에 넘겨 해당 값을 구하는 함수 

plot()

ROC커브를 그리는 함수

 

 

실습 (날씨 관련 요인 변수로 비(rain) 유무 예측)

install.packages("ROCR") #필요한 packages 인스텔하기
install.packages("car")
install.packages("lmtest")
library(car) #필요한 라이브러리들 적용하기
library(lmtest)
library(ROCR)

 

1단계: 데이터 가져오기

getwd() #현재 경로 위치 확인
weather = read.csv("dataset4/weather.csv", stringsAsFactors = F) #csv파일 불러오기
dim(weather) #데이터 정보 확인
head(weather)
str(weather)

 

2단계: 변수 선택과 더미 변수 생성

weather_df <- weather[ , c(-1, -6, -8, -14)] #weather_df에 특정 컬럼 삽입
str(weather_df) #저장된 값 구조 학인하기 
weather_df <- na.omit(weather_df)
# RainTomrrow컬럼의 값에 따라 0, 1 지정해주기
weather_df$RainTomorrow[weather_df$RainTomorrow == 'Yes'] <- 1
weather_df$RainTomorrow[weather_df$RainTomorrow == 'No'] <- 0

X, Y변수 설정, 그 후  Y변수를 대상으로 더미 변수를 생성하여 로지스틱 회귀분석 환경 설정하기

 

 

3단계: 학습데이터와 검정데이터 생성(7:3비율)

#학습 데이터와 검정데이터를 7:3비율로 나누기
idx <- sample(1:nrow(weather_df), nrow(weather_df)* 0.7)
train <- weather_df[idx, ] #나눈 후의 데이터들을 나누어 담기 
test <- weather_df[-idx, ]

 

 

4단계: 로지스틱 회귀모델 생성

# 로지스틱 회귀모델 생성, 확인
weather_model <- glm(RainTomorrow ~ ., data = train, family = 'binomial', na.action=na.omit)
weather_model
summary(weather_model)

 

 

5단계: 로지스틱 회귀모델 예측치 생성

#로지스틱 회귀모델 예측치 생성
pred <- predict(weather_model, newdata = test, type = "response")
pred
result_pred <- ifelse(pred >= 0.5, 1, 0)
result_pred
table(result_pred)

 

 

6단계: 모델평가 – 분류정확도 계산

#모델평가 해보기(분류정확도 계산)
table(result_pred, test$RainTomorrow)

 

 

7단계: ROC(Receiver Operating Characteristic) Curve를 이용한 모델 평가

pr <- prediction(pred, test$RainTomorrow)
prf <- performance(pr, measure = "tpr", x.maeasure = "fpr")
plot(prf)

 

 

plot(prf) 결과값