5. 可视化#

Scikit-learn 定义了一个简单的 API 用于创建机器学习的可视化。该 API 的关键特性是允许快速绘制和进行视觉调整,而无需重新计算。我们提供了 Display 类,它们公开了两种用于创建绘图的方法:from_estimatorfrom_predictionsfrom_estimator 方法将接受一个拟合的估计器和一些数据 (Xy),并创建一个 Display 对象。有时,我们只想计算一次预测,在这种情况下应该使用 from_predictions 而不是 from_estimator。在以下示例中,我们为拟合的支持向量机绘制了 ROC 曲线

from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import RocCurveDisplay
from sklearn.datasets import load_wine

X, y = load_wine(return_X_y=True)
y = y == 2  # make binary
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)

svc_disp = RocCurveDisplay.from_estimator(svc, X_test, y_test)
_images/visualizations-1.png

返回的 svc_disp 对象允许我们在未来的绘图中继续使用已经计算的 SVC 的 ROC 曲线。在这种情况下,svc_disp 是一个 RocCurveDisplay,它将计算的值存储为名为 roc_aucfprtpr 的属性。请注意,我们可以从支持向量机中获取预测,然后使用 from_predictions 而不是 from_estimator。接下来,我们训练一个随机森林分类器,并使用 Display 对象的 plot 方法再次绘制先前计算的 ROC 曲线。

import matplotlib.pyplot as plt
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)
_images/visualizations-2.png

请注意,我们将 alpha=0.8 传递给绘图函数以调整曲线的 alpha 值。

示例

5.1. 可用的绘图工具#

5.1.1. Display 对象#

calibration.CalibrationDisplay(prob_true, ...)

校准曲线(也称为可靠性图)可视化。

inspection.PartialDependenceDisplay(...[, ...])

部分依赖图 (PDP)。

inspection.DecisionBoundaryDisplay(*, xx0, ...)

决策边界可视化。

metrics.ConfusionMatrixDisplay(...[, ...])

混淆矩阵可视化。

metrics.DetCurveDisplay(*, fpr, fnr[, ...])

DET 曲线可视化。

metrics.PrecisionRecallDisplay(precision, ...)

精确率召回率可视化。

metrics.PredictionErrorDisplay(*, y_true, y_pred)

回归模型预测误差可视化。

metrics.RocCurveDisplay(*, fpr, tpr[, ...])

ROC 曲线可视化。

model_selection.LearningCurveDisplay(*, ...)

学习曲线可视化。

model_selection.ValidationCurveDisplay(*, ...)

验证曲线可视化。