我正在尝试按照 sklearn 文档中提供的 example 来绘制具有交叉验证的接收器操作特征 (ROC) 曲线。但是,以下导入在
ImportError
和 python2
中都会给出 python3
。
from sklearn.metrics import plot_roc_curve
错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name plot_roc_curve
python-2.7
sklearn版本:0.20.2.
python-3.6
sklearn版本:0.21.3.
我发现下面的导入工作正常,但它与
plot_roc_curve
不太一样。
from sklearn.metrics import roc_curve
plot_roc_curve
是否已弃用?有人可以尝试一下代码并让我知道 sklearn 版本是否有效吗?
plot_roc_curve 在 1.2 版本中已被删除。从 1.2 开始,改用 RocCurveDisplay:
sklearn 1.2 之前:
from sklearn.metrics import plot_roc_curve
svc_disp = plot_roc_curve(svc, X_test, y_test)
rfc_disp = plot_roc_curve(rfc, X_test, y_test, ax=svc_disp.ax_)
来自sklearn 1.2:
from sklearn.metrics import RocCurveDisplay
svc_disp = RocCurveDisplay.from_estimator(svc, X_test, y_test)
rfc_disp = RocCurveDisplay.from_estimator(rfc, X_test, y_test, ax=svc_disp.ax_)
安装 scikit-plot 并从那里导入指标:
from scikitplot.metrics import plot_roc_curve
绘图 API 在 版本 0.22 中引入。正如这里提到的,Scikit-learn 0.20 是支持 Python 2.7 和 Python 3.4 的最后一个版本。 Scikit-learn 现在需要 Python 3.5 或更高版本。
Conda
更新了
conda update --all
,然后将
scikit-learn
更新到最新版本(对我来说是
conda install scikit-learn=0.23.2
)并重新启动了内核。之后我的错误就消失了。
ImportError: cannot import name 'plot_roc_curve' from 'sklearn.metrics'
使用 RocCurveDisplay
代替
plot_roc_curve
如
from sklearn.metrics import RocCurveDisplay
plot_roc_curve
已弃用,并在 1.2 版本中从
sklearn
中删除。 使用
RocCurveDisplay
:当前绘制ROC曲线的方法不是
plot_roc_curve
,而是通过
RocCurveDisplay
中的
sklearn.metrics
类。所以尝试一下
'从 sklearn.metrics 导入 RocCurveDisplay'