Matplotlib 利用交叉验证的结果制作ROC曲线?

Matplotlib 利用交叉验证的结果制作ROC曲线?,matplotlib,machine-learning,scikit-learn,roc,Matplotlib,Machine Learning,Scikit Learn,Roc,我正在使用随机林进行5倍交叉验证,如下所示: from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import cross_validate forest = RandomForestClassifier(n_estimators=100, max_depth=8, max_features=6) cv_results = cross_validate(forest, X, y,

我正在使用随机林进行5倍交叉验证,如下所示:

from sklearn.ensemble import RandomForestClassifier

from sklearn.model_selection import cross_validate

forest = RandomForestClassifier(n_estimators=100, max_depth=8, max_features=6)

cv_results = cross_validate(forest, X, y, cv=5, scoring=scoring)
但是,我想在一张图上绘制5个输出的ROC曲线。本文档仅提供了一个示例,用于在特别使用分层折叠交叉验证时绘制具有交叉验证的roc曲线(请参见此处的文档:)

我试着修改代码,使其能够用于交叉验证,但没有效果

如何将cross_validate(交叉验证)输出的5个结果绘制在一个图形上,从而生成ROC曲线


提前感谢

交叉验证
是一种模型验证工具,而不是拆分类。你需要选择最适合你的。你可能在找我。大概是这样的:

from sklearn.model_selection import KFold
cv = KFold(n_splits=5)

交叉验证
是一种模型验证工具,而不是拆分类。你需要选择最适合你的。你可能在找我。大概是这样的:

from sklearn.model_selection import KFold
cv = KFold(n_splits=5)

那么,您的意思是说,使用cross_validate生成的结果不能绘制为Roc_auc图?我这样说是因为我想可视化运行cross_validate创建的结果。如果我使用随机林运行拆分器类并绘制roc_auc结果,它将与我使用cross_validate得到的结果不匹配。这是我必须接受的吗?顺便说一句,感谢您的帮助。在您提供的链接中,他们使用了
StratifiedKFold
,您说您希望将其用于“5倍交叉验证”,而不是分层K倍交叉验证
StratifiedKFold
是一个拆分器类,您需要用拆分器类替换K fold交叉验证,即
KFold
。如果我运行:cv\u结果=交叉验证(森林,X,y,cv=5,评分=评分),我定义的评分指标之一是roc\u auc。我想做的就是在同一张图上绘制这5个不同的roc_auc分数。您提到在使用cross_validate时这是不可能的,因为cross_validate是模型验证工具,而不是拆分工具。但我读到cross_validate自动使用分层折叠。我只想从cv_results=cross_validate(forest,X,y,cv=5,scoring=scoring)中获取结果,并将它们绘制在roc_auc图上。为什么我需要使用Kfold或“拆分器类”?谢谢你的意思是说使用cross_validate生成的结果不能绘制为Roc_auc图?我这样说是因为我想可视化运行cross_validate创建的结果。如果我使用随机林运行拆分器类并绘制roc_auc结果,它将与我使用cross_validate得到的结果不匹配。这是我必须接受的吗?顺便说一句,感谢您的帮助。在您提供的链接中,他们使用了
StratifiedKFold
,您说您希望将其用于“5倍交叉验证”,而不是分层K倍交叉验证
StratifiedKFold
是一个拆分器类,您需要用拆分器类替换K fold交叉验证,即
KFold
。如果我运行:cv\u结果=交叉验证(森林,X,y,cv=5,评分=评分),我定义的评分指标之一是roc\u auc。我想做的就是在同一张图上绘制这5个不同的roc_auc分数。您提到在使用cross_validate时这是不可能的,因为cross_validate是模型验证工具,而不是拆分工具。但我读到cross_validate自动使用分层折叠。我只想从cv_results=cross_validate(forest,X,y,cv=5,scoring=scoring)中获取结果,并将它们绘制在roc_auc图上。为什么我需要使用Kfold或“拆分器类”?谢谢,请不要交叉张贴问题。。。你用什么来评分?请不要交叉张贴问题。。。你用什么来评分?