§
    rŠtj8)  ã                   óÆ   — d dl Z d dlmZ d dlZd dlmZ d dlmZ d dl	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZmZmZ d dlmZmZ  G d„ deee
¦  «        ZdS )é    N)ÚReal)Úsparse)Úlinprog)ÚBaseEstimatorÚRegressorMixinÚ_fit_context)ÚConvergenceWarning)ÚLinearModel)Ú_safe_indexing)ÚIntervalÚ
StrOptions)Ú_sparse_eye_arrayÚparse_versionÚ
sp_version)Ú_check_sample_weightÚvalidate_datac                   óÔ   ‡ — e Zd ZU dZ eeddd¬¦  «        g eeddd¬¦  «        gdg eh d	£¦  «        gedgd
œZee	d<   dddddd
œd„Z
 ed¬¦  «        dd„¦   «         Zˆ fd„Zˆ xZS )ÚQuantileRegressoraÍ  Linear regression model that predicts conditional quantiles.

    The linear :class:`QuantileRegressor` optimizes the pinball loss for a
    desired `quantile` and is robust to outliers.

    This model uses an L1 regularization like
    :class:`~sklearn.linear_model.Lasso`.

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

    .. versionadded:: 1.0

    Parameters
    ----------
    quantile : float, default=0.5
        The quantile that the model tries to predict. It must be strictly
        between 0 and 1. If 0.5 (default), the model predicts the 50%
        quantile, i.e. the median.

    alpha : float, default=1.0
        Regularization constant that multiplies the L1 penalty term.

    fit_intercept : bool, default=True
        Whether or not to fit the intercept.

    solver : {'highs-ds', 'highs-ipm', 'highs', 'interior-point',             'revised simplex'}, default='highs'
        Method used by :func:`scipy.optimize.linprog` to solve the linear
        programming formulation.

        It is recommended to use the highs methods because
        they are the fastest ones. Solvers "highs-ds", "highs-ipm" and "highs"
        support sparse input data and, in fact, always convert to sparse csc.

        From `scipy>=1.11.0`, "interior-point" is not available anymore.

        .. versionchanged:: 1.4
           The default of `solver` changed to `"highs"` in version 1.4.

    solver_options : dict, default=None
        Additional parameters passed to :func:`scipy.optimize.linprog` as
        options. If `None` and if `solver='interior-point'`, then
        `{"lstsq": True}` is passed to :func:`scipy.optimize.linprog` for the
        sake of stability.

    Attributes
    ----------
    coef_ : array of shape (n_features,)
        Estimated coefficients for the features.

    intercept_ : float
        The intercept of the model, aka bias term.

    n_features_in_ : int
        Number of features seen during :term:`fit`.

        .. versionadded:: 0.24

    feature_names_in_ : ndarray of shape (`n_features_in_`,)
        Names of features seen during :term:`fit`. Defined only when `X`
        has feature names that are all strings.

        .. versionadded:: 1.0

    n_iter_ : int
        The actual number of iterations performed by the solver.

    See Also
    --------
    Lasso : The Lasso is a linear model that estimates sparse coefficients
        with l1 regularization.
    HuberRegressor : Linear regression model that is robust to outliers.

    Examples
    --------
    >>> from sklearn.linear_model import QuantileRegressor
    >>> import numpy as np
    >>> n_samples, n_features = 10, 2
    >>> rng = np.random.RandomState(0)
    >>> y = rng.randn(n_samples)
    >>> X = rng.randn(n_samples, n_features)
    >>> # the two following lines are optional in practice
    >>> from sklearn.utils.fixes import sp_version, parse_version
    >>> reg = QuantileRegressor(quantile=0.8).fit(X, y)
    >>> np.mean(y <= reg.predict(X))
    np.float64(0.8)
    r   é   Úneither)ÚclosedNÚleftÚboolean>   úrevised simplexÚhighsúhighs-dsú	highs-ipmúinterior-point©ÚquantileÚalphaÚfit_interceptÚsolverÚsolver_optionsÚ_parameter_constraintsg      à?g      ð?Tr   c                óL   — || _         || _        || _        || _        || _        d S ©Nr   )Úselfr    r!   r"   r#   r$   s         ú\/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/linear_model/_quantile.pyÚ__init__zQuantileRegressor.__init__   s/   € ð !ˆŒØˆŒ
