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

使用TransactionEncoder对长度不一致的交易列表进行One-hot-encoding的方法

实现逻辑说明

你使用的TransactionEncoder本身就是为处理不等长交易列表设计的,无需提前对齐子列表长度,直接按以下步骤实现即可:

1. 依赖安装

先确认安装所需依赖,缺失的话执行以下命令安装:

pip install mlxtend pandas

2. 完整实现代码

直接将你提供的交易数据赋值给trans变量即可,不需要做额外的预处理:

import pandas as pd
from mlxtend.preprocessing import TransactionEncoder

# 直接赋值不等长的交易列表即可
trans = [
    ['Apple', 'Beer', 'Rice', 'Chicken'],
    ['Apple', 'Beer', 'Rice'], 
    ['Apple', 'Beer'], 
    ['Apple', 'Bananas'], 
    ['Milk', 'Beer', 'Rice', 'Chicken'], 
    ['Milk', 'Beer', 'Rice'], 
    ['Milk', 'Beer'], 
    ['Apple', 'Bananas']
]

te = TransactionEncoder()
# fit_transform原生支持接收不等长列表组成的数组
data = te.fit_transform(trans)
# 转换为DataFrame,列名为所有去重后的商品名称
data = pd.DataFrame(data, columns = te.columns_)

3. 结果说明

最终得到的data是布尔类型的DataFrame,每行对应一笔交易,每列对应一个商品,值为True代表该笔交易包含对应商品,False代表不包含,完全符合One-hot布尔数组的需求。如果需要转换为0/1的数值格式,可额外加一行代码:

data = data.astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:36:03