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

mlxtend库DeprecationWarning警告排查及农产品推荐功能失效问题求助

mlxtend库DeprecationWarning警告排查及农产品推荐功能失效问题求助

嘿,我来帮你梳理下当前遇到的两个问题——mlxtend的警告和农产品推荐失效,咱们一步步来分析:


首先解决终端的DeprecationWarning警告

你看到的这个警告根源很明确:mlxtend的apriori算法期望输入的DataFrame是布尔类型(True/False),但你写的encode_units函数返回的是整数0和1。虽然目前mlxtend还兼容整数类型,但官方已经明确说未来可能停止支持,而且整数类型的计算效率也不如布尔型。

这个问题改起来很简单,只要把编码函数改成返回布尔值就行:

def encode_units(x):
    return x >= 1  # 直接返回True/False,替代原来的0/1

或者保留分支逻辑的写法也可以:

def encode_units(x):
    if x <= 0:
        return False
    else:
        return True

修改完重新生成basket_cluster_xxx_sets,警告就会消失了。


再排查农产品推荐功能失效的可能原因

警告本身一般不会直接导致推荐完全失效,大概率是数据或参数设置的问题,我给你列几个核心排查方向:

  1. 集群数据是否有足够的有效交易?
    先确认你筛选出的cluster_Two、cluster_One、cluster_Zero里有没有足够的用户和交易记录:

    • 打印print(cluster_Two.shape)看看集群用户数,如果只有寥寥几个用户,很难生成符合支持度要求的频繁项集;
    • 再看basket_Cluster_two.describe()的输出,确认是否有足够多的非零交易数据,要是大部分都是0,说明这个集群的用户购买行为极少。
  2. Apriori的支持度阈值是否设置过高?
    你给不同集群设置的min_support分别是0.03、0.02、0.01,这个阈值是基于用户数的比例。比如如果Cluster 2只有100个用户,0.03的支持度意味着至少要有3个用户同时购买某组农产品,要是你的数据里没有这样的组合,apriori就生成不了任何频繁项集,后续自然也没有推荐规则。
    可以先把阈值调低试试,比如Cluster 2改成0.01,看能不能生成频繁项集。

  3. 检查频繁项集是否为空
    在生成frequent_itemsets_cluster_two后,加一行打印检查:

    print(frequent_itemsets_cluster_two)
    

    如果输出是空的,那就是支持度阈值的问题;如果有数据,再看关联规则的生成逻辑:你设置的min_threshold=1(lift阈值)是合理的,但可以试试换用metric="confidence"并设置min_threshold=0.5,看能不能生成规则。

  4. 数据合并和分组是否正确?
    检查Merged_DF_RFM_Table_Cluster的合并结果:

    • 用print(Merged_DF_RFM_Table_Cluster['Cluster'].value_counts())确认每个集群的用户数是否符合预期;
    • 还要注意PRODUCE字段有没有格式问题,比如大小写不一致、多余空格,这会导致同一种农产品被分成不同的组,破坏关联规则的生成。

快速验证步骤

  1. 先修改encode_units函数解决警告问题;
  2. 检查每个集群的用户数和交易数据量,确认数据有效性;
  3. 临时把apriori的min_support调到极低值(比如0.001),看能不能生成频繁项集;
  4. 如果能生成,再逐步调高阈值到合理范围;如果还是空,那可能是该集群的交易数据本身没有可关联的农产品组合。

备注:内容来源于stack exchange,提问作者Bright

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 14:44:35