if (!require("mlbench")) install.packages("mlbench")
library(mlbench)
data("Glass", package = "mlbench")
str(Glass)
print(dim(Glass))
print(summary(Glass))
head(Glass)
nrow(Glass)
unique(Glass$Type)
colSums(is.na(Glass))
table(Glass$Type)
prop.table(table(Glass$Type))
Glass2 <- Glass[, c( -10)]
normalize <- function(x) { return((x - min(x)) / (max(x) - min(x))) }
Glass2_n <- as.data.frame(lapply(Glass2, normalize))
summary(Glass2_n)
set.seed(7)
train_indx <- createDataPartition(Glass$Type, p = 0.9, list = FALSE)
Glass_train <- Glass2_n[train_indx, ]
Glass_test <- Glass2_n[-train_indx, ]
nrow(Glass_train)
nrow(Glass_test)
Glass_train_label <- Glass$Type[train_indx]
Glass_test_label <- Glass$Type[-train_indx]
length(Glass_train_label)
length(Glass_test_label)
accuracies <- data.frame(k = integer(), accuracy = numeric())
set.seed(7)
for (i in seq(1, 57, 2)) {
result1 <- knn(train = Glass_train, test = Glass_test, cl = Glass_train_label, k = i)
accuracy <- sum(result1 == Glass_test_label) / length(Glass_test_label) * 100
accuracies <- rbind(accuracies, data.frame(k = i, accuracy = accuracy))
print(paste(i, '개 일때 정확도 ', accuracy))
}
accuracies