CAFE

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

작성자19기_김연우|작성시간24.07.23|조회수20 목록 댓글 0

# 데이터 로드 (변속기가 수동인지 자동인지를 분류하기 위한 데이터)
data <- read.csv("c:\\data\\binary.csv", header = T)
head(data)

# admit 변수를 팩터형으로 변환
data$admit <- as.factor(data$admit)
str(data)

# 훈련 데이터와 테스트 데이터를 분리
library(caret)
set.seed(123)

train_num <- createDataPartition(data$admit, p = 0.8, list = FALSE)
train_data <- data[train_num, ]
test_data <- data[ - train_num, ]

nrow(train_data) # 321
nrow(test_data)  # 79


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))

summary(train_data_n)
summary(test_data_n)

# admit 변수를 추가
train_data_n$admit <- train_data$admit
test_data_n$admit <- test_data$admit



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

# C와 gamma 값 찾기 
C_values <- c(1:100)
C_values
gamma_values <- 2 ^ (-20:-1)
gamma_values

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

for ( C in C_values)  {
  for (gamma in gamma_values) {
    
    # 모델 생성 
    set.seed(1)
    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))
   
  }
}


options(scipen=999)
library(doBy)
print(orderBy(~ -accuracy, results))

 

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

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