RocCurveDisplay#

class sklearn.metrics.RocCurveDisplay(*, fpr, tpr, roc_auc=None, name=None, pos_label=None, estimator_name='deprecated')[source]#

ROC 曲线可视化。

建议使用 from_estimatorfrom_predictionsfrom_cv_results 来创建 RocCurveDisplay。所有参数都存储为属性。

有关 scikit-learn 可视化工具的一般信息,请参阅 可视化指南。有关解释这些图表的指导,请参阅 模型评估指南

参数:
fprndarray 或 ndarray 列表

假阳性率。每个 ndarray 应包含单个曲线的值。如果要绘制多条曲线,列表的长度应与 tpr 相同。

版本 1.7 已更改: 现在接受列表以绘制多条曲线。

tprndarray 或 ndarray 列表

真阳性率。每个 ndarray 应包含单个曲线的值。如果要绘制多条曲线,列表的长度应与 fpr 相同。

版本 1.7 已更改: 现在接受列表以绘制多条曲线。

roc_aucfloat 或 float 列表,默认值=None

ROC 曲线下的面积,用于标记图例中的每条曲线。如果要绘制多条曲线,则应为与 fprtpr 长度相同的列表。如果为 None,则 ROC AUC 分数不会显示在图例中。

版本 1.7 已更改: 现在接受列表以绘制多条曲线。

namestr 或 str 列表,默认值=None

用于标记图例条目的名称。图例条目的数量由传递给 plotcurve_kwargs 决定,不受 name 的影响。要标记每条曲线,请提供一个字符串列表。要避免标记外观相同的单个曲线,列表不能与 curve_kwargs 为字典或 None 一起使用。如果提供一个字符串,它将用于标记单个图例条目,或者如果存在多个图例条目,则用于标记每个单独的曲线。如果为 None,则图例中不显示名称。

版本 1.7 已更改: estimator_name 已弃用,改为使用 name

pos_labelint, float, bool or str, default=None

计算 ROC AUC 指标时被视为正类的类。如果不是 None,则此值会显示在 x 轴和 y 轴标签中。

0.24 版本新增。

estimator_namestr, default=None

估计器的名称。如果为 None,则不显示估计器名称。

版本 1.7 已弃用: estimator_name 已弃用,将在 1.9 中移除。请改用 name

属性:
line_matplotlib Artist 或 matplotlib Artist 列表

ROC 曲线。

版本 1.7 已更改: 当绘制多条曲线时,此属性现在可以是 Artist 列表。

chance_level_matplotlib Artist 或 None

机会水平线。如果未绘制机会水平线,则为 None

在版本 1.3 中新增。

ax_matplotlib Axes

包含 ROC 曲线的 Axes。

figure_matplotlib Figure

包含曲线的图。

另请参阅

roc_curve

计算接收者操作特征 (ROC) 曲线。

RocCurveDisplay.from_estimator

给定一个估计器和一些数据,绘制接收者操作特征 (ROC) 曲线。

RocCurveDisplay.from_predictions

给定真实值和预测值,绘制接收者操作特征 (ROC) 曲线。

from_cv_results

根据交叉验证结果绘制多折 ROC 曲线。

roc_auc_score

计算 ROC 曲线下的面积。

示例

>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> from sklearn import metrics
>>> y_true = np.array([0, 0, 1, 1])
>>> y_score = np.array([0.1, 0.4, 0.35, 0.8])
>>> fpr, tpr, thresholds = metrics.roc_curve(y_true, y_score)
>>> roc_auc = metrics.auc(fpr, tpr)
>>> display = metrics.RocCurveDisplay(fpr=fpr, tpr=tpr, roc_auc=roc_auc,
...                                   name='example estimator')
>>> display.plot()
<...>
>>> plt.show()
../../_images/sklearn-metrics-RocCurveDisplay-1.png
classmethod from_cv_results(cv_results, X, y, *, sample_weight=None, drop_intermediate=True, response_method='auto', pos_label=None, ax=None, name=None, curve_kwargs=None, plot_chance_level=False, chance_level_kwargs=None, despine=False)[source]#

