§
    rŠtjÕ•  ã                   óž  — d Z ddlZddlmZ ddlmZmZ ddl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 dd
lmZmZmZ ddlmZmZmZ ddlmZm Z m!Z!m"Z"m#Z# ddl$m%Z%m&Z& ddl'm(Z(m)Z) dZ*d(d„Z+	 	 	 	 	 d)d„Z, edgej-        g eeddd¬¦  «        dg eeddd¬¦  «        dgd edh¦  «        gdgdgdgdœd¬¦  «        dddddddœd„¦   «         Z. edgdg eeddd¬¦  «        dg eeddd¬¦  «        dgddgdgdgdgdgdœ	d¬¦  «        dddddddd œd!„¦   «         Z/ G d"„ d#ee¦  «        Z0	 	 	 d*d%„Z1 G d&„ d'ee¦  «        Z2dS )+z&Orthogonal matching pursuit algorithmsé    N)Úsqrt)ÚIntegralÚReal)Úlinalg)Úget_lapack_funcs)ÚRegressorMixinÚ_fit_context)ÚLinearModelÚMultiOutputLinearModelÚ_pre_fit)Úcheck_cv)ÚBunchÚas_float_arrayÚcheck_array)ÚIntervalÚ
StrOptionsÚvalidate_params)ÚMetadataRouterÚMethodMappingÚ_raise_for_paramsÚ_routing_enabledÚprocess_routing)ÚParallelÚdelayed)ÚFLOAT_DTYPESÚvalidate_datazŠOrthogonal matching pursuit ended prematurely due to linear dependence in the dictionary. The requested precision might not have been met.TFc                 ó$  — |r|                       d¦  «        } nt          j        | ¦  «        } t          j        | j        ¦  «        j        }t          j        d| f¦  «        \  }}t          d| f¦  «        \  }	t          j	        | j
        |¦  «        }
|}t          j        d¦  «        }d}t          j        | j        d         ¦  «        }|�| j        d         n|}t          j        ||f| j        ¬¦  «        }|rt          j        |¦  «        }	 t          j        t          j        t          j	        | j
        |¦  «        ¦  «        ¦  «        }||k     s|
|         d	z  |k     r#t#          j        t&          t(          d	¬
¦  «         �næ|dk    rát          j	        | dd…d|…f         j
        | dd…|f         ¦  «        ||d|…f<   t          j        |d|…d|…f         ||d|…f         dddd¬¦  «          |||d|…f         ¦  «        d	z  }t          j        | dd…|f         ¦  «        d	z  |z
  }||k    r#t#          j        t&          t(          d	¬
¦  «         �nt/          |¦  «        |||f<   n!t          j        | dd…|f         ¦  «        |d<    || j
        |         | j
        |         ¦  «        \  | j
        |<   | j
        |<   |
|         |
|         c|
|<   |
|<   ||         ||         c||<   ||<   |dz  } |	|d|…d|…f         |
d|…         dd¬¦  «        \  }}|r||d|…|dz
  f<   |t          j	        | dd…d|…f         |¦  «        z
  }|� ||¦  «        d	z  |k    rn	||k    rn�Œ\|r||d|…         |dd…d|…f         |fS ||d|…         |fS )a•  Orthogonal Matching Pursuit step using the Cholesky decomposition.

    Parameters
    ----------
    X : ndarray of shape (n_samples, n_features)
        Input dictionary. Columns are assumed to have unit norm.

    y : ndarray of shape (n_samples,)
        Input targets.

    n_nonzero_coefs : int
        Targeted number of non-zero elements.

    tol : float, default=None
        Targeted squared error, if not None overrides n_nonzero_coefs.

    copy_X : bool, default=True
        Whether the design matrix X must be copied by the algorithm. A false
        value is only helpful if X is already Fortran-ordered, otherwise a
        copy is made anyway.

    return_path : bool, default=False
        Whether to return every value of the nonzero coefficients along the
        forward path. Useful for cross-validation.

    Returns
    -------
    gamma : ndarray of shape (n_nonzero_coefs,)
        Non-zero elements of the solution.

    idx : ndarray of shape (n_nonzero_coefs,)
        Indices of the positions of the elements in gamma within the solution
        vector.

    coef : ndarray of shape (n_features, n_nonzero_coefs)
        The first k values of column k correspond to the coefficient value
        for the active features at that step. The lower left triangle contains
        garbage. Only returned if ``return_path=True``.

    n_active : int
        Number of active features at convergence.
    ÚF©Únrm2Úswap©Úpotrsr   é   N©ÚdtypeTé   ©Ú
