关联规则挖掘步骤及代码如下:
【1】设定工作目录
setwd("E:/project/Rexample/EnterpResponser_apriori")
【2】加载两个包
library("Matrix")
library("arules")
【3】读取数据:帮助文档(http://127.0.0.1:16781/library/arules/html/read.transactions.html )
tr<-read.transactions("my_transactions.txt",format="single",sep="\t",cols<-c(1,2),rm.duplicates=TRUE)
其中format表示输入数据的格式,transactions可以接受两种数据格式,即single型和basket型
single型表现为两列,第一列为交易号,第二列为该交易中包含的一项,例如:
1 可乐
1 雪碧
2 芬达
1 美年达
2 王老吉
basket型一行表示一条交易记录,交易项之间用分隔符分开,分隔符在sep参数中设定:
可乐 雪碧 美年达
芬达 王老吉
当single型数据中包含重复的行时,该方法会报错。可使用参数 rm.duplicates=TRUE 去除重复的行
也可以在导入交易数据前先对数据集进行处理,出去重复的行:(http://127.0.0.1:16781/library/base/html/duplicated.html )
origindata<-read.table("origindata.txt",...)
dup<-duplicated(origindata) 返回一个布尔向量和前面重复了则为TRUE[FLASE,FALSE,FALSE,TRUE,FALSE,TRUE......]
rmdupdata<-origindata[!dup,] 返回一个dataframe只保留了不重复的行
write.table(file="rmdupdata.txt",sep="\t",quote=FALSE,row.names=FALSE) 将去重的datafrme写入文档
【4】查看transactions
>tr 输出tr摘要
>inspect(tr[1:n]) 输出tr前n行
【5】关联分析 参考http://www.douban.com/note/276365088/
rules = apriori(tr,parameter = list(support = 0.01,confidence = 0.2))
inspect(sort(rules,by="support")[1:10]) #按支持度查看前10条规则
inspect(sort(rules,by="confidence")[1:10]) #按置信度查看前10条规则
itemFrequencyPlot(tr,support = 0.05,cex.names =0.8) #数据画频繁项的图
plot(rules, shading="order", control=list(main = "Two-key plot")) #见chart.1
plot(rules, method="grouped") #见chart.2
plot(rules, method="graph") #见chart.3