
    -i31                     B    S SK rS SKrSSKJr  SSKJr   " S S\5      rg)    N   )"_BinaryClassifierCurveDisplayMixin   )	det_curvec                   |    \ rS rSrSrSSS.S jr\SSSSSSS.S	 j5       r\SSSSSS
.S j5       rSSS.S jjr	Sr
g)DetCurveDisplay   a  Detection Error Tradeoff (DET) curve visualization.

It is recommended to use :func:`~sklearn.metrics.DetCurveDisplay.from_estimator`
or :func:`~sklearn.metrics.DetCurveDisplay.from_predictions` to create a
visualizer. All parameters are stored as attributes.

For general information regarding `scikit-learn` visualization tools, see
the :ref:`Visualization Guide <visualizations>`.
For guidance on interpreting these plots, refer to the
:ref:`Model Evaluation Guide <det_curve>`.

.. versionadded:: 0.24

Parameters
----------
fpr : ndarray
    False positive rate.

fnr : ndarray
    False negative rate.

estimator_name : str, default=None
    Name of estimator. If None, the estimator name is not shown.

pos_label : int, float, bool or str, default=None
    The label of the positive class.

Attributes
----------
line_ : matplotlib Artist
    DET Curve.

ax_ : matplotlib Axes
    Axes with DET Curve.

figure_ : matplotlib Figure
    Figure containing the curve.

See Also
--------
det_curve : Compute error rates for different probability thresholds.
DetCurveDisplay.from_estimator : Plot DET curve given an estimator and
    some data.
DetCurveDisplay.from_predictions : Plot DET curve given the true and
    predicted labels.

Examples
--------
>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_classification
>>> from sklearn.metrics import det_curve, DetCurveDisplay
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.svm import SVC
>>> X, y = make_classification(n_samples=1000, random_state=0)
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, test_size=0.4, random_state=0)
>>> clf = SVC(random_state=0).fit(X_train, y_train)
>>> y_pred = clf.decision_function(X_test)
>>> fpr, fnr, _ = det_curve(y_test, y_pred)
>>> display = DetCurveDisplay(
...     fpr=fpr, fnr=fnr, estimator_name="SVC"
... )
>>> display.plot()
<...>
>>> plt.show()
N)estimator_name	pos_labelc                4    Xl         X l        X0l        X@l        g Nfprfnrr
   r   )selfr   r   r
   r   s        R/var/www/html/venv/lib/python3.13/site-packages/sklearn/metrics/_plot/det_curve.py__init__DetCurveDisplay.__init__O   s    ,"    Tauto)sample_weightdrop_intermediateresponse_methodr   nameaxc                d    U R                  UUUUUUS9u  pnU R                  " SUUUUUU	US.U
D6$ )ah
  Plot DET curve given an estimator and data.

For general information regarding `scikit-learn` visualization tools, see
the :ref:`Visualization Guide <visualizations>`.
For guidance on interpreting these plots, refer to the
:ref:`Model Evaluation Guide <det_curve>`.

.. versionadded:: 1.0

Parameters
----------
estimator : estimator instance
    Fitted classifier or a fitted :class:`~sklearn.pipeline.Pipeline`
    in which the last estimator is a classifier.

X : {array-like, sparse matrix} of shape (n_samples, n_features)
    Input values.

y : array-like of shape (n_samples,)
    Target values.

sample_weight : array-like of shape (n_samples,), default=None
    Sample weights.

drop_intermediate : bool, default=True
    Whether to drop thresholds where true positives (tp) do not change
    from the previous or subsequent threshold. All points with the same
    tp value have the same `fnr` and thus same y coordinate.

    .. versionadded:: 1.7

response_method : {'predict_proba', 'decision_function', 'auto'}                 default='auto'
    Specifies whether to use :term:`predict_proba` or
    :term:`decision_function` as the predicted target response. If set
    to 'auto', :term:`predict_proba` is tried first and if it does not
    exist :term:`decision_function` is tried next.

pos_label : int, float, bool or str, default=None
    The label of the positive class. When `pos_label=None`, if `y_true`
    is in {-1, 1} or {0, 1}, `pos_label` is set to 1, otherwise an
    error will be raised.

name : str, default=None
    Name of DET curve for labeling. If `None`, use the name of the
    estimator.

ax : matplotlib axes, default=None
    Axes object to plot on. If `None`, a new figure and axes is
    created.

**kwargs : dict
    Additional keywords arguments passed to matplotlib `plot` function.

Returns
-------
display : :class:`~sklearn.metrics.DetCurveDisplay`
    Object that stores computed values.

See Also
--------
det_curve : Compute error rates for different probability thresholds.
DetCurveDisplay.from_predictions : Plot DET curve given the true and
    predicted labels.

