§
    ¨éUgÉ*  ã                   ó   — 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 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 d%d„Zd„ Zej                             dddg¦  «        d„ ¦   «         Z d„ Z!d„ Z"d„ Z#d%d„Z$ej                             dg 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 „ ¦   «         Z(d!„ Z)ej         *                    d"¦  «        d#„ ¦   «         Z+d$„ Z,dS )&z Test the graphical_lasso module.é    N)ÚStringIO)Úassert_allclose)Úlinalg)Ú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                 ód  — d}d}t          | ¦  «        } t          |d| ¬¦  «        }t          j        |¦  «        }|                      t          j        |¦  «        ||¬¦  «        }t          |¦  «        }dD ]Ä}t          ¦   «         }t          ¦   «         }	dD ]g}
t          |d||
¬	¦  «        \  }}}|||
<   ||	|
<   t          j
        |¦  «        j        \  }}|d
k    s"t          t          j        |¦  «        d¦  «         Œht          |d         |d         d¬¦  «         t          |	d         |	d         d¬¦  «         ŒÅt          d¬¦  «                             |¦  «        }|                     |¦  «         t%          |j        |d         d¬¦  «         t%          |j        |d         d¬¦  «         ||                     d
¦  «        z
  }t+          ¦   «         }dD ]?}t          |¬¦  «                             |¦  «        j        }|                     |¦  «         Œ@t%          |d
         |d         ¦  «         dS )zºTest 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   gü©ñÒMb@?)Ú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_s                       úl/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/covariance/tests/test_graphical_lasso.pyÚtest_graphical_lassosrJ      s0  € ð €CØ€IÝ% lÑ3Ô3€LÝ! #¨TÀÐMÑMÔM€DÝ
Œ*�TÑ
Ô
€CØ×(Ò(­¬°#©¬¸À)Ð(ÑLÔL€AÝ" 1Ñ%Ô%€Gà!ð ?ð ?ˆÝ‰vŒvˆÝ‘”ˆØ$ð 
	9ð 
	9ˆFÝ!0Ø d°%¸fð"ñ "ô "ÑˆD�%˜ð  ˆD�‰LØ!ˆE�&‰MÝ œh u™oœoÔ/‰OˆE�8à˜A’:�:å!¥"¤'¨%¡.¤.°%Ñ8Ô8Ð8øå˜˜Tœ
 D¨¤L°tÐ<Ñ<Ô<Ð<Ý˜˜dœ U¨6¤]¸Ð>Ñ>Ô>Ð>Ð>õ  Ð&Ñ&Ô&×*Ò*¨1Ñ-Ô-€EØ	‡K‚K��N„N€NÝ˜eÔ/°°d´ÀQÐGÑGÔGÐGÝ˜eÔ/°°f´ÀqÐIÑIÔIÐIð 	
ˆA�FŠF�1‰IŒI‰€AÝ‰FŒF€EØ(ð ð ˆÝ¨Ð?Ñ?Ô?×CÒCÀAÑFÔFÔQˆØ�Š�UÑÔÐÐÝ˜e Aœh¨¨a¬Ñ1Ô1Ð1Ð1Ð1ó    c                  ó–  — t           j                             dd¦  «        } t          | d¬¦  «        }t	          dd¬¦  «                             |¦  «        }t          |j        t           j         	                    |¦  «        ¦  «         t          |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   r1   r   r6   r   r)   r
   )r<   r=   rE   Ú_Ú	precisions        rI   Ú(test_graphical_lasso_when_alpha_equals_0rT   M   s¤   € å
Œ	�Š˜˜RÑ Ô €AÝ" 1°dÐ;Ñ;Ô;€Gå ¨}Ð=Ñ=Ô=×AÒAÀ'ÑJÔJ€EÝ�EÔ$¥b¤i§m¢m°GÑ&<Ô&<Ñ=Ô=Ð=å" 7°!Ð4Ñ4Ô4�L€A€yÝ�I�rœyŸ}š}¨WÑ5Ô5Ñ6Ô6Ð6Ð6Ð6rK   r!   r   r   c                 ó˜   — t          j        ddd¬¦  «        \  }}t          |¦  «        }t          |d| dd¬¦  «        \  }}}|dk    sJ ‚d S )	Niˆ  r   r   )r9   Ú
n_featuresr   çš™™™™™É?é   T)r!   Úmax_iterÚreturn_n_iter)r   Úmake_classificationr	   r
   )r!   r<   rR   r=   Ún_iters        rI   Útest_graphical_lasso_n_iterr]   Y   sc   € åÔ'°%ÀBÐUVÐWÑWÔW�D€A€qÝ" 1Ñ%Ô%€Gå"Ø�˜4¨!¸4ðñ ô �L€A€qˆ&ð �QŠ;ˆ;ˆ;ˆ;ˆ;ˆ;rK   c                  óJ  — t          j        g d¢g d¢g d¢g d¢g¦  «        } t          j        g d¢g d¢g d¢g d¢g¦  «        }t          j        ¦   «         j        }t          |¦  «        }d	D ]8}t          |d