stacklevelF©ÚtransÚlowerÚoverwrite_bÚcheck_finite©r   r   ©r,   r-   )ÚcopyÚnpÚasfortranarrayÚfinfor&   Úepsr   Úget_blas_funcsr   ÚdotÚTÚemptyÚarangeÚshapeÚ
empty_likeÚargmaxÚabsÚwarningsÚwarnÚ	prematureÚRuntimeWarningÚsolve_triangularÚnormr   )ÚXÚyÚn_nonzero_coefsÚtolÚcopy_XÚreturn_pathÚ	min_floatr    r!   r#   ÚalphaÚresidualÚgammaÚn_activeÚindicesÚmax_featuresÚLÚcoefsÚlamÚvÚLkkÚ_s                         úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/linear_model/_omp.pyÚ_cholesky_omprY   $   sþ  € ðV ð !Ø�FŠF�3‰KŒKˆˆåÔ˜aÑ Ô ˆå”˜œÑ!Ô!Ô%€IÝÔ&Ð'7¸!¸Ñ>Ô>�J€Dˆ$Ý 
¨Q¨DÑ1Ô1�H€UåŒF�1”3˜‰NŒN€EØ€HÝŒH�Q‰KŒK€EØ€HÝŒi˜œ œ
Ñ#Ô#€Gà!$ �1”7˜1”:�:°o€Lå
Œ�, Ð-°Q´WÐ=Ñ=Ô=€Aàð !Ý”˜aÑ Ô ˆð+ÝŒi�œ�rœv a¤c¨8Ñ4Ô4Ñ5Ô5Ñ6Ô6ˆØ�Š>ˆ>˜U 3œZ¨1™_¨yÒ8Ð8åŒM�)¥^ÀÐBÑBÔBÐBÙà�aŠ<ˆ<å%'¤V¨A¨a¨a¨a°°(°¨l¬OÔ,=¸qÀÀÀÀCÀ¼yÑ%IÔ%IˆAˆh˜	˜˜	Ð!Ñ"ÝÔ#Ø�)�8�)˜Y˜h˜YÐ&Ô'Ø�(˜I˜X˜IÐ%Ô&ØØØ Ø"ðñ ô ð ð ��Q�x  ( Ð*Ô+Ñ,Ô,°Ñ1ˆAÝ”+˜a    3 œiÑ(Ô(¨AÑ-°Ñ1ˆCØ�iÒÐÝ”�i­ÀAÐFÑFÔFÐFÙÝ$(¨¡I¤IˆAˆh˜Ð Ñ!Ð!å”k ! A A A s F¤)Ñ,Ô,ˆAˆd‰Gà"& $ q¤s¨8¤}°a´c¸#´hÑ"?Ô"?ÑˆŒˆH‰�q”s˜3‘xØ&+¨C¤j°%¸´/Ð#ˆˆh‰˜˜s™Ø*1°#¬,¸ÀÔ8IÐ'ˆ�Ñ˜7 3™<Ø�A‰ˆð �5Øˆiˆxˆi˜˜(˜Ð"Ô# U¨9¨H¨9Ô%5¸TÈuð
ñ 
ô 
‰ˆˆqð ð 	3Ø-2ˆE�)�8�)˜X¨™\Ð)Ñ*Ø•r”v˜a    9 H 9 œo¨uÑ5Ô5Ñ5ˆØˆ?˜t˜t H™~œ~°Ñ2°cÒ9Ð9ØØ˜Ò%Ð%ØñW+ðZ ð 3Ø�g˜i˜x˜iÔ(¨%°°°°9°H°9°Ô*=¸xÐGÐGà�g˜i˜x˜iÔ(¨(Ð2Ð2ó    c                 ó0  — |r|                       d¦  «        nt          j        | ¦  «        } |s|j        j        s|                      ¦   «         }t          j        | j        ¦  «        j        }t          j	        d| f¦  «        \  }	}
t          d| f¦  «        \  }t          j        t          | ¦  «        ¦  «        }|}|}d}t          j        d¦  «        }d}|�t          | ¦  «        n|}t          j        ||f| j        ¬¦  «        }d|d<   |rt          j        |¦  «        }	 t          j        t          j        |¦  «        ¦  «        }||k     s||         d
z  |k     r#t#          j        t&          t(          d¬¦  «         �nð|dk    r¦| |d|…f         ||d|…f<   t          j        |d|…d|…f         ||d|…f         ddd	d¬¦  «          |	||d|…f         ¦  «        d
z  }| ||f         |z
  }||k    r#t#          j        t&          t(          d¬¦  «         �nYt-          |¦  «        |||f<   nt-          | ||f         ¦  «        |d<    |
| |         | |         ¦  «        \  | |<   | |<    |
| j        |         | j        |         ¦  «        \  | j        |<   | j        |<   ||         ||         c||<   ||<   ||         ||         c||<   ||<   |dz  } ||d|…d|…f         |d|…         d	d¬¦  «        \  }}|r||d|…|dz
  f<   t          j        | dd…d|…f         |¦  «        }||z
  }|�<||z  }t          j        ||d|…         ¦  «        }||z  }t!          |¦  «        |k    rn
n||k    rn�ŒN|r||d|…         |dd…d|…f         |fS ||d|…         |fS )a®  Orthogonal Matching Pursuit step on a precomputed Gram matrix.

    This function uses the Cholesky decomposition method.

    Parameters
    ----------
    Gram : ndarray of shape (n_features, n_features)
        Gram matrix of the input data matrix.

    Xy : ndarray of shape (n_features,)
        Input targets.

    n_nonzero_coefs : int
        Targeted number of non-zero elements.

    tol_0 : float, default=None
        Squared norm of y, required if tol is not None.

    tol : float, default=None
        Targeted squared error, if not None overrides n_nonzero_coefs.

    copy_Gram : bool, default=True
        Whether the gram matrix must be copied by the algorithm. A false
        value is only helpful if it is already Fortran-ordered, otherwise a
        copy is made anyway.

    copy_Xy : bool, default=True
        Whether the covariance vector Xy must be copied by the algorithm.
        If False, it may be overwritten.

    return_path : bool, default=False
        Whether to return every value of the nonzero coefficients along the
        forward path. Useful for cross-validation.

    Returns
    -------
    gamma : ndarray of shape (n_nonzero_coefs,)
        Non-zero elements of the solution.

    idx : ndarray of shape (n_nonzero_coefs,)
        Indices of the positions of the elements in gamma within the solution
        vector.

    coefs : ndarray of shape (n_features, n_nonzero_coefs)
        The first k values of column k correspond to the coefficient value
        for the active features at that step. The lower left triangle contains
        garbage. Only returned if ``return_path=True``.

    n_active : int
        Number of active features at convergence.
    r   r   r"   r   Nr%   g      ð?r/   Tr'   é   r(   r$   Fr*   r0   )r1   r2   r3   ÚflagsÚ	writeabler4   r&   r5   r   r6   r   r:   Úlenr9   r<   r=   r>   r?   r@   rA   rB   rC   r   r8   r7   Úinner)ÚGramÚXyrG   Útol_0rH   Ú	copy_GramÚcopy_XyrJ   rK   r    r!   r#   rP   rL   Útol_currÚdeltarN   rO   rQ   rR   rS   rT   rU   rV   rW   Úbetas                             rX   Ú	_gram_ompri   ˜   s*  € ðz 'ÐCˆ4�9Š9�S‰>Œ>ˆ>­BÔ,=¸dÑ,CÔ,C€Dàð �b”hÔ(ð Ø�WŠW‰YŒYˆå”˜œÑ$Ô$Ô(€IÝÔ&Ð'7¸$¸ÑAÔA�J€Dˆ$Ý 
