在机器学习领域,接收者操作特征(ROC)曲线是一种重要的工具,用于评估分类模型的性能。scikit-learn库提供了一个简洁的API,允许快速绘制ROC曲线,并进行可视化调整,而无需重新计算。本文将通过一个实例,展示如何使用scikit-learn的可视化API来比较不同分类器的ROC曲线。
首先,加载葡萄酒数据集,并将其转换为二分类问题。然后,在训练数据集上训练一个支持向量分类器。以下是实现这一过程的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加载此页面。
接下来,使用sklearn.metrics.RocCurveDisplay.from_estimator
方法绘制ROC曲线。返回的svc_disp
对象允许在未来的图表中继续使用已经计算过的ROC曲线。
svc_disp = RocCurveDisplay.from_estimator(svc, X_test, y_test)
plt.show()
这种方法的优势在于,当需要在后续的图表中使用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源代码或压缩包:
以下是一些与ROC曲线相关的其他示例: