PrecisionRecallDisplay#

classsklearn.metrics.PrecisionRecallDisplay(precision,recall,*,average_precision=None,estimator_name=None,pos_label=None,prevalence_pos_label=None)[source]#

Precision Recall visualization.

It is recommended to usefrom_estimator orfrom_predictions to createaPrecisionRecallDisplay. All parameters arestored as attributes.

For general information regardingscikit-learn visualization tools, seetheVisualization Guide.For guidance on interpreting these plots, refer to theModelEvaluation Guide.

Parameters:
precisionndarray

Precision values.

recallndarray

Recall values.

average_precisionfloat, default=None

Average precision. If None, the average precision is not shown.

estimator_namestr, default=None

Name of estimator. If None, then the estimator name is not shown.

pos_labelint, float, bool or str, default=None

The class considered as the positive class. If None, the class will notbe shown in the legend.

Added in version 0.24.

prevalence_pos_labelfloat, default=None

The prevalence of the positive label. It is used for plotting thechance level line. If None, the chance level line will not be plottedeven ifplot_chance_level is set to True when plotting.

Added in version 1.3.

Attributes:
line_matplotlib Artist

Precision recall curve.

chance_level_matplotlib Artist or None

The chance level line. It isNone if the chance level is not plotted.

Added in version 1.3.

ax_matplotlib Axes

Axes with precision recall curve.

figure_matplotlib Figure

Figure containing the curve.

See also

precision_recall_curve

Compute precision-recall pairs for different probability thresholds.

PrecisionRecallDisplay.from_estimator

Plot Precision Recall Curve given a binary classifier.

PrecisionRecallDisplay.from_predictions

Plot Precision Recall Curve using predictions from a binary classifier.

Notes

The average precision (cf.average_precision_score) inscikit-learn is computed without any interpolation. To be consistent withthis metric, the precision-recall curve is plotted without anyinterpolation as well (step-wise style).

You can change this style by passing the keyword argumentdrawstyle="default" inplot,from_estimator, orfrom_predictions. However, the curve will not be strictlyconsistent with the reported average precision.

Examples

>>>importmatplotlib.pyplotasplt>>>fromsklearn.datasetsimportmake_classification>>>fromsklearn.metricsimport(precision_recall_curve,...PrecisionRecallDisplay)>>>fromsklearn.model_selectionimporttrain_test_split>>>fromsklearn.svmimportSVC>>>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
classmethodfrom_estimator(estimator,X,y,*,sample_weight=None,drop_intermediate=False,response_method='auto',pos_label=None,name=None,ax=None,plot_chance_level=False,chance_level_kw=None,despine=False,**kwargs)[source]#

Plot precision-recall curve given an estimator and some data.

For general information regardingscikit-learn visualization tools, seetheVisualization Guide.For guidance on interpreting these plots, refer to theModelEvaluation Guide.

Parameters:
estimatorestimator instance

Fitted classifier or a fittedPipelinein which the last estimator is a classifier.

X{array-like, sparse matrix} of shape (n_samples, n_features)

Input values.

yarray-like of shape (n_samples,)

Target values.

sample_weightarray-like of shape (n_samples,), default=None

Sample weights.

drop_intermediatebool, default=False

Whether to drop some suboptimal thresholds which would not appearon a plotted precision-recall curve. This is useful in order tocreate lighter precision-recall curves.

Added in version 1.3.

response_method{‘predict_proba’, ‘decision_function’, ‘auto’}, default=’auto’

Specifies whether to usepredict_proba ordecision_function as the target response. If set to ‘auto’,predict_proba is tried first and if it does not existdecision_function is tried next.

pos_labelint, float, bool or str, default=None

The class considered as the positive class when computing theprecision and recall metrics. By default,estimators.classes_[1]is considered as the positive class.

namestr, default=None

Name for labeling curve. IfNone, no name is used.

axmatplotlib axes, default=None

Axes object to plot on. IfNone, a new figure and axes is created.

plot_chance_levelbool, default=False

Whether to plot the chance level. The chance level is the prevalenceof the positive label computed from the data passed duringfrom_estimator orfrom_predictions call.

Added in version 1.3.

chance_level_kwdict, default=None

Keyword arguments to be passed to matplotlib’splot for renderingthe chance level line.

Added in version 1.3.

despinebool, default=False

Whether to remove the top and right spines from the plot.

Added in version 1.6.

**kwargsdict

Keyword arguments to be passed to matplotlib’splot.

Returns:
displayPrecisionRecallDisplay

See also

PrecisionRecallDisplay.from_predictions

Plot precision-recall curve using estimated probabilities or output of decision function.

Notes

The average precision (cf.average_precision_score)in scikit-learn is computed without any interpolation. To be consistentwith this metric, the precision-recall curve is plotted without anyinterpolation as well (step-wise style).

