所以我想找到基于什么项目一起购买的模式和“集群”,并根据eclat的wiki:
Eclat算法用于执行项集挖掘。项目集挖掘让我们在数据中找到频繁的模式,就像消费者购买牛奶一样,他也会购买面包。这种类型的模式称为关联规则,用于许多应用程序域。
但是,当我在R中使用eclat时,在通过tidLists检索结果时,我得到“零频繁项”和“NULL”。任何人都可以看到我做错了什么?
完整数据集:https://pastebin.com/8GbjnHK2
每一行都是一个事务,包含列中的不同项目。快速捕捉数据:
3060615;;;;;;;;;;;;;;;
3060612;3060616;;;;;;;;;;;;;;
3020703;;;;;;;;;;;;;;;
3002469;;;;;;;;;;;;;;;
3062800;;;;;;;;;;;;;;;
3061943;3061965;;;;;;;;;;;;;;
代码
trans = read.transactions("Transactions.csv", format = "basket", sep = ";")
f <- eclat(trans, parameter = list(supp = 0.1, maxlen = 17, tidLists = TRUE))
dim(tidLists(f))
as(tidLists(f), "list")
可能是由于数据结构?在那种情况下,我应该如何改变它?此外,我该怎么做才能获得建议的项目集?我无法从维基中找到答案。
编辑:我使用0.004作为supp,正如@ hpesoj626所建议的那样。但似乎功能是对订单/用户进行分组而不是对项目进行分组。我不知道如何导出数据,所以这里是tidLists的图片:
答案 0 :(得分:1)
问题是你的支持率过高。尝试调整supp
说,supp = .001
,我们得到
dim(tidLists(f))
# [1] 928 15840
对于您的数据集,最高支持为0.08239,低于0.1。这就是supp = 0.1
没有结果的原因。
inspect(head(sort(f, by = "support"), 10))
# items support count
# [1] {3060620} 0.08239 1305
# [2] {3060619} 0.07260 1150
# [3] {3061124} 0.05688 901
# [4] {3060618} 0.05663 897
# [5] {4027039} 0.04975 788
# [6] {3060617} 0.04564 723
# [7] {3061697} 0.04306 682
# [8] {3060619,3060620} 0.03087 489
# [9] {3039715} 0.02727 432
# [10] {3045117} 0.02708 429