install.packages(c(“MASS”, “class”, “e1071”, “caret”))
library(MASS) # For LDA library(class) # For KNN library(e1071) # For Naive Bayes library(caret) # For data splitting and evaluation
data(“Boston”, package = “MASS”) Boston\(HighCrime <- as.factor(ifelse(Boston\)crim > median(Boston$crim), “Above”, “Below”))
set.seed(123) trainIndex <- createDataPartition(Boston$HighCrime, p = 0.7, list = FALSE) train <- Boston[trainIndex,] test <- Boston[-trainIndex,]
logit_model <- glm(HighCrime ~ ., data = train, family = binomial) logit_preds <- predict(logit_model, test, type = “response”) logit_class <- ifelse(logit_preds > 0.5, “Above”, “Below”)
lda_model <- lda(HighCrime ~ ., data = train) lda_preds <- predict(lda_model, test)$class
nb_model <- naiveBayes(HighCrime ~ ., data = train) nb_preds <- predict(nb_model, test)
knn_preds <- knn(train[, -which(names(train) == “HighCrime”)], test[, -which(names(test) == “HighCrime”)], train$HighCrime, k=5)
results <- data.frame( Model = c(“Logistic Regression”, “LDA”, “Naive Bayes”, “KNN”), Accuracy = c( mean(logit_class == test\(HighCrime), mean(lda_preds == test\)HighCrime), mean(nb_preds == test\(HighCrime), mean(knn_preds == test\)HighCrime) ) ) print(results)