R arulessequence-为cspade挖掘准备数据

时间:2018-11-15 17:39:44

标签: r sequence arules market-basket-analysis

我正在尝试通过 cspade arulessequence 实现来挖掘R中的序列。

我的数据框如下:

 items sequenceId eventId size 
 A          1        1     1
 B          2        1     1
 C          2        2     1
 A          3        1     1

该数据框是通过以下代码(删除不必要的列并创建序列)从现有数据集中创建的:

data %>%
  select(seqId, sequence, items) %>%
  group_by(seqId) %>%
  mutate(basketSize = 1, sequence = rank(sequence)) %>% 
  ungroup() %>%
  mutate(seqId = ordered(seqId), sequence = ordered(sequence)) %>%
  write.table("data.txt", sep=" ", row.names = FALSE, col.names = FALSE, quote = FALSE)


data <- read_baskets("data.txt", info = c("sequenceID", "eventID", "size"))

as(data, "data.frame") #shows the data frame above!

到目前为止一切顺利!

但是,当我尝试:

 s1 <- cspade(data, parameter = list(support = 0.4), control = list(verbose = TRUE))

我收到以下错误:

 Error in makebin(data, file) : 'eid' invalid (strict order)

我在其他地方读到,这是因为cspade需要对事件和序列ID进行排序。但是我该如何指定呢?在将这些因子导出到“ .txt”之前,显然不能对其进行排序。

编辑: 一些其他详细信息 仅说明一下为cspade创建 data 输入的代码。最初,序列变量缺少一些步骤(例如,某些序列为1,3,4),因为我过滤了一些事件。因此,我在其上运行了一个秩函数来为每个序列的事件重新编制索引。 size 列完全没有必要(它是恒定的),但是包含在arulessequence文档的示例代码中,这就是为什么我也包含它。

0 个答案:

没有答案