You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含会话与动作的分组DataFrame转换为arules事务格式

把会话-动作DataFrame转成arules能用的事务格式

嘿,我刚好处理过类似的需求,这就一步步教你怎么弄~首先得明确:你关注动作的发生顺序,但要注意,标准的apriori算法是处理无顺序的项集的,如果要分析带顺序的序列关联,得用arulesSequences包的序列挖掘工具,我会同时覆盖这两种场景:

1. 转成无顺序事务(适配apriori)

这种情况会把每个会话里的重复动作去重,变成一个项集合,适合普通的关联规则分析。

具体步骤:

  • 先加载dplyr(用来分组聚合数据)和arules(处理事务)这两个包;
  • 按session分组,把每个会话的动作合并成列表,顺便去重;
  • 把列表转成arules认可的事务对象。

直接上代码:

# 加载需要的包
library(dplyr)
library(arules)

# 你的原始数据
x <- data.frame( 
  session=c("01","01","01","02","02", "02","03","03"), 
  action=c("a","b","a","c","a","c", "a","b")
)

# 按session分组,聚合动作成去重的列表
transactions_list <- x %>%
  group_by(session) %>%
  summarise(items = list(unique(action))) %>%  # unique()去掉重复动作
  pull(items)  # 提取出列表格式的列

# 转成事务对象
transactions <- as(transactions_list, "transactions")

# 看看转换后的结果
inspect(transactions)

运行后你会看到这样的输出,每个会话对应一个无顺序的项集:

items   transactionID
[1] {a,b}  01           
[2] {a,c}  02           
[3] {a,b}  03           

2. 保留动作顺序的序列格式(适配序列关联规则)

既然你在意动作的发生顺序(比如会话01的a->b->a),那标准apriori就不太合适了,得用arulesSequences包来做序列挖掘,它能保留动作的先后顺序。

操作步骤:

  • 加载arulesSequences包;
  • 按session分组,保留原始动作顺序(不去重);
  • 转成序列事务对象。

代码示例:

library(arulesSequences)

# 按session分组,保留动作的原始顺序(不去重)
sequence_list <- x %>%
  group_by(session) %>%
  summarise(items = list(action)) %>%
  pull(items)

# 转成序列事务对象
sequence_transactions <- as(sequence_list, "timedsequences")

# 查看保留顺序的结果
inspect(sequence_transactions)

输出会完整保留每个会话的动作序列:

items   transactionID
[1] <a,b,a> 01           
[2] <c,a,c> 02           
[3] <a,b>   03           

之后你就可以用对应的算法分析了:

  • 无顺序事务用apriori()挖掘关联规则:
rules <- apriori(transactions, parameter = list(supp = 0.5, conf = 0.8))
inspect(rules)
  • 带顺序的序列用cspade()挖掘序列关联规则:
seq_rules <- cspade(sequence_transactions, parameter = list(support = 0.5))
inspect(seq_rules)

小提醒

  • 要是动作顺序对你的分析很关键,千万别用apriori,它完全不考虑顺序,序列挖掘才是正确的选择;
  • 转换前一定要确保你的数据是按会话内动作的实际发生顺序排列的,不然序列分析结果会出错哦。

内容的提问来源于stack exchange,提问作者marqui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:53:40