bi <- read.csv('binary.csv', header=T, stringsAsFactors = T) str(bi)
bi$admit <- as.factor(bi$admit) library(caret) set.seed(123)
train_num <- createDataPartition(bi$admit, p=0.8, list=FALSE) train_data <- bi[train_num, ] test_data <- bi[-train_num, ] nrow(train_data)#320 nrow(test_data)#80
train_data test_data
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) { # 모델 생성 및 하이퍼파라미터 설정 library(e1071) # C와 gamma 값을 조정하여 모델 훈련 set.seed(1) bi_svm_model <- svm(admit ~ ., data = train_data, kernel = "radial", cost = C, gamma = gamma) # 모델 예측 result <- predict(bi_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)) } }
options(scipen=999) library(doBy) orderBy(~ -accuracy,results)
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)
for ( C in C_values) { for ( gamma in gamma_values) { # 모델 생성 및 하이퍼파라미터 설정 library(e1071) # C와 gamma 값을 조정하여 모델 훈련 set.seed(1) bi_svm_model <- svm(admit ~ ., data = train_data_n, kernel = "radial", cost = C, gamma = gamma) # 모델 예측 result <- predict(bi_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)) } }
options(scipen=999) library(doBy) orderBy(~ -accuracy,results) |