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

Mlxtend apriori调用scipy稀疏矩阵时报dtypes not found错误如何解决

错误根本原因

mlxtend 的 apriori 函数不直接接收 scipy.sparse 矩阵作为输入:函数内部的输入校验逻辑会尝试读取输入对象的 dtypes 属性,该属性是 pandas DataFrame 的特有属性,scipy 稀疏矩阵不存在该属性,因此触发报错。

修复方案

方案1:直接传入布尔类型DataFrame(小数据集推荐)

如果你的数据集内存占用可接受,不需要额外做稀疏转换,直接使用你已经构造好的布尔类型 test_data 作为入参即可:

apriori(test_data, min_support = 0.3, use_colnames = True, verbose = 1)

该方案下 use_colnames=True 参数可正常生效,自动复用原数据集的列名。

方案2:使用pandas原生稀疏DataFrame(大数据集推荐)

如果数据集体积大需要用稀疏格式节约内存,不要转成 scipy 的 csr_matrix,改为构造 pandas 原生的稀疏类型 DataFrame:

# 将原布尔DataFrame转为稀疏布尔类型
sparse_test_data = test_data.astype(pd.SparseDtype(bool))
# 传入稀疏DataFrame运行apriori
apriori(sparse_test_data, min_support = 0.3, use_colnames = True, verbose = 1)

该方案既可以享受稀疏存储的内存优势,也完全兼容 mlxtend 的接口要求。

内容的提问来源于stack exchange,提问作者Nicolás Rojas U

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:36:05