ΜΕΡΟΣ Α: Πολλαπλή Γραμμική Παλινδρόμηση

wine <- read.csv(“winequality-white.csv”, sep = “;”)

str(wine) summary(wine)

Ενδεικτική Οπτικοποίηση

plot(wine\(alcohol, wine\)quality, xlab = “Alcohol (%)”, ylab = “Quality”, main = “Alcohol vs Wine Quality”)

Δημιουργία & Αξιολόγηση Μοντέλου

model_lm <- lm(quality ~ alcohol + density + pH + volatile.acidity, data = wine) summary(model_lm)

SSE_lm <- sum(resid(model_lm)^2) R2_lm <- summary(model_lm)$r.squared

SSE_lm R2_lm

Πρόβλεψη σε Νέα Δεδομένα

pred_lm <- predict(model_lm, newdata = wine) head(pred_lm)

ΜΕΡΟΣ Β: Λογιστική Παλινδρόμηση

Διερεύνηση Dataset

install.packages(“caTools”) library(caTools)

install.packages(“ROCR”) library(ROCR)

wine_log <- read.csv(“winequality-white.csv”, sep = “;”)

wine_log\(y <- factor(ifelse(wine_log\)quality >= 7, “yes”, “no”), levels = c(“no”, “yes”)) wine_log$quality <- NULL

table(wine_log$y)

Δημιουργία & Αξιολόγηση Μοντέλου

Train / Test Split

set.seed(937) split <- sample.split(wine_log$y, SplitRatio = 0.65)

train <- subset(wine_log, split == TRUE) test <- subset(wine_log, split == FALSE)

nrow(train) nrow(test)

Logistic Regression Model

model_log <- glm(y ~ ., data = train, family = binomial()) summary(model_log)

Πρόβλεψη & Αξιολόγηση

predictTest <- predict(model_log, newdata = test, type = “response”) head(predictTest)

Confusion Matrix (threshold = 0.5)

pred_class <- factor(ifelse(predictTest >= 0.5, “yes”, “no”), levels = c(“no”, “yes”))

table(Predicted = pred_class, Actual = test$y)

ROC Curve & AUC

pred_rocr <- prediction(predictTest, test$y) perf_roc <- performance(pred_rocr, “tpr”, “fpr”) plot(perf_roc, main = “ROC Curve – Logistic Regression”)

auc_val <- performance(pred_rocr, “auc”) as.numeric()