Scikit-learn 可视化 API

Beginner

This tutorial is from open-source community. Access the source code

简介

Scikit-learn 是一个广受欢迎的 Python 库,它为机器学习任务提供了简单高效的 API。Scikit-learn 的关键特性之一是其内置的可视化 API,这使得为机器学习模型生成可视化变得轻而易举。在本实验中,我们将探索如何使用 Scikit-learn 可视化 API 来比较两个不同分类器的 ROC 曲线。

虚拟机使用小贴士

虚拟机启动完成后,点击左上角切换到“笔记本”标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会立即为你解决问题。

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

我们将首先加载葡萄酒数据集,并将其转换为一个二分类问题。然后,我们将在训练数据集上训练一个支持向量分类器。

import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.metrics import RocCurveDisplay
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split

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(random_state=42)
svc.fit(X_train, y_train)

绘制 ROC 曲线

接下来,我们将使用 RocCurveDisplay.from_estimator 函数绘制 ROC 曲线。此函数将训练好的分类器、测试数据集和真实标签作为输入,并返回一个可用于绘制 ROC 曲线的对象。然后,我们将调用 show() 方法来显示该图。

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

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

在这一步中,我们将训练一个随机森林分类器,并将其 ROC 曲线与支持向量分类器(SVC)的 ROC 曲线一起绘制出来。为此,我们将创建一个新的 RandomForestClassifier 对象,将其拟合到训练数据上,然后使用这个分类器创建一个新的 RocCurveDisplay 对象。我们还将把 ax 参数传递给这个函数,以便在同一轴上绘制曲线。最后,我们将调用 svc_disp 对象的 plot() 方法来绘制 SVC 的 ROC 曲线。

from sklearn.ensemble import RandomForestClassifier

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()

总结

在本实验中,我们探索了如何使用 Scikit-learn 可视化 API 为两个不同的分类器绘制 ROC 曲线。我们首先加载葡萄酒数据集,并在训练数据上训练一个支持向量分类器。然后,我们使用 RocCurveDisplay 函数为该分类器绘制 ROC 曲线。最后,我们训练了一个随机森林分类器,并将其 ROC 曲线与支持向量分类器的 ROC 曲线一起绘制出来。Scikit-learn 可视化 API 使得比较不同分类器并可视化它们的性能变得轻而易举。