根据交叉验证结果创建多折 ROC 曲线显示。

在版本 1.7 中新增。

参数:
cv_resultsdict

字典,由使用 return_estimator=Truereturn_indices=Truecross_validate 返回(即,字典应包含“estimator”和“indices”键)。

Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}

输入值。

yarray-like of shape (n_samples,)

目标值。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

样本权重。

drop_intermediatebool, default=True

是否删除某些次优的阈值,这些阈值不会出现在绘制的 ROC 曲线中。这有助于创建更轻量级的 ROC 曲线。

response_method{‘predict_proba’, ‘decision_function’, ‘auto’} 默认值='auto'

指定是使用 predict_proba 还是 decision_function 作为目标响应。如果设置为“auto”,则先尝试 predict_proba,如果不存在,则尝试 decision_function

pos_labelint, float, bool or str, default=None

计算 ROC AUC 指标时被视为正类的类。默认情况下,cv_results 中的 estimator.classes_[1] 被视为正类。

axmatplotlib axes, default=None

用于绘图的坐标轴对象。如果为 None,则会创建新的图和坐标轴。

namestr 或 str 列表,默认值=None

用于标记图例条目的名称。图例条目的数量由 curve_kwargs 决定,不受 name 的影响。要标记每条曲线,请提供一个字符串列表。要避免标记外观相同的单个曲线,列表不能与 curve_kwargs 为字典或 None 一起使用。如果提供一个字符串,它将用于标记单个图例条目,或者如果存在多个图例条目,则用于标记每个单独的曲线。如果为 None,则图例中不显示名称。

curve_kwargsdict 或 dict 列表,默认值=None

传递给 matplotlib 的 plot 函数以绘制单个 ROC 曲线的关键字参数。如果提供列表,则参数依次应用于每个 CV 折叠的 ROC 曲线,并为每条曲线添加一个图例条目。如果提供单个字典,则相同的参数应用于所有 ROC 曲线,并添加一个图例条目以显示所有曲线,该条目以平均 ROC AUC 分数标记。

plot_chance_levelbool,默认值=False

是否绘制机会水平线。

chance_level_kwargsdict,默认值=None

传递给 matplotlib 的 plot 函数以渲染机会水平线的关键字参数。

despinebool,默认值=False

是否从图中移除顶部和右侧的边框线。

返回:
包含 ROC 曲线的 Axes。

RocCurveDisplay。

另请参阅

roc_curve

计算接收者操作特征 (ROC) 曲线。

RocCurveDisplay.from_estimator

给定一个估计器和一些数据,绘制接收者操作特征 (ROC) 曲线。

RocCurveDisplay.from_predictions

根据分类器的概率或分数可视化 ROC 曲线。

roc_auc_score

计算 ROC 曲线下的面积。

示例

>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_classification
>>> from sklearn.metrics import RocCurveDisplay
>>> from sklearn.model_selection import cross_validate
>>> from sklearn.svm import SVC
>>> X, y = make_classification(random_state=0)
>>> clf = SVC(random_state=0)
>>> cv_results = cross_validate(
...     clf, X, y, cv=3, return_estimator=True, return_indices=True)
>>> RocCurveDisplay.from_cv_results(cv_results, X, y)
<...>
>>> plt.show()
../../_images/sklearn-metrics-RocCurveDisplay-2.png
classmethod from_estimator(estimator, X, y, *, sample_weight=None, drop_intermediate=True, response_method='auto', pos_label=None, name=None, ax=None, curve_kwargs=None, plot_chance_level=False, chance_level_kw=None, despine=False, **kwargs)[source]#

从估计器创建 ROC 曲线显示。

有关 scikit-learn 可视化工具的一般信息,请参阅 可视化指南。有关解释这些图表的指导,请参阅 模型评估指南

参数:
estimatorestimator instance

已拟合的分类器或已拟合的 Pipeline,其中最后一个估计器是分类器。

Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}

输入值。

yarray-like of shape (n_samples,)

