导入eli5.lime的TextExplainer时遭遇scipy.itemfreq弃用错误求助
解决 eli5.lime 导入时
itemfreq 缺失的问题 问题背景
在用BERT做文本分类、尝试用TextExplainer做模型可解释性分析时,导入eli5.lime会触发如下错误:
ImportError: cannot import name 'itemfreq' from 'scipy.stats'
原因是新版本scipy移除了已弃用的scipy.stats.itemfreq,官方推荐用np.unique(..., return_counts=True)替代,但手动修改samplers.py后易出现索引错误。
可行解决方案
方案1:降级scipy到兼容版本
直接安装仍支持itemfreq的scipy旧版本,无需修改源码,快速恢复eli5正常使用:
pip install scipy==1.7.3
方案2:正确替换itemfreq代码
如果坚持使用新版本scipy,需严格对齐原函数的返回格式:
原代码(报错片段):
from scipy.stats import itemfreq freq = itemfreq(arr)
替换为:
import numpy as np values, counts = np.unique(arr, return_counts=True) freq = np.array(list(zip(values, counts)))
原itemfreq返回的是(值, 频数)结构的二维数组,np.unique返回两个一维数组,必须组合成完全一致的格式才能避免索引错误。
方案3:使用修复后的eli5分支
已有开发者在社区提交了该问题的修复PR,可安装对应修复后的分支版本(注意确认分支稳定性)。
补充说明
该问题是scipy版本迭代引发的依赖兼容问题,已有大量用户遇到,其中降级scipy是最直接的解决方式,手动改源码则必须保证返回格式与原函数完全匹配。
内容的提问来源于stack exchange,提问作者ChrisIreland
相关产品推荐
相关产品推荐