¨T¨GÑ4Ô4�H€UåŒi�˜D™	œ	Ñ"Ô"€GØ€EØ€HØ€EÝŒH�Q‰KŒK€EØ€Hà # •3�t‘9”9�9°_€Lå
Œ�, Ð-°T´ZÐ@Ñ@Ô@€Aà€A€d�GØð !Ý”˜aÑ Ô ˆð-ÝŒi�œ˜u™œÑ&Ô&ˆØ�Š>ˆ>˜U 3œZ¨1™_¨yÒ8Ð8åŒM�)¥^ÀÐBÑBÔBÐBÙØ�aŠ<ˆ<Ø%)¨#¨y°¨y¨.Ô%9ˆAˆh˜	˜˜	Ð!Ñ"ÝÔ#Ø�)�8�)˜Y˜h˜YÐ&Ô'Ø�(˜I˜X˜IÐ%Ô&ØØØ Ø"ðñ ô ð ð ��Q�x  ( Ð*Ô+Ñ,Ô,°Ñ1ˆAØ�s˜C�x”. 1Ñ$ˆCØ�iÒÐÝ”�i­ÀAÐFÑFÔFÐFÙÝ$(¨¡I¤IˆAˆh˜Ð Ñ!Ð!å˜4  S œ>Ñ*Ô*ˆAˆd‰Gà$( D¨¨h¬¸¸c¼Ñ$CÔ$CÑ!ˆˆX‰˜˜S™	Ø(,¨¨T¬V°HÔ-=¸t¼vÀc¼{Ñ(KÔ(KÑ%ˆŒˆxÑ˜$œ& ™+Ø*1°#¬,¸ÀÔ8IÐ'ˆ�Ñ˜7 3™<Ø " 3¤¨¨H¬Ðˆˆ8‰�b˜‘gØ�A‰ˆà�5Øˆiˆxˆi˜˜(˜Ð"Ô# R¨	¨¨	¤]¸$ÈEð
ñ 
ô 
‰ˆˆqð ð 	3Ø-2ˆE�)�8�)˜X¨™\Ð)Ñ*ÝŒv�d˜1˜1˜1˜i˜x˜i˜<Ô(¨%Ñ0Ô0ˆØ�T‘	ˆØˆ?Ø˜ÑˆHÝ”H˜U D¨¨(¨¤OÑ4Ô4ˆEØ˜ÑˆHÝ�8‰}Œ} Ò#Ð#Øð $à˜Ò%Ð%Øñ[-ð^ ð 3Ø�g˜i˜x˜iÔ(¨%°°°°9°H°9°Ô*=¸xÐGÐGà�g˜i˜x˜iÔ(¨(Ð2Ð2rZ   z
array-liker$   Úleft©ÚclosedÚbooleanÚauto)rE   rF   rG   rH   Ú
precomputerI   rJ   Úreturn_n_iter©Úprefer_skip_nested_validation)rG   rH   ro   rI   rJ   rp   c          
      ól  — t          | d|¬¦  «        } d}|j        dk    r|                     dd¦  «        }t          |¦  «        }|j        d         dk    rd}|€-|€+t	          t          d| j        d         z  ¦  «        d¦  «        }|€ || j        d         k    rt          d	¦  «        ‚|d
k    r| j        d         | j        d         k    }|r}t          j        | j	        | ¦  «        }t          j
        |¦  «        }t          j        | j	        |¦  «        }	|�t          j        |dz  d¬¦  «        }
