본문 바로가기

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

[분류] 3. 분류모델 구현하기 - 의사결정나무, SVM

 

 

데이터 : iris

  • 의사결정나무, SVM 을 사용하여 Species 를 예측하는 분류모델 만들기
  • 높은 Accuracy 값을 가지는 모형의 예측값을 CSV 파일로 저장

 

data(iris)
df <- iris
summary(iris)
str(iris)

 

 

 

# 데이터 전처리
## Factor 변환
data(iris)
df <- iris


## Min-Max 정규화
normal <- function(x){
  return((x-min(x))/(max(x)-min(x)))
}

df[1:4] <- as.data.frame(lapply(df[1:4],normal))    # ★ as.data.frame () 

# train, test 분리 (8:2)
set.seed(123)
idx <- sample(1:nrow(df), 0.8*nrow(df))
train <- df[idx,]
test <- df[-idx,]

# df_train, df_val 분리 (8:2)
set.seed(123)
idx <- sample(1:nrow(train),0.8*nrow(train))
df_train <- train[idx,]
df_val <- train[-idx,]


# 모델 적합 및 예측
library(caret)
library(rpart)
library(e1071)
library(ModelMetrics)

set.seed(123)
m1 <- rpart(Species~.,method="class",data=df_train)  # 의사결정나무
pred1 <- predict(m1, df_val,type="class")
caret::confusionMatrix(df_val$Species,pred1)$overall[1]    # Accuracy = 

m2 <- svm(Species~.,data=df_train,probability=T)   # SVM
pred2 <- predict(m2,df_val,probability=T)
caret::confusionMatrix(df_val$Species,pred2)$overall[1]     # Accuracy = 1


# 최종모델
model <- svm(Species~.,df_train, probability=T)
pred <- predict(model,test,probability=T)

# 예측결과 저장  # ★ pred 값을 csv 로 저장한다.
write.csv(pred, "file.csv", row.names=F)
read.csv("file.csv")