Ø*ˆÔØˆŒØ,ˆÔÐÐó    )Úprefer_skip_nested_validationc                 óö  — t          | ||g d¢dd¬¦  «        \  }}t          ||¦  «        }|j        d         }|}| j        r|dz  }t	          j        |¦  «        | j        z  }| j        dk    r0t          t          d¦  «        k    rt          d| j        › d	�¦  «        ‚t          j        |¦  «        r!| j        d
vrt          d| j        › d�¦  «        ‚| j        €| j        dk    rddi}n| j        }t	          j        |¦  «        d         }t          |¦  «        }	|	t          |¦  «        k     r(||         }t!          ||¦  «        }t!          ||¦  «        }t	          j        t	          j        d|z  |¬¦  «        || j        z  |d| j        z
  z  g¦  «        }
| j        r
d|
d<   d|
|<   | j        d
v rŠt)          |	|j        d¬¦  «        }| j        rOt          j        t	          j        |	df|j        ¬¦  «        ¦  «        }t          j        ||| | || gd¬¦  «        }nŠt          j        || || gd¬¦  «        }nmt	          j        |	¦  «        }| j        r6t	          j        |	df¦  «        }t	          j        ||| | || gd¬¦  «        }nt	          j        || || gd¬¦  «        }|}t5          |
||| j        |¬¦  «        }|j        }|j        sTdddddœ}t;          j        d|j        › d�|                      |j        d¦  «        z   dz   d z   |j!        z   tD          ¦  «         |d|…         ||d|z  …         z
  }|j#        | _$        | j        r|dd…         | _%        |d         | _&        n|| _%        d!| _&        | S )"aÅ  Fit the model according to the given training data.

        Parameters
        ----------
        X : {array-like, sparse matrix} of shape (n_samples, n_features)
            Training data.

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

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

        Returns
        -------
        self : object
            Returns self.
        )ÚcscÚcsrÚcooTF)Úaccept_sparseÚ	y_numericÚmulti_outputr   r   z1.11.0zSolver z- is not anymore available in SciPy >= 1.11.0.)r   r   r   z; does not support sparse X. Use solver 'highs' for example.NÚlstsqr   é   )Ú
fill_valuer.   )ÚdtypeÚformat)Úshaper7   )r8   )Úaxis)ÚcÚA_eqÚb_eqÚmethodÚoptionszIteration limit reached.z!Problem appears to be infeasible.z Problem appears to be unbounded.z#Numerical difficulties encountered.)r   r5   é   é   zDLinear programming for QuantileRegressor did not succeed.
Status is z: zunknown reasonú
zResult message of linprog:
g        )'r   r   r9   r"   ÚnpÚsumr!   r#   r   r   Ú
ValueErrorr   Úissparser$   ÚnonzeroÚlenr   ÚconcatenateÚfullr    r   r7   Ú	csc_arrayÚonesÚhstackÚeyer   ÚxÚsuccessÚwarningsÚwarnÚstatusÚ
setdefaultÚmessager	   ÚnitÚn_iter_Úcoef_Ú
intercept_)r(   ÚXÚyÚsample_weightÚ
n_featuresÚn_paramsr!   r$   ÚindicesÚ	n_indicesr;   rN   rL   r<   r=   ÚresultÚsolutionÚfailureÚparamss                      r)   ÚfitzQuantileRegressor.fitŽ   s?  € õ( ØØØØ/Ð/Ð/ØØð
ñ 
ô 
‰ˆˆ1õ -¨]¸AÑ>Ô>ˆà”W˜Q”Zˆ
ØˆàÔð 	Ø˜‰MˆHõ ”�}Ñ%Ô%¨¬
Ñ2ˆàŒ;Ð*Ò*Ð*­z½]È8Ñ=TÔ=TÒ/TÐ/TÝØT˜$œ+ÐTÐTÐTñô ð õ Œ?˜1ÑÔð 	 $¤+Ð5WÐ"WÐ"WÝð2˜$œ+ð 2ð 2ð 2ñô ð ð
 ÔÐ&¨4¬;Ð:JÒ+JÐ+JØ% t˜_ˆNˆNà!Ô0ˆNõ, ”*˜]Ñ+Ô+¨AÔ.ˆÝ˜‘L”Lˆ	Ø•s˜=Ñ)Ô)Ò)Ð)Ø)¨'Ô2ˆMÝ˜q 'Ñ*Ô*ˆAÝ˜q 'Ñ*Ô*ˆAÝŒNå”˜˜H™°Ð7Ñ7Ô7Ø ¤Ñ-Ø  T¤]Ñ!2Ñ3ðñ