目标值。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

样本权重。

drop_intermediatebool, default=True

是否删除导致 ROC 空间中点与其邻居共线的阈值。这不会影响 ROC AUC 或曲线的视觉形状,但会减少绘制的点数。

response_method{‘predict_proba’, ‘decision_function’, ‘auto’} 默认值='auto'

指定是使用 predict_proba 还是 decision_function 作为目标响应。如果设置为“auto”,则先尝试 predict_proba,如果不存在,则尝试 decision_function

pos_labelint, float, bool or str, default=None

计算 ROC AUC 时被视为正类的类。默认情况下,estimators.classes_[1] 被视为正类。

namestr, default=None

用于标记的 ROC 曲线名称。如果为 None,则使用估计器的名称。

axmatplotlib axes, default=None

用于绘图的坐标轴对象。如果为 None,则会创建新的图和坐标轴。

curve_kwargsdict,默认值=None

传递给 matplotlib 的 plot 函数的关键字参数。

在版本 1.7 中新增。

plot_chance_levelbool,默认值=False

是否绘制机会水平线。

在版本 1.3 中新增。

chance_level_kwdict,默认值=None

传递给 matplotlib 的 plot 函数以渲染机会水平线的关键字参数。

在版本 1.3 中新增。

despinebool,默认值=False

是否从图中移除顶部和右侧的边框线。

版本 1.6 中新增。

**kwargsdict

传递给 matplotlib 的 plot 的关键字参数。

版本 1.7 已弃用: kwargs 已弃用,将在 1.9 中移除。请将 matplotlib 参数作为字典传递给 curve_kwargs

返回:
包含 ROC 曲线的 Axes。

ROC 曲线显示。

另请参阅

roc_curve

计算接收者操作特征 (ROC) 曲线。

RocCurveDisplay.from_predictions

根据分类器的概率或分数可视化 ROC 曲线。

from_cv_results

根据交叉验证结果绘制多折 ROC 曲线。

roc_auc_score

计算 ROC 曲线下的面积。

示例

>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_classification
>>> from sklearn.metrics import RocCurveDisplay
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.svm import SVC
>>> X, y = make_classification(random_state=0)
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, random_state=0)
>>> clf = SVC(random_state=0).fit(X_train, y_train)
>>> RocCurveDisplay.from_estimator(
...    clf, X_test, y_test)
<...>
>>> plt.show()
../../_images/sklearn-metrics-RocCurveDisplay-3.png
classmethod from_predictions(y_true, y_score=None, *, sample_weight=None, drop_intermediate=True, pos_label=None, name=None, ax=None, curve_kwargs=None, plot_chance_level=False, chance_level_kw=None, despine=False, y_pred='deprecated', **kwargs)[source]#

根据真实值和预测值绘制 ROC 曲线。

有关 scikit-learn 可视化工具的一般信息,请参阅 可视化指南。有关解释这些图表的指导,请参阅 模型评估指南

1.0 版本新增。

参数:
y_true形状为 (n_samples,) 的 array-like

真实标签。

y_score形状为 (n_samples,) 的类数组

目标分数,可以是正类的概率估计、置信度值,或非阈值化的决策度量(如某些分类器的“decision_function”返回的值)。

版本 1.7 已添加: y_pred 已重命名为 y_score

sample_weightshape 为 (n_samples,) 的 array-like, default=None

样本权重。

drop_intermediatebool, default=True

是否删除导致 ROC 空间中点与其邻居共线的阈值。这不会影响 ROC AUC 或曲线的视觉形状,但会减少绘制的点数。

pos_labelint, float, bool or str, default=None

计算 ROC AUC 时的正类标签。当 pos_label=None 时,如果 y_true 为 {-1, 1} 或 {0, 1},则 pos_label 设置为 1,否则将引发错误。

namestr, default=None

用于图例标记的 ROC 曲线名称。如果为 None,则名称将设置为 "Classifier"

axmatplotlib axes, default=None

用于绘图的坐标轴对象。如果为 None,则会创建新的图和坐标轴。

