sklearn 0.24.2调用PrecisionRecallDisplay.from_estimator报错如何解决?
报错原因
你遇到的报错本质是版本API不匹配问题:
from_estimator是scikit-learn 1.0版本才为PrecisionRecallDisplay新增的类方法,你当前使用的0.24.2版本的PrecisionRecallDisplay并没有实现这个方法,因此调用时直接抛出AttributeError。- 你观察到的类路径和导入路径不一致是scikit-learn的常规实现逻辑:对外暴露的公共API会统一在顶层模块的
__init__.py中导入,实际内部实现放在下划线开头的私有子模块中,这个差异不是导致报错的原因,无需额外处理。
解决方法
有两种可行方案,你可以根据自身场景选择:
- 方案1:升级scikit-learn版本
直接执行命令升级到1.0及以上版本即可兼容原有代码:pip install -U scikit-learn>=1.0
升级完成后无需修改原有代码,from_estimator方法可以正常调用。 - 方案2:保留0.24.2版本,改写代码适配旧版API
旧版本需要先手动计算精确率、召回率,再初始化PrecisionRecallDisplay对象,示例代码如下:
from sklearn.metrics import precision_recall_curve # 提取模型对测试集的正类别预测概率 y_score = lr_clf.predict_proba(x_test)[:, 1] # 计算precision、recall序列 precision, recall, _ = precision_recall_curve(y_test, y_score) # 手动初始化展示类并绘图 display = PrecisionRecallDisplay( precision=precision, recall=recall, estimator_name="Logistic Regression" ) display.plot()
内容的提问来源于stack exchange,提问作者Farzaneh
相关产品推荐
相关产品推荐

