-
Notifications
You must be signed in to change notification settings - Fork 0
/
MBA.R
59 lines (59 loc) · 3.52 KB
/
MBA.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
install.packages('arules' , repos = "http://cran.us.r-project.org")
install.packages('arulesViz', repos = "http://cran.us.r-project.org")
install.packages('ggplot2', repos = "http://cran.us.r-project.org")
install.packages('plyr', repos = "http://cran.us.r-project.org")
install.packages('dplyr', repos = "http://cran.us.r-project.org")
library(arules)
library(arulesViz)
library(ggplot2)
library(plyr)
library(dplyr)
Groceries_dataset <- read.csv("Groceries_dataset.csv")
glimpse(Groceries_dataset)
Groceries_dataset$transactionId <- paste(as.character(Groceries_dataset$Member_number),Groceries_dataset$Date,sep="_")
Groceries_dataset$Member_number <- NULL
Groceries_dataset$Date <- NULL
glimpse(Groceries_dataset)
Groceries_basket <-ddply(Groceries_dataset, c("transactionId"),function(df1)paste(df1$itemDescription,collapse = ","))
Groceries_basket$transactionId<- NULL
colnames(Groceries_basket)<-c("basketTransactions")
head(Groceries_basket)
write.csv(Groceries_basket,"groceries_basket.csv",quote = FALSE,row.names = FALSE)
singleTransactions <- paste(as.character(Groceries_dataset$transactionId),Groceries_dataset$itemDescription,sep=";")
Groceries_singles <- data.frame(singleTransactions)
glimpse(Groceries_singles)
write.csv(Groceries_singles,"groceries_single.csv",quote = FALSE,row.names = FALSE)
rm(singleTransactions)
Best_sellers <- Groceries_dataset %>% group_by(itemDescription) %>% summarise(count=n()) %>% arrange(desc(count))
Best_sellers <- head(Best_sellers, n=15)
Best_sellers
Best_sellers %>% ggplot(aes(x=reorder(itemDescription,count), y=count))+ geom_bar(stat="identity", fill="purple")+coord_flip()+labs(y= "Amount", x = "Item")
# Basket transactions - the separator between items per transaction is ','
# Transactions <- read.transactions("groceries_basket.csv", format = 'basket',sep = ",")
# Single transactions - the separator between the transactionId and item is ';' 'cols' defines the two columns for separation
Transactions <- read.transactions("groceries_single.csv", format = 'single',sep = ";", cols = c(1,2))
summary(Transactions)
Rules <- apriori(Transactions, parameter = list(supp=0.001, conf=0.1, minlen=2, maxlen=5))
install.packages("arules", repos = "http://cran.us.r-project.org")
install.packages("arulesViz", repos = "http://cran.us.r-project.org")
install.packages("ggplot2", repos = "http://cran.us.r-project.org")
install.packages("plyr", repos = "http://cran.us.r-project.org")
install.packages("dplyr", repos = "http://cran.us.r-project.org")
Rules <- sort(Rules, by='confidence', decreasing = TRUE)
options(digits=2) # rounding off to 2 d.p.
summary(Rules)
install.packages("ggplot2", repos = "http://cran.us.r-project.org")
install.packages("plyr", repos = "http://cran.us.r-project.org")
install.packages("dplyr", repos = "http://cran.us.r-project.org")
inspect(Rules[1:10])
Rolls_rules <- apriori(Transactions, parameter = list(supp=0.001, conf=0.1), minlen=2, appearance = list(default="lhs",rhs="rolls/buns"))
install.packages("plyr", repos = "http://cran.us.r-project.org")
install.packages("dplyr", repos = "http://cran.us.r-project.org")
Rolls_rules <- sort(Rolls_rules, by='confidence', decreasing = TRUE)
inspect(head(Rolls_rules))
Rolls_rules <- apriori(Transactions, parameter = list(supp=0.001, conf=0.1), minlen=2, appearance = list(lhs="rolls/buns",default="rhs"))
install.packages("dplyr", repos = "http://cran.us.r-project.org")
Rolls_rules <- sort(Rolls_rules, by='confidence', decreasing = TRUE)
inspect(head(Rolls_rules))
Top_rules <- head(Rules, n = 10, by = "confidence")
plot(Top_rules, method = "graph", engine = "htmlwidget")