bin <- read.csv('c:\\data\\binary.csv',stringsAsFactors = T)
bin$admit <- as.factor(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)
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 <- cbind(train_data_n,admit = train_data[,1])
test_data_n <- cbind(test_data_n,admit = test_data[,1])
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)
options(scipen=999)
for(C in C_values){
for(gam in gamma_values){
set.seed(1)
svm_model <- svm(admit ~ ., data = train_data_n, kernel = "radial", cost = C, gamma = gam)
result <- predict(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=gam,accuracy=accuracy))
}
}
library(doBy)
orderBy(~-accuracy,results)