PrecisionRecallDisplay#

class sklearn.metrics.PrecisionRecallDisplay(precision, recall, *, average_precision=None, name=None, pos_label=None, prevalence_pos_label=None, estimator_name='deprecated')[source]#

精确度-召回率可视化。

建议使用 from_estimatorfrom_predictions 来创建 PrecisionRecallDisplay。所有参数均存储为属性。

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

参数:
precisionndarray 或 ndarray 列表

查准率(Precision)值。每个 ndarray 应包含单条曲线的值。如果绘制多条曲线,列表长度应与 recall 相同。

版本 1.9 变更: 现在支持接收列表以绘制多条曲线。

recallndarray 或 ndarray 列表

查全率(Recall)值。每个 ndarray 应包含单条曲线的值。如果绘制多条曲线,列表长度应与 precision 相同。

版本 1.9 变更: 现在支持接收列表以绘制多条曲线。

average_precisionfloat 或 float 列表,默认=None

平均查准率(Average Precision),用于标记图例中的每条曲线。如果绘制多条曲线,则应为与 precisionrecall 长度相同的列表。如果为 None,则不在图例中显示平均查准率值。

版本 1.9 变更: 现在支持接收列表以绘制多条曲线。

namestr 或 str 列表,默认=None

用于标记图例条目的名称。图例条目的数量由传递给 plotcurve_kwargs 决定,不受 name 影响。

如果提供字符串,它将用于标记单个图例条目;如果存在多个图例条目,则用该名称标记每一条曲线。

如果提供列表,它将用于分别标记每条曲线。如果 curve_kwargs 不是列表,传入列表将会引发错误,以避免标记外观相同的单个曲线。

如果为 None,图例中将不显示名称。

版本 1.8 变更: estimator_name 已被弃用,建议使用 name

版本 1.9 变更: name 现在可接受 str 列表以用于多条曲线。

pos_labelint, float, bool or str, default=None

计算查准率和查全率指标时被视为正类的类别。如果不为 None,该值将显示在 x 轴和 y 轴标签中。

0.24 版本新增。

prevalence_pos_labelfloat 或 float 列表,默认=None

正类标签的流行度(prevalence)。它用于绘制机会水平线(chance level lines)。如果为 None,即使在绘图时设置了 plot_chance_level=True,也不会绘制机会水平线。

在版本 1.3 中新增。

版本 1.9 变更: 当绘制多条曲线时,现在可以是一个 float 列表。

estimator_namestr, default=None

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

1.8 版本弃用: estimator_name 已弃用,并将在 1.10 版本中移除。请改用 name

属性:
line_matplotlib Artist 或 Artist 列表

查准率-查全率曲线。

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

chance_level_matplotlib Artist 或 Artist 列表,或 None

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

在版本 1.3 中新增。

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

ax_matplotlib Axes

带有查准率-查全率曲线的坐标轴对象。

figure_matplotlib Figure

包含曲线的图。

另请参阅

precision_recall_curve

计算不同概率阈值的精确度-召回率对。

PrecisionRecallDisplay.from_estimator

使用二分类器绘制查准率-查全率曲线。

PrecisionRecallDisplay.from_predictions

使用二分类器的预测结果绘制查准率-查全率曲线。

注意事项

scikit-learn 中的平均查准率(参见 average_precision_score)是在没有任何插值的情况下计算的。为了与该指标保持一致,查准率-查全率曲线也是在没有任何插值的情况下绘制的(阶梯式样式)。

要启用插值,请传递 curve_kwargs={"drawstyle": "default"}plotfrom_estimatorfrom_predictions。但是,曲线将不会与报告的平均查准率严格保持一致。

示例

>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_classification
>>> from sklearn.metrics import (precision_recall_curve,
...                              PrecisionRecallDisplay)
>>> 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)
>>> clf.fit(X_train, y_train)
SVC(random_state=0)
>>> predictions = clf.predict(X_test)
>>> precision, recall, _ = precision_recall_curve(y_test, predictions)
>>> disp = PrecisionRecallDisplay(precision=precision, recall=recall)
>>> disp.plot()
<...>
>>> plt.show()
../../_images/sklearn-metrics-PrecisionRecallDisplay-1.png
classmethod from_cv_results(cv_results, 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_kwargs=None, despine=False)[source]#

根据交叉验证结果绘制多折查准率-查全率曲线。

1.9 版本中新增。

参数:
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

是否丢弃一些不会出现在绘制的查准率-查全率曲线上的次优阈值。这对于创建更轻量的曲线很有用。

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

