ó
    Ñ]jÓC  ã                   óh   • S SK Jr  S SKrS SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr   " S S	5      rg)
é    )ÚproductN)Úis_classifier)Úconfusion_matrix)Úcheck_matplotlib_support)Ú_validate_style_kwargs)Úunique_labelsc                   óž   • \ rS rSrSrSS.S jrSSSSSSSSS	.S
 jr\SSSSSSSSSSSSS.S j5       r\SSSSSSSSSSSSS.S j5       r	Sr
g)ÚConfusionMatrixDisplayé   aâ  Confusion Matrix visualization.

It is recommended to use
:func:`~sklearn.metrics.ConfusionMatrixDisplay.from_estimator` or
:func:`~sklearn.metrics.ConfusionMatrixDisplay.from_predictions` to
create a :class:`ConfusionMatrixDisplay`. 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 <confusion_matrix>`.

Parameters
----------
confusion_matrix : ndarray of shape (n_classes, n_classes)
    Confusion matrix.

display_labels : ndarray of shape (n_classes,), default=None
    Display labels for plot. If None, display labels are set from 0 to
    `n_classes - 1`.

Attributes
----------
im_ : matplotlib AxesImage
    Image representing the confusion matrix.

text_ : ndarray of shape (n_classes, n_classes), dtype=matplotlib Text,             or None
    Array of matplotlib axes. `None` if `include_values` is false.

ax_ : matplotlib Axes
    Axes with confusion matrix.

figure_ : matplotlib Figure
    Figure containing the confusion matrix.

See Also
--------
confusion_matrix : Compute Confusion Matrix to evaluate the accuracy of a
    classification.
ConfusionMatrixDisplay.from_estimator : Plot the confusion matrix
    given an estimator, the data, and the label.
ConfusionMatrixDisplay.from_predictions : Plot the confusion matrix
    given the true and predicted labels.

Examples
--------
>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_classification
>>> from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
>>> 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)
>>> cm = confusion_matrix(y_test, predictions, labels=clf.classes_)
>>> disp = ConfusionMatrixDisplay(confusion_matrix=cm,
...                               display_labels=clf.classes_)
>>> disp.plot()
<...>
>>> plt.show()
N)Údisplay_labelsc                ó   • Xl         X l        g )N©r   r   )Úselfr   r   s      Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sklearn/metrics/_plot/confusion_matrix.pyÚ__init__ÚConfusionMatrixDisplay.__init__T   s   € Ø 0ÔØ,Õó    TÚviridisÚ
horizontal)Úinclude_valuesÚcmapÚxticks_rotationÚvalues_formatÚaxÚcolorbarÚim_kwÚtext_kwc          	      óˆ  • [        S5        SSKJn	  Uc  U	R                  5       u  p¥OUR                  n
U R
                  nUR                  S   n[        SUS9nU=(       d    0 n[        X×5      nU=(       d    0 nUR                  " U40 UD6U l
        SU l        U R                  R                  S5      U R                  R                  S5      pþU(       Ga  [        R                  " U[        S9U l        UR!                  5       UR#                  5       -   S-  n[%        ['        U5      ['        U5      5       H»  u  nnUUU4   U:  a  UOUnUcW  [)        UUU4   S	5      nUR*                  R,                  S
:w  a+  [)        UUU4   S5      n[/        U5      [/        U5      :  a  UnO[)        UUU4   U5      n[        SSUS9n[        UU5      nUR0                  " UUU40 UD6U R                  UU4'   M½     U R2                  c  [        R4                  " U5      nOU R2                  nU(       a  U
R7                  U R                  US9  UR9                  [        R4                  " U5      [        R4                  " U5      UUSSS9  UR;                  US-
  S45        U	R=                  UR?                  5       US9  X l         XPl!        U $ )at  Plot visualization.

Parameters
----------
include_values : bool, default=True
    Includes values in confusion matrix.

cmap : str or matplotlib Colormap, default='viridis'
    Colormap recognized by matplotlib.

xticks_rotation : {'vertical', 'horizontal'} or float,                          default='horizontal'
    Rotation of xtick labels.

values_format : str, default=None
    Format specification for values in confusion matrix. If `None`,
    the format specification is 'd' or '.2g' whichever is shorter.

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

colorbar : bool, default=True
    Whether or not to add a colorbar to the plot.

im_kw : dict, default=None
    Dict with keywords passed to `matplotlib.pyplot.imshow` call.

text_kw : dict, default=None
    Dict with keywords passed to `matplotlib.pyplot.text` call.

    .. versionadded:: 1.2

Returns
-------
display : :class:`~sklearn.metrics.ConfusionMatrixDisplay`
    Returns a :class:`~sklearn.metrics.ConfusionMatrixDisplay` instance
    that contains all the information to plot the confusion matrix.
zConfusionMatrixDisplay.plotr   NÚnearest)Úinterpolationr   g      ð?)Údtypeg       @z.2gÚfÚdÚcenter)ÚhaÚvaÚcolor)r   z
True labelzPredicted label)ÚxticksÚyticksÚxticklabelsÚyticklabelsÚylabelÚxlabelg      à?g      à¿)Úrotation)"r   Úmatplotlib.pyplotÚpyplotÚsubplotsÚfigurer   ÚshapeÚdictr   ÚimshowÚim_Útext_r   ÚnpÚ
empty_likeÚobjectÚmaxÚminr   ÚrangeÚformatr!   ÚkindÚlenÚtextr   Úaranger   ÚsetÚset_ylimÚsetpÚget_xticklabelsÚfigure_Úax_)r   r   r   r   r   r   r   r   r   ÚpltÚfigÚcmÚ	n_classesÚdefault_im_kwÚcmap_minÚcmap_maxÚthreshÚiÚjr'   Útext_cmÚtext_dÚdefault_text_kwargsÚtext_kwargsr   s                            r   ÚplotÚConfusionMatrixDisplay.plotX   sm  € ôf 	!Ð!>Ô?Ý'à‰:Ø—l‘l“n‰GˆC�à—)‘)ˆCà×"Ñ"ˆØ—H‘H˜Q‘Kˆ	ä¨9¸4Ñ@ˆØ—˜ˆÜ& }Ó<ˆØ—-˜Rˆà—9’9˜RÑ) 5Ñ)ˆŒØˆŒ
Ø!ŸX™XŸ]™]¨1Ó-¨t¯x©x¯}©}¸SÓ/A�(çÜŸš r´Ñ8ˆDŒJð —f‘f“h §¡£Ñ)¨SÑ0ˆFä¤ iÓ 0´%¸	Ó2BÖC‘��1Ø$& q¨! t¡H¨vÓ$5™¸8�à Ñ(Ü$ R¨¨1¨¡X¨uÓ5�GØ—x‘x—}‘}¨Ó+Ü!'¨¨1¨a¨4©°#Ó!6˜Ü˜v›;¬¨W«Ó5Ø&,˜Gøä$ R¨¨1¨¡X¨}Ó=�Gä&*¨h¸8È5Ñ&QÐ#Ü4Ð5HÈ'ÓR�à#%§7¢7¨1¨a°Ñ#H¸KÑ#H�—
‘
˜1˜a˜4Ó ñ Dð" ×ÑÑ&ÜŸYšY yÓ1‰Nà!×0Ñ0ˆNÞØ�L‰L˜Ÿ™ bˆLÑ)Ø
�‰Ü—9’9˜YÓ'Ü—9’9˜YÓ'Ø&Ø&ØØ$ð 	ñ 	
ð 	�‰�Y ‘_ dÐ+Ô,Ø�‰�×#Ñ#Ó%°ˆÑ@àŒØŒØˆr   )ÚlabelsÚsample_weightÚ	normalizer   r   r   r   r   r   r   r   r   c                óÌ   • U R                    S3n[        U5        [        U5      (       d  [        U S35      eUR	                  U5      nU R                  UUUUUUUUUU	U
UUUS9$ )a±  Plot Confusion Matrix given an estimator and some 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 <confusion_matrix>`.

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

