Sklearn导入plot_roc_curve报错,请求代码排查与解决
问题解决:ImportError: cannot import name 'plot_roc_curve' from 'sklearn.metrics'
这个错误是因为scikit-learn版本更新后,plot_roc_curve函数的位置发生了变化:从scikit-learn 1.0版本开始,该函数不再放在sklearn.metrics模块下,而是被迁移到了sklearn.metrics.plot模块,并且官方更推荐使用RocCurveDisplay类来替代它。
解决方案
方案1:使用官方推荐的RocCurveDisplay(推荐)
修改你的导入语句,替换plot_roc_curve为RocCurveDisplay:
from sklearn.metrics import roc_curve, roc_auc_score, RocCurveDisplay
之后绘制ROC曲线可以用以下两种方式:
- 基于训练好的模型直接生成:
# 假设clf是你的分类器,X_test、y_test是测试集数据 RocCurveDisplay.from_estimator(clf, X_test, y_test) plt.show()
- 基于手动计算的指标值生成:
y_score = clf.predict_proba(X_test)[:, 1] fpr, tpr, thresholds = roc_curve(y_test, y_score) roc_auc = roc_auc_score(y_test, y_score) display = RocCurveDisplay(fpr=fpr, tpr=tpr, roc_auc=roc_auc, estimator_name="你的分类器名称") display.plot() plt.show()
方案2:从sklearn.metrics.plot导入旧函数(不推荐,后续版本可能移除)
如果暂时不想修改绘图逻辑,可以调整导入路径:
from sklearn.metrics.plot import plot_roc_curve
额外说明
你的其他导入语句没有问题,错误仅来自plot_roc_curve的位置变化。建议优先使用方案1,因为plot_roc_curve属于被弃用的API,后续版本可能会被彻底移除。
内容的提问来源于stack exchange,提问作者Sabrina Rashdi
相关产品推荐
相关产品推荐

