§
    qŠtjÊŸ  ã            
       óz  — d Z ddlZddlZddlZddl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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 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,m-Z-m.Z. d„ Z/d„ Z0dddddd e	j1        e	j2        ¦  «        j3        dœd„Z4d„ Z5 e dgdgdgdœd¬¦  «        dddddd e	j1        e	j2        ¦  «        j3        ddœd„¦   «         Z6 G d„ d e¦  «        Z7 G d!„ d"e7¦  «        Z8ddddddd e	j1        e	j2        ¦  «        j3        fd#„Z9 G d$„ d%e7¦  «        Z:dS )&zUGraphicalLasso: sparse inverse covariance estimation with an l1-penalized
estimator.
é    N)ÚIntegralÚReal)Úlinalg)Ú_fit_context)ÚEmpiricalCovarianceÚempirical_covarianceÚlog_likelihood)ÚConvergenceWarning)Ú_cd_fast)Úlars_path_gram)Úcheck_cvÚcross_val_score)ÚBunch)ÚIntervalÚ
StrOptionsÚvalidate_params)ÚMetadataRouterÚMethodMappingÚ_raise_for_paramsÚ_routing_enabledÚprocess_routing)ÚParallelÚdelayed)Ú_is_arraylike_not_scalarÚcheck_random_stateÚcheck_scalarÚvalidate_datac                 óZ  — |j         d         }dt          | |¦  «        z  |t          j        dt          j        z  ¦  «        z  z   }||t          j        |¦  «                             ¦   «         t          j        t          j        |¦  «        ¦  «                             ¦   «         z
  z  z  }|S )zùEvaluation of the graphical-lasso objective function

    the objective function is made of a shifted scaled version of the
    normalized log-likelihood (i.e. its empirical mean over the samples) and a
    penalisation term to promote sparsity
    r   ç       Àé   )Úshaper	   ÚnpÚlogÚpiÚabsÚsumÚdiag)ÚmleÚ
precision_ÚalphaÚpÚcosts        ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/covariance/_graph_lasso.pyÚ
_objectiver.   -   sŽ   € ð 	Ô˜Ô€AØ•.  jÑ1Ô1Ñ1°A½¼¸qÅ2Ä5¹yÑ8IÔ8IÑ4IÑI€DØˆE•R”V˜JÑ'Ô'×+Ò+Ñ-Ô-µ´µr´w¸zÑ7JÔ7JÑ0KÔ0K×0OÒ0OÑ0QÔ0QÑQÑRÑR€DØ€Kó    c                 ó  — t          j        | |z  ¦  «        }||j        d         z  }||t          j        |¦  «                             ¦   «         t          j        t          j        |¦  «        ¦  «                             ¦   «         z
  z  z  }|S )z§Expression of the dual gap convergence criterion

    The specific definition is given in Duchi "Projected Subgradient Methods
    for Learning Sparse Gaussians".
    r   )r"   r&   r!   r%   r'   )Úemp_covr)   r*   Úgaps       r-   Ú	_dual_gapr3   :   sy   € õ Œ&�˜:Ñ%Ñ
&Ô
&€CØˆ:Ô˜AÔÑ€CØˆ5•B”F˜:Ñ&Ô&×*Ò*Ñ,Ô,­r¬vµb´g¸jÑ6IÔ6IÑ/JÔ/J×/NÒ/NÑ/PÔ/PÑPÑQÑQ€CØ€Jr/   Úcdç-Cëâ6?éd   F)Úcov_initÚmodeÚtolÚenet_tolÚmax_iterÚverboseÚepsc                ó�  — | j         \  }	}
|dk    rpt          j        | ¦  «        }dt          | |¦  «        z  }||
t	          j        dt          j        z  ¦  «        z  z  }t	          j        | |z  ¦  «        |
z
  }| |||fdfS |€|                      ¦   «         }n|                     ¦   «         }|dz  }| j	        d d |
dz   …         }||j	        d d |
dz   …<   t          j
        |¦  «        }t	          j        |
¦  «        }d}t          ¦   «         }|dk    rt          dd¬	¦  «        }nt          d¬
¦  «        }	 t          j        }t	          j        |dd …dd …f         d¬¦  «        }t          |¦  «        D �]�}t          |
¦  «        D �]¥}|dk    r8|dz
  }||         ||k             ||<   |d d …|f         ||k             |d d …|f<   n|dd …dd …f         |d d …<   | |||k    f         }t	          j        di |¤Ž5  |dk    ra|||k    |f         |||f         d|z  z   z   }t#          j        ||d|||t'          d|¦  «        |t)          d ¦  «        ddd¬¦  «        \  }}	}	}	n&t+          |||j        ||
dz
  z  d|dd¬¦  «        \  }	}	}d d d ¦  «         n# 1 swxY w Y   d|||f         t	          j        |||k    |f         |¦  «        z
  z  |||f<   |||f          |z  |||k    |f<   |||f          |z  ||||k    f<   t	          j        ||¦  «        }|||||k    f<   ||||k    |f<   �Œ§t	          j        |                     ¦   «         ¦  «        st3          d¦  «        ‚t5          | ||¦  «        }t7          | ||¦  «        }|rt9          d|||fz  ¦  «         |                     ||f¦  «         t	          j        |¦  «        |k     r nJt	          j        |¦  «        s|dk    rt3          d¦  «        ‚�Œƒt?          j         d||fz  tB          ¦  «         n*# t2          $ r}|j"        d         dz   f|_"        |‚d }~ww xY w||||dz   fS )Nr   r   r    gffffffî?é   r4   ÚraiseÚignore)ÚoverÚinvalid)rC   ÚC)Úorderiè  é   FT)Úwr*   ÚbetaÚQÚqÚyr;   r9   ÚrngÚrandomÚpositiveÚdo_screeningÚlars)ÚXyÚGramÚ	n_samplesÚ	alpha_minÚ	copy_Gramr=   ÚmethodÚreturn_pathg      ð?z1The system is too ill-conditioned for this solverz<[graphical_lasso] Iteration % 3i, cost % 3.2e, dual gap %.3ezANon SPD result: the system is too ill-conditioned for this solverzDgraphical_lasso: did not converge after %i iteration: dual gap: %.3ez3. The system is too ill-conditioned for this solver© )#r!   r   Úinvr	   r"   r#   r$   r&   ÚcopyÚflatÚpinvhÚarangeÚlistÚdictÚinfÚrangeÚerrstateÚcd_fastÚenet_coordinate_descent_gramÚmaxr   r   ÚsizeÚdotÚisfiniteÚFloatingPointErrorr3   r.   ÚprintÚappendr%   ÚwarningsÚwarnr
   Úargs)r1   r*   r7   r8   r9   r:   r;   r<   r=   Ú_Ú