nd}
t          ||	|||
|d|¬¦  «        S |r9t          j        | j        d         |j        d         | j        d         f¦  «        }n,t          j        | j        d         |j        d         f¦  «        }g }t          |j        d         ¦  «        D ]£}t          | |dd…|f         ||||¬¦  «        }|r^|\  }}}}|dd…dd…dt!          |¦  «        …f         }t#          |j	        ¦  «        D ]#\  }}|d|dz   …         ||d|dz   …         ||f<   Œ$n|\  }}}||||f<   |                     |¦  «         Œ¤|j        d         dk    r|d         }|rt          j        |¦  «        |fS t          j        |¦  «        S )a[  Orthogonal Matching Pursuit (OMP).

    Solves n_targets Orthogonal Matching Pursuit problems.
    An instance of the problem has the form:

    When parametrized by the number of non-zero coefficients using
    `n_nonzero_coefs`:
    argmin ||y - X\gamma||^2 subject to ||\gamma||_0 <= n_{nonzero coefs}

    When parametrized by error using the parameter `tol`:
    argmin ||\gamma||_0 subject to ||y - X\gamma||^2 <= tol

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

    Parameters
    ----------
    X : array-like of shape (n_samples, n_features)
        Input data. Columns are assumed to have unit norm.

    y : ndarray of shape (n_samples,) or (n_samples, n_targets)
        Input targets.

    n_nonzero_coefs : int, default=None
        Desired number of non-zero entries in the solution. If None (by
        default) this value is set to 10% of n_features.

    tol : float, default=None
        Maximum squared norm of the residual. If not None, overrides n_nonzero_coefs.

    precompute : 'auto' or bool, default=False
        Whether to perform precomputations. Improves performance when n_targets
        or n_samples is very large.

    copy_X : bool, default=True
        Whether the design matrix X must be copied by the algorithm. A false
        value is only helpful if X is already Fortran-ordered, otherwise a
        copy is made anyway.

    return_path : bool, default=False
        Whether to return every value of the nonzero coefficients along the
        forward path. Useful for cross-validation.

    return_n_iter : bool, default=False
        Whether or not to return the number of iterations.

    Returns
    -------
    coef : ndarray of shape (n_features,) or (n_features, n_targets)
        Coefficients of the OMP solution. If `return_path=True`, this contains
        the whole coefficient path. In this case its shape is
        (n_features, n_features) or (n_features, n_targets, n_features) and
        iterating over the last axis generates coefficients in increasing order
        of active features.

    n_iters : array-like or int
        Number of active features across every target. Returned only if
        `return_n_iter` is set to True.

    See Also
    --------
    OrthogonalMatchingPursuit : Orthogonal Matching Pursuit model.
    orthogonal_mp_gram : Solve OMP problems using Gram matrix and the product X.T * y.
    lars_path : Compute Least Angle Regression or Lasso path using LARS algorithm.
    sklearn.decomposition.sparse_encode : Sparse coding.

    Notes
    -----
    Orthogonal matching pursuit was introduced in S. Mallat, Z. Zhang,
    Matching pursuits with time-frequency dictionaries, IEEE Transactions on
    Signal Processing, Vol. 41, No. 12. (December 1993), pp. 3397-3415.
    (https://www.di.ens.fr/~mallat/papiers/MallatPursuit93.pdf)

    This implementation is based on Rubinstein, R., Zibulevsky, M. and Elad,
    M., Efficient Implementation of the K-SVD Algorithm using Batch Orthogonal
    Matching Pursuit Technical Report - CS Technion, April 2008.
    https://www.cs.technion.ac.il/~ronrubin/Publications/KSVD-OMP-v2.pdf

    Examples
    --------
    >>> from sklearn.datasets import make_regression
    >>> from sklearn.linear_model import orthogonal_mp
    >>> X, y = make_regression(noise=4, random_state=0)
    >>> coef = orthogonal_mp(X, y)
    >>> coef.shape
    (100,)
    >>> X[:1,] @ coef
    array([-78.68])
    r   ©Úorderr1   Fr$   éÿÿÿÿTNçš™™™™™¹?ú>The number of atoms cannot be more than the number of featuresrn   r   r'   ©Úaxis)rG   rH   Únorms_squaredrd   re   rJ   )rI   rJ   )r   ÚndimÚreshaper;   ÚmaxÚintÚ
ValueErrorr2   r7   r8   r3   ÚsumÚorthogonal_mp_gramÚzerosÚrangerY   r_   Ú	enumerateÚappendÚsqueeze)rE   rF   rG   rH   ro   rI   rJ   rp   ÚGrb   r{   ÚcoefÚn_itersÚkÚoutrW   ÚidxrS   Ún_iterrO   Úxs                        rX   Úorthogonal_mpr�   "  s  € õ` 	�A˜S vÐ.Ñ.Ô.€AØ€FØ„v�‚{€{Ø�IŠI�b˜!ÑÔˆÝ�A‰Œ€AØ„wˆq„z�A‚~€~ØˆØÐ 3 ;õ �c #¨¬°¬
Ñ"2Ñ3Ô3°QÑ7Ô7ˆØ
€{�¨¬°¬Ò3Ð3ÝØLñ
ô 
ð 	
ð �VÒÐØ”W˜Q”Z !¤'¨!¤*Ò,ˆ
Øð 
ÝŒF�1”3˜‰NŒNˆÝÔ˜aÑ Ô ˆÝŒV�A”C˜‰^Œ^ˆØˆ?ÝœF A q¡D°Ð2Ñ2Ô2ˆMˆMà ˆMÝ!ØØØ+ØØ'ØØØ#ð	
ñ 	
ô 	
ð 		
ð ð 2ÝŒx˜œ œ Q¤W¨Q¤Z°´¸´Ð<Ñ=Ô=ˆˆåŒx˜œ œ Q¤W¨Q¤ZÐ0Ñ1Ô1ˆØ€Gå�1”7˜1”:ÑÔð ð ˆÝØˆq����A�Œw˜¨°VÈð
ñ 
ô 
ˆð ð 	Ø$'Ñ!ˆAˆs�E˜6Ø˜˜˜˜1˜1˜1˜j¥ C¡¤˜jÐ(Ô)ˆDÝ(¨¬Ñ1Ô1ð Kð K‘�˜!Ø9:¸>¸XÈ¹\¸>Ô9J��S˜˜8 a™<˜Ô(¨!¨XÐ5Ñ6Ð6ðKð !‰NˆAˆs�FØˆD��a�‰LØ�Š�vÑÔÐÐà„wˆq„z�Q‚€Ø˜!”*ˆàð  ÝŒz˜$ÑÔ Ð(Ð(åŒz˜$ÑÔÐrZ   Úneither)	ra   rb   rG   rH   r{   rd   re   rJ   rp   )rG   rH   r{   rd   re   rJ   rp   c                óB  — t          | d|¬¦  «        } t          j        |¦  «        }|j        dk    r|j        d         dk    rd}|j        dk    r|dd…t          j        f         }|�|g}|s|j        j        s|                     ¦   «         }|€!|€t          dt          | ¦  «        z  ¦  «        }|�|€t          d¦  «        ‚|�|dk     rt          d	¦  «        ‚|€|dk    rt          d
¦  «        ‚|€"|t          | ¦  «        k    rt          d¦  «        ‚|rDt          j        t          | ¦  «        |j        d         t          | ¦  «        f| j        ¬¦  «        }	n5t          j        t          | ¦  «        |j        d         f| j        ¬¦  «        }	g }
t          |j        d         ¦  «        D ]¯}t          | |dd…|f         ||�||         nd||d|¬¦  «        }|r^|\  }}}}|	dd…dd…dt          |¦  «        …f         }	t!          |j        ¦  «        D ]#\  }}|d|dz   …         |	|d|dz   …         ||f<   Œ$n|\  }}}||	||f<   |
                     |¦  «         Œ°|j        d         dk    r|
