任务:
某西饼屋准备对现有的店面重新进行布置,以期能够给用户提供更加友好的体验。现有某西饼屋某天60天订单数据,部分数据如下所示,使用Apriori算法对西饼屋订单进行关联分析。
一、导入数据:
setwd('D:/goodsdata')
bread <- read.csv("bread.csv",stringsAsFactors = F)
drink <- read.csv("drink.csv",stringsAsFactors = F)
Breakfast <- read.csv("Breakfast.csv",stringsAsFactors = F)
bread:
drink:
Breakfast:
二、统计60天内每种商品的购买次数
#统计每件商品的购买次数
breakfast <-data.frame(table(Breakfast[,2]))
names(breakfast)<-c("Goods","Num")
#将统计每件商品的购买次数的breakfast表,降序排列
breakfast <- breakfast[order(breakfast$Num,decreasing = T),]
breakfast$percent <- breakfast$Num/sum(breakfast$Num)
#将统计每件商品的购买次数的breakfast表,绘制条形统计图
barplot(breakfast$Num,names.arg=breakfast$Goods,xlab="商品名称",ylab="每件商品的购买次数",col="blue",
main="某60天内每件商品的购买次数",border="red",yaxt = "n")
axis(2,at=breakfast$Num,labels=breakfast$Num,las = 1)
#将统计每件商品的购买次数的breakfast表,绘制折线统计图
plot(breakfast$Num,main="某60天内每件商品的购买次数",xlab="商品名称",ylab="每件商品的购买次数",
type="o",lty=2,col='blue',bty='l', xaxt='n',yaxt = "n")
axis(1,at=breakfast$Goods,labels=breakfast$Goods,las = 1)
axis(2,at=breakfast$Num,labels=breakfast$Num,las = 1)
#将统计商品的购物单的Breakfast表与bread表对应,显示出商品类别
Goods1 <- merge(Breakfast,bread,"Goods",all=T)
#将统计每类商品的购买次数的Type1表
Types1 <- data.frame(table(Goods1$sorts))
#将统计每类商品的购买次数的Type1表,降序排列
Types1 <- Types1[order(Types1$Freq,decreasing = T),]
#将统计每类商品的购买次数的Type1表,绘制条形统计图
barplot(Types1$Freq,names.arg=Types1$Var1,xlab="类别名称",ylab="每种类别的购买次数",col="blue",
main="某60天内每种类别的购买次数",border="red",yaxt = "n")
axis(2,at=Types1$Freq,labels=Types1$Freq,las = 1)
#将统计商品的购物单的Breakfast表与drink表对应,显示出商品类别
Goods2 <- merge(Breakfast,drink,"Goods",all=T)
#将统计每类商品的购买次数的Type2表
Types2 <- data.frame(table(Goods2$sorts))
#将统计每类商品的购买次数的Type2表,降序排列
Types2 <- Types2[order(Types2$Freq,decreasing = T),]
#将统计每类商品的购买次数的Type1表,绘制条形统计图
barplot(Types1$Freq,names.arg=Types1$Var1,xlab="类别名称",ylab="每种类别的购买次数",col="blue",
main="某60天内每种类别的购买次数",border="red",yaxt = "n")
axis(2,at=Types1$Freq,labels=Types1$Freq,las = 1)
四、统计某一特定类别中的商品
例如:点心面包中的商品统计、奶制品中的商品统计
#将点心面包数据提取
Goods1_dianxinmianbao <- subset(Goods1,Goods1$sorts == "点心面包")
#将统计点心面包中的商品购买次数的Types1_dianxinmianbao表
Types1_dianxinmianbao <- data.frame(table(Goods1_dianxinmianbao$Goods))
#将统计点心面包中的商品购买次数的Types1_dianxinmianbao表,降序排列
Types1_dianxinmianbao <- Types1_dianxinmianbao[order(Types1_dianxinmianbao$Freq,decreasing = T),]
Goods1_dianxinmianbao:(部分)
Types1_dianxinmianbao:
#将统计点心面包中的商品购买次数的Types1_dianxinmianbao表,绘制条形统计图
barplot(Types1_dianxinmianbao$Freq,names.arg=Types1_dianxinmianbao$Var1,xlab="商品名称",ylab="每种商品的购买次数",col="blue",
main="某60天内点心面包中各商品的购买次数",border="red",yaxt = "n")
axis(2,at=Types1_dianxinmianbao$Freq,labels=Types1_dianxinmianbao$Freq,las = 1)
#将奶制品数据提取
Goods2_naizhipin <- subset(Goods2,Goods2$sorts == "奶制品")
#将统计奶制品中的商品购买次数的Types2_naizhipin表
Types2_naizhipin <- data.frame(table(Goods2_naizhipin$Goods))
#将统计奶制品中的商品购买次数的Types2_naizhipin表,降序排列
Types2_naizhipin <- Types2_naizhipin[order(Types2_naizhipin$Freq,decreasing = T),]
Goods2_naizhipin:(部分)
Types2_naizhipin:
#将统计奶制品中的商品购买次数的Types2_naizhipin表,绘制条形统计图
barplot(Types2_naizhipin$Freq,names.arg=Types2_naizhipin$Var1,xlab="商品名称",ylab="每种商品的购买次数",col="blue",
main="某60天内奶制品中各商品的购买次数",border="red",yaxt = "n")
axis(2,at=Types2_naizhipin$Freq,labels=Types2_naizhipin$Freq,las = 1)
library(arules) # 导入所需库包#Apriori算法实现包含在arules包
# 数据形式转换
dataList <- list()
for (i in unique(Breakfast$ID)) {#unique返回对象的不同复取值,如unique(c(1,1,2,3)) 返回1 2 3
dataList[[i]] <- Breakfast[which(Breakfast$ID == i), 2]
}
TransRep <- as(dataList, "transactions") #事务型#转换成transaction格式
inspect(TransRep)#查看事务型数据
> inspect(TransRep)
items
[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] {豆奶,汉堡包,咖啡,蒜香芝士面包,提子土司}
[60] {纯牛奶,法棍,咖啡,热狗,肉松面包}
#最小支持度0.02;最小置信度0.25;最大项数10
RulesRep <- apriori(TransRep, parameter = list(support = 0.02, confidence = 0.25))
inspect(RulesRep)
> inspect(RulesRep)
lhs rhs support confidence lift count
[1] {} => {纯牛奶} 0.25000000 0.2500000 1.000000 15
[2] {抹茶蛋糕} => {豆奶} 0.03333333 0.6666667 3.076923 2
[3] {牛角面包} => {小麦土司} 0.03333333 0.4000000 3.000000 2
[4] {小麦土司} => {牛角面包} 0.03333333 0.2500000 3.000000 2
[5] {牛角面包} => {咖啡} 0.03333333 0.4000000 2.000000 2
[6] {芝士蛋糕} => {红豆酥皮面包} 0.03333333 0.5000000 6.000000 2
[7] {红豆酥皮面包} => {芝士蛋糕} 0.03333333 0.4000000 6.000000 2
[8] {芝士蛋糕} => {榴莲千层} 0.03333333 0.5000000 3.333333 2
[9] {芝士蛋糕} => {豆浆} 0.03333333 0.5000000 2.307692 2
[10] {芝士蛋糕} => {纯牛奶} 0.03333333 0.5000000 2.000000 2
[11] {红豆酥皮面包} => {小麦土司} 0.03333333 0.4000000 3.000000 2
[12] {小麦土司} => {红豆酥皮面包} 0.03333333 0.2500000 3.000000 2
[13] {红豆酥皮面包} => {纯牛奶} 0.03333333 0.4000000 1.600000 2
[14] {黑森林蛋糕} => {奶茶} 0.05000000 0.5000000 2.307692 3
[15] {黑森林蛋糕} => {纯牛奶} 0.03333333 0.3333333 1.333333 2
[16] {红豆吐司} => {蛋挞} 0.03333333 0.4000000 2.400000 2
[17] {红豆吐司} => {纯牛奶} 0.05000000 0.6000000 2.400000 3
[18] {小麦土司} => {奶茶} 0.03333333 0.2500000 1.153846 2
[19] {法棍} => {肉松面包} 0.03333333 0.4000000 3.000000 2
[20] {肉松面包} => {法棍} 0.03333333 0.2500000 3.000000 2
[21] {法棍} => {咖啡} 0.06666667 0.8000000 4.000000 4
[22] {咖啡} => {法棍} 0.06666667 0.3333333 4.000000 4
[23] {法棍} => {豆奶} 0.03333333 0.4000000 1.846154 2
[24] {法棍} => {豆浆} 0.03333333 0.4000000 1.846154 2
[25] {提子土司} => {蒜香芝士面包} 0.03333333 0.3333333 3.333333 2
[26] {蒜香芝士面包} => {提子土司} 0.03333333 0.3333333 3.333333 2
[27] {提子土司} => {提拉米苏} 0.03333333 0.3333333 3.333333 2
[28] {提拉米苏} => {提子土司} 0.03333333 0.3333333 3.333333 2
[29] {提子土司} => {汉堡包} 0.03333333 0.3333333 3.333333 2
[30] {汉堡包} => {提子土司} 0.03333333 0.3333333 3.333333 2
[31] {提子土司} => {咖啡} 0.03333333 0.3333333 1.666667 2
[32] {提子土司} => {豆奶} 0.06666667 0.6666667 3.076923 4
[33] {豆奶} => {提子土司} 0.06666667 0.3076923 3.076923 4
[34] {蒜香芝士面包} => {汉堡包} 0.03333333 0.3333333 3.333333 2
[35] {汉堡包} => {蒜香芝士面包} 0.03333333 0.3333333 3.333333 2
[36] {蒜香芝士面包} => {咖啡} 0.03333333 0.3333333 1.666667 2
[37] {蒜香芝士面包} => {豆奶} 0.03333333 0.3333333 1.538462 2
[38] {蒜香芝士面包} => {奶茶} 0.03333333 0.3333333 1.538462 2
[39] {蒜香芝士面包} => {豆浆} 0.03333333 0.3333333 1.538462 2
[40] {提拉米苏} => {三明治} 0.05000000 0.5000000 2.727273 3
[41] {三明治} => {提拉米苏} 0.05000000 0.2727273 2.727273 3
[42] {提拉米苏} => {咖啡} 0.03333333 0.3333333 1.666667 2
[43] {提拉米苏} => {豆浆} 0.03333333 0.3333333 1.538462 2
[44] {虎皮蛋糕} => {酥皮面包} 0.03333333 0.3333333 2.500000 2
[45] {酥皮面包} => {虎皮蛋糕} 0.03333333 0.2500000 2.500000 2
[46] {虎皮蛋糕} => {奶茶} 0.05000000 0.5000000 2.307692 3
[47] {虎皮蛋糕} => {豆浆} 0.05000000 0.5000000 2.307692 3
[48] {汉堡包} => {豆奶} 0.05000000 0.5000000 2.307692 3
[49] {汉堡包} => {奶茶} 0.05000000 0.5000000 2.307692 3
[50] {酥皮面包} => {蛋挞} 0.03333333 0.2500000 1.500000 2
[51] {酥皮面包} => {肉松面包} 0.05000000 0.3750000 2.812500 3
[52] {肉松面包} => {酥皮面包} 0.05000000 0.3750000 2.812500 3
[53] {酥皮面包} => {豆浆} 0.06666667 0.5000000 2.307692 4
[54] {豆浆} => {酥皮面包} 0.06666667 0.3076923 2.307692 4
[55] {蛋挞} => {奶茶} 0.05000000 0.3000000 1.384615 3
[56] {肉松面包} => {热狗} 0.03333333 0.2500000 1.363636 2
[57] {肉松面包} => {三明治} 0.03333333 0.2500000 1.363636 2
[58] {肉松面包} => {咖啡} 0.05000000 0.3750000 1.875000 3
[59] {咖啡} => {肉松面包} 0.05000000 0.2500000 1.875000 3
[60] {肉松面包} => {豆浆} 0.06666667 0.5000000 2.307692 4
[61] {豆浆} => {肉松面包} 0.06666667 0.3076923 2.307692 4
[62] {肉松面包} => {纯牛奶} 0.05000000 0.3750000 1.500000 3
[63] {榴莲千层} => {豆奶} 0.05000000 0.3333333 1.538462 3
[64] {榴莲千层} => {纯牛奶} 0.06666667 0.4444444 1.777778 4
[65] {纯牛奶} => {榴莲千层} 0.06666667 0.2666667 1.777778 4
[66] {热狗} => {三明治} 0.06666667 0.3636364 1.983471 4
[67] {三明治} => {热狗} 0.06666667 0.3636364 1.983471 4
[68] {热狗} => {咖啡} 0.05000000 0.2727273 1.363636 3
[69] {咖啡} => {热狗} 0.05000000 0.2500000 1.363636 3
[70] {热狗} => {奶茶} 0.05000000 0.2727273 1.258741 3
[71] {热狗} => {纯牛奶} 0.08333333 0.4545455 1.818182 5
[72] {纯牛奶} => {热狗} 0.08333333 0.3333333 1.818182 5
[73] {三明治} => {奶茶} 0.05000000 0.2727273 1.258741 3
[74] {三明治} => {纯牛奶} 0.06666667 0.3636364 1.454545 4
[75] {纯牛奶} => {三明治} 0.06666667 0.2666667 1.454545 4
[76] {咖啡} => {豆浆} 0.05000000 0.2500000 1.153846 3
[77] {豆浆,芝士蛋糕} => {纯牛奶} 0.03333333 1.0000000 4.000000 2
[78] {纯牛奶,芝士蛋糕} => {豆浆} 0.03333333 1.0000000 4.615385 2
[79] {纯牛奶,豆浆} => {芝士蛋糕} 0.03333333 0.6666667 10.000000 2
[80] {法棍,肉松面包} => {咖啡} 0.03333333 1.0000000 5.000000 2
[81] {法棍,咖啡} => {肉松面包} 0.03333333 0.5000000 3.750000 2
[82] {咖啡,肉松面包} => {法棍} 0.03333333 0.6666667 8.000000 2
[83] {法棍,咖啡} => {豆浆} 0.03333333 0.5000000 2.307692 2
[84] {豆浆,法棍} => {咖啡} 0.03333333 1.0000000 5.000000 2
[85] {豆浆,咖啡} => {法棍} 0.03333333 0.6666667 8.000000 2
[86] {蒜香芝士面包,提子土司} => {汉堡包} 0.03333333 1.0000000 10.000000 2
[87] {汉堡包,提子土司} => {蒜香芝士面包} 0.03333333 1.0000000 10.000000 2
[88] {汉堡包,蒜香芝士面包} => {提子土司} 0.03333333 1.0000000 10.000000 2
[89] {蒜香芝士面包,提子土司} => {豆奶} 0.03333333 1.0000000 4.615385 2
[90] {豆奶,提子土司} => {蒜香芝士面包} 0.03333333 0.5000000 5.000000 2
[91] {豆奶,蒜香芝士面包} => {提子土司} 0.03333333 1.0000000 10.000000 2
[92] {汉堡包,提子土司} => {豆奶} 0.03333333 1.0000000 4.615385 2
[93] {豆奶,提子土司} => {汉堡包} 0.03333333 0.5000000 5.000000 2
[94] {豆奶,汉堡包} => {提子土司} 0.03333333 0.6666667 6.666667 2
[95] {汉堡包,蒜香芝士面包} => {豆奶} 0.03333333 1.0000000 4.615385 2
[96] {豆奶,蒜香芝士面包} => {汉堡包} 0.03333333 1.0000000 10.000000 2
[97] {豆奶,汉堡包} => {蒜香芝士面包} 0.03333333 0.6666667 6.666667 2
[98] {虎皮蛋糕,酥皮面包} => {豆浆} 0.03333333 1.0000000 4.615385 2
[99] {豆浆,虎皮蛋糕} => {酥皮面包} 0.03333333 0.6666667 5.000000 2
[100] {豆浆,酥皮面包} => {虎皮蛋糕} 0.03333333 0.5000000 5.000000 2
[101] {肉松面包,酥皮面包} => {豆浆} 0.03333333 0.6666667 3.076923 2
[102] {豆浆,酥皮面包} => {肉松面包} 0.03333333 0.5000000 3.750000 2
[103] {豆浆,肉松面包} => {酥皮面包} 0.03333333 0.5000000 3.750000 2
[104] {热狗,肉松面包} => {纯牛奶} 0.03333333 1.0000000 4.000000 2
[105] {纯牛奶,肉松面包} => {热狗} 0.03333333 0.6666667 3.636364 2
[106] {纯牛奶,热狗} => {肉松面包} 0.03333333 0.4000000 3.000000 2
[107] {咖啡,肉松面包} => {豆浆} 0.03333333 0.6666667 3.076923 2
[108] {豆浆,肉松面包} => {咖啡} 0.03333333 0.5000000 2.500000 2
[109] {豆浆,咖啡} => {肉松面包} 0.03333333 0.6666667 5.000000 2
[110] {榴莲千层,热狗} => {纯牛奶} 0.03333333 1.0000000 4.000000 2
[111] {纯牛奶,榴莲千层} => {热狗} 0.03333333 0.5000000 2.727273 2
[112] {纯牛奶,热狗} => {榴莲千层} 0.03333333 0.4000000 2.666667 2
[113] {热狗,三明治} => {豆奶} 0.03333333 0.5000000 2.307692 2
[114] {豆奶,热狗} => {三明治} 0.03333333 1.0000000 5.454545 2
[115] {豆奶,三明治} => {热狗} 0.03333333 1.0000000 5.454545 2
[116] {热狗,三明治} => {奶茶} 0.03333333 0.5000000 2.307692 2
[117] {奶茶,热狗} => {三明治} 0.03333333 0.6666667 3.636364 2
[118] {奶茶,三明治} => {热狗} 0.03333333 0.6666667 3.636364 2
[119] {热狗,三明治} => {纯牛奶} 0.03333333 0.5000000 2.000000 2
[120] {纯牛奶,热狗} => {三明治} 0.03333333 0.4000000 2.181818 2
[121] {纯牛奶,三明治} => {热狗} 0.03333333 0.5000000 2.727273 2
[122] {汉堡包,蒜香芝士面包,提子土司} => {豆奶} 0.03333333 1.0000000 4.615385 2
[123] {豆奶,蒜香芝士面包,提子土司} => {汉堡包} 0.03333333 1.0000000 10.000000 2
[124] {豆奶,汉堡包,提子土司} => {蒜香芝士面包} 0.03333333 1.0000000 10.000000 2
[125] {豆奶,汉堡包,蒜香芝士面包} => {提子土司} 0.03333333 1.0000000 10.000000 2
inspect(sort(RulesRep, by = "lift")) # 按提升度从高到低查看# sor()排序,排序结果不可逆转
> inspect(sort(RulesRep, by = "lift")) # 按提升度从高到低查看
lhs rhs support confidence lift count
[1] {纯牛奶,豆浆} => {芝士蛋糕} 0.03333333 0.6666667 10.000000 2
[2] {蒜香芝士面包,提子土司} => {汉堡包} 0.03333333 1.0000000 10.000000 2
[3] {汉堡包,提子土司} => {蒜香芝士面包} 0.03333333 1.0000000 10.000000 2
[4] {汉堡包,蒜香芝士面包} => {提子土司} 0.03333333 1.0000000 10.000000 2
[5] {豆奶,蒜香芝士面包} => {提子土司} 0.03333333 1.0000000 10.000000 2
[6] {豆奶,蒜香芝士面包} => {汉堡包} 0.03333333 1.0000000 10.000000 2
[7] {豆奶,蒜香芝士面包,提子土司} => {汉堡包} 0.03333333 1.0000000 10.000000 2
[8] {豆奶,汉堡包,提子土司} => {蒜香芝士面包} 0.03333333 1.0000000 10.000000 2
[9] {豆奶,汉堡包,蒜香芝士面包} => {提子土司} 0.03333333 1.0000000 10.000000 2
[10] {咖啡,肉松面包} => {法棍} 0.03333333 0.6666667 8.000000 2
[11] {豆浆,咖啡} => {法棍} 0.03333333 0.6666667 8.000000 2
[12] {豆奶,汉堡包} => {提子土司} 0.03333333 0.6666667 6.666667 2
[13] {豆奶,汉堡包} => {蒜香芝士面包} 0.03333333 0.6666667 6.666667 2
[14] {芝士蛋糕} => {红豆酥皮面包} 0.03333333 0.5000000 6.000000 2
[15] {红豆酥皮面包} => {芝士蛋糕} 0.03333333 0.4000000 6.000000 2
[16] {豆奶,热狗} => {三明治} 0.03333333 1.0000000 5.454545 2
[17] {豆奶,三明治} => {热狗} 0.03333333 1.0000000 5.454545 2
[18] {法棍,肉松面包} => {咖啡} 0.03333333 1.0000000 5.000000 2
[19] {豆浆,法棍} => {咖啡} 0.03333333 1.0000000 5.000000 2
[20] {豆奶,提子土司} => {蒜香芝士面包} 0.03333333 0.5000000 5.000000 2
[21] {豆奶,提子土司} => {汉堡包} 0.03333333 0.5000000 5.000000 2
[22] {豆浆,虎皮蛋糕} => {酥皮面包} 0.03333333 0.6666667 5.000000 2
[23] {豆浆,酥皮面包} => {虎皮蛋糕} 0.03333333 0.5000000 5.000000 2
[24] {豆浆,咖啡} => {肉松面包} 0.03333333 0.6666667 5.000000 2
[25] {纯牛奶,芝士蛋糕} => {豆浆} 0.03333333 1.0000000 4.615385 2
[26] {蒜香芝士面包,提子土司} => {豆奶} 0.03333333 1.0000000 4.615385 2
[27] {汉堡包,提子土司} => {豆奶} 0.03333333 1.0000000 4.615385 2
[28] {汉堡包,蒜香芝士面包} => {豆奶} 0.03333333 1.0000000 4.615385 2
[29] {虎皮蛋糕,酥皮面包} => {豆浆} 0.03333333 1.0000000 4.615385 2
[30] {汉堡包,蒜香芝士面包,提子土司} => {豆奶} 0.03333333 1.0000000 4.615385 2
[31] {法棍} => {咖啡} 0.06666667 0.8000000 4.000000 4
[32] {咖啡} => {法棍} 0.06666667 0.3333333 4.000000 4
[33] {豆浆,芝士蛋糕} => {纯牛奶} 0.03333333 1.0000000 4.000000 2
[34] {热狗,肉松面包} => {纯牛奶} 0.03333333 1.0000000 4.000000 2
[35] {榴莲千层,热狗} => {纯牛奶} 0.03333333 1.0000000 4.000000 2
[36] {法棍,咖啡} => {肉松面包} 0.03333333 0.5000000 3.750000 2
[37] {豆浆,酥皮面包} => {肉松面包} 0.03333333 0.5000000 3.750000 2
[38] {豆浆,肉松面包} => {酥皮面包} 0.03333333 0.5000000 3.750000 2
[39] {纯牛奶,肉松面包} => {热狗} 0.03333333 0.6666667 3.636364 2
[40] {奶茶,热狗} => {三明治} 0.03333333 0.6666667 3.636364 2
[41] {奶茶,三明治} => {热狗} 0.03333333 0.6666667 3.636364 2
[42] {芝士蛋糕} => {榴莲千层} 0.03333333 0.5000000 3.333333 2
[43] {提子土司} => {蒜香芝士面包} 0.03333333 0.3333333 3.333333 2
[44] {蒜香芝士面包} => {提子土司} 0.03333333 0.3333333 3.333333 2
[45] {提子土司} => {提拉米苏} 0.03333333 0.3333333 3.333333 2
[46] {提拉米苏} => {提子土司} 0.03333333 0.3333333 3.333333 2
[47] {提子土司} => {汉堡包} 0.03333333 0.3333333 3.333333 2
[48] {汉堡包} => {提子土司} 0.03333333 0.3333333 3.333333 2
[49] {蒜香芝士面包} => {汉堡包} 0.03333333 0.3333333 3.333333 2
[50] {汉堡包} => {蒜香芝士面包} 0.03333333 0.3333333 3.333333 2
[51] {抹茶蛋糕} => {豆奶} 0.03333333 0.6666667 3.076923 2
[52] {提子土司} => {豆奶} 0.06666667 0.6666667 3.076923 4
[53] {豆奶} => {提子土司} 0.06666667 0.3076923 3.076923 4
[54] {肉松面包,酥皮面包} => {豆浆} 0.03333333 0.6666667 3.076923 2
[55] {咖啡,肉松面包} => {豆浆} 0.03333333 0.6666667 3.076923 2
[56] {牛角面包} => {小麦土司} 0.03333333 0.4000000 3.000000 2
[57] {小麦土司} => {牛角面包} 0.03333333 0.2500000 3.000000 2
[58] {红豆酥皮面包} => {小麦土司} 0.03333333 0.4000000 3.000000 2
[59] {小麦土司} => {红豆酥皮面包} 0.03333333 0.2500000 3.000000 2
[60] {法棍} => {肉松面包} 0.03333333 0.4000000 3.000000 2
[61] {肉松面包} => {法棍} 0.03333333 0.2500000 3.000000 2
[62] {纯牛奶,热狗} => {肉松面包} 0.03333333 0.4000000 3.000000 2
[63] {酥皮面包} => {肉松面包} 0.05000000 0.3750000 2.812500 3
[64] {肉松面包} => {酥皮面包} 0.05000000 0.3750000 2.812500 3
[65] {提拉米苏} => {三明治} 0.05000000 0.5000000 2.727273 3
[66] {三明治} => {提拉米苏} 0.05000000 0.2727273 2.727273 3
[67] {纯牛奶,榴莲千层} => {热狗} 0.03333333 0.5000000 2.727273 2
[68] {纯牛奶,三明治} => {热狗} 0.03333333 0.5000000 2.727273 2
[69] {纯牛奶,热狗} => {榴莲千层} 0.03333333 0.4000000 2.666667 2
[70] {虎皮蛋糕} => {酥皮面包} 0.03333333 0.3333333 2.500000 2
[71] {酥皮面包} => {虎皮蛋糕} 0.03333333 0.2500000 2.500000 2
[72] {豆浆,肉松面包} => {咖啡} 0.03333333 0.5000000 2.500000 2
[73] {红豆吐司} => {蛋挞} 0.03333333 0.4000000 2.400000 2
[74] {红豆吐司} => {纯牛奶} 0.05000000 0.6000000 2.400000 3
[75] {豆浆} => {酥皮面包} 0.06666667 0.3076923 2.307692 4
[76] {豆浆} => {肉松面包} 0.06666667 0.3076923 2.307692 4
[77] {芝士蛋糕} => {豆浆} 0.03333333 0.5000000 2.307692 2
[78] {黑森林蛋糕} => {奶茶} 0.05000000 0.5000000 2.307692 3
[79] {虎皮蛋糕} => {奶茶} 0.05000000 0.5000000 2.307692 3
[80] {虎皮蛋糕} => {豆浆} 0.05000000 0.5000000 2.307692 3
[81] {汉堡包} => {豆奶} 0.05000000 0.5000000 2.307692 3
[82] {汉堡包} => {奶茶} 0.05000000 0.5000000 2.307692 3
[83] {酥皮面包} => {豆浆} 0.06666667 0.5000000 2.307692 4
[84] {肉松面包} => {豆浆} 0.06666667 0.5000000 2.307692 4
[85] {法棍,咖啡} => {豆浆} 0.03333333 0.5000000 2.307692 2
[86] {热狗,三明治} => {豆奶} 0.03333333 0.5000000 2.307692 2
[87] {热狗,三明治} => {奶茶} 0.03333333 0.5000000 2.307692 2
[88] {纯牛奶,热狗} => {三明治} 0.03333333 0.4000000 2.181818 2
[89] {牛角面包} => {咖啡} 0.03333333 0.4000000 2.000000 2
[90] {芝士蛋糕} => {纯牛奶} 0.03333333 0.5000000 2.000000 2
[91] {热狗,三明治} => {纯牛奶} 0.03333333 0.5000000 2.000000 2
[92] {热狗} => {三明治} 0.06666667 0.3636364 1.983471 4
[93] {三明治} => {热狗} 0.06666667 0.3636364 1.983471 4
[94] {肉松面包} => {咖啡} 0.05000000 0.3750000 1.875000 3
[95] {咖啡} => {肉松面包} 0.05000000 0.2500000 1.875000 3
[96] {法棍} => {豆奶} 0.03333333 0.4000000 1.846154 2
[97] {法棍} => {豆浆} 0.03333333 0.4000000 1.846154 2
[98] {热狗} => {纯牛奶} 0.08333333 0.4545455 1.818182 5
[99] {纯牛奶} => {热狗} 0.08333333 0.3333333 1.818182 5
[100] {榴莲千层} => {纯牛奶} 0.06666667 0.4444444 1.777778 4
[101] {纯牛奶} => {榴莲千层} 0.06666667 0.2666667 1.777778 4
[102] {提子土司} => {咖啡} 0.03333333 0.3333333 1.666667 2
[103] {蒜香芝士面包} => {咖啡} 0.03333333 0.3333333 1.666667 2
[104] {提拉米苏} => {咖啡} 0.03333333 0.3333333 1.666667 2
[105] {红豆酥皮面包} => {纯牛奶} 0.03333333 0.4000000 1.600000 2
[106] {蒜香芝士面包} => {豆奶} 0.03333333 0.3333333 1.538462 2
[107] {蒜香芝士面包} => {奶茶} 0.03333333 0.3333333 1.538462 2
[108] {蒜香芝士面包} => {豆浆} 0.03333333 0.3333333 1.538462 2
[109] {提拉米苏} => {豆浆} 0.03333333 0.3333333 1.538462 2
[110] {榴莲千层} => {豆奶} 0.05000000 0.3333333 1.538462 3
[111] {酥皮面包} => {蛋挞} 0.03333333 0.2500000 1.500000 2
[112] {肉松面包} => {纯牛奶} 0.05000000 0.3750000 1.500000 3
[113] {三明治} => {纯牛奶} 0.06666667 0.3636364 1.454545 4
[114] {纯牛奶} => {三明治} 0.06666667 0.2666667 1.454545 4
[115] {蛋挞} => {奶茶} 0.05000000 0.3000000 1.384615 3
[116] {肉松面包} => {热狗} 0.03333333 0.2500000 1.363636 2
[117] {肉松面包} => {三明治} 0.03333333 0.2500000 1.363636 2
[118] {热狗} => {咖啡} 0.05000000 0.2727273 1.363636 3
[119] {咖啡} => {热狗} 0.05000000 0.2500000 1.363636 3
[120] {黑森林蛋糕} => {纯牛奶} 0.03333333 0.3333333 1.333333 2
[121] {热狗} => {奶茶} 0.05000000 0.2727273 1.258741 3
[122] {三明治} => {奶茶} 0.05000000 0.2727273 1.258741 3
[123] {小麦土司} => {奶茶} 0.03333333 0.2500000 1.153846 2
[124] {咖啡} => {豆浆} 0.05000000 0.2500000 1.153846 3
[125] {} => {纯牛奶} 0.25000000 0.2500000 1.000000 15
六、去掉冗余
# subset.matrix<-is.subset(rules,rules)#生成一个所有规则的子集矩阵,行和列分别是每条rules,其中的值是TRUE和FALSE,当rules2是rules1的子集时,rules2在rules1的值为TRUE
# subset.matrix[lower.tri(subset.matrix,diag=T)]<-NA#将矩阵对角线以下的元素置为空,只保留上三角
# redundant<-colSums(subset.matrix,na.rm=T)>=1#R会将矩阵中的TRUE当做1,统计每列的和(忽略缺失值),如果该列的和大于等于1,也就是表示该列(规则)是别的规则的子集,应该删除。
# rules.pruned<-rules[!redundant]#去掉冗余的规则
subset.matrix <- is.subset(RulesRep, RulesRep)
subset.matrix[lower.tri(subset.matrix, diag=T)] <- NA
redundant <- colSums(subset.matrix, na.rm=T) >= 1
RulesRep.pruned <- RulesRep[!redundant]
RulesRep<-RulesRep.pruned
暂未实现–求大神帮助
> subset.matrix <- is.subset(RulesRep, RulesRep)
Error in length(y) : Method length not implemented for class rules
七、关联规则可视化
library(arulesViz)
library(grid)
library(Matrix)
plot(RulesRep,measure = c("support","confidence"),shading="lift")
plot(RulesRep)
plot(RulesRep,interactive=TRUE)
暂未实现–求大神帮助
> plot(RulesRep,measure = c("support","confidence"),shading="lift")
Error in length(x) : Method length not implemented for class rules
> plot(RulesRep)
Error in length(x) : Method length not implemented for class rules
> plot(RulesRep,interactive=TRUE)
Error in length(x) : Method length not implemented for class rules
>
八、计算各个项集的出现频率(支持度)
#计算各个项集的出现频率(支持度)
itemFrequency(TransRep)
> #计算各个项集的出现频率(支持度)
> itemFrequency(TransRep)
纯牛奶 蛋挞 豆浆 豆奶 法棍 汉堡包 黑森林蛋糕 红豆酥皮面包 红豆吐司 虎皮蛋糕
0.25000000 0.16666667 0.21666667 0.21666667 0.08333333 0.10000000 0.10000000 0.08333333 0.08333333 0.10000000
咖啡 榴莲千层 抹茶蛋糕 奶茶 牛角面包 热狗 肉松面包 三明治 酥皮面包 蒜香芝士面包
0.20000000 0.15000000 0.05000000 0.21666667 0.08333333 0.18333333 0.13333333 0.18333333 0.13333333 0.10000000
提拉米苏 提子土司 小麦土司 芝士蛋糕
0.10000000 0.10000000 0.13333333 0.06666667
九、提取规则中支持度、置信度、提升度
#quality()函数提取规则中支持度、置信度、提升度
quality(RulesRep)
> #quality()函数提取规则中支持度、置信度、提升度
> quality(RulesRep)
support confidence lift count
1 0.25000000 0.2500000 1.000000 15
2 0.03333333 0.6666667 3.076923 2
3 0.03333333 0.4000000 3.000000 2
4 0.03333333 0.2500000 3.000000 2
5 0.03333333 0.4000000 2.000000 2
6 0.03333333 0.5000000 6.000000 2
7 0.03333333 0.4000000 6.000000 2
8 0.03333333 0.5000000 3.333333 2
9 0.03333333 0.5000000 2.307692 2
10 0.03333333 0.5000000 2.000000 2
11 0.03333333 0.4000000 3.000000 2
12 0.03333333 0.2500000 3.000000 2
13 0.03333333 0.4000000 1.600000 2
14 0.05000000 0.5000000 2.307692 3
15 0.03333333 0.3333333 1.333333 2
16 0.03333333 0.4000000 2.400000 2
17 0.05000000 0.6000000 2.400000 3
18 0.03333333 0.2500000 1.153846 2
19 0.03333333 0.4000000 3.000000 2
20 0.03333333 0.2500000 3.000000 2
21 0.06666667 0.8000000 4.000000 4
22 0.06666667 0.3333333 4.000000 4
23 0.03333333 0.4000000 1.846154 2
24 0.03333333 0.4000000 1.846154 2
25 0.03333333 0.3333333 3.333333 2
26 0.03333333 0.3333333 3.333333 2
27 0.03333333 0.3333333 3.333333 2
28 0.03333333 0.3333333 3.333333 2
29 0.03333333 0.3333333 3.333333 2
30 0.03333333 0.3333333 3.333333 2
31 0.03333333 0.3333333 1.666667 2
32 0.06666667 0.6666667 3.076923 4
33 0.06666667 0.3076923 3.076923 4
34 0.03333333 0.3333333 3.333333 2
35 0.03333333 0.3333333 3.333333 2
36 0.03333333 0.3333333 1.666667 2
37 0.03333333 0.3333333 1.538462 2
38 0.03333333 0.3333333 1.538462 2
39 0.03333333 0.3333333 1.538462 2
40 0.05000000 0.5000000 2.727273 3
41 0.05000000 0.2727273 2.727273 3
42 0.03333333 0.3333333 1.666667 2
43 0.03333333 0.3333333 1.538462 2
44 0.03333333 0.3333333 2.500000 2
45 0.03333333 0.2500000 2.500000 2
46 0.05000000 0.5000000 2.307692 3
47 0.05000000 0.5000000 2.307692 3
48 0.05000000 0.5000000 2.307692 3
49 0.05000000 0.5000000 2.307692 3
50 0.03333333 0.2500000 1.500000 2
51 0.05000000 0.3750000 2.812500 3
52 0.05000000 0.3750000 2.812500 3
53 0.06666667 0.5000000 2.307692 4
54 0.06666667 0.3076923 2.307692 4
55 0.05000000 0.3000000 1.384615 3
56 0.03333333 0.2500000 1.363636 2
57 0.03333333 0.2500000 1.363636 2
58 0.05000000 0.3750000 1.875000 3
59 0.05000000 0.2500000 1.875000 3
60 0.06666667 0.5000000 2.307692 4
61 0.06666667 0.3076923 2.307692 4
62 0.05000000 0.3750000 1.500000 3
63 0.05000000 0.3333333 1.538462 3
64 0.06666667 0.4444444 1.777778 4
65 0.06666667 0.2666667 1.777778 4
66 0.06666667 0.3636364 1.983471 4
67 0.06666667 0.3636364 1.983471 4
68 0.05000000 0.2727273 1.363636 3
69 0.05000000 0.2500000 1.363636 3
70 0.05000000 0.2727273 1.258741 3
71 0.08333333 0.4545455 1.818182 5
72 0.08333333 0.3333333 1.818182 5
73 0.05000000 0.2727273 1.258741 3
74 0.06666667 0.3636364 1.454545 4
75 0.06666667 0.2666667 1.454545 4
76 0.05000000 0.2500000 1.153846 3
77 0.03333333 1.0000000 4.000000 2
78 0.03333333 1.0000000 4.615385 2
79 0.03333333 0.6666667 10.000000 2
80 0.03333333 1.0000000 5.000000 2
81 0.03333333 0.5000000 3.750000 2
82 0.03333333 0.6666667 8.000000 2
83 0.03333333 0.5000000 2.307692 2
84 0.03333333 1.0000000 5.000000 2
85 0.03333333 0.6666667 8.000000 2
86 0.03333333 1.0000000 10.000000 2
87 0.03333333 1.0000000 10.000000 2
88 0.03333333 1.0000000 10.000000 2
89 0.03333333 1.0000000 4.615385 2
90 0.03333333 0.5000000 5.000000 2
91 0.03333333 1.0000000 10.000000 2
92 0.03333333 1.0000000 4.615385 2
93 0.03333333 0.5000000 5.000000 2
94 0.03333333 0.6666667 6.666667 2
95 0.03333333 1.0000000 4.615385 2
96 0.03333333 1.0000000 10.000000 2
97 0.03333333 0.6666667 6.666667 2
98 0.03333333 1.0000000 4.615385 2
99 0.03333333 0.6666667 5.000000 2
100 0.03333333 0.5000000 5.000000 2
101 0.03333333 0.6666667 3.076923 2
102 0.03333333 0.5000000 3.750000 2
103 0.03333333 0.5000000 3.750000 2
104 0.03333333 1.0000000 4.000000 2
105 0.03333333 0.6666667 3.636364 2
106 0.03333333 0.4000000 3.000000 2
107 0.03333333 0.6666667 3.076923 2
108 0.03333333 0.5000000 2.500000 2
109 0.03333333 0.6666667 5.000000 2
110 0.03333333 1.0000000 4.000000 2
111 0.03333333 0.5000000 2.727273 2
112 0.03333333 0.4000000 2.666667 2
113 0.03333333 0.5000000 2.307692 2
114 0.03333333 1.0000000 5.454545 2
115 0.03333333 1.0000000 5.454545 2
116 0.03333333 0.5000000 2.307692 2
117 0.03333333 0.6666667 3.636364 2
118 0.03333333 0.6666667 3.636364 2
119 0.03333333 0.5000000 2.000000 2
120 0.03333333 0.4000000 2.181818 2
121 0.03333333 0.5000000 2.727273 2
122 0.03333333 1.0000000 4.615385 2
123 0.03333333 1.0000000 10.000000 2
124 0.03333333 1.0000000 10.000000 2
125 0.03333333 1.0000000 10.000000 2
十、规则匹配
# %in%是精确匹配,items %in% c("A", "B")表示 lhs+rhs的项集并集中,至少有一个item是在c("A", "B")。 item = Aor item = B
# 如果仅仅想搜索lhs或者rhs,那么用lhs或rhs替换items即可。如:lhs %in% c("yogurt")
# %pin%是部分匹配,也就是说只要item like '%A%' or item like '%B%'
# %ain%是完全匹配,也就是说itemset has ’A' and itemset has ‘B'
#subset函数
#subset
rules.subset = subset(RulesRep,subset = lhs%pin%"蛋挞"&lift>=1.0)
inspect(rules.subset)
> #subset
> rules.subset = subset(RulesRep,subset = lhs%pin%"蛋挞"&lift>=1.5)
> inspect(rules.subset)#无符合条件规则
> # %in%是精确匹配,items %in% c("A", "B")表示 lhs+rhs的项集并集中,至少有一个item是在c("A", "B")。 item = Aor item = B
> # 如果仅仅想搜索lhs或者rhs,那么用lhs或rhs替换items即可。如:lhs %in% c("yogurt")
> # %pin%是部分匹配,也就是说只要item like '%A%' or item like '%B%'
> # %ain%是完全匹配,也就是说itemset has ’A' and itemset has ‘B'
> #subset
> rules.subset = subset(RulesRep,subset = lhs%pin%"蛋挞"&lift>=1.0)
> inspect(rules.subset)
lhs rhs support confidence lift count
[1] {蛋挞} => {奶茶} 0.05 0.3 1.384615 3
>