n_featuresr)   r,   Úd_gapÚcovariance_ÚdiagonalÚindicesÚiÚcostsÚerrorsÚsub_covarianceÚidxÚdiÚrowÚcoefsÚes                             r-   Ú_graphical_lassor~   G   s’  € ð ”M�M€A€zØ�‚z€zå”Z Ñ(Ô(ˆ
Ø•n W¨jÑ9Ô9Ñ9ˆØ�
�RœV A­¬¡IÑ.Ô.Ñ.Ñ.ˆÝ”�w Ñ+Ñ,Ô,¨zÑ9ˆØ˜
 T¨5 M°1Ð4Ð4àÐØ—l’l‘n”nˆˆà—m’m‘o”oˆð �4Ñ€KØŒ|Ð-Ð-˜z¨A™~Ð-Ô.€HØ*2€KÔÐ&Ð&˜
 Q™Ð&Ñ'Ý”˜kÑ*Ô*€JåŒi˜
Ñ#Ô#€GØ	€AÝ‰FŒF€Eàˆt‚|€|Ý˜7¨HÐ5Ñ5Ô5ˆˆå˜gÐ&Ñ&Ô&ˆð[õ ”ˆåœ ¨Q¨R¨R°°°¨VÔ!4¸CÐ@Ñ@Ô@ˆÝ�x‘”ð R	ñ R	ˆAÝ˜ZÑ(Ô(ð 99ñ 99�ð ˜’7�7Ø˜q™�BØ)4°R¬¸ÀCºÔ)H�N 2Ñ&Ø,7¸¸¸¸2¸Ô,>¸wÈ#º~Ô,N�N 1 1 1 b 5Ñ)Ð)à(3°A°B°B¸¸¸°FÔ(;�N 1 1 1Ñ%Ø˜c 7¨c¢>Ð1Ô2�Ý”[Ð*Ð* 6Ð*Ð*ð $ð $Ø˜t’|�|ð ' w°#¢~°sÐ':Ô;Ø)¨#¨s¨(Ô3°d¸S±jÑ@ñBð!˜õ *1Ô)MØ#Ø"'Ø!"Ø,Ø!Ø!õ &)¨¨XÑ%6Ô%6Ø (Ý 2°4Ñ 8Ô 8Ø#(Ø%*Ø)-ð#*ñ *ô *™˜˜q ! Q Qõ( '5Ø"Ø!/Ø&)¤hØ&+¨z¸A©~Ñ&>Ø&*Ø #Ø#)Ø(-ð	'ñ 	'ô 	'™˜˜1˜eð7$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ðL (+Ø  S Ô)Ý”f˜[¨°Cª¸Ð)<Ô=¸uÑEÔEñFñ(�
˜3 ˜8Ñ$ð 4>¸cÀ3¸hÔ3GÐ2GÈ%Ñ2O�
˜7 cš>¨3Ð.Ñ/Ø3=¸cÀ3¸hÔ3GÐ2GÈ%Ñ2O�
˜3 ¨3¢Ð.Ñ/Ýœ˜~¨uÑ5Ô5�Ø38�˜C ¨C¢Ð/Ñ0Ø38�˜G sšN¨CÐ/Ñ0Ñ0Ý”;˜zŸ~š~Ñ/Ô/Ñ0Ô0ð Ý(ØGñô ð õ ˜g z°5Ñ9Ô9ˆEÝ˜g z°5Ñ9Ô9ˆDØð ÝØRØ˜$ Ð&ñ'ñô ð ð �LŠL˜$ ˜Ñ'Ô'Ð'ÝŒv�e‰}Œ}˜sÒ"Ð"Ø�Ý”;˜tÑ$Ô$ð ¨¨Qª¨Ý(ØWñô ð ùõ ŒMØVØ˜UÐ#ñ$å"ñô ð øøõ
 ð ð ð Ø”&˜”)ÐSÑSÐUˆŒØˆøøøøðøøøð ˜
 E¨1¨q©5Ð0Ð0s?   Ä5CP Ç7BJÊP ÊJÊP ÊJÊE;P Ð
P<ÐP7Ð7P<c                 ó¬   — t          j        | ¦  «        }d|j        dd|j        d         dz   …<   t          j        t          j        |¦  «        ¦  «        S )a³  Find the maximum alpha for which there are some non-zeros off-diagonal.

    Parameters
    ----------
    emp_cov : ndarray of shape (n_features, n_features)
        The sample covariance matrix.

    Notes
    -----
    This results from the bound for the all the Lasso that are solved
    in GraphicalLasso: each time, the row of cov corresponds to Xy. As the
    bound for alpha is given by `max(abs(Xy))`, the result follows.
    r   Nr?   )r"   rZ   r[   r!   re   r%   )r1   ÚAs     r-   Ú	alpha_maxr�   Ó   sJ   € õ 	Œ�ÑÔ€AØ !€A„FÐÐˆaŒg�aŒj˜1‰nÐÑÝŒ6•"”&˜‘)”)ÑÔÐr/   ú
