
    -ic9                     P    S SK r S SKrSSKJrJr  SSKJr  SSKJ	r	   " S S5      r
g)    N   )_safe_indexingcheck_random_state)check_matplotlib_support)_validate_style_kwargsc                   z    \ rS rSrSrS r SSSSS.S jjr\SSSSSSS	.S
 j5       r\SSSSSSS	.S j5       r	Sr
g)PredictionErrorDisplay   a  Visualization of the prediction error of a regression model.

This tool can display "residuals vs predicted" or "actual vs predicted"
using scatter plots to qualitatively assess the behavior of a regressor,
preferably on held-out data points.

See the details in the docstrings of
:func:`~sklearn.metrics.PredictionErrorDisplay.from_estimator` or
:func:`~sklearn.metrics.PredictionErrorDisplay.from_predictions` to
create a visualizer. All parameters are stored as attributes.

For general information regarding `scikit-learn` visualization tools, read
more in the :ref:`Visualization Guide <visualizations>`.
For details regarding interpreting these plots, refer to the
:ref:`Model Evaluation Guide <visualization_regression_evaluation>`.

.. versionadded:: 1.2

Parameters
----------
y_true : ndarray of shape (n_samples,)
    True values.

y_pred : ndarray of shape (n_samples,)
    Prediction values.

Attributes
----------
line_ : matplotlib Artist
    Optimal line representing `y_true == y_pred`. Therefore, it is a
    diagonal line for `kind="predictions"` and a horizontal line for
    `kind="residuals"`.

errors_lines_ : matplotlib Artist or None
    Residual lines. If `with_errors=False`, then it is set to `None`.

scatter_ : matplotlib Artist
    Scatter data points.

ax_ : matplotlib Axes
    Axes with the different matplotlib axis.

figure_ : matplotlib Figure
    Figure containing the scatter and lines.

See Also
--------
PredictionErrorDisplay.from_estimator : Prediction error visualization
    given an estimator and some data.
PredictionErrorDisplay.from_predictions : Prediction error visualization
    given the true and predicted targets.

