sklearn调用RocCurveDisplay.from_predictions报无属性错误如何解决
问题原因
该错误确实由scikit-learn版本不兼容导致。RocCurveDisplay.from_predictions 是scikit-learn 1.0及更高版本才新增的API,你当前使用的0.24.1版本未提供该静态方法,因此触发属性不存在的报错。
解决方案
方案1:升级scikit-learn版本
直接升级到1.0及以上版本即可兼容原有代码,升级命令:
pip install -U scikit-learn
升级完成后原有代码不需要修改即可直接运行,若有其他依赖绑定旧版本scikit-learn,升级前请先确认兼容性。
方案2:不升级版本,使用低版本兼容写法
0.24.1版本的RocCurveDisplay需要配合roc_curve函数手动计算fpr、tpr后再绘图,替代代码如下:
import numpy as np import matplotlib.pyplot as plt from sklearn.metrics import RocCurveDisplay, roc_curve true = np.array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]) prediction = np.array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 0., 0., 1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 0., 0.]) # 手动计算fpr、tpr参数 fpr, tpr, _ = roc_curve(true, prediction) # 初始化RocCurveDisplay实例并绘图 display = RocCurveDisplay(fpr=fpr, tpr=tpr) display.plot() plt.show()
内容的提问来源于stack exchange,提问作者Julithe
相关产品推荐
相关产品推荐

