rm(list=ls()) library(class) # imports knn library(MLmetrics) # imports accuracy glass = data(Glass, package = 'mlbench') training = Glass[c(1:50, 91:146), -10] trainingType = factor(Glass[c(1:50, 91:146), 10]) testing = Glass[51:90, -10] testingType = factor(Glass[51:90, 10]) # cor(training) pca_model <- prcomp(training, center = TRUE, scale = TRUE) eigenvectors = pca_model$rotation eigenvalues = pca_model$sdev^2 # Plot the variance percentage for each component barplot(eigenvalues / sum(eigenvalues)) # Q1 eigenvalues[1]/sum(eigenvalues) # Q2 Info loss = percentage of not included eigenvalues sum(eigenvalues[-c(1:4)])/sum(eigenvalues) # Q3 model = knn(training, testing, trainingType, k = 3) Accuracy(model, testingType) # Q4 same model - incorrect? elearning = 0.8 Recall(model, testingType, '2') max_acc = 0 max_i = 1 for (i in 1:9) { pcs_training = as.data.frame(predict(pca_model, training)[, 1:i]) pcs_testing = as.data.frame(predict(pca_model, testing)[, 1:i]) model = knn(pcs_training, pcs_testing, trainingType, k = 3) # print(Accuracy(model, testingType)) # print(i) acc = Accuracy(model, testingType) if (acc > max_acc){ max_acc = acc max_i = i } } # Q5 max_acc max_i