d         }
|rt          j        |	¦  «        |
fS t          j        |	¦  «        S )ak  Gram Orthogonal Matching Pursuit (OMP).

    Solves n_targets Orthogonal Matching Pursuit problems using only
    the Gram matrix X.T * X and the product X.T * y.

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

    Parameters
    ----------
    Gram : array-like of shape (n_features, n_features)
        Gram matrix of the input data: `X.T * X`.

    Xy : array-like of shape (n_features,) or (n_features, n_targets)
        Input targets multiplied by `X`: `X.T * y`.

    n_nonzero_coefs : int, default=None
        Desired number of non-zero entries in the solution. If `None` (by
        default) this value is set to 10% of n_features.

    tol : float, default=None
        Maximum squared norm of the residual. If not `None`,
        overrides `n_nonzero_coefs`.

    norms_squared : array-like of shape (n_targets,), default=None
        Squared L2 norms of the lines of `y`. Required if `tol` is not None.

    copy_Gram : bool, default=True
        Whether the gram matrix must be copied by the algorithm. A `False`
        value is only helpful if it is already Fortran-ordered, otherwise a
        copy is made anyway.

    copy_Xy : bool, default=True
        Whether the covariance vector `Xy` must be copied by the algorithm.
        If `False`, it may be overwritten.

    return_path : bool, default=False
        Whether to return every value of the nonzero coefficients along the
        forward path. Useful for cross-validation.

    return_n_iter : bool, default=False
        Whether or not to return the number of iterations.

    Returns
    -------
    coef : ndarray of shape (n_features,) or (n_features, n_targets)
        Coefficients of the OMP solution. If `return_path=True`, this contains
        the whole coefficient path. In this case its shape is
        `(n_features, n_features)` or `(n_features, n_targets, n_features)` and
        iterating over the last axis yields coefficients in increasing order
        of active features.

    n_iters : list or int
        Number of active features across every target. Returned only if
        `return_n_iter` is set to True.

    See Also
    --------
    OrthogonalMatchingPursuit : Orthogonal Matching Pursuit model (OMP).
    orthogonal_mp : Solves n_targets Orthogonal Matching Pursuit problems.
    lars_path : Compute Least Angle Regression or Lasso path using
        LARS algorithm.
    sklearn.decomposition.sparse_encode : Generic sparse coding.
        Each column of the result is the solution to a Lasso problem.

    Notes
    -----
    Orthogonal matching pursuit was introduced in G. Mallat, Z. Zhang,
    Matching pursuits with time-frequency dictionaries, IEEE Transactions on
    Signal Processing, Vol. 41, No. 12. (December 1993), pp. 3397-3415.
    (https://www.di.ens.fr/~mallat/papiers/MallatPursuit93.pdf)

    This implementation is based on Rubinstein, R., Zibulevsky, M. and Elad,
    M., Efficient Implementation of the K-SVD Algorithm using Batch Orthogonal
    Matching Pursuit Technical Report - CS Technion, April 2008.
    https://www.cs.technion.ac.il/~ronrubin/Publications/KSVD-OMP-v2.pdf

    Examples
    --------
    >>> from sklearn.datasets import make_regression
    >>> from sklearn.linear_model import orthogonal_mp_gram
    >>> X, y = make_regression(noise=4, random_state=0)
    >>> coef = orthogonal_mp_gram(X.T @ X, X.T @ y)
    >>> coef.shape
    (100,)
    >>> X[:1,] @ coef
    array([-78.68])
    r   rt   r$   TNrw   zSGram OMP needs the precomputed norms in order to evaluate the error sum of squares.r   zEpsilon cannot be negativez$The number of atoms must be positiverx   r%   F)rd   re   rJ   )r   r2   Úasarrayr|   r;   Únewaxisr]   r^   r1   r   r_   r€   rƒ   r&   r„   ri   r…   r8   r†   r‡   )ra   rb   rG   rH   r{   rd   re   rJ   rp   r‰   rŠ   r‹   rŒ   rW   r�   rS   rŽ   rO   r�   s                      rX   r‚   r‚   Ó  s  € õb �t 3¨YÐ7Ñ7Ô7€DÝ	Œ�B‰Œ€BØ	„w�‚{€{�r”x ”{ Q’�àˆ	Ø	„w�!‚|€|Ø���•2”:�ÔˆØˆ?Ø*˜OˆMØð �b”hÔ(ð à�WŠW‰YŒYˆàÐ 3 ;Ý˜c¥C¨¡I¤I™oÑ.Ô.ˆØ
€˜=Ð0Ýð4ñ
ô 
ð 	
ð €˜3 š7˜7ÝÐ5Ñ6Ô6Ð6Ø
€{�¨!Ò+Ð+ÝÐ?Ñ@Ô@Ð@Ø
€{�­¨T©¬Ò2Ð2ÝØLñ
ô 
ð 	
ð ð DÝŒx�˜T™œ B¤H¨Q¤Kµ°T±´Ð;À4Ä:ÐNÑNÔNˆˆåŒx�˜T™œ B¤H¨Q¤KÐ0¸¼
ÐCÑCÔCˆà€GÝ�2”8˜A”;ÑÔð ð ˆÝØØˆqˆqˆq�!ˆtŒHØØ # ˆM˜!ÔÐ°TØØØØ#ð	
ñ 	
ô 	
ˆð ð 	Ø$'Ñ!ˆAˆs�E˜6Ø˜˜˜˜1˜1˜1˜j¥ C¡¤˜jÐ(Ô)ˆDÝ(¨¬Ñ1Ô1ð Kð K‘�˜!Ø9:¸>¸XÈ¹\¸>Ô9J��S˜˜8 a™<˜Ô(¨!¨XÐ5Ñ6Ð6ðKð !‰NˆAˆs�FØˆD��a�‰LØ�Š�vÑÔÐÐà	„x�„{�aÒÐØ˜!”*ˆàð  ÝŒz˜$ÑÔ Ð(Ð(åŒz˜$ÑÔÐrZ   c                   ó¾   — e Zd ZU dZ eeddd¬¦  «        dg eeddd¬¦  «        dgdg edh¦  «        dgd	œZe	e
d
<   ddddd	œd„Z ed¬¦  «        d„ ¦   «         ZdS )ÚOrthogonalMatchingPursuita¦  Orthogonal Matching Pursuit model (OMP).

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

    Parameters
    ----------
    n_nonzero_coefs : int, default=None
        Desired number of non-zero entries in the solution. Ignored if `tol` is set.
        When `None` and `tol` is also `None`, this value is either set to 10% of
        `n_features` or 1, whichever is greater.

    tol : float, default=None
        Maximum squared norm of the residual. If not None, overrides n_nonzero_coefs.

    fit_intercept : bool, default=True
        Whether to calculate the intercept for this model. If set
        to false, no intercept will be used in calculations
        (i.e. data is expected to be centered).

    precompute : 'auto' or bool, default='auto'
        Whether to use a precomputed Gram and Xy matrix to speed up
        calculations. Improves performance when :term:`n_targets` or
        :term:`n_samples` is very large.

    Attributes
    ----------
    coef_ : ndarray of shape (n_features,) or (n_targets, n_features)
        Parameter vector (w in the formula).

    intercept_ : float or ndarray of shape (n_targets,)
        Independent term in decision function.

    n_iter_ : int or array-like
        Number of active features across every target.

    n_nonzero_coefs_ : int or None
        The number of non-zero coefficients in the solution or `None` when `tol` is
        set. If `n_nonzero_coefs` is None and `tol` is None this value is either set
        to 10% of `n_features` or 1, whichever is greater.

    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

    See Also
    --------
    orthogonal_mp : Solves n_targets Orthogonal Matching Pursuit problems.
    orthogonal_mp_gram :  Solves n_targets Orthogonal Matching Pursuit
        problems using only the Gram matrix X.T * X and the product X.T * y.
    lars_path : Compute Least Angle Regression or Lasso path using LARS algorithm.
    Lars : Least Angle Regression model a.k.a. LAR.
    LassoLars : Lasso model fit with Least Angle Regression a.k.a. Lars.
    sklearn.decomposition.sparse_encode : Generic sparse coding.
        Each column of the result is the solution to a Lasso problem.
    OrthogonalMatchingPursuitCV : Cross-validated
        Orthogonal Matching Pursuit model (OMP).

    Notes
    -----
    Orthogonal matching pursuit was introduced in G. Mallat, Z. Zhang,
    Matching pursuits with time-frequency dictionaries, IEEE Transactions on
    Signal Processing, Vol. 41, No. 12. (December 1993), pp. 3397-3415.
    (https://www.di.ens.fr/~mallat/papiers/MallatPursuit93.pdf)

    This implementation is based on Rubinstein, R., Zibulevsky, M. and Elad,
    M., Efficient Implementation of the K-SVD Algorithm using Batch Orthogonal
    Matching Pursuit Technical Report - CS Technion, April 2008.
    https://www.cs.technion.ac.il/~ronrubin/Publications/KSVD-OMP-v2.pdf

    Examples
    --------
    >>> from sklearn.linear_model import OrthogonalMatchingPursuit
    >>> from sklearn.datasets import make_regression
    >>> X, y = make_regression(noise=4, random_state=0)
    >>> reg = OrthogonalMatchingPursuit().fit(X, y)
    >>> reg.score(X, y)
    0.9991
    >>> reg.predict(X[:1,])
    array([-78.3854])
    r$   Nrj   rk   r   rm   rn   ©rG   rH   Úfit_interceptro   Ú_parameter_constraintsTc                ó>   — || _         || _        || _        || _        d S ©Nr—   )ÚselfrG   rH   r˜   ro   s        rX   Ú__init__z"OrthogonalMatchingPursuit.__init__å  s&   € ð  /ˆÔØˆŒØ*ˆÔØ$ˆŒˆˆrZ   rq   c           
      óÀ  — t          | ||ddt          ¬¦  «        \  }}|j        d         }t          ||d| j        | j        dd¬¦  «        \  }}}}}}}|j        dk    r|dd…t          j        f         }| j	        €-| j
        €&t          t          d|z  ¦  «        d¦  «        | _        n| j
        �d| _        n| j	        | _        |du r)t          ||| j        | j
        ddd¬¦  «        \  }	| _        nK| j
        �t          j        |d	z  d
