#Prepare a data.frame to dump outcomes output<-data.frame(Item=rep(NA, 169), Numberi=rep(NA,169),Numberi_Wholemilk=rep(NA,169),Confidence=rep(NA,169),Lift=rep(NA,169)) #Get support for whole milk support.wholemilk <- sum(Groceries[,25]==1) / length(Groceries[,25]) #Loop through all columns, skip column 25 as this contains whole milk for(i in 1:169){ output[i,1]<- colnames(Groceries)[i] if(i != 25){ support_i_wholemilk = sum(Groceries[,i]==1 & Groceries[,25]==1) / length(Groceries[,i]) support_i = sum(Groceries[,i]==1) / length(Groceries[,i]) confidence = support_i_wholemilk / support_i lift = confidence / support.wholemilk output[i,2] = sum(Groceries[,i]==1) output[i,3] = sum(Groceries[,i]==1 & Groceries[,25]==1) output[i,4] = confidence output[i,5] = lift } } #Sort the outptu data.frame by lift, largest to smallest output[order(-1*output[,5]),] #Arules code library(arules) #All variaables must be factors, forcing factor level on each column for(i in 1:169){ Groceries[,i] <- as.factor(Groceries[,i]) } #Forcing Groceries to a transaction object gr.trans = as(Groceries,"transactions") #Rule development vai apriori function gr.rules = apriori(gr.trans, parameter = list(supp = 0.0, conf = 0.0, maxlen=2)) #Rules that have whole milk on right side gr.subset = subset(gr.rules, subset = rhs %in% "wholemilk=1") #Print rules to screen - sorted by lift inspect(sort(gr.subset,by="lift")) #Rule development vai apriori function gr.rules = apriori(gr.trans, parameter = list(supp = 0.01, conf = 0.25, maxlen=2)) #Print rules to screen - sorted by lift outcomes<-inspect(sort(gr.rules,by="lift")) #Looking at top 10 outcomes[1:10,] #Rule development vai apriori function gr.rules = apriori(gr.trans, parameter = list(supp = 0.01, conf = 0.25, maxlen=2)) #Print rules to screen - sorted by lift outcomes<-head(sort(gr.rules,by="lift"),20) library(arulesViz) plot(outcomes, method="grouped") #BobRoss A Rules analysis #Create a subset to inclue only the feature columns BobRoss2 <- BobRoss[,5:71] #All variaables must be factors, forcing factor level on each column for(i in 1:67){ BobRoss2[,i] <- as.factor(BobRoss2[,i]) } #Forcing Groceries to a transaction object gr.trans = as(BobRoss2,"transactions") #Rule development vai apriori function gr.rules = apriori(gr.trans, parameter = list(supp = 0.05, conf = 0.20, maxlen=3)) #Rules that have whole milk on right side #gr.subset = subset(gr.rules, subset = rhs %in% "wholemilk=1") #Print rules to screen - sorted by lift output <- inspect(sort(gr.rules,by="lift")[1:10]) #Print rules to screen - sorted by lift output <- head(sort(gr.rules,by="lift"),20) library(arulesViz) plot(output,method="grouped")