# 데이터 로드 (변속기가 수동인지 자동인지를 분류하기 위한 데이터)
bin <-read.csv("C:\\data//binary.csv", header = T)
bin
# am 변수를 팩터형으로 변환
bin$admit <- as.factor(bin$admit)
head(bin)
bin$admit
# 훈련 데이터와 테스트 데이터를 분리
library(caret)
set.seed(1)
train_num <- createDataPartition(bin$admit, p = 0.8, list = FALSE)
train_data <- bin[train_num,]
test_data <- bin[-train_num,]
nrow(train_data)
nrow(test_data)
C_values <- c(1:100)
C_values
gamma_values <- 2^(-20:-1)
gamma_values
# 모델 생성 및 하이퍼파라미터 설정
library(e1071)
# C와 gamma 값을 조정하여 모델 훈련
C_values <- c(1:100)
gamma_values <- 2^(-20:-1)
results <- data.frame( C=numeric(), gamma=numeric(), accuracy=numeric() )
for ( C in C_values) {
for ( gamma in gamma_values) {
set.seed(1)
bin_svm_model <- svm(admit ~ . , data = train_data, kernel = "radial", cost = C, gamma = gamma )
# 모델 예측
result <- predict(bin_svm_model, test_data[, -1]) # 정답제외하고 예측함
# 모델 평가
accuracy <- sum(result == test_data$admit) / length(test_data$admit)
results <- rbind( results, data.frame(C=C, gamma=gamma, accuracy=accuracy))
}
}
library(doBy)
orderBy(~ -accuracy, results )