¬¦  «        nd}
t#          ||| j        | j
        |
ddd¬¦  «        \  }	| _        |	j        | _        |                      |||¦  «         | S )a˜  Fit the model using X, y as training data.

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

        y : array-like of shape (n_samples,) or (n_samples, n_targets)
            Target values. Will be cast to X's dtype if necessary.

        Returns
        -------
        self : object
            Returns an instance of self.
        T)Úmulti_outputÚ	y_numericr&   r$   NF)r1   Ú
check_gramrw   )rG   rH   ro   rI   rp   r'   r   ry   )rb   rG   rH   r{   rd   re   rp   )r   r   r;   r   ro   r˜   r|   r2   r”   rG   rH   r~   r   Ún_nonzero_coefs_r�   Ún_iter_r�   r‚   r8   Úcoef_Ú_set_intercept)rœ   rE   rF   Ú
n_featuresÚX_offsetÚy_offsetÚX_scalera   rb   r¤   Únorms_sqs              rX   ÚfitzOrthogonalMatchingPursuit.fitò  s¬  € õ" Ø�!�Q T°TÅð
ñ 
ô 
‰ˆˆ1ð ”W˜Q”Zˆ
å6>ØØØØŒOØÔØØð7
ñ 7
ô 7
Ñ3ˆˆ1ˆh˜ '¨4°ð Œ6�QŠ;ˆ;Ø�!�!�!•R”Z�-Ô ˆAàÔÐ'¨D¬HÐ,<õ %(­¨C°*Ñ,<Ñ(=Ô(=¸qÑ$AÔ$AˆDÔ!Ð!ØŒXÐ!Ø$(ˆDÔ!Ð!à$(Ô$8ˆDÔ!à�5ˆ=ˆ=Ý"/ØØØ $Ô 5Ø”HØ ØØ"ð#ñ #ô #ÑˆE�4”<�<ð 04¬xÐ/C•r”v˜a ™d¨Ð+Ñ+Ô+Ð+ÈˆHå"4ØØØ $Ô 5Ø”HØ&ØØØ"ð	#ñ 	#ô 	#ÑˆE�4”<ð ”WˆŒ
Ø×Ò˜H h°Ñ8Ô8Ð8ØˆrZ   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r™   ÚdictÚ__annotations__r�   r	   r«   © rZ   rX   r–   r–   …  sç   € € € € € € ðVð Vðr %˜H X¨q°$¸vÐFÑFÔFÈÐMØ�˜˜q $¨vÐ6Ñ6Ô6¸Ð=Ø#˜Ø!�z 6 (Ñ+Ô+¨YÐ7ð	$ð $Ð˜Dð ð ñ ð ØØØð%ð %ð %ð %ð %ð €\°Ð5Ñ5Ô5ðDð Dñ 6Ô5ðDð Dð DrZ   r–   éd   c           	      ó   — |rP|                       ¦   «         } |                      ¦   «         }|                      ¦   «         }|                      ¦   «         }|rb|                      d¬¦  «        }| |z  } ||z  }|                     d¬¦  «        }t          |d¬¦  «        }||z  }t          |d¬¦  «        }||z  }t          | ||dddd¬¦  «        }	|	j        dk    r|	dd…t
          j        f         }	t          j        |	j        |j        ¦  «        |z
  S )	a[  Compute the residues on left-out data for a full LARS path.

    Parameters
    ----------
    X_train : ndarray of shape (n_samples, n_features)
        The data to fit the LARS on.

    y_train : ndarray of shape (n_samples)
        The target variable to fit LARS on.

    X_test : ndarray of shape (n_samples, n_features)
        The data to compute the residues on.

    y_test : ndarray of shape (n_samples)
        The target variable to compute the residues on.

    copy : bool, default=True
        Whether X_train, X_test, y_train and y_test should be copied.  If
        False, they may be overwritten.

    fit_intercept : bool, default=True
        Whether to calculate the intercept for this model. If set
        to false, no intercept will be used in calculations
        (i.e. data is expected to be centered).

    max_iter : int, default=100
        Maximum numbers of iterations to perform, therefore maximum features
        to include. 100 by default.

    Returns
    -------
    residues : ndarray of shape (n_samples, max_features)
        Residues of the prediction on the test data.
    r   ry   F)r1   NT)rG   rH   ro   rI   rJ   r$   )	r1   Úmeanr   r�   r|   r2   r”   r7   r8   )
ÚX_trainÚy_trainÚX_testÚy_testr1   r˜   Úmax_iterÚX_meanÚy_meanrS   s
             rX   Ú_omp_path_residuesr½   :  s   € ðX ð Ø—,’,‘.”.ˆØ—,’,‘.”.ˆØ—’‘”ˆØ—’‘”ˆàð Ø—’ 1�Ñ%Ô%ˆØ�6ÑˆØ�&ÑˆØ—’ 1�Ñ%Ô%ˆÝ  ¨uÐ5Ñ5Ô5ˆØ�6ÑˆÝ ¨UÐ3Ñ3Ô3ˆØ�&ÑˆåØØØ ØØØØðñ ô €Eð „z�Q‚€Ø�a�a�a�œ�mÔ$ˆåŒ6�%”'˜6œ8Ñ$Ô$ vÑ-Ð-rZ   c                   ó    — e Zd ZU dZdgdg eeddd¬¦  «        dgdgedgdgd	œZeed
