핵심 함수
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)
'R > 머신러닝 & 딥러닝' 카테고리의 다른 글
[R] 시계열분석 관련 실습(2) (0) | 2022.11.07 |
---|---|
[R] 시계열분석 관련 실습(1) (0) | 2022.11.07 |
[R] 변수선택 관련 간단한 실습 (0) | 2022.11.04 |
[R] 요인분석 연습문제 (+시각화) (0) | 2022.11.04 |
[R] 회귀분석 연습문제 (0) | 2022.11.04 |