array-likeÚboolean)r1   Úreturn_costsÚreturn_n_iter©Úprefer_skip_nested_validation)r8   r9   r:   r;   r<   r„   r=   r…   c                ó  — t          ||d|||||d¬¦	  «	                             | ¦  «        }
|
j        |
j        g}|r|                     |
j        ¦  «         |	r|                     |
j        ¦  «         t          |¦  «        S )a+  L1-penalized covariance estimator.

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

    .. versionchanged:: v0.20
        graph_lasso has been renamed to graphical_lasso

    Parameters
    ----------
    emp_cov : array-like of shape (n_features, n_features)
        Empirical covariance from which to compute the covariance estimate.

    alpha : float
        The regularization parameter: the higher alpha, the more
        regularization, the sparser the inverse covariance.
        Range is (0, inf].

    mode : {'cd', 'lars'}, default='cd'
        The Lasso solver to use: coordinate descent or LARS. Use LARS for
        very sparse underlying graphs, where p > n. Elsewhere prefer cd
        which is more numerically stable.

    tol : float, default=1e-4
        The tolerance to declare convergence: if the dual gap goes below
        this value, iterations are stopped. Range is (0, inf].

    enet_tol : float, default=1e-4
        The tolerance for the elastic net solver used to calculate the descent
        direction. This parameter controls the accuracy of the search direction
        for a given column update, not of the overall parameter estimate. Only
        used for mode='cd'. Range is (0, inf].

    max_iter : int, default=100
        The maximum number of iterations.

    verbose : bool, default=False
        If verbose is True, the objective function and dual gap are
        printed at each iteration.

    return_costs : bool, default=False
        If return_costs is True, the objective function and dual gap
        at each iteration are returned.

    eps : float, default=eps
        The machine-precision regularization in the computation of the
        Cholesky diagonal factors. Increase this for very ill-conditioned
        systems. Default is `np.finfo(np.float64).eps`.

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

    Returns
    -------
    covariance : ndarray of shape (n_features, n_features)
        The estimated covariance matrix.

    precision : ndarray of shape (n_features, n_features)
        The estimated (sparse) precision matrix.

    costs : list of (objective, dual_gap) pairs
        The list of values of the objective function and the dual gap at
        each iteration. Returned only if return_costs is True.

    n_iter : int
        Number of iterations. Returned only if `return_n_iter` is set to True.

    See Also
    --------
    GraphicalLasso : Sparse inverse covariance estimation
        with an l1-penalized estimator.
    GraphicalLassoCV : Sparse inverse covariance with
        cross-validated choice of the l1 penalty.

    Notes
    -----
    The algorithm employed to solve this problem is the GLasso algorithm,
    from the Friedman 2008 Biostatistics paper. It is the same algorithm
    as in the R `glasso` package.

    One possible difference with the `glasso` R package is that the
    diagonal coefficients are not penalized.

    Examples
    --------
    >>> import numpy as np
    >>> from sklearn.datasets import make_sparse_spd_matrix
    >>> from sklearn.covariance import empirical_covariance, graphical_lasso
    >>> true_cov = make_sparse_spd_matrix(n_dim=3,random_state=42)
    >>> rng = np.random.RandomState(42)
    >>> X = rng.multivariate_normal(mean=np.zeros(3), cov=true_cov, size=3)
    >>> emp_cov = empirical_covariance(X, assume_centered=True)
    >>> emp_cov, _ = graphical_lasso(emp_cov, alpha=0.05)
    >>> emp_cov
    array([[ 1.687,  0.212, -0.209],
           [ 0.212,  0.221, -0.0817],
           [-0.209, -0.0817, 0.232]])
    ÚprecomputedT)	r*   r8   Ú
covariancer9   r:   r;   r<   r=   Úassume_centered)ÚGraphicalLassoÚfitrr   r)   rk   Úcosts_Ún_iter_Útuple)r1   r*   r8   r9   r:   r;   r<   r„   r=   r…   ÚmodelÚoutputs               r-   Úgraphical_lassor“   æ   sš   € õl ØØØ ØØØØØØð
ñ 
ô 
÷ 
‚cˆ'�l„lð 
ð Ô Ô!1Ð2€FØð $Ø�Š�e”lÑ#Ô#Ð#Øð %Ø�Š�e”mÑ$Ô$Ð$Ý�‰=Œ=Ðr/   c                   óB  ‡ — e Zd ZU i ej        ¥ eeddd¬¦  «        g eeddd¬¦  «        g eeddd¬¦  «        g eddh¦  «        gdg eeddd	¬¦  «        gd
œ¥Ze	e
d<   e                     d¦  «         ddddd ej        ej        ¦  «        j        dfˆ fd„	Zˆ xZS )ÚBaseGraphicalLassor   NÚright©ÚclosedÚleftr4   rP   r<   Úboth)r9   r:   r;   r8   r<   r=   Ú_parameter_constraintsÚstore_precisionr5   r6   Fc                 ó    •— t          ¦   «                              |¬¦  «         || _        || _        || _        || _        || _        || _        d S )N©r‹   )ÚsuperÚ__init__r9   r:   r;   r8   r<   r=   )	Úselfr9   r:   r;   r8   r<   r=   r‹   Ú	__class__s	           €r-   r    zBaseGraphicalLasso.__init__|  sN   ø€ õ 	‰Œ×Ò¨ÐÑ9Ô9Ð9ØˆŒØ ˆŒØ ˆŒØˆŒ	ØˆŒØˆŒˆˆr/   )Ú__name__Ú
__module__Ú__qualname__r   r›   r   r   r   r   r_   Ú__annotations__Úpopr"   ÚfinfoÚfloat64r=   r    Ú__classcell__©r¢   s   @r-   r•   r•   p  s.  ø€ € € € € € ð$Ø
Ô
4ð$à�˜˜q $¨wÐ7Ñ7Ô7Ð8Ø�X˜d A t°GÐ<Ñ<Ô<Ð=Ø�X˜h¨¨4¸Ð?Ñ?Ô?Ð@Ø�˜T 6˜NÑ+Ô+Ð,Ø�;Ø�˜˜q $¨vÐ6Ñ6Ô6Ð7ð$ð $ð $Ð˜Dð ð ñ ð ×ÒÐ0Ñ1Ô1Ð1ð ØØØØØˆBŒH�R”ZÑ Ô Ô$Øðð ð ð ð ð ð ð ð ð r/   r•   c            
       óò   ‡ — e Zd ZU dZi ej        ¥ eeddd¬¦  «        g edh¦  «        dgdœ¥Ze	e
