library(arules) library(arulesViz) library(tidyverse) library(gridExtra) # czytanie danych trans <- read.transactions("Store_data.csv", format="basket", sep=",", rm.duplicates=TRUE) # Wyświetlenie informacji o obiekcie typu trans trans # Podsumowanie summary(trans) # Bezwzględna częstotliwość transakcji licznik itemFrequencyPlot(trans, topN=15, type="absolute", col="lightgreen",xlab="Przedmiot", ylab="Częstosliwość (bezwzględna)", main="Histogram częstotliwośći zakupów") # Względna częstotliwość transakcji procent wszystkich transakcji itemFrequencyPlot(trans, topN=15, type="relative", col="lightcyan", xlab="Przedmiot", ylab="Częstosliwość (względna)", main="Względna Histogram częstotliwośći zakupów") # Wsparcie i zaufanie wybór wartości do testowania supportLevels <- c(0.1, 0.05, 0.01, 0.005) confidenceLevels <- c(0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1) # Wektory dla różnych poziomów wsparcia i 9 wartości zaufania rules_sup10 <- integer(length=9) rules_sup5 <- integer(length=9) rules_sup1 <- integer(length=9) rules_sup0.5 <- integer(length=9) # Apriori z poziomem wsparcia 10% for (i in 1:length(confidenceLevels)) { rules_sup10[i] <- length(apriori(trans, parameter=list(sup=supportLevels[1], conf=confidenceLevels[i], target="rules"))) } # Apriori z poziomem wsparcia 5% for (i in 1:length(confidenceLevels)){ rules_sup5[i] <- length(apriori(trans, parameter=list(sup=supportLevels[2], conf=confidenceLevels[i], target="rules"))) } # Apriori z poziomem wsparcia 1% for (i in 1:length(confidenceLevels)){ rules_sup1[i] <- length(apriori(trans, parameter=list(sup=supportLevels[3], conf=confidenceLevels[i], target="rules"))) } # Apriori z poziomem wsparcia 0.5% for (i in 1:length(confidenceLevels)){ rules_sup0.5[i] <- length(apriori(trans, parameter=list(sup=supportLevels[4], conf=confidenceLevels[i], target="rules"))) } # Liczba znalezionych reguł z poziomem wsparcia wynoszącym 10% plot1 <- qplot(confidenceLevels, rules_sup10, geom=c("point", "line"), xlab="Zaufanie", ylab="Liczba znalezionych reguł", main="Apriori z poziomem wsparcia 10%") + theme_bw() # Liczba znalezionych reguł z poziomem wsparcia wynoszącym 5% plot2 <- qplot(confidenceLevels, rules_sup5, geom=c("point", "line"), xlab="Zaufanie", ylab="Liczba znalezionych reguł", main="Apriori z poziomem wsparcia 5%") + theme_bw() # Liczba znalezionych reguł z poziomem wsparcia wynoszącym 1% plot3 <- qplot(confidenceLevels, rules_sup1, geom=c("point", "line"), xlab="Zaufanie", ylab="Liczba znalezionych reguł", main="Apriori z poziomem wsparcia 1%") + theme_bw() # Liczba znalezionych reguł z poziomem wsparcia wynoszącym 0.5% plot4 <- qplot(confidenceLevels, rules_sup0.5, geom=c("point", "line"), xlab="Zaufanie", ylab="Liczba znalezionych reguł", main="Apriori z poziomem wsparcia 0.5%") + theme_bw() # Wykres zbiorczy grid.arrange(plot1, plot2, plot3, plot4, ncol=2) # Apriori uruchomione dla wybranego poziomu wsparcia i zaufania mysupp = myconf = rules <- apriori(trans, parameter=list(sup=mysupp, conf=myconf, target="rules")) # Pokazanie reguł asocjacyjnych inspect(rules) inspectDT(rules) # Scatter plot plot(rules, measure=c("support","lift"), shading="confidence") # Graf dla reguł plot(rules, method="graph") # Graf dla reguł uporządkowany plot(rules, method="graph", control=list(layout=igraph::in_circle())) # Pogrupowane reguły w postaci tablicowej plot(rules, method="grouped")