You can change this style by passing the keyword argumentdrawstyle="default". However, the curve will not be strictlyconsistent with the reported average precision.

Examples

>>>importmatplotlib.pyplotasplt>>>fromsklearn.datasetsimportmake_classification>>>fromsklearn.metricsimportPrecisionRecallDisplay>>>fromsklearn.model_selectionimporttrain_test_split>>>fromsklearn.linear_modelimportLogisticRegression>>>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-2.png
classmethodfrom_predictions(y_true,y_pred,*,sample_weight=None,drop_intermediate=False,pos_label=None,name=None,ax=None,plot_chance_level=False,chance_level_kw=None,despine=False,**kwargs)[source]#

Plot precision-recall curve given binary class predictions.

For general information regardingscikit-learn visualization tools, seetheVisualization Guide.For guidance on interpreting these plots, refer to theModelEvaluation Guide.

Parameters:
y_truearray-like of shape (n_samples,)

True binary labels.

y_predarray-like of shape (n_samples,)

Estimated probabilities or output of decision function.

sample_weightarray-like of shape (n_samples,), default=None

Sample weights.

drop_intermediatebool, default=False

Whether to drop some suboptimal thresholds which would not appearon a plotted precision-recall curve. This is useful in order tocreate lighter precision-recall curves.

Added in version 1.3.

pos_labelint, float, bool or str, default=None

The class considered as the positive class when computing theprecision and recall metrics.

namestr, default=None

Name for labeling curve. IfNone, name will be set to"Classifier".

axmatplotlib axes, default=None

Axes object to plot on. IfNone, a new figure and axes is created.

plot_chance_levelbool, default=False

Whether to plot the chance level. The chance level is the prevalenceof the positive label computed from the data passed duringfrom_estimator orfrom_predictions call.

Added in version 1.3.

chance_level_kwdict, default=None

Keyword arguments to be passed to matplotlib’splot for renderingthe chance level line.

Added in version 1.3.

despinebool, default=False

Whether to remove the top and right spines from the plot.

Added in version 1.6.

**kwargsdict

Keyword arguments to be passed to matplotlib’splot.

Returns:
displayPrecisionRecallDisplay

See also

PrecisionRecallDisplay.from_estimator

Plot precision-recall curve using an estimator.

Notes

The average precision (cf.average_precision_score)in scikit-learn is computed without any interpolation. To be consistentwith this metric, the precision-recall curve is plotted without anyinterpolation as well (step-wise style).

You can change this style by passing the keyword argumentdrawstyle="default". However, the curve will not be strictlyconsistent with the reported average precision.

Examples

>>>importmatplotlib.pyplotasplt>>>fromsklearn.datasetsimportmake_classification>>>fromsklearn.metricsimportPrecisionRecallDisplay>>>fromsklearn.model_selectionimporttrain_test_split>>>fromsklearn.linear_modelimportLogisticRegression>>>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_pred=clf.predict_proba(X_test)[:,1]>>>PrecisionRecallDisplay.from_predictions(...y_test,y_pred)<...>>>>plt.show()
../../_images/sklearn-metrics-PrecisionRecallDisplay-3.png
plot(ax=None,*,name=None,plot_chance_level=False,chance_level_kw=None,despine=False,**kwargs)[source]#

Plot visualization.

Extra keyword arguments will be passed to matplotlib’splot.

Parameters:
axMatplotlib Axes, default=None

Axes object to plot on. IfNone, a new figure and axes iscreated.

namestr, default=None

Name of precision recall curve for labeling. IfNone, useestimator_name if notNone, otherwise no labeling is shown.

plot_chance_levelbool, default=False

Whether to plot the chance level. The chance level is the prevalenceof the positive label computed from the data passed duringfrom_estimator orfrom_predictions call.

Added in version 1.3.

chance_level_kwdict, default=None

Keyword arguments to be passed to matplotlib’splot for renderingthe chance level line.

Added in version 1.3.

despinebool, default=False

Whether to remove the top and right spines from the plot.

Added in version 1.6.

**kwargsdict

Keyword arguments to be passed to matplotlib’splot.

Returns:
displayPrecisionRecallDisplay

Object that stores computed values.

Notes

The average precision (cf.average_precision_score)in scikit-learn is computed without any interpolation. To be consistentwith this metric, the precision-recall curve is plotted without anyinterpolation as well (step-wise style).

You can change this style by passing the keyword argumentdrawstyle="default". However, the curve will not be strictlyconsistent with the reported average precision.

Gallery examples#

Visualizations with Display Objects

Visualizations with Display Objects

Post-tuning the decision threshold for cost-sensitive learning

Post-tuning the decision threshold for cost-sensitive learning

Precision-Recall

Precision-Recall