5. 可視化#

Scikit-learn 定義了一個簡單的 API,用於建立機器學習的可視化。此 API 的關鍵功能是允許快速繪圖和視覺調整,而無需重新計算。我們提供 Display 類別,其中公開了兩種建立繪圖的方法:from_estimatorfrom_predictionsfrom_estimator 方法會取得一個已擬合的估計器和一些資料(Xy),並建立一個 Display 物件。有時,我們希望只計算一次預測,此時應該改用 from_predictions。在以下範例中,我們為已擬合的支援向量機繪製 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. 顯示物件#

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(*, ...)

驗證曲線可視化。