d|¬¦  «        \  }}t          || ¦  «         t          ||¦  «         Œ9d S )N)gJSoÓÀËå?r   ç¥Ú§ã1Ñ?ç¾¥{!<™?)r   g-ªêŠ¾'È?r   r   )r_   r   gî[­—Ã@ç˜ˆ·Î¿]Ò?)r`   r   ra   çóÞÿdßwâ?)glåÊE!Nø?r   ç¦',ñ€²À¿r   )r   g5ÒRy;2@r   r   )rc   r   gŽg†C%dÖ?çXéIô�Å¿)r   r   rd   g—Ìvý?r   g      ð?F©r   r    r!   ©r+   r.   r   Ú	load_irisÚdatar	   r
   r   )Úcov_RÚicov_Rr<   r=   r@   r;   Úicovs          rI   Útest_graphical_lasso_irisrl   d   sñ   € õ ŒHà9Ð9Ð9Ø9Ð9Ð9Ø9Ð9Ð9Ø9Ð9Ð9ð		
ñô €Eõ ŒXà8Ð8Ð8Ø7Ð7Ð7Ø9Ð9Ð9Ø8Ð8Ð8ð		
ñô €Fõ 	ÔÑÔÔ!€AÝ" 1Ñ%Ô%€GØ ð 0ð 0ˆÝ# G°3ÀUÐQWÐXÑXÔX‰	ˆˆTÝ! # uÑ-Ô-Ð-Ý! $¨Ñ/Ô/Ð/Ð/ð0ð 0rK   c                  óJ  — t          j        ddgddgg¦  «        } t          j        ddgddgg¦  «        }t          j        ¦   «         j        d d …dd …f         }t          |¦  «        }dD ]8}t          |d	d
|¬¦  «        \  }}t          || ¦  «         t          ||¦  «         Œ9d S )Ng×ê–Ã@gŒHZÖýò?rb   gÃÉ‰¸1tø?gO{Ì“%	Àg¸4#(#e @rX   r   r   Fre   rf   )Ú	cov_skggmÚ
icov_skggmr<   r=   r@   r;   rk   s          rI   Útest_graph_lasso_2Drp      sÆ   € õ ”˜: xÐ0°8¸ZÐ2HÐIÑJÔJ€Iå”˜J¨Ð4°{ÀJÐ6OÐPÑQÔQ€JÝÔÑÔÔ! ! ! ! Q R R %Ô(€AÝ" 1Ñ%Ô%€GØ ð 4ð 4ˆÝ# G°3ÀUÐQWÐXÑXÔX‰	ˆˆTÝ! # yÑ1Ô1Ð1Ý! $¨
Ñ3Ô3Ð3Ð3ð4ð 4rK   c                  ó�  — t          j        dd¦  «        } t          j        g d¢g d¢g d¢g d¢g¦  «        }t          j        g d¢g d¢g d	¢g d
¢g¦  «        }t          j        ¦   «         j        | d d …f         }t          |¦  «        }dD ]<}t          |dd|¬¦  «        \  }}t          ||d¬¦  «         t          ||d¬¦  «         Œ=d S )NrM   é   )g{®Gáz´?çtì<­i­?g­üªÈÑb?gHâŽWµY?)rs   gÕ«rûƒµ?gHýç´�Nk?çÛ¨šxV4b?)gå¢ÈÑb?gè`Ü´�Nk?gR*è´�N{?çLÆgö×�?)g:glWµY?gEë’xV4b?ru   rt   )gR§°%l8@gƒ¯,ôèÔ0Àr   r   )gŸ¹éÔ0ÀgÁCáKZ8@gû‘°ÜÓÀg      )À)r   gTs —ÜÓÀgìGÂrO#c@r   )r   gm>ãÿÿ(Àr   g     è|@r   g{®Gáz„?Fre   é   r%   )	r+   Úaranger.   r   rg   rh   r	   r
   r   )Úindicesri   rj   r<   r=   r@   r;   rk   s           rI   Ú"test_graphical_lasso_iris_singularry   �   s#  € õ Œi˜˜BÑÔ€Gõ ŒHàFÐFÐFØPÐPÐPØPÐPÐPØPÐPÐPð		
ñô €Eõ ŒXà2Ð2Ð2Ø=Ð=Ð=Ø3Ð3Ð3Ø,Ð,Ð,ð		
ñô €Fõ 	ÔÑÔÔ! '¨1¨1¨1 *Ô-€AÝ" 1Ñ%Ô%€GØ ð ;ð ;ˆÝ#Ø˜4¨e¸&ð
ñ 
ô 
‰	ˆˆTõ 	" # u°aÐ8Ñ8Ô8Ð8Ý! $¨¸Ð:Ñ:Ô:Ð:Ð:ð;ð ;rK   c                 óš  — d}d}t          | ¦  «        } t          |d| ¬¦  «        }t          j        |¦  «        }|                      t          j        |¦  «        ||¬¦  «        }t          j        }	 t          ¦   «         t          _        t          ddd¬¦  «                             |¦  «         |t          _        d S # |t          _        w xY w)	Nrv   é   g¸…ëQ¸î?r   r   r   r   )ÚverboseÚalphasÚtol)r   r   r   r)   r*   r+   r,   ÚsysÚstdoutr   r   r1   )r   r8   r9   r:   r;   r<   Úorig_stdouts          rI   Útest_graphical_lasso_cvr‚   ­   s¶   € à
€CØ€IÝ% lÑ3Ô3€LÝ! #¨TÀÐMÑMÔM€DÝ
Œ*�TÑ
Ô
€CØ×(Ò(­¬°#©¬¸À)Ð(ÑLÔL€Aå”*€Kð!Ý‘Z”Z�Œ
å ¨Q°DÐ9Ñ9Ô9×=Ò=¸aÑ@Ô@Ð@à �Œ
ˆ
ˆ
ø�[�Œ
Ð Ð Ð Ð s   Á1=B< Â<C
Úalphas_container_type)r5   Útupler.   c                 ó&  — t          j        g d¢g d¢g d¢g d¢g¦  «        }t           j                             d¦  «        }|                     g d¢|d¬¦  «        }t          d	d
g| ¦  «        }t          |dd¬¦  «                             |¦  «         dS )z’Check that we can pass an array-like to `alphas`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/22489
    ©gš™™™™™é?r   rW   r   ©r   gš™™™™™Ù?r   r   ©rW   r   g333333Ó?r   ©r   r   r   gffffffæ?r   ©r   r   r   r   éÈ   ©r4   r;   r   g{®Gáz”?ç¸…ëQ¸ž?r   r   ©r}   r~   Ún_jobsN)r+   r.   rP   ÚRandomStater*   r   r   r1   )rƒ   Útrue_covÚrngr<   r}   s        rI   Ú'test_graphical_lasso_cv_alphas_iterabler“   ¿   s°   € õ Œxà Ð Ð Ø Ð Ð Ø Ð Ð Ø Ð Ð ð		
ñô €Hõ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò \ \ \°xÀcÐÑJÔJ€AÝ  t Ð.CÑDÔD€FÝ˜F¨°QÐ7Ñ7Ô7×;Ò;¸AÑ>Ô>Ð>Ð>Ð>rK   zalphas,err_type,err_msgg{®Gáz”¿r�   zmust be > 0Ú
not_numberzmust be an instance of floatc                 ó`  — t          j        g d¢g d¢g d¢g d¢g¦  «        }t           j                             d¦  «        }|                     g d¢|d¬¦  «        }t          j        ||¬	¦  «        5  t          | d
d¬¦  «                             |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z²Check 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.   rP   r�   r*   ÚpytestÚraisesr   r1   )r}   Úerr_typeÚerr_msgr‘   r’   r<   s         rI   Ú,test_graphical_lasso_cv_alphas_invalid_arrayr›   Ô   s#  € õ Œxà Ð Ð Ø Ð Ð Ø Ð Ð Ø Ð Ð ð		
ñô €Hõ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò \ \ \°xÀcÐÑJÔJ€Aå	Œ�x wÐ	/Ñ	/Ô	/ð Cð CÝ ¨D¸Ð;Ñ;Ô;×?Ò?ÀÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð Cð Cs   Á0&B#Â#B'Â*B'c                  ó4  — d} d}d}t          j        g d¢g d¢g d¢g d¢g¦  «        }t           j                             d¦  «        }|                     g d	¢|d
¬¦  «        }t          | ||¬¦  «                             |¦  «        }t          || ||¬¦  «         d S )Nr$   rv   é   r†   r‡   rˆ   r‰   r   rŠ   r‹   rŒ   ©Úcvr}   Ún_refinements©r;   Ún_splitsr    Ún_alphas)r+   r.   rP   r�   r*   r   r1   Ú!_assert_graphical_lasso_cv_scores)Úsplitsr£   r    r‘   r’   r<   r;   s          rI   Útest_graphical_lasso_cv_scoresr¦   ð   sÖ   € Ø€FØ€HØ€MÝŒxà Ð Ð Ø Ð Ð Ø Ð Ð Ø Ð Ð ð		
ñô €Hõ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò \ \ \°xÀcÐÑJÔJ€AÝ
˜f¨XÀ]Ð
SÑ
SÔ
S×
WÒ
WØ	ñô €Cõ &ØØØ#Øð	ñ ô ð ð ð rK   Úenable_slep006c                 óÂ  — d}d}d}t          j        g d¢g d¢g d¢g d¢g¦  «        }t           j                             | ¦  «        }|                     g d¢|d¬	¦  «        }|j        d
         }|                     d
