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

Orange数据挖掘中如何按交易分组生成项集并运行关联规则

Orange超市交易数据转关联规则项集操作指南

完全可以在Orange中实现你描述的操作,和RapidMiner的Aggregate算子效果一致,甚至有更简便的原生组件可以直接生成关联规则所需的项集格式,不需要额外开发,以下是两种常用实现路径:

路径1:可视化组件拖拽实现(无代码)

  • 第一步:导入数据集,确保数据包含交易ID、商品名两个核心字段
  • 第二步:选择Pivot Table(透视表)组件完成格式转换
    • 行维度设置为交易ID字段
    • 列维度设置为商品名字段
    • 值统计规则选择Count
    • 生成的结果会自动将每个商品转为单独列,单元格值为1代表对应交易包含该商品,0代表不包含,直接符合关联规则算法的项集输入要求
  • 第三步:将透视表输出的数据集直接连接到Association Rules组件,即可运行Apriori算法计算关联规则

如果你需要先得到同交易商品合并到同一列的中间结果,可以替换第二步为Aggregate组件操作:

  • 分组字段选择交易ID
  • 对商品名字段应用Concatenate聚合规则,自定义分隔符(建议用不会出现在商品名中的特殊符号,比如|),即可得到和RapidMiner中Aggregate算子完全一致的输出结果,后续可搭配Split Column组件拆分多列后生成项集

路径2:Python脚本组件自定义实现(灵活处理复杂规则)

如果有特殊的分组、清洗逻辑,可以拖拽Python Script组件,写入以下示例代码实现:

import pandas as pd
from Orange.data import Table, Domain, DiscreteVariable

# 读取输入的Orange数据集转DataFrame
input_data = in_data
df = pd.DataFrame(input_data.X, columns=[var.name for var in input_data.domain.variables])
# 补全列名映射,替换为你实际的交易ID、商品列名
df = df.rename(columns={"transaction": "交易ID", "product": "商品名"})

# 按交易ID分组合并商品
group_df = df.groupby("交易ID")["商品名"].apply(",".join).reset_index()
# 生成独热编码项集
item_dummies = group_df["商品名"].str.get_dummies(sep=",")
output_df = pd.concat([group_df[["交易ID"]], item_dummies], axis=1)

# 转换回Orange支持的Table格式输出
domain = Domain(
    [DiscreteVariable(name=col, values=["0", "1"]) for col in item_dummies.columns],
    metas=[DiscreteVariable(name="交易ID", values=output_df["交易ID"].astype(str).unique())]
)
out_data = Table.from_numpy(domain, item_dummies.values, metas=output_df[["交易ID"]].values)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:18:02