o
    \i*                     @   sh  d Z ddlZddlmZ ddl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mZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZ d2ddZdd Zej dddgdd Z!dd Z"dd Z#dd Z$d2ddZ%ej dg dd d! Z&ej d"d#d$ge'd%fdd$ge'd%fd&d$ge(d'fgd(d) Z)d*d+ Z*ed,d-d.d/ Z+d0d1 Z,dS )3z Test the graphical_lasso module.    N)StringIO)assert_allclose)linalg)config_contextdatasets)GraphicalLassoGraphicalLassoCVempirical_covariancegraphical_lasso)make_sparse_spd_matrix)
GroupKFold)check_random_state)_convert_containerassert_array_almost_equalassert_array_less   c                 C   sr  d}d}t | } t|d| d}t|}| jt|||d}t|}dD ]J}t }t }	dD ])}
t	|d||
d	\}}}|||
< ||	|
< t
|j\}}|d
ksXtt|d q/t|d |d dd t|	d |	d dd q%tdd|}|| t|j|d dd t|j|d dd ||d
 }t }dD ]}t|d|j}|| qt|d
 |d  dS )zTest the graphical lasso solvers.

    This checks is unstable for some random seeds where the covariance found with "cd"
    and "lars" solvers are different (4 cases / 100 tries).
       d   gffffff?alpharandom_statesize)        皙?      ?cdlarsT)return_costsr   moder   g-q=r   r   gMb@?)atolr   r      decimal)FTassume_centeredr   N)r   r   r   invmultivariate_normalnpzerosr	   dictr
   arrayTr   diffr   r   fitscorer   covariance_meanlist
precision_append)r   dim	n_samplespreccovXemp_covr   covsicovsmethodcov_icov_costsdual_gapmodelZprecsr'   prec_ rH   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/covariance/tests/test_graphical_lasso.pytest_graphical_lassos   s@   

rJ   c                  C   sf   t jdd} t| dd}tddd|}t|jt j	| t
|dd\}}t|t j	| d	S )
z;Test graphical_lasso's early return condition when alpha=0.r   
   Tr&   r   precomputed)r   
covariancer"   N)r*   randomrandnr	   r   r0   r   r5   r   r(   r
   )r;   r<   rD   _	precisionrH   rH   rI   (test_graphical_lasso_when_alpha_equals_0M   s   rR   r    r   r   c                 C   sD   t jdddd\}}t|}t|d| ddd\}}}|dks J d S )	Ni  r   r   )r8   
n_featuresr   皙?   T)r    max_iterreturn_n_iter)r   make_classificationr	   r
   )r    r;   rP   r<   n_iterrH   rH   rI   test_graphical_lasso_n_iterY   s   
rZ   c                  C   s   t g dg dg dg dg} t g dg dg dg dg}t j}t|}d	D ]}t|d
d|d\}}t||  t|| q-d S )N)gJSo?r   ڧ1?羥{!<?)r   g-ꊾ'?r   r   )r[   r   g[@瘈ο]?)r\   r   r]   dw?)glE!N?r   ',r   )r   g5Ry;2@r   r   )r_   r   ggC%d?XIſ)r   r   r`   gv?r   g      ?Fr   r   r    r*   r-   r   	load_irisdatar	   r
   r   )cov_Ricov_Rr;   r<   r?   r:   icovrH   rH   rI   test_graphical_lasso_irisd   s*   

rh   c                  C   s   t ddgddgg} t ddgddgg}t jd d dd f }t|}dD ]}t|d	d
|d\}}t||  t|| q)d S )Ng@gHZ?r^   gɉ1t?gO{̓%	g4#(#e @rU   r   r   Fra   rb   )	cov_skggm
icov_skggmr;   r<   r?   r:   rg   rH   rH   rI   test_graph_lasso_2D   s   
rk   c                  C   s   t dd} t g dg dg dg dg}t g dg dg d	g d
g}t j| d d f }t|}dD ]}t|dd|d\}}t||dd t||dd q9d S )NrK      )g{Gz?t<i?gb?gHWY?)rm   gիr?gH紁Nk?ۨxV4b?)gb?g`ܴNk?gR*贁N{?Lgם?)g:glWY?gExV4b?ro   rn   )gR%l8@g,0r   r   )g0gCKZ8@gg      ))r   gTs gGrO#c@r   )r   gm>(r   g     |@r   g{Gz?Fra      r$   )	r*   aranger-   r   rc   rd   r	   r
   r   )indicesre   rf   r;   r<   r?   r:   rg   rH   rH   rI   "test_graphical_lasso_iris_singular   s0   