labels : array-like of shape (n_classes,), default=None
    List of labels to index the confusion matrix. This may be used to
    reorder or select a subset of labels. If `None` is given, those
    that appear at least once in `y_true` or `y_pred` are used in
    sorted order.

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

normalize : {'true', 'pred', 'all'}, default=None
    Either to normalize the counts display in the matrix:

    - if `'true'`, the confusion matrix is normalized over the true
      conditions (e.g. rows);
    - if `'pred'`, the confusion matrix is normalized over the
      predicted conditions (e.g. columns);
    - if `'all'`, the confusion matrix is normalized by the total
      number of samples;
    - if `None` (default), the confusion matrix will not be normalized.

display_labels : array-like of shape (n_classes,), default=None
    Target names used for plotting. By default, `labels` will be used
    if it is defined, otherwise the unique labels of `y_true` and
    `y_pred` will be used.

include_values : bool, default=True
    Includes values in confusion matrix.

xticks_rotation : {'vertical', 'horizontal'} or float,                 default='horizontal'
    Rotation of xtick labels.

values_format : str, default=None
    Format specification for values in confusion matrix. If `None`, the
    format specification is 'd' or '.2g' whichever is shorter.

cmap : str or matplotlib Colormap, default='viridis'
    Colormap recognized by matplotlib.

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

colorbar : bool, default=True
    Whether or not to add a colorbar to the plot.

im_kw : dict, default=None
    Dict with keywords passed to `matplotlib.pyplot.imshow` call.

text_kw : dict, default=None
    Dict with keywords passed to `matplotlib.pyplot.text` call.

    .. versionadded:: 1.2

Returns
-------
display : :class:`~sklearn.metrics.ConfusionMatrixDisplay`

See Also
--------
ConfusionMatrixDisplay.from_predictions : Plot the confusion matrix
    given the true and predicted labels.

Examples
--------
>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_classification
>>> from sklearn.metrics import ConfusionMatrixDisplay
>>> 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)
>>> ConfusionMatrixDisplay.from_estimator(
...     clf, X_test, y_test)
<...>
>>> plt.show()