ô 
ˆð Ôð 	àˆAˆa‰DØˆAˆh‰KàŒ;Ð<Ð<Ð<õ
 $ I°Q´WÀUÐKÑKÔKˆCØÔ!ð GÝÔ'­¬°yÀ!°nÈAÌGÐ(TÑ(TÔ(TÑUÔU�Ý”} d¨A°¨u°q°b¸#À¸tÐ%DÈUÐSÑSÔS��å”} a¨!¨¨S°3°$Ð%7ÀÐFÑFÔF��å”&˜Ñ#Ô#ˆCØÔ!ð BÝ”w 	¨1˜~Ñ.Ô.�Ý”~ t¨Q°°¸°r¸3ÀÀÐ&EÈAÐNÑNÔN��å”~ q¨1¨"¨c°C°4Ð&8¸qÐAÑAÔA�àˆåØØØØ”;Ø"ð
ñ 
ô 
ˆð ”8ˆØŒ~ð 	à-Ø6Ø5Ø8ð	ð ˆGõ ŒMð/Ø#œ]ð/ð /ð /à×$Ò$ V¤]Ð4DÑEÔEñFð ñð 1ñ	1ð
 ”.ñ!õ #ñô ð ð ˜)˜8˜)Ô$ x°¸1¸x¹<Ð0GÔ'HÑHˆà”zˆŒàÔð 	"Ø   œˆDŒJØ$ QœiˆDŒOˆOàˆDŒJØ!ˆDŒOØˆr+   c                 ó`   •— t          ¦   «                              ¦   «         }d|j        _        |S )NT)ÚsuperÚ__sklearn_tags__Ú
input_tagsr   )r(   ÚtagsÚ	__class__s     €r)   rh   z"QuantileRegressor.__sklearn_tags__*  s'   ø€ Ý‰wŒw×'Ò'Ñ)Ô)ˆØ!%ˆŒÔØˆr+   r'   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Údictr%   Ú__annotations__r*   r   re   rh   Ú__classcell__)rk   s   @r)   r   r      s'  ø€ € € € € € ðVð Vðr �X˜d A q°Ð;Ñ;Ô;Ð<Ø�(˜4  D°Ð8Ñ8Ô8Ð9Ø#˜àˆJðð ð ñô ð

ð   ˜,ð$ð $Ð˜Dð ð ñ ð* ØØØØð-ð -ð -ð -ð -ð €\°Ð5Ñ5Ô5ðYð Yð Yñ 6Ô5ðYðvð ð ð ð ð ð ð ð r+   r   )rQ   Únumbersr   ÚnumpyrC   Úscipyr   Úscipy.optimizer   Úsklearn.baser   r   r   Úsklearn.exceptionsr	   Úsklearn.linear_model._baser
   Úsklearn.utilsr   Úsklearn.utils._param_validationr   r   Úsklearn.utils.fixesr   r   r   Úsklearn.utils.validationr   r   r   © r+   r)   ú<module>r      s6  ðð €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "à DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø (Ð (Ð (Ð (Ð (Ð (Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HðYð Yð Yð Yð Y˜ ^°]ñ Yô Yð Yð Yð Yr+   