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

如何在Python mlxtend中统计频繁项集的出现次数?

获取mlxtend Apriori频繁项集的支持度计数

当然可以拿到支持度计数!我之前也遇到过这个需求,给你两个靠谱的解决方法:

方法1:从支持度反向计算(简单直接)

mlxtend的apriori函数默认返回的support列是相对支持度(出现次数/总交易数),所以只要用这个值乘以你的交易总数(也就是OneHotDataFrame的行数),就能得到绝对的支持度计数。

步骤如下:

  • 首先调用apriori时记得加use_colnames=True,这样项集会显示成易读的名称而非索引:
    from mlxtend.frequent_patterns import apriori
    
    # 假设你的OneHot编码后的DataFrame叫one_hot_df
    frequent_itemsets = apriori(one_hot_df, min_support=0.1, use_colnames=True)
    
  • 然后新增support_count列,计算绝对计数:
    # 总交易数就是one_hot_df的行数
    total_transactions = len(one_hot_df)
    # 用round避免浮点精度问题,再转成整数
    frequent_itemsets['support_count'] = round(frequent_itemsets['support'] * total_transactions).astype(int)
    

方法2:直接获取交易ID列表统计(更精准)

如果担心浮点运算的精度误差,mlxtend的apriori还提供了output_transaction_ids=True参数,开启后会返回包含该项集的所有交易的索引列表,直接统计列表长度就是支持度计数:

frequent_itemsets = apriori(one_hot_df, min_support=0.1, use_colnames=True, output_transaction_ids=True)
# 统计每个项集对应的交易数量
frequent_itemsets['support_count'] = frequent_itemsets['transaction_ids'].apply(len)

这个方法完全避免了浮点计算的问题,结果更准确,而且你还能通过transaction_ids列查看具体哪些交易包含了这个项集,适合需要深入分析的场景。

两种方法都能解决你的问题,看你更倾向哪种啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:31:25