已升级sklearn到0.24版本仍无法导入RocCurveDisplay该如何处理
scikit-learn导入RocCurveDisplay失败解决方案
- 第一步:校验当前运行环境的依赖版本
多Python环境/虚拟环境会导致全局升级不生效,在你运行报错代码的同个环境中执行如下代码确认版本:import sklearn; print(sklearn.__version__)
如果输出版本低于0.22,说明升级的是其他环境的依赖,在当前环境终端执行升级命令即可:pip install -U scikit-learn - 第二步:检查导入路径写法
版本符合要求仍导入失败,可尝试两种官方兼容的导入写法:- 常规导入(0.22及以上版本支持):
from sklearn.metrics import RocCurveDisplay - 子模块导入(部分中间版本兼容写法):
from sklearn.metrics.plot import RocCurveDisplay
- 常规导入(0.22及以上版本支持):
- 第三步:排查本地命名冲突
检查代码所在工作目录下是否存在名为sklearn.py的文件,或名为sklearn的文件夹,这类重名文件会被Python优先导入,屏蔽官方库,重命名为其他名称即可解决。 - 第四步:临时替代方案
上述步骤都无法解决时,可以直接计算ROC指标后手动绘图,无需依赖RocCurveDisplay类:from sklearn.metrics import roc_curve, auc import matplotlib.pyplot as plt # y_true为真实标签,y_score为预测概率/置信度 fpr, tpr, thresholds = roc_curve(y_true, y_score) roc_auc = auc(fpr, tpr) # 绘制ROC曲线 plt.figure() plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC曲线 (AUC = {roc_auc:.2f})') plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('假阳性率') plt.ylabel('真阳性率') plt.title('ROC曲线') plt.legend(loc="lower right") plt.show()
内容的提问来源于stack exchange,提问作者柏江山
相关产品推荐
相关产品推荐