Examples
--------
>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_classification
>>> from sklearn.metrics import DetCurveDisplay
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.svm import SVC
>>> X, y = make_classification(n_samples=1000, random_state=0)
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, test_size=0.4, random_state=0)
>>> clf = SVC(random_state=0).fit(X_train, y_train)
>>> DetCurveDisplay.from_estimator(
...    clf, X_test, y_test)
<...>
>>> plt.show()
)r   r   r   )y_truey_predr   r   r   r   r    )!_validate_and_get_response_valuesfrom_predictions)cls	estimatorXyr   r   r   r   r   r   kwargsr   s               r   from_estimatorDetCurveDisplay.from_estimatorU   sk    @ #&"G"G+ #H #
4 ## 	
'/	
 	
 		
r   )r   r   r   r   r   c                    U R                  XX5US9u  p[        UUUUUS9u  pnU " U
UUU	S9nUR                  " SXvS.UD6$ )aR	  Plot the DET curve given the true and predicted labels.

For general information regarding `scikit-learn` visualization tools, see
the :ref:`Visualization Guide <visualizations>`.
For guidance on interpreting these plots, refer to the
:ref:`Model Evaluation Guide <det_curve>`.

.. versionadded:: 1.0

Parameters
----------
y_true : array-like of shape (n_samples,)
    True labels.

y_pred : array-like of shape (n_samples,)
    Target scores, can either be probability estimates of the positive
    class, confidence values, or non-thresholded measure of decisions
    (as returned by `decision_function` on some classifiers).

sample_weight : array-like of shape (n_samples,), default=None
    Sample weights.

drop_intermediate : bool, default=True
    Whether to drop thresholds where true positives (tp) do not change
    from the previous or subsequent threshold. All points with the same
    tp value have the same `fnr` and thus same y coordinate.

    .. versionadded:: 1.7

pos_label : int, float, bool or str, default=None
    The label of the positive class. When `pos_label=None`, if `y_true`
    is in {-1, 1} or {0, 1}, `pos_label` is set to 1, otherwise an
    error will be raised.

name : str, default=None
    Name of DET curve for labeling. If `None`, name will be set to
    `"Classifier"`.

ax : matplotlib axes, default=None
    Axes object to plot on. If `None`, a new figure and axes is
    created.

**kwargs : dict
    Additional keywords arguments passed to matplotlib `plot` function.

Returns
-------
display : :class:`~sklearn.metrics.DetCurveDisplay`
    Object that stores computed values.

See Also
--------
det_curve : Compute error rates for different probability thresholds.
DetCurveDisplay.from_estimator : Plot DET curve given an estimator and
    some data.

Examples
--------
>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_classification
>>> from sklearn.metrics import DetCurveDisplay
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.svm import SVC
>>> X, y = make_classification(n_samples=1000, random_state=0)
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, test_size=0.4, random_state=0)
>>> clf = SVC(random_state=0).fit(X_train, y_train)
>>> y_pred = clf.decision_function(X_test)
>>> DetCurveDisplay.from_predictions(
...    y_test, y_pred)
<...>
>>> plt.show()
)r   r   r   )r   r   r   r   r   r   r   )!_validate_from_predictions_paramsr   plot)r"   r   r   r   r   r   r   r   r&   pos_label_validatedr   r   _vizs                 r   r!    DetCurveDisplay.from_predictions   sw    l %($I$I-SW %J %
!  '/
! )	
 xx323F33r   )r   c                ~   U R                  XS9u  U l        U l        nUc  0 OSU0nUR                  " S0 UD6  [        R
                  " U R                  R                  5      R                  nU R                  R                  USU-
  5      U l        U R                  R                  USU-
  5      U l
        U R                  R                  " [        R                  R                  R                  U R                  5      [        R                  R                  R                  U R                  5      40 UD6u  U l        U R"                  b  SU R"                   S3OSnSU-   nSU-   nU R                  R%                  XxS	9  SU;   a  U R                  R'                  S
S9  / SQn	[        R                  R                  R                  U	5      n
U	 Vs/ s H=  nSU-  R)                  5       (       a  SR+                  U5      OSR+                  U5      PM?     nnU R                  R-                  U
5        U R                  R/                  U5        U R                  R1                  SS5        U R                  R3                  U
5        U R                  R5                  U5        U R                  R7                  SS5        U $ s  snf )a  Plot visualization.

Parameters
----------
ax : matplotlib axes, default=None
    Axes object to plot on. If `None`, a new figure and axes is
    created.

name : str, default=None
    Name of DET curve for labeling. If `None`, use `estimator_name` if
    it is not `None`, otherwise no labeling is shown.

**kwargs : dict
    Additional keywords arguments passed to matplotlib `plot` function.

Returns
-------
display : :class:`~sklearn.metrics.DetCurveDisplay`
    Object that stores computed values.
r*   label   z (Positive label: ) zFalse Positive RatezFalse Negative Rate)xlabelylabelzlower right)loc)	gMbP?g{Gz?g?g?g      ?g?gffffff?gGz?g+?d   z{:.0%}z{:.1%}r   r   )_validate_plot_paramsax_figure_updatenpfinfor   dtypeepsclipr   r,   spstatsnormppfline_r   setlegend
is_integerformat
set_xticksset_xticklabelsset_xlim
set_yticksset_yticklabelsset_ylim)r   r   r   r&   line_kwargsrB   info_pos_labelr6   r7   tickstick_locationsstick_labelss                r   r,   DetCurveDisplay.plot4  s3   * (,'A'AR'A'S$$, Lbwo$V$ hhtxx~~&**88==a#g.88==a#g.HHMMdhh'HHMMdhh'
 
 7;nn6P  02VX 	 '7&7F2k!HHOOO.G**51 
 $'7"6"6"8"8HOOAhooa>PP 	 
 	N+  -"a N+  -"a 
s   AJ:)r<   r
   r=   r   r   rH   r   r   )__name__
__module____qualname____firstlineno____doc__r   classmethodr'   r!   r,   __static_attributes__r   r   r   r   r      sy    AF 484 #  q
 q
f  h4 h4T?D ? ?r   r   )	numpyr?   scipyrD   utils._plottingr   _rankingr   r   r   r   r   <module>re      s"      A  h8 hr   