`L ic9PddlZddlZddlmZmZddlmZddlm Z GddZ y)N)_safe_indexingcheck_random_state)check_matplotlib_support)_validate_style_kwargscjeZdZdZdZ d dddddZedddddddd Zedddddddd Zy) PredictionErrorDisplayaVisualization 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 `. For details regarding interpreting these plots, refer to the :ref:`Model Evaluation Guide `. .. 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 ||_||_yNy_truey_pred)selfr rs f/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/metrics/_plot/regression.py__init__zPredictionErrorDisplay.__init__Qs  Nresidual_vs_predicted)kindscatter_kwargs line_kwargscXt|jjdd}||vr!tddj |d|dddlm}|i}|i}d d d }d d dd}t||}t||}i||}i||}||j\} }|dk(rDttj|jtj|j} ttj|jtj|j} |j| | g| | gfi|d|_|j|j} } d\}}|j | | fi||_|j%dd|j'tj(| | d|j+tj(| | dn|jtj|jtj|jgddgfi|d|_|j |j|j|jz fi||_d\}}|j-||||_|j0|_|S)aPlot 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_predictedrz`kind` must be one of z, z. Got z instead.rNztab:blueg?)coloralphablackgffffff?z--)rr linestyler)Predicted valuesz Actual valuesequaldatalim) adjustable)num)rzResiduals (actual - predicted))xlabelylabel)r __class____name__ ValueErrorjoinmatplotlib.pyplotpyplotrsubplotsmaxnpr rminplotline_scatterscatter_ set_aspect set_xtickslinspace set_ytickssetax_figurefigure_)raxrrr expected_kindpltdefault_scatter_kwargsdefault_line_kwargs_ max_value min_valuex_datay_datar#r$s rr/zPredictionErrorDisplay.plotUsT !DNN$;$;#BMDJ"[[$++FF@NFF&BJJvvHHDM MM'iM 8 MM"++iB C MM"++iB C  $bffT[[&9:A DJ 'BJJ T[[4;;6:HDMRNFF fV,yy  ri)r subsample random_stater;rrc t|jd|j|} |j|| |||||| S)a3 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 `. For details regarding interpreting these plots, refer to the :ref:`Model Evaluation Guide `. .. 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 ` 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 rrrErFr;rr)rr&predictfrom_predictions) cls estimatorXyrrErFr;rrrs rfrom_estimatorz%PredictionErrorDisplay.from_estimatorsXt !CLL>!AB""1%##%)#$  rc t|jdt|}t|} t |t j r|dkrPtd|dt |t jr'|dks|dk\rtd|dt| |z}|G|| krB|jtj| |} t|| d }t|| d }||| } | j|||| S) 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 `. For details regarding interpreting these plots, refer to the :ref:`Model Evaluation Guide `. .. 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 ` 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_predictionsrzWhen an integer, subsample=z should be positive.z!When a floating-point, subsample=z should be in the (0, 1) range.)size)axisr )r;rrr)rr&rlen isinstancenumbersIntegralr'Realintchoicer-arangerr/) rJr rrrErFr;rr n_samplesindicesvizs rrIz'PredictionErrorDisplay.from_predictions&s%l !CLL>1B!CD),7 K i!1!1 2A~ 1)Y)OG#FG!rgs"7D5P P r