机器学习可视化API:ROC曲线示例

机器学习领域,接收者操作特征(ROC)曲线是一种重要的工具,用于评估分类模型的性能。scikit-learn库提供了一个简洁的API,允许快速绘制ROC曲线,并进行可视化调整,而无需重新计算。本文将通过一个实例,展示如何使用scikit-learn可视化API来比较不同分类器的ROC曲线。

加载数据并训练支持向量分类器(SVC)

首先,加载葡萄酒数据集,并将其转换为二分类问题。然后,在训练数据集上训练一个支持向量分类器。以下是实现这一过程的Python代码:

import matplotlib.pyplot as plt from sklearn.datasets import load_wine from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import RocCurveDisplay from sklearn.model_selection import train_test_split from sklearn.svm import SVC # 加载数据 X, y = load_wine(return_X_y=True) y = y == 2 # 转换为二分类问题 # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42) # 训练SVC模型 svc = SVC(random_state=42) svc.fit(X_train, y_train)

在Jupyter环境中,可以重新运行上述代码单元,以显示HTML表示形式或信任笔记本。在GitHub上,HTML表示形式无法渲染,请尝试使用nbviewer.org加载此页面。

绘制ROC曲线

接下来,使用sklearn.metrics.RocCurveDisplay.from_estimator方法绘制ROC曲线。返回的svc_disp对象允许在未来的图表中继续使用已经计算过的ROC曲线。

svc_disp = RocCurveDisplay.from_estimator(svc, X_test, y_test) plt.show()

这种方法的优势在于,当需要在后续的图表中使用ROC曲线时,不需要重新计算ROC曲线的值。

训练随机森林并绘制ROC曲线

进一步训练一个随机森林分类器,并创建一个与SVC ROC曲线进行比较的图表。注意,svc_disp使用plot方法绘制SVCROC曲线,而不需要重新计算ROC曲线的值。此外,向plot函数传递alpha=0.8,以调整曲线的透明度。

rfc = RandomForestClassifier(n_estimators=10, random_state=42) rfc.fit(X_train, y_train) ax = plt.gca() rfc_disp = RocCurveDisplay.from_estimator(rfc, X_test, y_test, ax=ax, alpha=0.8) svc_disp.plot(ax=ax, alpha=0.8) plt.show()

通过这种方式,可以直观地比较不同分类器的性能,从而为模型选择提供依据。

脚本总运行时间

脚本的总运行时间为:0分钟0.166秒。

可以通过以下链接下载Jupyter笔记本、Python源代码或压缩包:

  • Jupyter笔记本:
  • Python源代码:
  • 压缩包:

以下是一些与ROC曲线相关的其他示例:

  • 带有交叉验证的接收者操作特征(ROC)
  • 检测错误权衡(DET)曲线
  • scikit-learn 0.22版本发布亮点
  • 多类接收者操作特征(ROC)
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485