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

如何在Orange中对跨列商品值做独热编码用于购物篮分析

你当前使用的「continous discrete variables - one feature per line」功能仅适用于单列存储多值特征的场景,你的原始数据是多列分别存储单个商品,所以无法得到预期结果,可参考以下操作方案:

Orange平台操作步骤
  • 第一步:通过File组件导入你的CSV数据源,导入后确认数据类型:C#列设置为元数据列(不作为建模特征),其余存储商品的列均设置为分类特征。
  • 第二步:添加Unpivot组件和File组件相连,在Unpivot配置页中,将C#列设为保持列,其余所有存储商品的列设为待转换列,运行后会生成「顾客ID + 对应商品」的长格式表,商品为空的行会自动过滤。
  • 第三步:添加Pivot组件和Unpivot组件相连,配置规则:行索引选择C#列,列索引选择Unpivot生成的商品值列,值聚合方式选择计数,运行后直接生成你需要的独热编码矩阵,存在对应商品的单元格值为1,不存在的为0。
  • 第四步(可选):如果存在同一顾客重复购买同一款商品的情况,可添加Discretize组件,将所有数值列按照「≥1为1、<1为0」的规则离散化,保证所有值都是二分类标识。
其他工具快速处理方案

Excel/WPS 表格操作

  • 先将原始表中多列存储的商品整理为单列,每行仅保留「顾客ID + 单个商品」的组合,删除商品为空的行。
  • 选中全量数据插入数据透视表,行字段设置为C#,列字段设置为商品名,值字段设置为「计数」,将透视表空白单元格默认填充为0即可得到目标格式。

Python Pandas 处理

如果掌握基础代码操作,可通过以下代码快速转换:

import pandas as pd

# 导入原始CSV数据
df = pd.read_csv("你的本地文件路径.csv")
# 宽表转长表,删除无商品的空行
df_long = df.melt(id_vars="C#", value_name="item").dropna(subset=["item"])
# 生成独热编码矩阵
df_onehot = pd.crosstab(df_long["C#"], df_long["item"]).reset_index()
# 导出结果
df_onehot.to_csv("独热编码结果.csv", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:36:07