Examples
--------
>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import load_diabetes
>>> from sklearn.linear_model import Ridge
>>> from sklearn.metrics import PredictionErrorDisplay
>>> X, y = load_diabetes(return_X_y=True)
>>> ridge = Ridge().fit(X, y)
>>> y_pred = ridge.predict(X)
>>> display = PredictionErrorDisplay(y_true=y, y_pred=y_pred)
>>> display.plot()
<...>
>>> plt.show()
c                    Xl         X l        g Ny_truey_pred)selfr   r   s      S/var/www/html/venv/lib/python3.13/site-packages/sklearn/metrics/_plot/regression.py__init__PredictionErrorDisplay.__init__Q   s        Nresidual_vs_predicted)kindscatter_kwargsline_kwargsc                B   [        U R                  R                   S35        SnX%;  a"  [        SSR	                  U5       SU< S35      eSSKJn  Uc  0 nUc  0 nS	S
S.nSSSS.n[        Xs5      n[        X5      n0 UEUEn0 UEUEnUc  UR                  5       u  pUS:X  Ga:  [        [        R                  " U R                  5      [        R                  " U R                  5      5      n
[        [        R                  " U R                  5      [        R                  " U R                  5      5      nUR                  " X/X/40 UD6S   U l        U R                  U R                  pSu  pUR                   " X40 UD6U l        UR%                  SSS9  UR'                  [        R(                  " XSS95        UR+                  [        R(                  " XSS95        OUR                  " [        R                  " U R                  5      [        R                  " U R                  5      /SS/40 UD6S   U l        UR                   " U R                  U R                  U R                  -
  40 UD6U l        Su  pUR-                  XS9  Xl        UR0                  U l        U $ )a  Plot visualization.

Extra keyword arguments will be passed to matplotlib's ``plot``.

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

kind : {"actual_vs_predicted", "residual_vs_predicted"},                 default="residual_vs_predicted"
    The type of plot to draw:

    - "actual_vs_predicted" draws the observed values (y-axis) vs.
      the predicted values (x-axis).
    - "residual_vs_predicted" draws the residuals, i.e. difference
      between observed and predicted values, (y-axis) vs. the predicted
      values (x-axis).

scatter_kwargs : dict, default=None
    Dictionary with keywords passed to the `matplotlib.pyplot.scatter`
    call.

line_kwargs : dict, default=None
    Dictionary with keyword passed to the `matplotlib.pyplot.plot`
    call to draw the optimal line.

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

    Object that stores computed values.
z.plot)actual_vs_predictedr   z`kind` must be one of z, z. Got z	 instead.r   Nztab:blueg?)coloralphablackgffffff?z--)r   r   	linestyler   )Predicted valueszActual valuesequaldatalim)
adjustable   )num)r   zResiduals (actual - predicted))xlabelylabel)r   	__class____name__
ValueErrorjoinmatplotlib.pyplotpyplotr   subplotsmaxnpr   r   minplotline_scatterscatter_
set_aspect
set_xtickslinspace
set_ytickssetax_figurefigure_)r   axr   r   r   expected_kindpltdefault_scatter_kwargsdefault_line_kwargs_	max_value	min_valuex_datay_datar%   r&   s                   r   r1   PredictionErrorDisplay.plotU   sl   T 	!DNN$;$;#<E!BCH$(=)A(B Chi) 
 	(!NK+5!D(/#DQ/0FW,-@NE2EnE<,<<:LLNEA((BFF4;;/1DEIBFF4;;/1DEI&(>BMDJ "[[$++F@NFJJvHHDM MM'iM8MM"++iBCMM"++iBC$bffT[[&9:A  	DJ
 JJT[[4;;6:HDM RNF
f,yyr   i  )r   	subsamplerandom_stater=   r   r   c                    [        U R                   S35        UR                  U5      n
U R                  UU
UUUUUU	S9$ )a[
  Plot the prediction error given a regressor and some data.

For general information regarding `scikit-learn` visualization tools,
read more in the :ref:`Visualization Guide <visualizations>`.
For details regarding interpreting these plots, refer to the
:ref:`Model Evaluation Guide <visualization_regression_evaluation>`.

.. versionadded:: 1.2

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

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

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

kind : {"actual_vs_predicted", "residual_vs_predicted"},                 default="residual_vs_predicted"
    The type of plot to draw:

    - "actual_vs_predicted" draws the observed values (y-axis) vs.
      the predicted values (x-axis).
    - "residual_vs_predicted" draws the residuals, i.e. difference
      between observed and predicted values, (y-axis) vs. the predicted
      values (x-axis).

subsample : float, int or None, default=1_000
    Sampling the samples to be shown on the scatter plot. If `float`,
    it should be between 0 and 1 and represents the proportion of the
    original dataset. If `int`, it represents the number of samples
    display on the scatter plot. If `None`, no subsampling will be
    applied. by default, 1000 samples or less will be displayed.

random_state : int or RandomState, default=None
    Controls the randomness when `subsample` is not `None`.
    See :term:`Glossary <random_state>` for details.

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

scatter_kwargs : dict, default=None
    Dictionary with keywords passed to the `matplotlib.pyplot.scatter`
    call.

line_kwargs : dict, default=None
    Dictionary with keyword passed to the `matplotlib.pyplot.plot`
    call to draw the optimal line.

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

See Also
--------
PredictionErrorDisplay : Prediction error visualization for regression.
PredictionErrorDisplay.from_predictions : Prediction error visualization
    given the true and predicted targets.

Examples
--------
>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import load_diabetes
>>> from sklearn.linear_model import Ridge
>>> from sklearn.metrics import PredictionErrorDisplay
>>> X, y = load_diabetes(return_X_y=True)
>>> ridge = Ridge().fit(X, y)
>>> disp = PredictionErrorDisplay.from_estimator(ridge, X, y)
>>> plt.show()
z.from_estimator)r   r   r   rH   rI   r=   r   r   )r   r(   predictfrom_predictions)cls	estimatorXyr   rH   rI   r=   r   r   r   s              r   from_estimator%PredictionErrorDisplay.from_estimator   sX    t 	!CLL>!AB""1%##%)# $ 	
 		
r   c                   [        U R                   S35        [        U5      n[        U5      n	[	        U[
        R                  5      (       a  US::  a  [        SU S35      eOG[	        U[
        R                  5      (       a(  US::  d  US:  a  [        SU S35      e[        X-  5      nUb=  XI:  a8  UR                  [        R                  " U	5      US9n
[        XSS	9n[        X*SS	9nU " UUS
9nUR                  UUUUS9$ )a	  Plot the prediction error given the true and predicted targets.

For general information regarding `scikit-learn` visualization tools,
read more in the :ref:`Visualization Guide <visualizations>`.
For details regarding interpreting these plots, refer to the
:ref:`Model Evaluation Guide <visualization_regression_evaluation>`.

.. versionadded:: 1.2

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

y_pred : array-like of shape (n_samples,)
    Predicted target values.

kind : {"actual_vs_predicted", "residual_vs_predicted"},                 default="residual_vs_predicted"
    The type of plot to draw:

    - "actual_vs_predicted" draws the observed values (y-axis) vs.
      the predicted values (x-axis).
    - "residual_vs_predicted" draws the residuals, i.e. difference
      between observed and predicted values, (y-axis) vs. the predicted
      values (x-axis).

subsample : float, int or None, default=1_000
    Sampling the samples to be shown on the scatter plot. If `float`,
    it should be between 0 and 1 and represents the proportion of the
    original dataset. If `int`, it represents the number of samples
    display on the scatter plot. If `None`, no subsampling will be
    applied. by default, 1000 samples or less will be displayed.

random_state : int or RandomState, default=None
    Controls the randomness when `subsample` is not `None`.
    See :term:`Glossary <random_state>` for details.

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

scatter_kwargs : dict, default=None
    Dictionary with keywords passed to the `matplotlib.pyplot.scatter`
    call.

line_kwargs : dict, default=None
    Dictionary with keyword passed to the `matplotlib.pyplot.plot`
    call to draw the optimal line.

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

See Also
--------
PredictionErrorDisplay : Prediction error visualization for regression.
PredictionErrorDisplay.from_estimator : Prediction error visualization
    given an estimator and some data.

Examples
--------
>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import load_diabetes
>>> from sklearn.linear_model import Ridge
>>> from sklearn.metrics import PredictionErrorDisplay
>>> X, y = load_diabetes(return_X_y=True)
>>> ridge = Ridge().fit(X, y)
>>> y_pred = ridge.predict(X)
>>> disp = PredictionErrorDisplay.from_predictions(y_true=y, y_pred=y_pred)
>>> plt.show()
z.from_predictionsr   zWhen an integer, subsample=z should be positive.   z!When a floating-point, subsample=z should be in the (0, 1) range.)size)axisr   )r=   r   r   r   )r   r(   r   len
isinstancenumbersIntegralr)   Realintchoicer/   aranger   r1   )rM   r   r   r   rH   rI   r=   r   r   	n_samplesindicesvizs               r   rL   'PredictionErrorDisplay.from_predictions&  s(   l 	!CLL>1B!CD),7K	i!1!122A~ 1)<PQ   	7<<00A~a 7	{ C/ /  I12I Y%:"))"))I*>Y)OG#F!<F#F!<F

 xx)#	  
 	
r   )r:   r<   r2   r4   r   r   r   )r(   
__module____qualname____firstlineno____doc__r   r1   classmethodrQ   rL   __static_attributes__ r   r   r	   r	      s    AF f %fP  %f
 f
P  %v
 v
r   r	   )rY   numpyr/   utilsr   r   utils._optional_dependenciesr   utils._plottingr   r	   ri   r   r   <module>rn      s"      7 D 5P
 P
r   