本教程将向展示如何利用机器学习可视化API快速绘制并调整ROC曲线,而无需重新计算。将通过比较ROC曲线来演示如何使用这个API。首先,需要加载数据并训练一个支持向量分类器(SVC)。
在这个步骤中,首先加载葡萄酒数据集,然后将其转换为二分类问题。接着,在训练数据集上训练一个支持向量分类器。以下是具体的代码实现:
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上,可以尝试使用nbviewer.org来加载此页面以查看HTML表示。
接下来,将使用sklearn.metrics.RocCurveDisplay.from_estimator
绘制ROC曲线。返回的svc_disp
对象允许在未来绘制SVC的ROC曲线时继续使用已经计算过的ROC曲线值。
# 绘制ROC曲线
svc_disp = RocCurveDisplay.from_estimator(svc, X_test, y_test)
plt.show()
这样,就得到了SVC的ROC曲线。接下来,将训练一个随机森林分类器,并创建一个与SVC ROC曲线的比较图。
训练一个随机森林分类器,并创建一个与SVC ROC曲线的比较图。注意,svc_disp
使用plot
方法绘制SVC的ROC曲线,而无需重新计算ROC曲线的值。此外,向绘图函数传递alpha=0.8
以调整曲线的透明度。
# 训练随机森林分类器
rfc = RandomForestClassifier(n_estimators=10, random_state=42)
rfc.fit(X_train, y_train)
# 获取当前轴
ax = plt.gca()
# 绘制随机森林的ROC曲线
rfc_disp = RocCurveDisplay.from_estimator(rfc, X_test, y_test, ax=ax, alpha=0.8)
# 绘制SVC的ROC曲线
svc_disp.plot(ax=ax, alpha=0.8)
plt.show()
脚本的总运行时间为:(0分钟 0.146秒)。
以下是一些相关的示例和资源,可以参考这些资源来进一步了解机器学习中的ROC曲线和其他相关概念: