CAFE

Re: 문제197. (오늘의 마지막 문제)미국 대학 입학 데이터인 binary.csv 를 가지고 서포트 벡터 머신 모델을

작성자19기_한지희|작성시간24.07.23|조회수19 목록 댓글 0

#구현 순서
#1. 데이터를 불러옵니다.
binary <- read.csv("c:\\data\\binary.csv", stringsAsFactors = TRUE)
binary$admit <- as.factor(binary$admit)
head(binary)
str(binary)

#2. 훈련과 테스틀 8대 2로 나눕니다.
library(caret)
set.seed(123)
k <-  createDataPartition(binary$admit, p=0.8, list=FALSE)
train_data <- binary[ k, ]
test_data <- binary[ -k, ] 
nrow(train_data)   # 320
nrow(test_data)    # 80

normalize <- function(x) {  
  return  (  ( x-min(x) ) / ( max(x) - min(x) )   ) 
}

train_data_n <-  as.data.frame( lapply( train_data[ , -1], normalize)  )
test_data_n <-  as.data.frame( lapply( test_data[ , -1], normalize)  )

train_data_n$admit <- train_data[ , c('admit')]
test_data_n$admit <- test_data[ , c('admit')]

summary(train_data_n)
summary(test_data_n)

C_values <- c(1:100)
gamma_values <- 2^(-20:-1)

results <- data.frame( C=numeric(), gamma=numeric(), accuracy=numeric() )


# 모델 생성 및 하이퍼파라미터 설정
library(e1071)

for ( C in  C_values) {
  for ( gamma in gamma_values) { 

    
# C와 gamma 값을 조정하여 모델 훈련
set.seed(123)

data_svm_model <- svm(admit ~ ., data = train_data_n, kernel = "radial", cost = C, gamma = gamma)
    
# 모델 예측
result <- predict(data_svm_model, test_data_n[, -4])   # 정답제외하고 예측함
    
# 모델 평가
accuracy <- sum(result == test_data_n$admit) / length(test_data_n$admit)
    
results <- rbind( results, data.frame(C=C, gamma=gamma, accuracy=accuracy))
  }
}

results

library(doBy)
orderBy(~ -accuracy, results )

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