指定是否使用 predict_probadecision_function 作为目标响应。如果设为 ‘auto’,优先尝试 predict_proba,如果不存在,则尝试 decision_function

pos_labelint, float, bool or str, default=None

计算查准率和查全率指标时被视为正类的类别。默认情况下,estimators.classes_[1] 被视为正类。

namestr 或 str 列表,默认=None

用于标记图例条目的名称。图例条目的数量由 curve_kwargs 决定,不受 name 影响。

如果提供字符串,它将用于标记单个图例条目;如果存在多个图例条目,则用该名称标记每一条曲线。

如果提供列表,它将用于分别标记每条曲线。如果 curve_kwargs 不是列表,传入列表将会引发错误,以避免标记外观相同的单个曲线。

如果为 None,图例中将不显示名称。

axmatplotlib axes, default=None

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

curve_kwargsdict 或 dict 列表,默认=None

包含关键字参数的字典,这些参数传递给 matplotlib 的 plot 函数以绘制单个查准率-查全率曲线。如果提供了列表,则参数按顺序应用于每个 CV 折叠的曲线。如果提供了单个字典,则相同的参数应用于所有曲线。

plot_chance_levelbool,默认=False

是否绘制机会水平线。

chance_level_kwargsdict,默认=None

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

despinebool,默认=False

是否从绘图中移除顶部和右侧的脊线(spines)。

返回:
displayPrecisionRecallDisplay

另请参阅

PrecisionRecallDisplay.from_predictions

使用估计的概率或决策函数输出绘制查准率-查全率曲线。

PrecisionRecallDisplay.from_estimator

使用估计器绘制查准率-查全率曲线。

precision_recall_curve

计算不同概率阈值的精确度-召回率对。

average_precision_score

从预测分数计算平均精度 (AP)。

注意事项

scikit-learn 中的平均查准率(参见 average_precision_score)是在没有任何插值的情况下计算的。为了与该指标保持一致,查准率-查全率曲线也是在没有任何插值的情况下绘制的(阶梯式样式)。

要启用插值,请传递 curve_kwargs={"drawstyle": "default"}。但是,曲线将不会与报告的平均查准率严格保持一致。

示例

>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_classification
>>> from sklearn.metrics import PrecisionRecallDisplay
>>> 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)
>>> PrecisionRecallDisplay.from_cv_results(cv_results, X, y)
<...>
>>> plt.show()
../../_images/sklearn-metrics-PrecisionRecallDisplay-2.png
classmethod from_estimator(estimator, X, y, *, sample_weight=None, drop_intermediate=False, 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]#

给定估计器和一些数据,绘制精确度-召回率曲线。

有关 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_intermediate布尔值,默认为 False

是否丢弃一些不会出现在绘制的查准率-查全率曲线上的次优阈值。这对于创建更轻量的曲线很有用。

在版本 1.3 中新增。

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

指定是否使用 predict_probadecision_function 作为目标响应。如果设为 ‘auto’,优先尝试 predict_proba,如果不存在,则尝试 decision_function

pos_labelint, float, bool or str, default=None

计算查准率和查全率指标时被视为正类的类别。默认情况下,estimators.classes_[1] 被视为正类。

namestr, default=None

用于标记曲线的名称。如果为 None,则不使用名称。

axmatplotlib axes, default=None

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

curve_kwargsdict,默认=None

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

1.9 版本中新增。

plot_chance_levelbool,默认=False

是否绘制机会水平。机会水平是根据调用 from_estimatorfrom_predictions 时传递的数据计算出的正类标签的流行度。

在版本 1.3 中新增。

chance_level_kwdict,默认=None

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

在版本 1.3 中新增。

despinebool,默认=False

是否从绘图中移除顶部和右侧的脊线(spines)。

版本 1.6 中新增。

**kwargsdict

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

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

返回:
displayPrecisionRecallDisplay

另请参阅

PrecisionRecallDisplay.from_predictions

使用估计的概率或决策函数输出绘制查准率-查全率曲线。

注意事项

scikit-learn 中的平均查准率(参见 average_precision_score)是在没有任何插值的情况下计算的。为了与该指标保持一致,查准率-查全率曲线也是在没有任何插值的情况下绘制的(阶梯式样式)。

要启用插值,请传递 curve_kwargs={"drawstyle": "default"}。但是,曲线将不会与报告的平均查准率严格保持一致。

示例

