首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中arules的序列事务类

R中arules的序列事务类
EN

Stack Overflow用户
提问于 2015-02-23 23:14:51
回答 3查看 2.6K关注 0票数 2

试图在R中使用arulesSequences包,遇到了这个问题,我看到很多人遇到过,但没有一个好的答案:从数据框架或矩阵到事务数据类型。

正如文档明确指出的那样,我已经为arules做了如下工作:

代码语言:javascript
复制
a_df3 <- data.frame(TID = c(1,1,2,2,2,3), item=c("a","b","a","b","c", "b"))
a_df3
trans4 <- as(split(a_df3[,"item"], a_df3[,"TID"]), "transactions")

工作正常。但是,如果我试图对一个3列的dataframe做同样的事情,那么一切都会变得混乱:

代码语言:javascript
复制
a_df4<-data.frame(SEQUENCEID=c("1","1","1","2","2","3","3"),
                  EVENTID=c("1","2","3","1","2","1","2"),
                  ITEM=c("a","b","a","c","a","a","b"))
a_df4
   SEQUENCEID EVENTID ITEM
1    1         1      a
2    1         2      b
3    1         3      a
4    2         1      c
5    2         2      a
6    3         1      a
7    3         2      b

是的,有重复的,但这正是重点,不是吗?(查找频繁序列集)。

所以,现在我这样胁迫:

代码语言:javascript
复制
seqt<-as(split(myseq[,"ITEM"],myseq[,"SEQUENCEID"],myseq[,"EVENTID"]),"transactions")

我得到了:

代码语言:javascript
复制
Error in asMethod(object) : 
   can not coerce list with transactions with duplicated items

我到处都在试图克服这个简单的障碍:

  1. 改变分裂的顺序
  2. 把每件事都变成因素
  3. 将所有事物转化为矩阵
  4. 将这样的数据帧直接输入到arules函数中。
  5. 导出到.txt中,导入为read.transactions
  6. 导出到.txt中,作为“篮子”导入
  7. 尝试“解决方案”:hereherehere (read_baskets是一个函数?)

所有的错误要么是上面描述的错误,要么是当我没有得到任何错误时,我得到了一个带有两个列的事务对象,当然,arulesSequences不能读取它,因为它需要三列:( 1)序列-ID、事件-ID、项。

我认为我的数据库结构再清楚不过了。顺序是“顾客号”,事件id是购买号码和物品,嗯,项目。

请提供任何帮助,包括结构"as()“希望看到,以便它正确地执行胁迫。

EN

回答 3

Stack Overflow用户

发布于 2017-06-20 22:13:50

试试这个:

代码语言:javascript
复制
trans4 <- as(a_df3[,"item"], "transactions")
trans4@itemsetInfo$sequnceID = a_df3$SEQUENCEID
trans4@itemsetInfo$eventID = a_df3$EVENTID

transSeq = as(trans4, "timedsequences")
票数 2
EN

Stack Overflow用户

发布于 2015-02-24 08:44:03

arules将事务处理为集,而不是序列。

它可以检测频繁项集,但可能不能检测序列。

检查副本是一种防止错误使用的安全措施:它忽略了多重性和顺序,因此拥有多个相同类型的项目就会丢失信息。

辅助事务类表示用于挖掘项集或规则的事务数据。存储二进制关联矩阵()、项标签以及可选事务is和用户is是类辅助项矩阵的直接扩展。

(从文件中添加了重点)

票数 0
EN

Stack Overflow用户

发布于 2015-08-27 18:01:48

人们问这个问题已经有一段时间了,但无论如何我都会尽力回答的。此错误似乎是因为有以下类型的相同记录

代码语言:javascript
复制
  SEQUENCEID EVENTID ITEM
1    1         1      a
3    1         1      a
4    2         1      c 

如果您在拆分和转换到事务之前检查不同的记录,这可能会解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28685422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档