d<   	 dd
ddddd ej        ej        ¦  «        j        ddœˆ fd„Z ed¬¦  «        dd„¦   «         Zˆ xZS )rŒ   ag  Sparse inverse covariance estimation with an l1-penalized estimator.

    For a usage example see
    :ref:`sphx_glr_auto_examples_applications_plot_stock_market.py`.

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

    .. versionchanged:: v0.20
        GraphLasso has been renamed to GraphicalLasso

    Parameters
    ----------
    alpha : float, default=0.01
        The regularization parameter: the higher alpha, the more
        regularization, the sparser the inverse covariance.
        Range is (0, inf].

    mode : {'cd', 'lars'}, default='cd'
        The Lasso solver to use: coordinate descent or LARS. Use LARS for
        very sparse underlying graphs, where p > n. Elsewhere prefer cd
        which is more numerically stable.

    covariance : "precomputed", default=None
        If covariance is "precomputed", the input data in `fit` is assumed
        to be the covariance matrix. If `None`, the empirical covariance
        is estimated from the data `X`.

        .. versionadded:: 1.3

    tol : float, default=1e-4
        The tolerance to declare convergence: if the dual gap goes below
        this value, iterations are stopped. Range is (0, inf].

    enet_tol : float, default=1e-4
        The tolerance for the elastic net solver used to calculate the descent
        direction. This parameter controls the accuracy of the search direction
        for a given column update, not of the overall parameter estimate. Only
        used for mode='cd'. Range is (0, inf].

    max_iter : int, default=100
        The maximum number of iterations.

    verbose : bool, default=False
        If verbose is True, the objective function and dual gap are
        plotted at each iteration.

    eps : float, default=eps
        The machine-precision regularization in the computation of the
        Cholesky diagonal factors. Increase this for very ill-conditioned
        systems. Default is `np.finfo(np.float64).eps`.

        .. versionadded:: 1.3

    assume_centered : bool, default=False
        If True, data are not centered before computation.
        Useful when working with data whose mean is almost, but not exactly
        zero.
        If False, data are centered before computation.

    Attributes
    ----------
    location_ : ndarray of shape (n_features,)
        Estimated location, i.e. the estimated mean.

    covariance_ : ndarray of shape (n_features, n_features)
        Estimated covariance matrix

    precision_ : ndarray of shape (n_features, n_features)
        Estimated pseudo inverse matrix.

    n_iter_ : int
        Number of iterations run.

    costs_ : list of (objective, dual_gap) pairs
        The list of values of the objective function and the dual gap at
        each iteration. Returned only if return_costs is True.

        .. versionadded:: 1.3

    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
    --------
    graphical_lasso : L1-penalized covariance estimator.
    GraphicalLassoCV : Sparse inverse covariance with
        cross-validated choice of the l1 penalty.

    Examples
    --------
    >>> import numpy as np
    >>> from sklearn.covariance import GraphicalLasso
    >>> true_cov = np.array([[0.8, 0.0, 0.2, 0.0],
    ...                      [0.0, 0.4, 0.0, 0.0],
    ...                      [0.2, 0.0, 0.3, 0.1],
    ...                      [0.0, 0.0, 0.1, 0.7]])
    >>> np.random.seed(0)
    >>> X = np.random.multivariate_normal(mean=[0, 0, 0, 0],
    ...                                   cov=true_cov,
    ...                                   size=200)
    >>> cov = GraphicalLasso().fit(X)
    >>> np.around(cov.covariance_, decimals=3)
    array([[0.816, 0.049, 0.218, 0.019],
           [0.049, 0.364, 0.017, 0.034],
           [0.218, 0.017, 0.322, 0.093],
           [0.019, 0.034, 0.093, 0.69 ]])
    >>> np.around(cov.location_, decimals=3)
    array([0.073, 0.04 , 0.038, 0.143])
    r   Nrš   r—   r‰   )r*   rŠ   r›   ç{®Gáz„?r4   r5   r6   F)r8   rŠ   r9   r:   r;   r<   r=   r‹   c          	      ót   •— t          ¦   «                              |||||||	¬¦  «         || _        || _        d S ©N)r9   r:   r;   r8   r<   r=   r‹   )rŸ   r    r*   rŠ   )r¡   r*   r8   rŠ   r9   r:   r;   r<   r=   r‹   r¢   s             €r-   r    zGraphicalLasso.__init__  sO   ø€ õ 	‰Œ×ÒØØØØØØØ+ð 	ñ 	
ô 	
ð 	
ð ˆŒ
Ø$ˆŒˆˆr/   Tr†   c                 ó  — t          | |dd¬¦  «        }| j        dk    r9|                     ¦   «         }t          j        |j        d         ¦  «        | _        n\t          || j        ¬¦  «        }| j        r%t          j        |j        d         ¦  «        | _        n| 	                    d¦  «        | _        t          || j        d| j        | j        | j        | j        | j        | j        ¬¦	  «	        \  | _        | _        | _        | _        | S )	a€  Fit the GraphicalLasso model to X.

        Parameters
        ----------
        X : array-like of shape (n_samples, n_features)
            Data from which to compute the covariance estimate.

        y : Ignored
            Not used, present for API consistency by convention.

        Returns
        -------
        self : object
            Returns the instance itself.
        r    )Úensure_min_featuresÚensure_min_samplesr‰   r?   rž   r   N©r*   r7   r8   r9   r:   r;   r<   r=   )r   rŠ   rZ   r"   Úzerosr!   Ú	location_r   r‹   Úmeanr~   r*   r8   r9   r:   r;   r<   r=   rr   r)   rŽ   r�   )r¡   ÚXrK   r1   s       r-   r�   zGraphicalLasso.fit%  sð   € õ$ ˜$ °qÈQÐOÑOÔOˆàŒ?˜mÒ+Ð+Ø—f’f‘h”hˆGÝœX a¤g¨a¤jÑ1Ô1ˆDŒNˆNå*¨1¸dÔ>RÐSÑSÔSˆGØÔ#ð +Ý!#¤¨!¬'°!¬*Ñ!5Ô!5�”�à!"§¢¨¡¤�”åGWØØ”*ØØ”Ø”Ø”]Ø”]Ø”LØ”ð
