# 서포트 벡터 머신(이하 svm)은 결정 경계(Decision Boundary), 즉 분류를 위한 기준 선을 정의하는 모델이다.
# 분류되지 않은 새로운 점이 나타나면 경계의 어느 쪽에 속하는지 확인해서 분류 과제를 수행할 수 있게 된다.
# kernel trick을 사용하여 저차원에서 분류가 어려운 고차원으로 변경 후 분류 및 예측을 할 수 있다.
# 분류 경계선(hyper panel) 마진을 최대화 하기위해 데이터의 일부(support vector)가 참여.
library(e1071)
dim(iris)
set.seed(123)
idx <- sample(1:nrow(iris), nrow(iris) * 0.7)
train <- iris[idx, ]
test <- iris[-idx, ]
dim(train)
dim(test)
model <- svm(Species ~ ., data=train)
model
pred <- predict(model, test, type='class')
t <- table(pred, test$Species)
t
sum(diag(t)) / nrow(test)