<   ddddddd	œd„Z	 e
d¬¦  «        d„ ¦   «         Zd„ ZdS )ÚOrthogonalMatchingPursuitCVay  Cross-validated Orthogonal Matching Pursuit model (OMP).

    See glossary entry for :term:`cross-validation estimator`.

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

    Parameters
    ----------
    copy : bool, default=True
        Whether the design matrix X must be copied by the algorithm. A false
        value is only helpful if X is already Fortran-ordered, otherwise a
        copy is made anyway.

    fit_intercept : bool, default=True
        Whether to calculate the intercept for this model. If set
        to false, no intercept will be used in calculations
        (i.e. data is expected to be centered).

    max_iter : int, default=None
        Maximum numbers of iterations to perform, therefore maximum features
        to include. 10% of ``n_features`` but at least 5 if available.

    cv : int, cross-validation generator or iterable, default=None
        Determines the cross-validation splitting strategy.
        Possible inputs for cv are:

        - None, to use the default 5-fold cross-validation,
        - integer, to specify the number of folds,
        - :term:`CV splitter`,
        - an iterable yielding (train, test) splits as arrays of indices.

        For integer/None inputs, :class:`~sklearn.model_selection.KFold` is used.

        Refer :ref:`User Guide <cross_validation>` for the various
        cross-validation strategies that can be used here.

        .. versionchanged:: 0.22
            ``cv`` default value if None changed from 3-fold to 5-fold.

    n_jobs : int, default=None
        Number of CPUs to use during the cross validation.
        ``None`` means 1 unless in a :obj:`joblib.parallel_backend` context.
        ``-1`` means using all processors. See :term:`Glossary <n_jobs>`
        for more details.

    verbose : bool or int, default=False
        Sets the verbosity amount.

    Attributes
    ----------
    intercept_ : float or ndarray of shape (n_targets,)
        Independent term in decision function.

    coef_ : ndarray of shape (n_features,) or (n_targets, n_features)
        Parameter vector (w in the problem formulation).

    n_nonzero_coefs_ : int
        Estimated number of non-zero coefficients giving the best mean squared
        error over the cross-validation folds.

    n_iter_ : int or array-like
        Number of active features across every target for the model refit with
        the best hyperparameters got by cross-validating across all folds.

    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

    See Also
    --------
    orthogonal_mp : Solves n_targets Orthogonal Matching Pursuit problems.
    orthogonal_mp_gram : Solves n_targets Orthogonal Matching Pursuit
        problems using only the Gram matrix X.T * X and the product X.T * y.
    lars_path : Compute Least Angle Regression or Lasso path using LARS algorithm.
    Lars : Least Angle Regression model a.k.a. LAR.
    LassoLars : Lasso model fit with Least Angle Regression a.k.a. Lars.
    OrthogonalMatchingPursuit : Orthogonal Matching Pursuit model (OMP).
    LarsCV : Cross-validated Least Angle Regression model.
    LassoLarsCV : Cross-validated Lasso model fit with Least Angle Regression.
    sklearn.decomposition.sparse_encode : Generic sparse coding.
        Each column of the result is the solution to a Lasso problem.

    Notes
    -----
    In `fit`, once the optimal number of non-zero coefficients is found through
    cross-validation, the model is fit again using the entire training set.

    Examples
    --------
    >>> from sklearn.linear_model import OrthogonalMatchingPursuitCV
    >>> from sklearn.datasets import make_regression
    >>> X, y = make_regression(n_features=100, n_informative=10,
    ...                        noise=4, random_state=0)
    >>> reg = OrthogonalMatchingPursuitCV(cv=5).fit(X, y)
    >>> reg.score(X, y)
    0.9991
    >>> reg.n_nonzero_coefs_
    np.int64(10)
    >>> reg.predict(X[:1,])
    array([-78.3854])
    rm   r   Nrj   rk   Ú	cv_objectÚverbose©r1   r˜   rº   ÚcvÚn_jobsrÁ   r™   TFc                óZ   — || _         || _        || _        || _        || _        || _        d S r›   rÂ   )rœ   r1   r˜   rº   rÃ   rÄ   rÁ   s          rX   r�   z$OrthogonalMatchingPursuitCV.__init__ü  s3   € ð ˆŒ	Ø*ˆÔØ ˆŒØˆŒØˆŒØˆŒˆˆrZ   rq   c           	      óØ  ‡ ‡‡‡
‡— t          |‰ d¦  «         t          ‰ ‰‰dd¬¦  «        \  ŠŠt          ‰dd¬¦  «        Št          ‰ j        d¬¦  «        }t          ¦   «         rt          ‰ dfi |¤Ž}n#t          ¦   «         }t          i ¬¦  «        |_        ‰ j	        sDt          t          t          d	‰j        d
         z  ¦  «        d¦  «        ‰j        d
         ¦  «        n‰ j	        Š
 t          ‰ j        ‰ j        ¬¦  «        ˆˆ
ˆ ˆfd„ |j        ‰fi |j        j        ¤ŽD ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        Št%          j        ˆfd„|D ¦   «         ¦  «        }t%          j        |                     d¬¦  «        ¦  «        d
z   }|‰ _        t/          |‰ j        ¬¦  «                             ‰‰¦  «        }	|	j        ‰ _        |	j        ‰ _        |	j        ‰ _        ‰ S )a  Fit the model using X, y as training data.

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

        y : array-like of shape (n_samples,)
            Target values. Will be cast to X's dtype if necessary.

        **fit_params : dict
            Parameters to pass to the underlying splitter.

            .. versionadded:: 1.4
                Only available if `enable_metadata_routing=True`,
                which can be set by using
                ``sklearn.set_config(enable_metadata_routing=True)``.
                See :ref:`Metadata Routing User Guide <metadata_routing>` for
                more details.

        Returns
        -------
        self : object
            Returns an instance of self.
        r«   Tr'   )r    Úensure_min_featuresF)r1   Úensure_all_finite)Ú
classifier)Úsplitrw   r$   é   )rÄ   rÁ   c           
   3   ó¨   •K  — | ]L\  }} t          t          ¦  «        ‰|         ‰|         ‰|         ‰|         ‰j        ‰j        ‰¦  «        V — ŒMd S r›   )r   r½   r1   r˜   )Ú.0ÚtrainÚtestrE   rº   rœ   rF   s      €€€€rX   ú	<genexpr>z2OrthogonalMatchingPursuitCV.fit.<locals>.<genexpr>8  s„   øè è € ð F
