본문 바로가기

자격증/빅데이터 분석기사

의사결정나무 in R

1. iris 품종을 분류하는 분석 전체 코드

library(dplyr)
library(ggplot2)

# 의사결정나무 분류모델을 위한 패키지 임포트
library(rpart)

# 데이터 로드
df <- read.csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv",stringsAsFactors=TRUE)
summary(df)

# species 컬럼에 대해 레이블 인코딩 수행 (setosa:1, versicolor:2, virginica:3)
df$species <- as.numeric(factor(df$species),level= c("setosa","versicolor","virginica"))

# train, test 분리 (8:2)
set.seed(123)

idx <- sample(1:nrow(df), 0.8*nrow(df))
train <- df[idx,]    # 독립변수 + 종속변수
test <- df[-idx,]    # 독립변수  + 종속변수

# rpart() 함수를 사용하여 의사결정나무 학습
model <- rpart(species~., method="class", data=train)
pred <- predict(model,test,type="class")

# 모델 평가 - 혼동행렬
cm <- table(test$species,pred)
cm
# 모델평가 - 정확도
acc <- (cm[1,1] + cm[2,2] + cm[3,3]) / nrow(test)
acc

 

 

  1. species 컬럼 레이블 인코딩 
  2. train, test 분리   ( 독립변수 + 종속변수 )
  3. rpart 함수를 이용한 의사결정 나무 학습   ( 종속변수 포함하여 모델 예측 )
  4. 모델평가

 

 

2. 타이타닉 생존자를 분류하는 분석 전체 코드

library(dplyr)
library(ggplot2)

library(rpart)

df <- read.csv("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv",stringsAsFactors=TRUE)
summary(df)
str(df)

df_new <- df


# 결측값 처리
# Age 변수 결측값 평균 대치
# Embaked 변수 결측값 최빈값 대치
df_new$Age <- ifelse(is.na(df$Age),mean(df$Age,na.rm=TRUE),df$Age)
df_new$Embarked <- replace(df$Embarked,df$Embarked==" ","S")
summary(df_new)

# 레이블 인코딩
# Sex 변수 , Embarked 변수
df_new$Sex <- ifelse(df$Sex=="female",2,1)
df_new$Embarked <- as.numeric(factor(df$Embarked),level=c("C","Q","S"))

# 파생변수 Familysize 생성
df_new$Familysize <- df$SibSp + df$Parch

# 사용할 컬럼만 추출
df_new <- df_new[,c("Survived","Pclass","Sex","Age","Familysize","Fare","Embarked")]
# train, test 분리 (8:2)
set.seed(123)
idx <- sample(1:nrow(df_new), 0.8*nrow(df_new))
train = df_new[idx,]   # 독립변수 + 종속변수
test = df_new[-idx,]   # 독립변수 + 종속변수

# rpart 함수를 이용한 의사결정나무 학습
model <- rpart(Survived~., method="class",data=train)
pred <- predict(model,test[,-1],type="class")      # ★ 종속변수 제외하여 모델 예측
cm <- table(test$Survived,pred)
acc <- (cm[1,1]+cm[2,2]) / nrow(test)  
acc

 

 

 

 

 

  1. 결측값 처리
  2. 레이블 인코딩 및 파생변수 생성
  3. train , test 분리  ( 독립변수 + 종속변수 )
  4. rpqrt 함수를 이용한 의사결정나무 학습    ( 종속변수를 제외하여 모델 예측 )

 

  • 의사결정나무 분류모델을 위한 패키지 : library(rpart)
  • 의사결정나무 분류모델을 위한 함수 : rpart() , method="class" 지정
  • 모델 학습에 (독립변수 + 종속변수) 데이터셋 사용

'자격증 > 빅데이터 분석기사' 카테고리의 다른 글

로지스틱회귀(분류) in R  (0) 2022.11.25
SVM in R  (0) 2022.11.25
KNN in R  (0) 2022.11.25
모의고사 2  (0) 2022.11.25
모의고사 1  (0) 2022.11.24