H
ñ 
H
ô 
H
ÑDˆÔ˜$œ/¨4¬;¸¼ð ˆr/   )r­   ©N)r£   r¤   r¥   Ú__doc__r•   r›   r   r   r   r_   r¦   r"   r¨   r©   r=   r    r   r�   rª   r«   s   @r-   rŒ   rŒ   �  s  ø€ € € € € € ðtð tðl$Ø
Ô
3ð$à�(˜4  D°Ð8Ñ8Ô8Ð9Ø!�z = /Ñ2Ô2°DÐ9ð$ð $ð $Ð˜Dð ð ñ ð ð%ð ØØØØØØˆBŒH�R”ZÑ Ô Ô$Øð%ð %ð %ð %ð %ð %ð %ð2 €\°Ð5Ñ5Ô5ð(ð (ð (ñ 6Ô5ð(ð (ð (ð (ð (r/   rŒ   c
                 óœ  — t          d|dz
  ¦  «        }
t          | ¦  «        }|€|                     ¦   «         }n|}t          ¦   «         }t          ¦   «         }t          ¦   «         }|�t          |¦  «        }|D �]H}	 t	          ||||||||
|	¬¦	  «	        \  }}}}|                     |¦  «         |                     |¦  «         |�t          ||¦  «        }n[# t          $ rN t          j	         }|                     t          j
        ¦  «         |                     t          j
        ¦  «         Y nw xY w|�6t          j        |¦  «        st          j	         }|                     |¦  «         |dk    r!t          j                             d¦  «         �Œ|dk    r*|�t          d||fz  ¦  «         �Œ6t          d|z  ¦  «         �ŒJ|�|||fS ||fS )aŠ	  l1-penalized covariance estimator along a path of decreasing alphas

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

    Parameters
    ----------
    X : ndarray of shape (n_samples, n_features)
        Data from which to compute the covariance estimate.

    alphas : array-like of shape (n_alphas,)
        The list of regularization parameters, decreasing order.

    cov_init : array of shape (n_features, n_features), default=None
        The initial guess for the covariance.

    X_test : array of shape (n_test_samples, n_features), default=None
        Optional test matrix to measure generalisation error.

    mode : {'cd', 'lars'}, default='cd'
        The Lasso solver to use: coordinate descent or LARS. Use LARS for
        very sparse underlying graphs, where p > n. Elsewhere prefer cd
        which is more numerically stable.

    tol : float, default=1e-4
        The tolerance to declare convergence: if the dual gap goes below
        this value, iterations are stopped. The tolerance must be a positive
        number.

    enet_tol : float, default=1e-4
        The tolerance for the elastic net solver used to calculate the descent
        direction. This parameter controls the accuracy of the search direction
        for a given column update, not of the overall parameter estimate. Only
        used for mode='cd'. The tolerance must be a positive number.

    max_iter : int, default=100
        The maximum number of iterations. This parameter should be a strictly
        positive integer.

    verbose : int or bool, default=False
        The higher the verbosity flag, the more information is printed
        during the fitting.

    eps : float, default=eps
        The machine-precision regularization in the computation of the
        Cholesky diagonal factors. Increase this for very ill-conditioned
        systems. Default is `np.finfo(np.float64).eps`.

        .. versionadded:: 1.3

    Returns
    -------
    covariances_ : list of shape (n_alphas,) of ndarray of shape             (n_features, n_features)
        The estimated covariance matrices.

    precisions_ : list of shape (n_alphas,) of ndarray of shape             (n_features, n_features)
        The estimated (sparse) precision matrices.

    scores_ : list of shape (n_alphas,), dtype=float
        The generalisation error (log-likelihood) on the test data.
        Returned only if test data is passed.
    r   r?   Nr³   ú.z/[graphical_lasso_path] alpha: %.2e, score: %.2ez"[graphical_lasso_path] alpha: %.2e)re   r   rZ   r^   r~   rk   r	   ri   r"   r`   Únanrh   ÚsysÚstderrÚwriterj   )r·   Úalphasr7   ÚX_testr8   r9   r:   r;   r<   r=   Úinner_verboser1   rr   Úcovariances_Úprecisions_Úscores_Útest_emp_covr*   r)   ro   Ú
this_scores                        r-   Úgraphical_lasso_pathrÈ   R  s  € õV ˜˜7 Q™;Ñ'Ô'€MÝ" 1Ñ%Ô%€GØÐØ—l’l‘n”nˆˆàˆÝ‘6”6€LÝ‘&”&€KÝ‰fŒf€GØÐÝ+¨FÑ3Ô3ˆàð #Dñ #Dˆð	'å,<ØØØ$ØØØ!Ø!Ø%Øð
-ñ 
-ô 
-Ñ)ˆK˜ Q¨ð ×Ò Ñ,Ô,Ð,Ø×Ò˜zÑ*Ô*Ð*ØÐ!Ý+¨L¸*ÑEÔE�
øøÝ!ð 	'ð 	'ð 	'Ýœ&˜ˆJØ×Ò¥¤Ñ'Ô'Ð'Ø×Ò�rœvÑ&Ô&Ð&Ð&Ð&ð	'øøøð ÐÝ”;˜zÑ*Ô*ð %Ý œf˜W�
Ø�NŠN˜:Ñ&Ô&Ð&Ø�aŠ<ˆ<ÝŒJ×Ò˜SÑ!Ô!Ð!Ñ!Ø�qŠ[ˆ[ØÐ!ÝØEØ˜jÐ)ñ*ñô ð ñ õ
 Ð:¸UÑBÑCÔCÐCùØÐØ˜[¨'Ð1Ð1Ø˜Ð$Ð$s   Á=ACÃAD/Ä.D/c                   ó
  ‡ — e Zd ZU dZi ej        ¥ eeddd¬¦  «        dg eeddd¬¦  «        gdgedgd	œ¥Zee	d
<   ddddddddd e
j        e
j        ¦  «        j        ddœˆ fd„
Z ed¬¦  «        dd„¦   «         Zd„ Zˆ xZS )ÚGraphicalLassoCVaI  Sparse inverse covariance w/ cross-validated choice of the l1 penalty.

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

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

    .. versionchanged:: v0.20
        GraphLassoCV has been renamed to GraphicalLassoCV

    Parameters
    ----------
    alphas : int or array-like of shape (n_alphas,), dtype=float, default=4
        If an integer is given, it fixes the number of points on the
        grids of alpha to be used. If a list is given, it gives the
        grid to be used. See the notes in the class docstring for
        more details. Range is [1, inf) for an integer.
        Range is (0, inf] for an array-like of floats.

    n_refinements : int, default=4
        The number of times the grid is refined. Not used if explicit
        values of alphas are passed. Range is [1, inf).

    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.20
            ``cv`` default value if None changed from 3-fold to 5-fold.

    tol : float, default=1e-4
        The tolerance to declare convergence: if the dual gap goes below
        this value, iterations are stopped. Range is (0, inf].

    enet_tol : float, default=1e-4
        The tolerance for the elastic net solver used to calculate the descent
        direction. This parameter controls the accuracy of the search direction
        for a given column update, not of the overall parameter estimate. Only
        used for mode='cd'. Range is (0, inf].

    max_iter : int, default=100
        Maximum number of iterations.

    mode : {'cd', 'lars'}, default='cd'
        The Lasso solver to use: coordinate descent or LARS. Use LARS for
        very sparse underlying graphs, where number of features is greater
        than number of samples. Elsewhere prefer cd which is more numerically
        stable.

    n_jobs : int, default=None
        Number of jobs to run in parallel.
        ``None`` means 1 unless in a :obj:`joblib.parallel_backend` context.
        ``-1`` means using all processors. See :term:`Glossary <n_jobs>`
        for more details.

        .. versionchanged:: v0.20
           `n_jobs` default changed from 1 to None

    verbose : bool, default=False
        If verbose is True, the objective function and duality gap are
        printed at each iteration.

    eps : float, default=eps
        The machine-precision regularization in the computation of the
        Cholesky diagonal factors. Increase this for very ill-conditioned
        systems. Default is `np.finfo(np.float64).eps`.

        .. versionadded:: 1.3

    assume_centered : bool, default=False
        If True, data are not centered before computation.
        Useful when working with data whose mean is almost, but not exactly
        zero.
        If False, data are centered before computation.

    Attributes
    ----------
    location_ : ndarray of shape (n_features,)
        Estimated location, i.e. the estimated mean.

    covariance_ : ndarray of shape (n_features, n_features)
        Estimated covariance matrix.

    precision_ : ndarray of shape (n_features, n_features)
        Estimated precision matrix (inverse covariance).

    costs_ : list of (objective, dual_gap) pairs
        The list of values of the objective function and the dual gap at
        each iteration. Returned only if return_costs is True.

        .. versionadded:: 1.3

    alpha_ : float
        Penalization parameter selected.

    cv_results_ : dict of ndarrays
        A dict with keys:

        alphas : ndarray of shape (n_alphas,)
            All penalization parameters explored.

        split(k)_test_score : ndarray of shape (n_alphas,)
            Log-likelihood score on left-out data across (k)th fold.

            .. versionadded:: 1.0

        mean_test_score : ndarray of shape (n_alphas,)
            Mean of scores over the folds.

            .. versionadded:: 1.0

        std_test_score : ndarray of shape (n_alphas,)
            Standard deviation of scores over the folds.

            .. versionadded:: 1.0

    n_iter_ : int
        Number of iterations run for the optimal alpha.

    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
    --------
    graphical_lasso : L1-penalized covariance estimator.
    GraphicalLasso : Sparse inverse covariance estimation
        with an l1-penalized estimator.

    Notes
    -----
    The search for the optimal penalization parameter (`alpha`) is done on an
    iteratively refined grid: first the cross-validated scores on a grid are
    computed, then a new refined grid is centered around the maximum, and so
    on.

    One of the challenges which is faced here is that the solvers can
    fail to converge to a well-conditioned estimate. The corresponding
    values of `alpha` then come out as missing values, but the optimum may
    be close to these missing values.

    In `fit`, once the best parameter `alpha` is found through
    cross-validation, the model is fit again using the entire training set.

    Examples
    --------
    >>> import numpy as np
    >>> from sklearn.covariance import GraphicalLassoCV
    >>> true_cov = np.array([[0.8, 0.0, 0.2, 0.0],
    ...                      [0.0, 0.4, 0.0, 0.0],
    ...                      [0.2, 0.0, 0.3, 0.1],
    ...                      [0.0, 0.0, 0.1, 0.7]])
    >>> np.random.seed(0)
    >>> X = np.random.multivariate_normal(mean=[0, 0, 0, 0],
    ...                                   cov=true_cov,
    ...                                   size=200)
    >>> cov = GraphicalLassoCV().fit(X)
    >>> np.around(cov.covariance_, decimals=3)
    array([[0.816, 0.051, 0.22 , 0.017],
           [0.051, 0.364, 0.018, 0.036],
           [0.22 , 0.018, 0.322, 0.094],
           [0.017, 0.036, 0.094, 0.69 ]])
    >>> np.around(cov.location_, decimals=3)
    array([0.073, 0.04 , 0.038, 0.143])

    For an example comparing :class:`sklearn.covariance.GraphicalLassoCV`,
    :func:`sklearn.covariance.ledoit_wolf` shrinkage and the empirical covariance
    on high-dimensional gaussian data, see
    :ref:`sphx_glr_auto_examples_covariance_plot_sparse_cov.py`.
    r   Nr™   r—   r‚   r?   Ú	cv_object)rÀ   Ún_refinementsÚcvÚn_jobsr›   é   r5   r6   r4   F)rÀ   rÌ   rÍ   r9   r:   r;   r8   rÎ   r<   r=   r‹   c          	      ó�   •— t          ¦   «                              |||||	|
|¬¦  «         || _        || _        || _        || _        d S r¯   )rŸ   r    rÀ   rÌ   rÍ   rÎ   )r¡   rÀ   rÌ   rÍ   r9   r:   r;   r8   rÎ   r<   r=   r‹   r¢   s               €r-   r    zGraphicalLassoCV.__init__–  s^   ø€ õ 	‰Œ×ÒØØØØØØØ+ð 	ñ 	
ô 	
ð 	
ð ˆŒØ*ˆÔØˆŒØˆŒˆˆr/   Tr†   c           
      óJ  ‡ ‡‡‡— t          |‰ d¦  «         t          ‰ ‰d¬¦  «        Š‰ j        r%t          j        ‰j        d         ¦  «        ‰ _        n‰                     d¦  «        ‰ _        t          ‰‰ j        ¬¦  «        }t          ‰ j
        |d¬¦  «        }t          ¦   «         }‰ j        }t          d‰ j        dz
  ¦  «        Št          |¦  «        r8‰ j        D ]&}t!          |d	t"          dt          j        d
¬¦  «         Œ'‰ j        Šd}	n^‰ j        }	t)          |¦  «        }
d|
z  }t          j        t          j        |¦  «        t          j        |
¦  «        |¦  «        ddd…         Št/          ¦   «         rt1          ‰ dfi |¤Ž}nt3          t3          i ¬¦  «        ¬¦  «        }t5          j        ¦   «         }t7          |	¦  «        D �]Ñ}t9          j        ¦   «         5  t9          j        dt>          ¦  «          tA          ‰ j!        ‰ j        ¬¦  «        ˆˆˆˆ fd„ |j"        ‰|fi |j#        j"        ¤ŽD ¦   «         ¦  «        }ddd¦  «         n# 1 swxY w Y   tI          |Ž \  }}}tI          |Ž }tI          |Ž }| %                    tI          ‰||¦  «        ¦  «         tM          |tO          j(        d¦  «        d¬¦  «        }t          j         }d}tS          |¦  «        D ]s\  }\  }}}t          j        |¦  «        }|dt          j*        t          j+        ¦  «        j,        z  k    rt          j-        }t          j.        |¦  «        r|}||k    r|}|}Œt|dk    r|d         d         }
|d         d         }n”||k    r6|t_          |¦  «        dz
  k    s ||         d         }
||dz            d         }nX|t_          |¦  «        dz
  k    r ||         d         }
d||         d         z  }n"||dz
           d         }
||dz            d         }t          |¦  «        sGt          j        t          j        |
¦  «        t          j        |¦  «        |dz   ¦  «        Š‰dd…         Š‰ j        r2|	dk    r,ta          d|dz   |	t5          j        ¦   «         |z
  fz  ¦  «         �ŒÓt          tI          |Ž ¦  «        }t          |d         ¦  «        }t          |d         ¦  «        Š‰ 1                    d¦  «         | 1                    te          tg          ¦   «         ‰|‰ j!        ‰|¬¦  «        ¦  «         t          j4        |¦  «        }dt          j4        ‰¦  «        i‰ _5        t7          |j        d         ¦  «        D ]}|dd…|f         ‰ j5        d|› d�<   Œt          j        |d¬¦  «        ‰ j5        d<   t          j6        |d¬¦  «        ‰ j5        d<   ‰|         }|‰ _7        tq          ||‰ j9        ‰ j:        ‰ j;        ‰ j<        ‰‰ j,        ¬¦  «        \  ‰ _=        ‰ _>        ‰ _?        ‰ _@        ‰ S ) aX  Fit the GraphicalLasso covariance model to X.

        Parameters
        ----------
        X : array-like of shape (n_samples, n_features)
            Data from which to compute the covariance estimate.

        y : Ignored
            Not used, present for API consistency by convention.

        **params : dict, default=None
            Parameters to be passed to the CV splitter and the
            cross_val_score function.

            .. versionadded:: 1.5
                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 the instance itself.
        r�   r    )r±   r?   r   rž   F)Ú
classifierr*   r–   )Úmin_valÚmax_valÚinclude_boundariesr­   Néÿÿÿÿ)Úsplit)ÚsplitterrA   )rÎ   r<   c              3   óÔ   •K  — | ]b\  }} t          t          ¦  «        ‰|         ‰‰|         ‰j        ‰j        ‰j        t          d ‰j        z  ¦  «        ‰‰j        ¬¦	  «	        V — ŒcdS )çš™™™™™¹?)rÀ   rÁ   r8   r9   r:   r;   r<   r=   N)r   rÈ   r8   r9   r:   Úintr;   r=   )Ú.0ÚtrainÚtestr·   rÀ   rÂ   r¡   s      €€€€r-   ú	<genexpr>z'GraphicalLassoCV.fit.<locals>.<genexpr>  s™   øè è € ð Oð Oñ $˜˜tð 2•GÕ0Ñ1Ô1Ø˜%œØ%Ø  œwØ!œYØ œHØ!%¤Ý!$ S¨4¬=Ñ%8Ñ!9Ô!9Ø -Ø œHð
ñ 
ô 
ðOð Oð Oð Oð Oð Or/   T)ÚkeyÚreverserÚ   z8[GraphicalLassoCV] Done refinement % 2i out of %i: % 3is)rÍ   rÎ   r<   ÚparamsrÀ   r×   Ú_test_score)ÚaxisÚmean_test_scoreÚstd_test_score)r*   r8   r9   r:   r;   r<   r=   )Ar   r   r‹   r"   r´   r!   rµ   r¶   r   r   rÍ   r^   rÀ   re   r<   r   r   r   r`   rÌ   r�   ÚlogspaceÚlog10r   r   r   Útimera   rl   Úcatch_warningsÚsimplefilterr
   r   rÎ   r×   rØ   ÚzipÚextendÚsortedÚoperatorÚ