ð F
ñ ��tð (�GÕ&Ñ'Ô'Ø�%”Ø�%”Ø�$”Ø�$”Ø”	ØÔ"Øñô ðF
ð F
ð F
ð F
ð F
ð F
rZ   c              3   ó0   K  — | ]}|j         d          V — ŒdS )r   N)r;   )rÍ   Úfolds     rX   rÐ   z2OrthogonalMatchingPursuitCV.fit.<locals>.<genexpr>E  s(   è è € Ð@Ð@¨t˜TœZ¨œ]Ð@Ð@Ð@Ð@Ð@Ð@rZ   c                 óR   •— g | ]#}|d ‰…         dz                        d¬¦  «        ‘Œ$S )Nr'   r$   ry   )rµ   )rÍ   rÒ   Úmin_early_stops     €rX   ú
<listcomp>z3OrthogonalMatchingPursuitCV.fit.<locals>.<listcomp>G  s8   ø€ ÐLÐLÐL¸4ˆd�?�N�?Ô# qÑ(×.Ò.°AÐ.Ñ6Ô6ÐLÐLÐLrZ   r   ry   )rG   r˜   )r   r   r   r   rÃ   r   r   r   Úsplitterrº   Úminr~   r   r;   r   rÄ   rÁ   rÊ   r2   ÚarrayÚargminrµ   r¢   r–   r˜   r«   r¤   Ú
intercept_r£   )rœ   rE   rF   Ú
fit_paramsrÃ   Úrouted_paramsÚcv_pathsÚ	mse_foldsÚbest_n_nonzero_coefsÚomprº   rÔ   s   ```       @@rX   r«   zOrthogonalMatchingPursuitCV.fit  s-  øøøøø€ õ6 	˜* d¨EÑ2Ô2Ð2å˜T 1 a°4ÈQÐOÑOÔO‰ˆˆ1Ý˜1 5¸EÐBÑBÔBˆÝ�d”g¨%Ð0Ñ0Ô0ˆÝÑÔð 	5Ý+¨D°%ÐFÐF¸:ÐFÐFˆMˆMõ "™GœGˆMÝ%*° _¡_¤_ˆMÔ"ð ”=ð�C••C˜˜aœg aœjÑ(Ñ)Ô)¨1Ñ-Ô-¨q¬w°q¬zÑ:Ô:Ð:à”ð 	ð
 F•8 4¤;¸¼ÐEÑEÔEð F
ð F
ð F
ð F
ð F
ð F
ð F
ð  (˜rœx¨ÐJÐJ¨]Ô-CÔ-IÐJÐJðF
ñ F
ô F
ñ 
ô 
ˆõ Ð@Ð@°xÐ@Ñ@Ô@Ñ@Ô@ˆÝ”HØLÐLÐLÐLÀ8ÐLÑLÔLñ
ô 
ˆ	õ  "œy¨¯ª¸Q¨Ñ)?Ô)?Ñ@Ô@À1ÑDÐØ 4ˆÔÝ'Ø0ØÔ,ð
ñ 
ô 
÷ Š#ˆa�‰)Œ)ð 	ð
 ”YˆŒ
Øœ.ˆŒØ”{ˆŒØˆrZ   c                 óœ   — t          | ¬¦  «                             | j        t          ¦   «                              dd¬¦  «        ¬¦  «        }|S )aj  Get metadata routing of this object.

        Please check :ref:`User Guide <metadata_routing>` on how the routing
        mechanism works.

        .. versionadded:: 1.4

        Returns
        -------
        routing : MetadataRouter
            A :class:`~sklearn.utils.metadata_routing.MetadataRouter` encapsulating
            routing information.
        )Úownerr«   rÊ   )ÚcallerÚcallee)rÖ   Úmethod_mapping)r   ÚaddrÃ   r   )rœ   Úrouters     rX   Úget_metadata_routingz0OrthogonalMatchingPursuitCV.get_metadata_routingU  sO   € õ   dÐ+Ñ+Ô+×/Ò/Ø”WÝ(™?œ?×.Ò.°eÀGÐ.ÑLÔLð 0ñ 
ô 
ˆð ˆrZ   )r¬   r­   r®   r¯   r   r   r™   r°   r±   r�   r	   r«   rè   r²   rZ   rX   r¿   r¿   …  sã   € € € € € € ðkð kð\ �Ø#˜Ø�X˜h¨¨4¸Ð?Ñ?Ô?ÀÐFØˆmØ˜TÐ"Ø�;ð$ð $Ð˜Dð ð ñ ð ØØØØØðð ð ð ð ð" €\°Ð5Ñ5Ô5ðEð Eñ 6Ô5ðEðNð ð ð ð rZ   r¿   )NTF)NNTTF)TTr³   )3r¯   r?   Úmathr   Únumbersr   r   Únumpyr2   Úscipyr   Úscipy.linalg.lapackr   Úsklearn.baser   r	   Úsklearn.linear_model._baser
   r   r   Úsklearn.model_selectionr   Úsklearn.utilsr   r   r   Úsklearn.utils._param_validationr   r   r   Úsklearn.utils.metadata_routingr   r   r   r   r   Úsklearn.utils.parallelr   r   Úsklearn.utils.validationr   r   rA   rY   ri   Úndarrayr�   r‚   r–   r½   r¿   r²   rZ   rX   ú<module>r÷      sÛ  ðØ ,Ð ,ð
 €€€Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ Qðð ð ð ð ð ð ð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ðð 
ðq3ð q3ð q3ð q3ðp ØØØØðG3ð G3ð G3ð G3ðT €àˆ^ØŒjˆ\Ø$˜H X¨q°$¸vÐFÑFÔFÈÐMØ�˜˜q $¨vÐ6Ñ6Ô6¸Ð=Ø  * *¨f¨XÑ"6Ô"6Ð7Ø�+Ø!�{Ø#˜ð	ð 	ð #'ðñ ô ð" ØØØØØða ð a ð a ð a ñô ða ðH €à�ØˆnØ$˜H X¨q°$¸yÐIÑIÔIÈ4ÐPØ�˜˜q $¨vÐ6Ñ6Ô6¸Ð=Ø&¨Ð-Ø�[Ø�;Ø!�{Ø#˜ð
ð 
ð #'ðñ ô ð$ ØØØØØØða ð a ð a ð a ñô ða ðHrð rð rð rð r Ð0Fñ rô rð rðt 
ØØðH.ð H.ð H.ð H.ðVcð cð cð cð c .°+ñ cô cð cð cð crZ   