Ë
    ÷Q(hb*  ã                   ó:   — d dl ZddlmZ ddlmZ  G d„ de«      Zy)é    Né   )Ú"_BinaryClassifierCurveDisplayMixiné   )Ú	det_curvec                   óf   — e Zd ZdZdddœd„Zeddddddœd„«       Zedddddœd	„«       Zddd
œd„Zy)ÚDetCurveDisplaya„  DET curve visualization.

    It is recommend 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.

    Read more in the :ref:`User Guide <visualizations>`.

    .. 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                ó<   — || _         || _        || _        || _        y ©N©ÚfprÚfnrr	   r
   )Úselfr   r   r	   r
   s        ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/metrics/_plot/det_curve.pyÚ__init__zDetCurveDisplay.__init__K   s   € ØˆŒØˆŒØ,ˆÔØ"ˆ�ó    Úauto)Úsample_weightÚresponse_methodr
   ÚnameÚaxc          
      ój   — | j                  ||||||¬«      \  }
}} | j                  d||
||||dœ|	¤ŽS )ai
  Plot DET curve given an estimator and data.

        Read more in the :ref:`User Guide <visualizations>`.

        .. 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.

        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
   © )Ú!_validate_and_get_response_valuesÚfrom_predictions)ÚclsÚ	estimatorÚXÚyr   r   r
   r   r   Úkwargsr   s              r   Úfrom_estimatorzDetCurveDisplay.from_estimatorQ   sl   € ðj #&×"GÑ"GØØØØ+ØØð #Hó #
Ñˆ�	˜4ð $ˆs×#Ñ#ð 
ØØØ'ØØØñ
ð ñ
ð 	
r   )r   r
   r   r   c                óœ   — | j                  |||||¬«      \  }}t        ||||¬«      \  }	}
} | |	|
||¬«      } |j                  d||dœ|¤ŽS )a+	  Plot the DET curve given the true and predicted labels.

        Read more in the :ref:`User Guide <visualizations>`.

        .. 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.

        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   )Ú!_validate_from_predictions_paramsr   Úplot)r   r   r   r   r
   r   r   r#   Úpos_label_validatedr   r   Ú_Úvizs                r   r   z DetCurveDisplay.from_predictions¹   s€   € ðV %(×$IÑ$IØ�F¨-À9ÐSWð %Jó %
Ñ!Ð˜Tô  ØØØØ'ô	
‰ˆˆS�!ñ ØØØØ)ô	
ˆð ˆs�x‰xÐ3˜2 DÑ3¨FÑ3Ð3r   )r   c                ó„  — | j                  ||¬«      \  | _        | _        }|€i nd|i} |j                  di |¤Ž  | j                  j                  t
        j                  j                  j                  | j                  «      t
        j                  j                  j                  | j                  «      fi |¤Ž\  | _        | j                  �d| j                  › d�nd}d|z   }d|z   }| j                  j                  ||¬«       d|v r| j                  j                  d	¬
«       g d¢}t
        j                  j                  j                  |«      }	|D �
cg c]7  }
d|
z  j                  «       rdj!                  |
«      ndj!                  |
«      ‘Œ9 }}
| j                  j#                  |	«       | j                  j%                  |«       | j                  j'                  dd«       | j                  j)                  |	«       | j                  j+                  |«       | j                  j-                  dd«       | S c c}
w )ap  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&   Úlabelz (Positive label: ú)Ú zFalse Positive RatezFalse Negative Rate)ÚxlabelÚylabelzlower right)Úloc)	gü©ñÒMbP?g{®Gáz„?gš™™™™™©?gš™™™™™É?g      à?gš™™™™™é?gffffffî?g®Gáz®ï?g+‡ÙÎ÷ï?éd   z{:.0%}z{:.1%}éýÿÿÿr   r   )Ú_validate_plot_paramsÚax_Úfigure_Úupdater(   ÚspÚstatsÚnormÚppfr   r   Úline_r
   ÚsetÚlegendÚ
is_integerÚformatÚ
set_xticksÚset_xticklabelsÚset_xlimÚ
set_yticksÚset_yticklabelsÚset_ylim)r   r   r   r#   Úline_kwargsÚinfo_pos_labelr0   r1   ÚticksÚtick_locationsÚsÚtick_labelss               r   r(   zDetCurveDisplay.plot  sã  € ð* (,×'AÑ'AÀRÈdÐ'AÓ'SÑ$ˆŒ�$”, à ˜L‘b¨w¸¨oˆØˆ×ÑÑ$˜VÒ$à%˜Ÿ™Ÿ™Ü�H‰H�M‰M×Ñ˜dŸh™hÓ'Ü�H‰H�M‰M×Ñ˜dŸh™hÓ'ñ
ð ñ
‰ˆŒð 7;·n±nÐ6PÐ  §¡Ð 0°Ñ2ÐVXð 	ð '¨Ñ7ˆØ&¨Ñ7ˆØ�‰�‰˜F¨6ˆÔ2à�kÑ!Ø�H‰H�O‰O ˆOÔ.âGˆÜŸ™Ÿ™×*Ñ*¨5Ó1ˆð ö
àð $'¨¡7×"6Ñ"6Ô"8ˆH�O‰O˜AÔ¸h¿o¹oÈaÓ>PÑPð
ˆð 
ð 	�‰×Ñ˜NÔ+Ø�‰× Ñ  Ô-Ø�‰×Ñ˜"˜aÔ Ø�‰×Ñ˜NÔ+Ø�‰× Ñ  Ô-Ø�‰×Ñ˜"˜aÔ àˆùò
s   Å<H=r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úclassmethodr$   r   r(   r   r   r   r   r   
   sm   „ ñ>ð@ 48À4ô #ð ð ØØØØóe
ó ðe
ðN ð ØØØó\4ó ð\4ð|7 Dõ 7r   r   )Úscipyr9   Úutils._plottingr   Ú_rankingr   r   r   r   r   ú<module>rV      s   ðó å AÝ  ôEÐ8õ Er   