curve_kwargsdict,默认值=None

传递给 matplotlib 的 plot 函数的关键字参数。

在版本 1.7 中新增。

plot_chance_levelbool,默认值=False

是否绘制机会水平线。

在版本 1.3 中新增。

chance_level_kwdict,默认值=None

传递给 matplotlib 的 plot 函数以渲染机会水平线的关键字参数。

在版本 1.3 中新增。

despinebool,默认值=False

是否从图中移除顶部和右侧的边框线。

版本 1.6 中新增。

y_pred形状为 (n_samples,) 的类数组

目标分数,可以是正类的概率估计、置信度值,或非阈值化的决策度量(如某些分类器的“decision_function”返回的值)。

版本 1.7 已弃用: y_pred 已弃用,将在 1.9 中移除。请使用 y_score

**kwargsdict

传递给 matplotlib plot 函数的附加关键字参数。

版本 1.7 已弃用: kwargs 已弃用,将在 1.9 中移除。请将 matplotlib 参数作为字典传递给 curve_kwargs

返回:
包含 ROC 曲线的 Axes。

存储计算值的对象。

另请参阅

roc_curve

计算接收者操作特征 (ROC) 曲线。

RocCurveDisplay.from_estimator

给定估计器和一些数据,可视化 ROC 曲线。

from_cv_results

根据交叉验证结果绘制多折 ROC 曲线。

roc_auc_score

计算 ROC 曲线下的面积。

示例

>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_classification
>>> from sklearn.metrics import RocCurveDisplay
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.svm import SVC
>>> X, y = make_classification(random_state=0)
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, random_state=0)
>>> clf = SVC(random_state=0).fit(X_train, y_train)
>>> y_score = clf.decision_function(X_test)
>>> RocCurveDisplay.from_predictions(y_test, y_score)
<...>
>>> plt.show()
../../_images/sklearn-metrics-RocCurveDisplay-4.png
plot(ax=None, *, name=None, curve_kwargs=None, plot_chance_level=False, chance_level_kw=None, despine=False, **kwargs)[source]#

绘制可视化图。

参数:
axmatplotlib axes, default=None

用于绘图的坐标轴对象。如果为 None,则会创建新的图和坐标轴。

namestr 或 str 列表,默认值=None

用于标记图例条目的名称。图例条目的数量由 curve_kwargs 决定,不受 name 的影响。要标记每条曲线,请提供一个字符串列表。要避免标记外观相同的单个曲线,列表不能与 curve_kwargs 为字典或 None 一起使用。如果提供一个字符串,它将用于标记单个图例条目,或者如果存在多个图例条目,则用于标记每个单独的曲线。如果为 None,则设置为在 RocCurveDisplay 初始化时提供的 name。如果仍然为 None,则图例中不显示名称。

在版本 1.7 中新增。

curve_kwargsdict 或 dict 列表,默认值=None

传递给 matplotlib 的 plot 函数以绘制单个 ROC 曲线的关键字参数。对于单曲线绘图,应为字典。对于多曲线绘图,如果提供列表,则参数依次应用于每个 CV 折叠的 ROC 曲线,并为每条曲线添加一个图例条目。如果提供单个字典,则相同的参数应用于所有 ROC 曲线,并添加一个图例条目以显示所有曲线,该条目以平均 ROC AUC 分数标记。

在版本 1.7 中新增。

plot_chance_levelbool,默认值=False

是否绘制机会水平线。

在版本 1.3 中新增。

chance_level_kwdict,默认值=None

传递给 matplotlib 的 plot 函数以渲染机会水平线的关键字参数。

在版本 1.3 中新增。

despinebool,默认值=False

是否从图中移除顶部和右侧的边框线。

版本 1.6 中新增。

**kwargsdict

传递给 matplotlib 的 plot 的关键字参数。

版本 1.7 已弃用: kwargs 已弃用,将在 1.9 中移除。请将 matplotlib 参数作为字典传递给 curve_kwargs

返回:
包含 ROC 曲线的 Axes。

存储计算值的对象。