For a detailed example of using a confusion matrix to evaluate a
Support Vector Classifier, please see
:ref:`sphx_glr_auto_examples_model_selection_plot_confusion_matrix.py`
z.from_estimatorz only supports classifiers)rZ   rY   r[   r   r   r   r   r   r   r   r   r   )Ú__name__r   r   Ú
ValueErrorÚpredictÚfrom_predictions)ÚclsÚ	estimatorÚXÚyrY   rZ   r[   r   r   r   r   r   r   r   r   r   Úmethod_nameÚy_preds                     r   Úfrom_estimatorÚ%ConfusionMatrixDisplay.from_estimatorÌ   s�   € ð| Ÿ™˜ oÐ6ˆÜ  Ô-Ü˜Y×'Ñ'Ü ˜}Ð,FÐGÓHÐHØ×"Ñ" 1Ó%ˆà×#Ñ#ØØØ'ØØØ)Ø)ØØØ+Ø'ØØØð $ð 
ð 	
r   c                ó¬   • [        U R                   S35        Uc  Uc  [        X5      nOUn[        UUUUUS9nU " XöS9nUR	                  UU
UUU	UUUS9$ )a´  Plot Confusion Matrix given 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 <confusion_matrix>`.

.. versionadded:: 1.0

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

y_pred : array-like of shape (n_samples,)
    The predicted labels given by the method `predict` of an
    classifier.

labels : array-like of shape (n_classes,), default=None
    List of labels to index the confusion matrix. This may be used to
    reorder or select a subset of labels. If `None` is given, those
    that appear at least once in `y_true` or `y_pred` are used in
    sorted order.

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

normalize : {'true', 'pred', 'all'}, default=None
    Either to normalize the counts display in the matrix:

    - if `'true'`, the confusion matrix is normalized over the true
      conditions (e.g. rows);
    - if `'pred'`, the confusion matrix is normalized over the
      predicted conditions (e.g. columns);
    - if `'all'`, the confusion matrix is normalized by the total
      number of samples;
    - if `None` (default), the confusion matrix will not be normalized.

display_labels : array-like of shape (n_classes,), default=None
    Target names used for plotting. By default, `labels` will be used
    if it is defined, otherwise the unique labels of `y_true` and
    `y_pred` will be used.

include_values : bool, default=True
    Includes values in confusion matrix.

xticks_rotation : {'vertical', 'horizontal'} or float,                 default='horizontal'
    Rotation of xtick labels.

values_format : str, default=None
    Format specification for values in confusion matrix. If `None`, the
    format specification is 'd' or '.2g' whichever is shorter.

cmap : str or matplotlib Colormap, default='viridis'
    Colormap recognized by matplotlib.

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

colorbar : bool, default=True
    Whether or not to add a colorbar to the plot.

im_kw : dict, default=None
    Dict with keywords passed to `matplotlib.pyplot.imshow` call.

text_kw : dict, default=None
    Dict with keywords passed to `matplotlib.pyplot.text` call.

    .. versionadded:: 1.2

Returns
-------
display : :class:`~sklearn.metrics.ConfusionMatrixDisplay`

See Also
--------
ConfusionMatrixDisplay.from_estimator : Plot the confusion matrix
    given an estimator, the data, and the label.

Examples
--------
>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_classification
>>> from sklearn.metrics import ConfusionMatrixDisplay
>>> 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)
>>> y_pred = clf.predict(X_test)
>>> ConfusionMatrixDisplay.from_predictions(
...    y_test, y_pred)
<...>
>>> plt.show()
z.from_predictions)rZ   rY   r[   r   )r   r   r   r   r   r   r   r   )r   r]   r   r   rW   )ra   Úy_truerf   rY   rZ   r[   r   r   r   r   r   r   r   r   r   rK   Údisps                    r   r`   Ú'ConfusionMatrixDisplay.from_predictionsa  s†   € ôn 	! C§L¡L >Ð1BÐ!CÔDàÑ!Ø‰~Ü!.¨vÓ!>‘à!'�äØØØ'ØØñ
ˆñ  BÑFˆà�y‰yØ)ØØØ+Ø'ØØØð ð 	
ð 		
r   )rH   r   r   rG   r6   r7   )r]   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   rW   Úclassmethodrg   r`   Ú__static_attributes__© r   r   r
   r
      s®   † ñBðH <@õ -ð ØØ$ØØØØØõrðh ð ØØØØØ$ØØØØØØô#R
ó ðR
ðh ð ØØØØØ$ØØØØØØô!Q
ó óQ
r   r
   )Ú	itertoolsr   Únumpyr8   Úsklearn.baser   Úsklearn.metricsr   Ú$sklearn.utils._optional_dependenciesr   Úsklearn.utils._plottingr   Úsklearn.utils.multiclassr   r
   rs   r   r   Ú<module>r{      s(   ðõ ã å &Ý ,Ý IÝ :Ý 2÷d
ò d
r   