SHAP与NumPy兼容性问题:NumPyArrayGeneric引发TypeError
SHAP与NumPy兼容性问题:TypeError: 'numpy._DTypeMeta' object is not subscriptable
问题重现
执行以下SHAP相关代码时触发错误:
import shap explainer = shap.TreeExplainer(rf_classifier) shap_values = explainer.shap_values(X_test) shap.summary_plot(shap_values, X_test)
错误信息:
TypeError: 'numpy._DTypeMeta' object is not subscriptable
该错误关联shap.utils模块的NumPyArrayGeneric变量,当前环境版本:SHAP 0.44.1,NumPy 1.22(注:你提到的NumPy 0.22应为笔误,NumPy无此版本,实际应为1.22)。
解决方案
1. 手动调整NumPy版本到兼容范围
SHAP 0.44.1与NumPy 1.22+存在兼容性问题,可降级NumPy到1.21.x系列:
pip install numpy==1.21.6
安装完成后重启Python环境,重新执行代码验证。
2. 升级SHAP到最新稳定版
新版本SHAP已修复该NumPy兼容性问题,直接升级:
pip install --upgrade shap
升级后无需手动调整NumPy版本,SHAP会自动匹配兼容的依赖版本。
3. 排查虚拟环境冲突
若使用虚拟环境,确保操作在目标环境中执行,避免全局包干扰。可通过以下命令确认当前环境的包版本:
import numpy, shap print(f"NumPy版本: {numpy.__version__}") print(f"SHAP版本: {shap.__version__}")
内容的提问来源于stack exchange,提问作者buki
相关产品推荐
相关产品推荐

