RocCurveDisplay#
- class sklearn.metrics.RocCurveDisplay(*, fpr, tpr, roc_auc=None, name=None, pos_label=None, estimator_name='deprecated')[source]#
ROC 曲线可视化。
建议使用
from_estimator
或from_predictions
或from_cv_results
来创建RocCurveDisplay
对象。所有参数均作为属性存储。有关
scikit-learn
可视化工具的常规信息,请参阅 可视化指南。有关这些图的解释指导,请参阅 模型评估指南。- 参数:
- fprndarray 或 ndarray 列表
假正例率。每个 ndarray 应包含单条曲线的值。如果绘制多条曲线,列表的长度应与
tpr
相同。在 1.7 版本中更改: 现在接受列表以绘制多条曲线。
- tprndarray 或 ndarray 列表
真正例率。每个 ndarray 应包含单条曲线的值。如果绘制多条曲线,列表的长度应与
fpr
相同。在 1.7 版本中更改: 现在接受列表以绘制多条曲线。
- roc_auc浮点数或浮点数列表,默认为 None
ROC 曲线下的面积,用于在图例中标记每条曲线。如果绘制多条曲线,应为与
fpr
和tpr
长度相同的列表。如果为None
,则 ROC AUC 分数不显示在图例中。在 1.7 版本中更改: 现在接受列表以绘制多条曲线。
- name字符串或字符串列表,默认为 None
用于标记图例条目的名称。图例条目的数量由传递给
plot
的curve_kwargs
确定。要标记每条曲线,请提供字符串列表。为避免标记外观相同的单个曲线,此参数不能与作为字典或 None 的curve_kwargs
一起使用。如果提供字符串,它将用于标记单个图例条目,或者在有多个图例条目时,用相同的名称标记每条单独的曲线。如果为None
,则设置为RocCurveDisplay
初始化时提供的name
。如果仍为None
,则图例中不显示名称。1.7 版本新增。
- pos_label整数、浮点数、布尔值或字符串,默认为 None
计算 ROC AUC 指标时被视为正类的类别。默认情况下,
estimators.classes_[1]
被视为正类。0.24 版本新增。
- estimator_name字符串,默认为 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 轴
包含 ROC 曲线的轴。
- figure_matplotlib 图
包含曲线的图。
另请参见
roc_curve
计算接收者操作特征 (ROC) 曲线。
RocCurveDisplay.from_estimator
根据估计器和数据绘制接收者操作特征 (ROC) 曲线。
RocCurveDisplay.from_predictions
根据真实值和预测值绘制接收者操作特征 (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()
- 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_results字典
由
cross_validate
返回的字典,使用return_estimator=True
和return_indices=True
(即,字典应包含键“estimator”和“indices”)。- X{类数组,稀疏矩阵},形状为 (n_样本, n_特征)
输入值。
- y类数组,形状为 (n_样本,)
目标值。
- sample_weight类数组,形状为 (n_样本,),默认为 None
样本权重。
- drop_intermediate布尔值,默认为 True
是否删除一些次优阈值,这些阈值不会出现在绘制的 ROC 曲线中。这对于创建更轻量级的 ROC 曲线很有用。
- response_method{‘predict_proba’, ‘decision_function’, ‘auto’} 默认为 ‘auto’
指定是使用 predict_proba 还是 decision_function 作为目标响应。如果设置为‘auto’,则首先尝试 predict_proba,如果不存在,则尝试 decision_function。
- pos_label整数、浮点数、布尔值或字符串,默认为 None
计算 ROC AUC 指标时被视为正类的类别。默认情况下,
estimators.classes_[1]
被视为正类。- axmatplotlib 轴,默认为 None
用于绘图的轴对象。如果为
None
,则创建新的图和轴。- name字符串或字符串列表,默认为 None
用于标记图例条目的名称。图例条目的数量由
curve_kwargs
确定。要标记每条曲线,请提供字符串列表。为避免标记外观相同的单个曲线,此参数不能与作为字典或 None 的curve_kwargs
一起使用。如果提供字符串,它将用于标记单个图例条目,或者在有多个图例条目时,用相同的名称标记每条单独的曲线。如果为None
,则图例中不显示名称。- curve_kwargs字典或字典列表,默认为 None
要传递给 matplotlib 的
plot
函数以绘制单个 ROC 曲线的关键字参数。如果提供列表,则参数按顺序应用于每个交叉验证折叠的 ROC 曲线,并为每条曲线添加一个图例条目。如果提供单个字典,则相同的参数应用于所有 ROC 曲线,并为所有曲线添加单个图例条目,标记为平均 ROC AUC 分数。- plot_chance_level布尔值,默认为 False
是否绘制随机水平。
- chance_level_kwargs字典,默认为 None
要传递给 matplotlib 的
plot
以渲染随机水平线的关键字参数。- despine布尔值,默认为 False
是否从图中移除顶部和右侧的边框线。
- 返回:
- display
RocCurveDisplay
多折 ROC 曲线显示对象。
- display
另请参见
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()
- 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
可视化工具的常规信息,请参阅 可视化指南。有关这些图的解释指导,请参阅 模型评估指南。- 参数:
- estimator估计器实例
已拟合的分类器或已拟合的
Pipeline
(其中最后一个估计器是分类器)。- X{类数组,稀疏矩阵},形状为 (n_样本, n_特征)
输入值。
- y类数组,形状为 (n_样本,)
目标值。
- sample_weight类数组,形状为 (n_样本,),默认为 None
样本权重。
- drop_intermediate布尔值,默认为 True
是否删除在 ROC 空间中与相邻点共线的阈值。这不会影响 ROC AUC 或曲线的视觉形状,但会减少绘制点的数量。
- response_method{‘predict_proba’, ‘decision_function’, ‘auto’} 默认为 ‘auto’
指定是使用 predict_proba 还是 decision_function 作为目标响应。如果设置为‘auto’,则首先尝试 predict_proba,如果不存在,则尝试 decision_function。
- pos_label整数、浮点数、布尔值或字符串,默认为 None
计算 ROC AUC 时被视为正类的类别。默认情况下,
estimators.classes_[1]
被视为正类。- name字符串,默认为 None
用于标记 ROC 曲线的名称。如果为
None
,则使用估计器的名称。- axmatplotlib 轴,默认为 None
用于绘图的轴对象。如果为
None
,则创建新的图和轴。- curve_kwargs字典,默认为 None
要传递给 matplotlib 的
plot
函数的关键字参数。1.7 版本新增。
- plot_chance_level布尔值,默认为 False
是否绘制随机水平。
1.3 版本新增。
- chance_level_kw字典,默认为 None
要传递给 matplotlib 的
plot
以渲染随机水平线的关键字参数。1.3 版本新增。
- despine布尔值,默认为 False
是否从图中移除顶部和右侧的边框线。
1.6 版本新增。
- **kwargs字典
要传递给 matplotlib 的
plot
的关键字参数。自 1.7 版本弃用:
kwargs
已弃用,并将在 1.9 版本中移除。请改为将 matplotlib 参数作为字典传递给curve_kwargs
。
- 返回:
- display
RocCurveDisplay
ROC 曲线显示对象。
- display
另请参见
roc_curve
计算接收者操作特征 (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 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()
- 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_样本,)
真实标签。
- y_score类数组,形状为 (n_样本,)
目标分数,可以是正类的概率估计、置信度值,或(由某些分类器的“decision_function”返回的)非阈值决策度量。
1.7 版本新增:
y_pred
已重命名为y_score
。- sample_weight类数组,形状为 (n_样本,),默认为 None
样本权重。
- drop_intermediate布尔值,默认为 True
是否删除在 ROC 空间中与相邻点共线的阈值。这不会影响 ROC AUC 或曲线的视觉形状,但会减少绘制点的数量。
- pos_label整数、浮点数、布尔值或字符串,默认为 None
计算 ROC AUC 时正类的标签。当
pos_label=None
时,如果y_true
在 {-1, 1} 或 {0, 1} 中,pos_label
将设置为 1,否则将引发错误。- name字符串,默认为 None
用于图例标记的 ROC 曲线名称。如果为
None
,名称将设置为"Classifier"
。- axmatplotlib 轴,默认为 None
用于绘图的轴对象。如果为
None
,则创建新的图和轴。- curve_kwargs字典,默认为 None
要传递给 matplotlib 的
plot
函数的关键字参数。1.7 版本新增。
- plot_chance_level布尔值,默认为 False
是否绘制随机水平。
1.3 版本新增。
- chance_level_kw字典,默认为 None
要传递给 matplotlib 的
plot
以渲染随机水平线的关键字参数。1.3 版本新增。
- despine布尔值,默认为 False
是否从图中移除顶部和右侧的边框线。
1.6 版本新增。
- y_pred类数组,形状为 (n_样本,)
目标分数,可以是正类的概率估计、置信度值,或(由某些分类器的“decision_function”返回的)非阈值决策度量。
自 1.7 版本弃用:
y_pred
已弃用,并将在 1.9 版本中移除。请改用y_score
。- **kwargs字典
传递给 matplotlib
plot
函数的额外关键字参数。自 1.7 版本弃用:
kwargs
已弃用,并将在 1.9 版本中移除。请改为将 matplotlib 参数作为字典传递给curve_kwargs
。
- 返回:
- display
RocCurveDisplay
存储计算值的对象。
- display
另请参见
roc_curve
计算接收者操作特征 (ROC) 曲线。
RocCurveDisplay.from_estimator
根据估计器和数据绘制 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()
- plot(ax=None, *, name=None, curve_kwargs=None, plot_chance_level=False, chance_level_kw=None, despine=False, **kwargs)[source]#
绘制可视化图。
- 参数:
- axmatplotlib 轴,默认为 None
用于绘图的轴对象。如果为
None
,则创建新的图和轴。- name字符串或字符串列表,默认为 None
用于标记图例条目的名称。图例条目的数量由
curve_kwargs
确定。要标记每条曲线,请提供字符串列表。为避免标记外观相同的单个曲线,此参数不能与作为字典或 None 的curve_kwargs
一起使用。如果提供字符串,它将用于标记单个图例条目,或者在有多个图例条目时,用相同的名称标记每条单独的曲线。如果为None
,则设置为RocCurveDisplay
初始化时提供的name
。如果仍为None
,则图例中不显示名称。1.7 版本新增。
- curve_kwargs字典或字典列表,默认为 None
要传递给 matplotlib 的
plot
函数以绘制单个 ROC 曲线的关键字参数。对于单曲线绘图,应为字典。对于多曲线绘图,如果提供列表,则参数按顺序应用于每个交叉验证折叠的 ROC 曲线,并为每条曲线添加一个图例条目。如果提供单个字典,则相同的参数应用于所有 ROC 曲线,并为所有曲线添加单个图例条目,标记为平均 ROC AUC 分数。1.7 版本新增。
- plot_chance_level布尔值,默认为 False
是否绘制随机水平。
1.3 版本新增。
- chance_level_kw字典,默认为 None
要传递给 matplotlib 的
plot
以渲染随机水平线的关键字参数。1.3 版本新增。
- despine布尔值,默认为 False
是否从图中移除顶部和右侧的边框线。
1.6 版本新增。
- **kwargs字典
要传递给 matplotlib 的
plot
的关键字参数。自 1.7 版本弃用:
kwargs
已弃用,并将在 1.9 版本中移除。请改为将 matplotlib 参数作为字典传递给curve_kwargs
。
- 返回:
- display
RocCurveDisplay
存储计算值的对象。
- display