§
    rŠtjÌ3  ã                   óN   — d dl Zd dlZd dlmZ d dlmZmZ  G d„ de¦  «        Z	dS )é    N)Ú	det_curve)Ú"_BinaryClassifierCurveDisplayMixinÚ_deprecate_y_pred_parameterc            	       ó~   — e Zd ZdZdddœd„Zedddddddœd„¦   «         Ze	 ddddddd	d
œd„¦   «         Zdddœd„ZdS )ÚDetCurveDisplaya£  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. If not `None`, this value is displayed in
        the x- and y-axes labels.

    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_score = clf.decision_function(X_test)
    >>> fpr, fnr, _ = det_curve(y_test, y_score)
    >>> display = DetCurveDisplay(
    ...     fpr=fpr, fnr=fnr, estimator_name="SVC"
    ... )
    >>> display.plot()
    <...>
    >>> plt.show()
    N)Úestimator_nameÚ	pos_labelc                ó>   — || _         || _        || _        || _        d S ©N©ÚfprÚfnrr   r	   )Úselfr   r   r   r	   s        ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/metrics/_plot/det_curve.pyÚ__init__zDetCurveDisplay.__init__S   s#   € ØˆŒØˆŒØ,ˆÔØ"ˆŒˆˆó    TÚauto)Úsample_weightÚdrop_intermediateÚresponse_methodr	   ÚnameÚaxc                ój   — |                       ||||||¬¦  «        \  }}} | j        d||||||	|dœ|
¤ŽS )a&  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. By default, `estimators.classes_[1]`
            is considered as the positive class.

        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_scorer   r   r   r   r	   © )Ú!_validate_and_get_response_valuesÚfrom_predictions)ÚclsÚ	estimatorÚXÚyr   r   r   r	   r   r   Úkwargsr   s               r   Úfrom_estimatorzDetCurveDisplay.from_estimatorY   s{   € ð~ $'×#HÒ#HØØØØ+ØØð $Iñ $
ô $
Ñ ˆ�˜Dð $ˆsÔ#ð 	
ØØØ'Ø/ØØØð	
ð 	
ð ð	
ð 	
ð 		
r   Ú
deprecated)r   r   r	   r   r   Úy_predc                óÌ   — t          ||d¦  «        }|                      |||||¬¦  «        \  }
}t          |||||¬¦  «        \  }}} | ||||
¬¦  «        } |j        d||dœ|	¤ŽS )aü  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_score : array-like of shape (n_samples,)
            Target scores, can either be probability estimates of the positive
            class or non-thresholded decision values (as returned by
            :term:`decision_function` on some classifiers).

            .. versionadded:: 1.8
                `y_pred` has been renamed to `y_score`.

        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.

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

            .. deprecated:: 1.8
                `y_pred` is deprecated and will be removed in 1.10. Use
                `y_score` instead.

        **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_score = clf.decision_function(X_test)
        >>> DetCurveDisplay.from_predictions(
        ...    y_test, y_score)
        <...>
        >>> plt.show()
        z1.8)r   r	   r   )r	   r   r   r   ©r   r   r   )r   Ú!_validate_from_predictions_paramsr   Úplot)r   r   r   r   r   r	   r   r   r&   r#   Úpos_label_validatedr   r   Ú_Úvizs                  r   r   z DetCurveDisplay.from_predictionsÌ   s³   € õF .¨g°v¸uÑEÔEˆØ$'×$IÒ$IØ�G¨=ÀIÐTXð %Jñ %
ô %
Ñ!Ð˜Tõ  ØØØØ'Ø/ð
ñ 
ô 
‰ˆˆS�!ð ˆcØØØØ)ð	
ñ 
ô 
ˆð ˆsŒxÐ3˜2 DÐ3Ð3¨FÐ3Ð3Ð3r   )r   c                ót  — |                       ||¬¦  «        \  | _        | _        }|€i nd|i} |j        di |¤Ž t	          j        | j        j        ¦  «        j        }| j         	                    |d|z
  ¦  «        | _        | j
         	                    |d|z
  ¦  «        | _
         | j        j        t          j        j                             | j        ¦  «        t          j        j                             | j
        ¦  «        fi |¤Ž\  | _        | j        �d| j        › d�nd}d|z   }d	|z   }| j                             ||¬
