install.packages("arules")
install.packages("arulesViz")


library(arules)
library(arulesViz)


data("Groceries") 

cat("Τύπος δεδομένων:", class(Groceries), "\n")
cat("Ο αριθμός των καλαθιών (συναλλαγών) είναι:", length(Groceries), "\n")
cat("Ο αριθμός των μοναδικών προϊόντων είναι:", length(itemLabels(Groceries)), "\n")

summary(Groceries)

targets <- c("citrus fruit", "semi-finished bread", "margarine", "ready soups")
indexes <- match(targets, itemLabels(Groceries))

cat("\n================ INDEXES ΠΡΟΪΟΝΤΩΝ ================\n")
for(i in 1:length(targets)){
  cat("Το προϊόν '", targets[i], "' βρίσκεται στο index:", indexes[i], "\n")
}

itemFrequencyPlot(Groceries, topN = 20, type = "absolute", 
                  col = "skyblue", main = "Top 20 Πιο Συχνά Προϊόντα")


item_counts <- itemFrequency(Groceries, type = "absolute")


sorted_counts <- sort(item_counts)


print(head(sorted_counts, 5))


rules <- apriori(Groceries, 
                 parameter = list(supp = 0.006, conf = 0.25, minlen = 2))
summary(rules)


rules_sorted_by_conf <- sort(rules, by = "confidence", decreasing = TRUE)
inspect(head(rules_sorted_by_conf, 5))



item_counts <- itemFrequency(Groceries, type = "absolute")
sorted_counts <- sort(item_counts)


top_10 <- tail(sorted_counts, 10)
bottom_10 <- head(sorted_counts, 10)


comparison_data <- c(top_10, bottom_10)


barplot(comparison_data, las = 2, 
        col = c(rep("darkgreen", 10), rep("darkred", 10)),
        main = "Σύγκριση: 10 Πιο Συχνά (Πράσινο) vs 10 Πιο Σπάνια (Κόκκινο)",
        cex.names = 0.55)


milk_rules <- subset(rules, rhs %in% "whole milk")


milk_rules_sorted <- sort(milk_rules, by = "lift", decreasing = TRUE)

inspect(head(milk_rules_sorted, 5))

plot(head(milk_rules_sorted, 10), method = "graph", engine = "htmlwidget")
