1. 데이터 탐색

R 기본 데이터인 ‘Iris’ 데이터를 활용하여 K-Nearest Neighbors(Knn), Naïve Bayes, Decision Tree 방법론을 사용하기에 앞서 데이터의 기본적인 구조를 탐색한다.
Target Variable은 Species로 설정한다.

2. Training / Test data 분류

전체 데이터는 150개로, 3:1로 나누어 Training data는 105개, Test data는 45개로 나누어 모델의 학습과 테스트를 실시한다.
각 샘플링은 랜덤으로 진행되도록 하며, 샘플된 데이터는 고정시켰다.

str(iris)
table(iris$Species)

#Normalization
normalize<-function(x){
return ((x-min(x))/ (max(x)-min(x)))
}
iris_n <- as.data.frame(lapply(iris[1:4], normalize ))

#random sample / Training, Test data
set.seed(1)
train <- round(0.7*dim(iris)[1])
train_index = sample(1:dim(iris)[1], train, replace =F)
iris_train <- iris_n[train_index,]
iris_test <- iris_n[-train_index,]
iris_train_label <- iris[train_index,5]
iris_test_label <- iris[-train_index,5]
iris_train_label
prop.table(table(iris_train_label))
prop.table(table(iris_test_label))

3. K-Nearest Neighbors (Knn)

library(class)
iris_test_pred <- knn(train=iris_train, test=iris_test, cl=iris_train_label, k=12, prob=T)
table(iris_test_pred)
CrossTable(x = iris_test_label, y = iris_test_pred, prop.chisq=FALSE)

accuracy = 0.956 error rate = 0.044

Normalization을 진행한 이후, K는 전체 자료의 개수인 150의 루트를 씌워 12개로 설정하여 KNN 분석을 시행하였다.

KNN(K=12) Classification을 진행한 결과, accuracy = 0.956, error rate = 0.044이다.

profile
잡학꾸러기

0개의 댓글