rs   c                 C   sv   d}d}t | } t|d| d}t|}| jt|||d}tj}zt	 t_t
dddd| W |t_d S |t_w )	Nrp      gQ?r   r   r   r   )verbosealphastol)r   r   r   r(   r)   r*   r+   sysstdoutr   r   r0   )r   r7   r8   r9   r:   r;   orig_stdoutrH   rH   rI   test_graphical_lasso_cv   s   
r{   alphas_container_type)r4   tupler-   c                 C   sh   t g dg dg dg dg}t jd}|jg d|dd}td	d
g| }t|ddd| dS )zCheck that we can pass an array-like to `alphas`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/22489
    g?r   rT   r   r   g?r   r   rT   r   g333333?r   r   r   r   gffffff?r   r   r   r   r      r3   r:   r   g{Gz?Q?r   r   rv   rw   n_jobsN)r*   r-   rN   RandomStater)   r   r   r0   )r|   true_covrngr;   rv   rH   rH   rI   'test_graphical_lasso_cv_alphas_iterable   s   r   zalphas,err_type,err_msgg{Gzr   zmust be > 0
not_numberzmust be an instance of floatc                 C   s   t g dg dg dg dg}t jd}|jg d|dd}tj||d	 t| d
dd| W d   dS 1 s>w   Y  dS )zCheck that if an array-like containing a value
    outside of (0, inf] is passed to `alphas`, a ValueError is raised.
    Check if a string is passed, a TypeError is raised.
    r~   r   r   r   r   r   r   r   )matchr   r   r   N)	r*   r-   rN   r   r)   pytestraisesr   r0   )rv   err_typeerr_msgr   r   r;   rH   rH   rI   ,test_graphical_lasso_cv_alphas_invalid_array   s   "r   c                  C   sv   d} d}d}t g dg dg dg dg}t jd}|jg d	|d
d}t| ||d|}t|| ||d d S )Nr#   rp      r~   r   r   r   r   r   r   r   cvrv   n_refinementsr:   n_splitsr   n_alphas)r*   r-   rN   r   r)   r   r0   !_assert_graphical_lasso_cv_scores)splitsr   r   r   r   r;   r:   rH   rH   rI   test_graphical_lasso_cv_scores   s*   
r   T)enable_metadata_routingc                 C   s   d}d}d}t g dg dg dg dg}t j| }|jg d|dd	}|jd
 }|d
d|}d|i}	t|d}
|
jdd t	|
||dj
|fi |	}t||||d dS )zVCheck that `GraphicalLassoCV` internally dispatches metadata to
    the splitter.
    rp   r   r~   r   r   r   r   i,  r   r   groups)r   T)r   r   r   N)r*   r-   rN   r   r)   shaperandintr   set_split_requestr   r0   r   )global_random_seedr   r   r   r   r   r;   r8   r   paramsr   r:   rH   rH   rI   +test_graphical_lasso_cv_scores_with_routing
  s8   


r   c                    s    j }|| d }dg}dd t|D }|| D ]}||v s!J t|| |ks+J qt fdd|D }	|	jdd}
|	jdd}t j d |
 t j d	 | d S )
Nr   rv   c                 S   s   g | ]}d | dqS )split_test_scorerH   ).0irH   rH   rI   
<listcomp>4  s    z5_assert_graphical_lasso_cv_scores.<locals>.<listcomp>c                    s   g | ]} j | qS rH   )cv_results_)r   keyr:   rH   rI   r   9  s    r   )axismean_test_scorestd_test_score)r   rangelenr*   asarrayr3   stdr   )r:   r   r   r   
cv_resultstotal_alphaskeys
split_keysr   	cv_scoresexpected_meanexpected_stdrH   r   rI   r   .  s   r   )r   )-__doc__rx   ior   numpyr*   r   numpy.testingr   scipyr   sklearnr   r   sklearn.covariancer   r   r	   r
   sklearn.datasetsr   sklearn.model_selectionr   sklearn.utilsr   sklearn.utils._testingr   r   r   rJ   rR   markparametrizerZ   rh   rk   rs   r{   r   
ValueError	TypeErrorr   r   r   r   rH   rH   rH   rI   <module>   sF    
1


 


#