d|¦  «        }d|i}	t          |¬¦  «        }
|
                     d¬¦  «          t          |
||¬¦  «        j
        |fi |	¤Ž}t          ||||¬¦  «         dS )zVCheck that `GraphicalLassoCV` internally dispatches metadata to
    the splitter.
    rv   r�   r†   r‡   rˆ   r‰   rŠ   i,  rŒ   r   Úgroups)r¢   T)r©   rž   r¡   N)r+   r.   rP   r�   r*   ÚshapeÚrandintr   Úset_split_requestr   r1   r¤   )Úglobal_random_seedr¥   r£   r    r‘   r’   r<   r9   r©   ÚparamsrŸ   r;   s               rI   Ú+test_graphical_lasso_cv_scores_with_routingr¯   
  s7  € ð
 €FØ€HØ€MÝŒxà Ð Ð Ø Ð Ð Ø Ð Ð Ø Ð Ð ð		
ñô €Hõ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ×Ò \ \ \°xÀcÐÑJÔJ€AØ”˜”
€IØ�[Š[˜˜A˜yÑ)Ô)€FØ˜Ð€FÝ	˜VÐ	$Ñ	$Ô	$€BØ×Ò ÐÑ%Ô%Ð%à
SÕ
˜b¨ÀÐ
OÑ
OÔ
OÔ
SØ	ðð Øðð €Cõ &ØØØ#Øð	ñ ô ð ð ð rK   c                 ó´  ‡ — ‰ j         }||z  dz   }dg}d„ t          |¦  «        D ¦   «         }||z   D ]#}||v sJ ‚t          ||         ¦  «        |k    sJ ‚Œ$t          j        ˆ fd„|D ¦   «         ¦  «        }	|	                     d¬¦  «        }
|	                     d¬¦  «        }t          ‰ j         d         |
¦  «         t          ‰ j         d         |¦  «         d S )	Nr   r}   c                 ó   — g | ]}d |› d�‘Œ	S )ÚsplitÚ_test_score© )Ú.0Úis     rI   ú
<listcomp>z5_assert_graphical_lasso_cv_scores.<locals>.<listcomp>4  s$   € ÐBÐBÐB¨QÐ(˜!Ð(Ð(Ð(ÐBÐBÐBrK   c                 ó*   •— g | ]}‰j         |         ‘ŒS r´   )Úcv_results_)rµ   Úkeyr;   s     €rI   r·   z5_assert_graphical_lasso_cv_scores.<locals>.<listcomp>9  s    ø€ ÐGÐGÐG°S˜CœO¨CÔ0ÐGÐGÐGrK   r   )ÚaxisÚmean_test_scoreÚstd_test_score)r¹   ÚrangeÚlenr+   Úasarrayr4   Ústdr   )r;   r¢   r    r£   Ú
cv_resultsÚtotal_alphasÚkeysÚ
split_keysrº   Ú	cv_scoresÚexpected_meanÚexpected_stds   `           rI   r¤   r¤   .  s   ø€ Ø”€Jð ! 8Ñ+¨aÑ/€LØˆ:€DØBÐBµ%¸±/´/ÐBÑBÔB€JØ�jÑ ð 4ð 4ˆØ�jÐ Ð Ð Ð Ý�:˜c”?Ñ#Ô# |Ò3Ð3Ð3Ð3Ð3å”
ÐGÐGÐGÐG¸JÐGÑGÔGÑHÔH€IØ—N’N¨�NÑ*Ô*€MØ—=’= a�=Ñ(Ô(€Lå�C”OÐ$5Ô6¸ÑFÔFÐFÝ�C”OÐ$4Ô5°|ÑDÔDÐDÐDÐDrK   )r   )-Ú__doc__r   Úior   Únumpyr+   r—   Únumpy.testingr   Úscipyr   Úsklearnr   Úsklearn.covariancer   r   r	   r
   Úsklearn.datasetsr   Úsklearn.model_selectionr   Úsklearn.utilsr   Úsklearn.utils._testingr   r   r   rJ   rT   ÚmarkÚparametrizer]   rl   rp   ry   r‚   r“   Ú
ValueErrorÚ	TypeErrorr›   r¦   Úusefixturesr¯   r¤   r´   rK   rI   ú<module>rÙ      s¨  ðØ &Ð &à 
€
€
€
Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ø .Ð .Ð .Ð .Ð .Ð .Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð.2ð .2ð .2ð .2ðb	7ð 	7ð 	7ð „×Ò˜ $¨ Ñ0Ô0ðð ñ 1Ô0ðð0ð 0ð 0ð64ð 4ð 4ð;ð ;ð ;ð@!ð !ð !ð !ð$ „×ÒÐ0Ð2LÐ2LÐ2LÑMÔMð?ð ?ñ NÔMð?ð( „×ÒØà
�ˆ˜
 MÐ2Ø
ˆTˆ�J Ð.Ø
˜Ð	˜yÐ*HÐIðñô ðCð Cñô ðCð(ð ð ð4 „×ÒÐ)Ñ*Ô*ð ð  ñ +Ô*ð ðFEð Eð Eð Eð ErK   