¦  «         d|v r| j                             d¬¦  «         g d¢}	t          j        j                             |	¦  «        }
d„ |	D ¦   «         }| j                             |
¦  «         | j                             |¦  «         | j                             dd¦  «         | j                             |
¦  «         | j                             |¦  «         | j                             dd¦  «         | S )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(   NÚlabelé   z (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+‡ÙÎ÷ï?c                 ó�   — g | ]C}d |z                        ¦   «         rd                     |¦  «        nd                     |¦  «        ‘ŒDS )éd   z{:.0%}z{:.1%})Ú
is_integerÚformat)Ú.0Úss     r   ú
<listcomp>z(DetCurveDisplay.plot.<locals>.<listcomp>y  sZ   € ð 
ð 
ð 
àð $'¨¡7×"6Ò"6Ñ"8Ô"8ÐPˆH�OŠO˜AÑÔÐ¸h¿oºoÈaÑ>PÔ>Pð
ð 
ð 
r   éýÿÿÿé   r   )Ú_validate_plot_paramsÚax_Úfigure_ÚupdateÚnpÚfinfor   ÚdtypeÚepsÚclipr   r*   ÚspÚstatsÚnormÚppfÚline_r	   ÚsetÚlegendÚ
set_xticksÚset_xticklabelsÚset_xlimÚ
set_yticksÚset_yticklabelsÚset_ylim)r   r   r   r#   Úline_kwargsrF   Úinfo_pos_labelr3   r4   ÚticksÚtick_locationsÚtick_labelss               r   r*   zDetCurveDisplay.plotE  s8  € ð* (,×'AÒ'AÀRÈdÐ'AÑ'SÔ'SÑ$ˆŒ�$”, à ˜L�b�b¨w¸¨oˆØˆÔÐ$Ð$˜VÐ$Ð$Ð$õ Œh�t”x”~Ñ&Ô&Ô*ˆØ”8—=’=  a¨#¡gÑ.Ô.ˆŒØ”8—=’=  a¨#¡gÑ.Ô.ˆŒà%˜œœÝŒHŒM×Ò˜dœhÑ'Ô'ÝŒHŒM×Ò˜dœhÑ'Ô'ð
ð 
ð ð
ð 
‰ˆŒð 7;´nÐ6PÐ2 ¤Ð2Ð2Ð2Ð2ÐVXð 	ð '¨Ñ7ˆØ&¨Ñ7ˆØŒ�Š˜F¨6ˆÑ2Ô2Ð2à�kÐ!Ð!ØŒH�OŠO ˆOÑ.Ô.Ð.àGÐGÐGˆÝœœ×*Ò*¨5Ñ1Ô1ˆð
ð 
àð
ñ 
ô 
ˆð 	Œ×Ò˜NÑ+Ô+Ð+ØŒ× Ò  Ñ-Ô-Ð-ØŒ×Ò˜"˜aÑ Ô Ð ØŒ×Ò˜NÑ+Ô+Ð+ØŒ× Ò  Ñ-Ô-Ð-ØŒ×Ò˜"˜aÑ Ô Ð àˆr   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úclassmethodr$   r   r*   r   r   r   r   r      sê   € € € € € ðBð BðH 48À4ð #ð #ð #ð #ð #ð ð ØØØØØðp
ð p
ð p
ð p
ñ „[ðp
ðd ð ðv4ð
 ØØØØØðv4ð v4ð v4ð v4ñ „[ðv4ðp? Dð ?ð ?ð ?ð ?ð ?ð ?ð ?r   r   )
ÚnumpyrC   ÚscipyrH   Úsklearn.metrics._rankingr   Úsklearn.utils._plottingr   r   r   r   r   r   ú<module>rc      s˜   ðð Ð Ð Ð Ø Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ðvð vð vð vð vÐ8ñ vô vð vð vð vr   