【发布时间】:2018-11-06 05:28:42
【问题描述】:
所以我想根据一起购买的物品,并根据 wiki for eclat 找到模式和“集群”:
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")
会不会是数据结构的原因?在这种情况下,我应该如何改变它?此外,我该怎么做才能获得建议的项目集?我无法从 wiki 中弄清楚。
编辑:按照@hpesoj626 的建议,我使用 0.004 进行 supp。但似乎该功能是对订单/用户而不是项目进行分组。我不知道如何导出数据,所以这里是 tidLists 的图片:
【问题讨论】:
-
您对哪个部分有问题?使用下载的
8GbjnHK2.txt文件,我收到错误Warning message: In readLines(file, encoding = encoding) : incomplete final line found on '8GbjnHK2.txt'和dataset <- read.transactions("8GbjnHK2.txt", sep = ";", rm.duplicates = TRUE)。这是你的问题吗? -
不,我通过继续 txt 中的最后一行和字符来修复该部分。只需按 Enter 键,最后会有一个空行并保存。问题是我没有从 eclat 函数中得到任何结果。
-
啊,我明白了。也许你需要调整你的支持?对于
supp = 0.004,我得到180 15840对于dim(tidLists(f))。 -
感谢它的工作。但它似乎是对订单而不是项目进行分组。你知道为什么吗?
-
你是什么意思它是分组订单而不是项目?
标签: r data-mining