>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_classification
>>> from sklearn.metrics import PrecisionRecallDisplay
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.linear_model import LogisticRegression
>>> X, y = make_classification(random_state=0)
>>> X_train, X_test, y_train, y_test = train_test_split(
...         X, y, random_state=0)
>>> clf = LogisticRegression()
>>> clf.fit(X_train, y_train)
LogisticRegression()
>>> PrecisionRecallDisplay.from_estimator(
...    clf, X_test, y_test)
<...>
>>> plt.show()
../../_images/sklearn-metrics-PrecisionRecallDisplay-3.png
classmethod from_predictions(y_true, y_score=None, *, sample_weight=None, drop_intermediate=False, 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]#

给定二元类别预测,绘制精确度-召回率曲线。

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

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

真实二分类标签。

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

估计的概率或决策函数输出。

1.8 版本新增: y_pred 已重命名为 y_score

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

样本权重。

drop_intermediate布尔值,默认为 False

是否丢弃一些不会出现在绘制的查准率-查全率曲线上的次优阈值。这对于创建更轻量的曲线很有用。

在版本 1.3 中新增。

pos_labelint, float, bool or str, default=None

计算查准率和查全率指标时被视为正类的类别。当 pos_label=None 时,如果 y_true 在 {-1, 1} 或 {0, 1} 中,pos_label 将被设为 1,否则将引发错误。

namestr, default=None

用于标记曲线的名称。如果为 None,名称将设为 "Classifier"

axmatplotlib axes, default=None

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

curve_kwargsdict,默认=None

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

1.9 版本中新增。

plot_chance_levelbool,默认=False

是否绘制机会水平。机会水平是根据调用 from_estimatorfrom_predictions 时传递的数据计算出的正类标签的流行度。

在版本 1.3 中新增。

chance_level_kwdict,默认=None

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

在版本 1.3 中新增。

despinebool,默认=False

是否从绘图中移除顶部和右侧的脊线(spines)。

版本 1.6 中新增。

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

估计的概率或决策函数输出。

1.8 版本弃用: y_pred 已弃用,并将在 1.10 版本中移除。请改用 y_score

**kwargsdict

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

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

返回:
displayPrecisionRecallDisplay

另请参阅

PrecisionRecallDisplay.from_estimator

使用估计器绘制查准率-查全率曲线。

注意事项

scikit-learn 中的平均查准率(参见 average_precision_score)是在没有任何插值的情况下计算的。为了与该指标保持一致,查准率-查全率曲线也是在没有任何插值的情况下绘制的(阶梯式样式)。

要启用插值,请传递 curve_kwargs={"drawstyle": "default"}。但是,曲线将不会与报告的平均查准率严格保持一致。

示例

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

绘制可视化图。

参数:
axMatplotlib 坐标轴对象,默认=None

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

namestr 或 str 列表,默认=None

用于标记图例条目的名称。图例条目的数量由 curve_kwargs 决定,不受 name 影响。

如果提供字符串,它将用于标记单个图例条目;如果存在多个图例条目,则用该名称标记每一条曲线。

如果提供列表,它将用于分别标记每条曲线。如果 curve_kwargs 不是列表,传入列表将会引发错误,以避免标记外观相同的单个曲线。

如果为 None,则设置为 PrecisionRecallDisplay 初始化时提供的 name。如果仍然为 None,则图例中不显示名称。

版本 1.9 变更: 现在支持接收列表以绘制多条曲线。

curve_kwargsdict 或 dict 列表,默认=None

传递给 matplotlib 的 plot 函数以绘制单个查准率-查全率曲线的关键字参数。对于单条曲线绘制,这应该是一个字典。对于多条曲线绘制,如果提供列表,则参数会按顺序应用于每条曲线,并为每条曲线添加图例条目。如果提供单个字典,则相同的参数应用于所有曲线,并添加一个代表所有曲线的单个图例条目,标注为平均查准率。

1.9 版本中新增。

plot_chance_levelbool,默认=False

是否绘制机会水平。机会水平是根据调用 from_estimatorfrom_predictions 时传递的数据计算出的正类标签的流行度。

在版本 1.3 中新增。

chance_level_kwdict,默认=None

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

在版本 1.3 中新增。

despinebool,默认=False

是否从绘图中移除顶部和右侧的脊线(spines)。

版本 1.6 中新增。

**kwargsdict

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

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

返回:
displayPrecisionRecallDisplay

存储计算值的对象。

注意事项

scikit-learn 中的平均查准率(参见 average_precision_score)是在没有任何插值的情况下计算的。为了与该指标保持一致,查准率-查全率曲线也是在没有任何插值的情况下绘制的(阶梯式样式)。

要启用插值,请传递 curve_kwargs={"drawstyle": "default"}。但是,曲线将不会与报告的平均查准率严格保持一致。