itemgetterÚ	enumerater¨   r©   r=   r¼   rh   Úlenrj   rk   r   r   ÚarrayÚcv_results_ÚstdÚalpha_r~   r8   r9   r:   r;   rr   r)   rŽ   r�   )r¡   r·   rK   râ   r1   rÍ   ÚpathÚn_alphasr*   rÌ   Úalpha_1Úalpha_0Úrouted_paramsÚt0ru   Ú	this_pathÚcovsro   ÚscoresÚ
best_scoreÚlast_finite_idxÚindexrÇ   Ú
best_indexÚgrid_scoresÚ
best_alpharÀ   rÂ   s   ``                        @@r-   r�   zGraphicalLassoCV.fit³  s¶  øøøø€ õ: 	˜& $¨Ñ.Ô.Ð.å˜$ °qÐ9Ñ9Ô9ˆØÔð 	'ÝœX a¤g¨a¤jÑ1Ô1ˆDŒNˆNàŸVšV A™YœYˆDŒNÝ& q¸$Ô:NÐOÑOÔOˆå�d”g˜q¨UÐ3Ñ3Ô3ˆõ ‰vŒvˆØ”;ˆÝ˜A˜tœ|¨aÑ/Ñ0Ô0ˆå# HÑ-Ô-ð 	WØœð ð �ÝØØÝØÝœFØ'.ðñ ô ð ð ð ”[ˆFØˆMˆMà Ô.ˆMÝ Ñ(Ô(ˆGØ˜W‘nˆGÝ”[¥¤¨'Ñ!2Ô!2µB´H¸WÑ4EÔ4EÀxÑPÔPÐQUÐQUÐSUÐQUÔVˆFåÑÔð 	<Ý+¨D°%ÐBÐB¸6ÐBÐBˆMˆMå!­5°r¨?©?¬?Ð;Ñ;Ô;ˆMåŒY‰[Œ[ˆÝ�}Ñ%Ô%ð K	ñ K	ˆAÝÔ(Ñ*Ô*ð ð õ Ô% hÕ0BÑCÔCÐCð O�H¨D¬KÀÄÐNÑNÔNð Oð Oð Oð Oð Oð Oð Oð (0 r¤x°°1Ð'UÐ'U¸Ô8NÔ8TÐ'UÐ'UðOñ Oô Oñ ô �	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ4 " 9˜o‰OˆD�!�VÝ˜�:ˆDÝ˜&�\ˆFØ�KŠK�˜F F¨DÑ1Ô1Ñ2Ô2Ð2Ý˜$¥HÔ$7¸Ñ$:Ô$:ÀDÐIÑIÔIˆDõ
 œ&˜ˆJØˆOÝ-6°t©_¬_ð 'ð 'Ñ)�Ñ)˜˜v qÝœW V™_œ_�
Ø ¥r¤xµ´
Ñ';Ô';Ô'?Ñ!?Ò?Ð?Ý!#¤�JÝ”;˜zÑ*Ô*ð ,Ø&+�OØ Ò+Ð+Ø!+�JØ!&�Jøð ˜QŠˆð ˜qœ' !œ*�Ø˜qœ' !œ*��Ø˜Ò.Ð.°zÅSÈÁYÄYÐQRÁ]Ò7RÐ7Rð ˜zÔ*¨1Ô-�Ø˜z¨A™~Ô.¨qÔ1��Ø�s 4™yœy¨1™}Ò,Ð,Ø˜zÔ*¨1Ô-�Ø  jÔ!1°!Ô!4Ñ4��à˜z¨A™~Ô.¨qÔ1�Ø˜z¨A™~Ô.¨qÔ1�å+¨HÑ5Ô5ð &Ýœ¥R¤X¨gÑ%6Ô%6½¼ÀÑ8IÔ8IÈ8ÐVWÉ<ÑXÔX�Ø  " œ�àŒ|ð  °Ò 1Ð 1ÝØNØ˜1‘u˜m­T¬Y©[¬[¸2Ñ-=Ð>ñ?ñô ð ùõ
 •C˜�JÑÔˆÝ˜4 œ7‘m”mˆÝ�d˜1”g‘”ˆà�Š�aÑÔÐØ×ÒÝÝ#Ñ%Ô%ØØØ”{Ø%Øðñ ô ñ		
ô 		
ð 		
õ ”h˜{Ñ+Ô+ˆà$¥b¤h¨vÑ&6Ô&6Ð7ˆÔå�{Ô(¨Ô+Ñ,Ô,ð 	Ið 	IˆAØ7BÀ1À1À1ÀaÀ4Ô7HˆDÔÐ3 QÐ3Ð3Ð3Ñ4Ð4å.0¬g°kÈÐ.JÑ.JÔ.JˆÔÐ*Ñ+Ý-/¬V°KÀaÐ-HÑ-HÔ-HˆÔÐ)Ñ*à˜JÔ'ˆ
Ø ˆŒõ HXØØØ”Ø”Ø”]Ø”]Ø!Ø”ð	H
ñ 	H
ô 	H
ÑDˆÔ˜$œ/¨4¬;¸¼ð ˆs   Ç A%IÉI	ÉI	c                 ó¶   — t          | ¬¦  «                             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.5

        Returns
        -------
        routing : MetadataRouter
            A :class:`~sklearn.utils.metadata_routing.MetadataRouter` encapsulating
            routing information.
        )Úownerr×   r�   )ÚcalleeÚcaller)rØ   Úmethod_mapping)r   Úaddr   rÍ   r   )r¡   Úrouters     r-   Úget_metadata_routingz%GraphicalLassoCV.get_metadata_routingn  sW   € õ   dÐ+Ñ+Ô+×/Ò/Ý˜dœgÑ&Ô&Ý(™?œ?×.Ò.°gÀeÐ.ÑLÔLð 0ñ 
ô 
ˆð ˆr/   r¸   )r£   r¤   r¥   r¹   r•   r›   r   r   r_   r¦   r"   r¨   r©   r=   r    r   r�   r  rª   r«   s   @r-   rÊ   rÊ   Ò  s;  ø€ € € € € € ðyð yðv$Ø
Ô
3ð$à�8˜H a¨°fÐ=Ñ=Ô=¸|ÐLØ"˜( 8¨Q°¸VÐDÑDÔDÐEØˆmØ˜TÐ"ð$ð $ð $Ð˜Dð ð ñ ð ØØØØØØØØØˆBŒH�R”ZÑ Ô Ô$Øðð ð ð ð ð ð ð: €\°Ð5Ñ5Ô5ðxð xð xñ 6Ô5ðxðtð ð ð ð ð ð r/   rÊ   );r¹   rï   r½   ré   rl   Únumbersr   r   Únumpyr"   Úscipyr   Úsklearn.baser   Úsklearn.covariancer   r   r	   Úsklearn.exceptionsr
   Úsklearn.linear_modelr   rc   r   Úsklearn.model_selectionr   r   Úsklearn.utilsr   Úsklearn.utils._param_validationr   r   r   Úsklearn.utils.metadata_routingr   r   r   r   r   Úsklearn.utils.parallelr   r   Úsklearn.utils.validationr   r   r   r   r.   r3   r¨   r©   r=   r~   r�   r“   r•   rŒ   rÈ   rÊ   rX   r/   r-   ú<module>r     s•  ððð ð €€€Ø 
€
€
€
Ø €€€Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ 1Ð 1Ð 1Ð 1Ð 1Ð 1ð 5Ð 4Ð 4Ð 4Ð 4Ð 4Ø /Ð /Ð /Ð /Ð /Ð /Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø Ð Ð Ð Ð Ð Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ Qðð ð ð ð ð ð ð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð
ð 
ð 
ð	ð 	ð 	ð" Ø	ØØØØØˆŒ�”ÑÔÔ ðI1ð I1ð I1ð I1ð I1ðXð ð ð& €à �>Ø"˜Ø#˜ðð ð
 #(ðñ ô ð 
ØØØØØØˆŒ�”ÑÔÔ Øðð ð ð ñô ððDð ð ð ð Ð,ñ ô ð ð>ð ð ð ð Ð'ñ ô ð ðL ØØ	ØØØØØˆŒ�”ÑÔÔ ð}%ð }%ð }%ð }%ð@nð nð nð nð nÐ)ñ nô nð nð nð nr/   