Ë
    ÷Q(hÜ*  ã                   óî  — 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 d%d„Zd„ Zej>                  jA                  dddg«      d„ «       Z!d„ Z"d„ Z#d„ Z$d%d„Z%ej>                  jA                  dg d¢«      d„ «       Z&ej>                  jA                  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d!¬"«      d#„ «       Z+d$„ Z,y)&z 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_lessc                 óÆ  — d}d}t        | «      } t        |d| ¬«      }t        j                  |«      }| j	                  t        j                  |«      ||¬«      }t        |«      }dD ]©  }t        «       }t        «       }	dD ]f  }
t        |d||
¬	«      \  }}}|||
<   ||	|
<   t        j                  |«      j                  \  }}|d
k(  rŒHt        t        j                  |«      d«       Œh t        |d   |d   d¬«       t        |	d   |	d   d¬«       Œ« t        d¬«      j!                  |«      }|j#                  |«       t%        |j&                  d   d¬«       t%        |j&                  |d   d¬«       ||j)                  d
«      z
  }t+        «       }dD ]8  }t        |¬«      j!                  |«      j,                  }|j/                  |«       Œ: t%        |d
   |d   «       y)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_centeredé   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                       úk/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/covariance/tests/test_graphical_lasso.pyÚtest_graphical_lassosrK      sÃ  € ð €CØ€IÜ% lÓ3€LÜ! #¨TÀÔM€DÜ
�*‰*�TÓ
€CØ×(Ñ(¬¯©°#«¸À)Ð(ÓL€AÜ" 1Ó%€Gà!ò ?ˆÜ‹vˆÜ“ˆØ$ò 
	9ˆFÜ!0Ø d°%¸fô"ÑˆD�%˜ð  ˆD�‰LØ!ˆE�&‰MÜ Ÿh™h u›o×/Ñ/‰OˆE�8à˜A“:ä!¤"§'¡'¨%£.°%Õ8ð
	9ô 	˜˜T™
 D¨¡L°tÕ<Ü˜˜d™ U¨6¡]¸Ö>ð!?ô&  Ô&×*Ñ*¨1Ó-€EØ	‡K�K�„NÜ˜e×/Ñ/°°d±ÀQÕGÜ˜e×/Ñ/°°f±ÀqÕIð 	
ˆA�F‰F�1‹I‰€AÜ‹F€EØ(ò ˆÜ¨Ô?×CÑCÀAÓF×QÑQˆØ�‰�UÕðô ˜e A™h¨¨a©Õ1ó    c                  ón  — t         j                  j                  dd«      } t        | d¬«      }t	        dd¬«      j                  |«      }t        |j                  t         j                  j                  |«      «       t        |d¬«      \  }}t        |t         j                  j                  |«      «       y	)
z;Test graphical_lasso's early return condition when alpha=0.r   é
   Tr'   r   Úprecomputed)r   Ú
covariancer#   N)r,   ÚrandomÚrandnr
   r   r2   r   r7   r   r*   r   )r=   r>   rF   Ú_Ú	precisions        rJ   Ú(test_graphical_lasso_when_alpha_equals_0rU   M   s}   € ä
�	‰	�‰˜˜RÓ €AÜ" 1°dÔ;€Gä ¨}Ô=×AÑAÀ'ÓJ€EÜ�E×$Ñ$¤b§i¡i§m¡m°GÓ&<Ô=ä" 7°!Ô4�L€A€yÜ�IœrŸy™yŸ}™}¨WÓ5Õ6rL   r!   r   r   c                 ó†   — t        j                  ddd¬«      \  }}t        |«      }t        |d| dd¬«      \  }}}|dk(  sJ ‚y )	Niˆ  r   r   )r:   Ú
n_featuresr   çš™™™™™É?é   T)r!   Úmax_iterÚreturn_n_iter)r   Úmake_classificationr
   r   )r!   r=   rS   r>   Ún_iters        rJ   Útest_graphical_lasso_n_iterr^   Y   sN   € ä×'Ñ'°%ÀBÐUVÔW�D€A€qÜ" 1Ó%€Gä"Ø�˜4¨!¸4ô�L€A€qˆ&ð �QŠ;Ð‰;rL   c                  ó<  — 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 ],  }t        |d
d|¬«      \  }}t        || «       t        ||«       Œ. y )N)gJSoÓÀËå?r   ç¥Ú§ã1Ñ?ç¾¥{!<™?)r   g-ªêŠ¾'È?r   r   )r`   r   gî[­—Ã@ç˜ˆ·Î¿]Ò?)ra   r   rb   çóÞÿdßwâ?)glåÊE!Nø?r   ç¦',ñ€²À¿r   )r   g5ÒRy;2@r   r   )rd   r   gŽg†C%dÖ?çXéIô�Å¿)r   r   re   g—Ìvý?r   g      ð?F©r   r    r!   ©r,   r/   r   Ú	load_irisÚdatar
   r   r   )Úcov_RÚicov_Rr=   r>   rA   r<   Úicovs          rJ   Útest_graphical_lasso_irisrm   d   sœ   € ô �H‰Hâ9Ú9Ú9Ú9ð		
ó€Eô �X‰Xâ8Ú7Ú9Ú8ð		
ó€Fô 	×ÑÓ×!Ñ!€AÜ" 1Ó%€GØ ò 0ˆÜ# G°3ÀUÐQWÔX‰	ˆˆTÜ! # uÔ-Ü! $¨Õ/ñ0rL   c                  ó6  — 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 ],  }t        |d	d
|¬«      \  }}t        || «       t        ||«       Œ. y )Ng×ê–Ã@gŒHZÖýò?rc   gÃÉ‰¸1tø?gO{Ì“%	Àg¸4#(#e @rY   r   r   Frf   rg   )Ú	cov_skggmÚ
icov_skggmr=   r>   rA   r<   rl   s          rJ   Útest_graph_lasso_2Drq      sŸ   € ô —‘˜: xÐ0°8¸ZÐ2HÐIÓJ€Iä—‘˜J¨Ð4°{ÀJÐ6OÐPÓQ€JÜ×ÑÓ×!Ñ!¢! Q¡R %Ñ(€AÜ" 1Ó%€GØ ò 4ˆÜ# G°3ÀUÐQWÔX‰	ˆˆTÜ! # yÔ1Ü! $¨
Õ3ñ4rL   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 ]0  }t        |dd|¬«      \  }}t        ||d¬«       t        ||d¬«       Œ2 y )NrN   é   )g{®Gáz´?çtì<­i­?g­üªÈÑb?gHâŽWµY?)rt   gÕ«rûƒµ?gHýç´�Nk?çÛ¨šxV4b?)gå¢ÈÑb?gè`Ü´�Nk?gR*è´�N{?çLÆgö×�?)g:glWµY?gEë’xV4b?rv   ru   )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„?Frf   é   r%   )	r,   Úaranger/   r   rh   ri   r
   r   r   )Úindicesrj   rk   r=   r>   rA   r<   rl   s           rJ   Ú"test_graphical_lasso_iris_singularrz   �   s¿   € ô �i‰i˜˜BÓ€Gô �H‰HâFÚPÚPÚPð		
ó€Eô �X‰Xâ2Ú=Ú3Ú,ð		
ó€Fô 	×ÑÓ×!Ñ! 'ª1 *Ñ-€AÜ" 1Ó%€GØ ò ;ˆÜ#Ø˜4¨e¸&ô
‰	ˆˆTô 	" # u°aÕ8Ü! $¨¸Ö:ñ;rL   c                 ón  — d}d}t        | «      } t        |d| ¬«      }t        j                  |«      }| j	                  t        j                  |«      ||¬«      }t        j                  }	 t        «       t        _        t        ddd¬«      j                  |«       |t        _        y # |t        _        w xY w)	Nrw   é   g¸…ëQ¸î?r   r   r   r   )ÚverboseÚalphasÚtol)r   r   r   r*   r+   r,   r-   ÚsysÚstdoutr   r	   r2   )r   r9   r:   r;   r<   r=   Úorig_stdouts          rJ   Útest_graphical_lasso_cvrƒ   ­   sŽ   € à
€CØ€IÜ% lÓ3€LÜ! #¨TÀÔM€DÜ
�*‰*�TÓ
€CØ×(Ñ(¬¯©°#«¸À)Ð(ÓL€Aä—*‘*€Kð!Ü“ZŒŒ
ä ¨Q°DÔ9×=Ñ=¸aÔ@à Œ�
ø�[Œ�
ús   Á+0B' Â'B4Úalphas_container_type)r6   Útupler/   c                 ó  — t        j                  g d¢g d¢g d¢g d¢g«      }t         j                  j                  d«      }|j	                  g d¢|d¬«      }t        d	d
g| «      }t        |dd¬«      j                  |«       y)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   rX   r   ©r   gš™™™™™Ù?r   r   ©rX   r   g333333Ó?r   ©r   r   r   gffffffæ?r   ©r   r   r   r   éÈ   ©r5   r<   r   g{®Gáz”?ç¸…ëQ¸ž?r   r)   ©r~   r   Ún_jobsN)r,   r/   rQ   ÚRandomStater+   r   r	   r2   )r„   Útrue_covÚrngr=   r~   s        rJ   Ú'test_graphical_lasso_cv_alphas_iterabler”   ¿   sx   € ô �x‰xâ Ú Ú Ú ð		
ó€Hô �)‰)×
Ñ
 Ó
"€CØ×Ñ¢\°xÀcÐÓJ€AÜ  t Ð.CÓD€FÜ˜F¨°QÔ7×;Ñ;¸AÕ>rL   zalphas,err_type,err_msgg{®Gáz”¿rŽ   zmust be > 0Ú
not_numberzmust be an instance of floatc                 óB  — t        j                  g d¢g d¢g d¢g d¢g«      }t         j                  j                  d«      }|j	                  g d¢|d¬«      }t        j                  ||¬	«      5  t        | d
d¬«      j                  |«       ddd«       y# 1 sw Y   yxY w)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/   rQ   r‘   r+   ÚpytestÚraisesr	   r2   )r~   Úerr_typeÚerr_msgr’   r“   r=   s         rJ   Ú,test_graphical_lasso_cv_alphas_invalid_arrayrœ   Ô   sŽ   € ô �x‰xâ Ú Ú Ú ð		
ó€Hô �)‰)×
Ñ
 Ó
"€CØ×Ñ¢\°xÀcÐÓJ€Aä	�‰�x wÔ	/ñ CÜ ¨D¸Ô;×?Ñ?ÀÔB÷C÷ Cñ Cús   Á.BÂBc                  ó  — d} d}d}t        j                  g d¢g d¢g d¢g d¢g«      }t         j                  j                  d«      }|j	                  g d	¢|d
¬«      }t        | ||¬«      j                  |«      }t        || ||¬«       y )Nr$   rw   é   r‡   rˆ   r‰   rŠ   r   r‹   rŒ   r�   ©Úcvr~   Ún_refinements©r<   Ún_splitsr¡   Ún_alphas)r,   r/   rQ   r‘   r+   r	   r2   Ú!_assert_graphical_lasso_cv_scores)Úsplitsr¤   r¡   r’   r“   r=   r<   s          rJ   Útest_graphical_lasso_cv_scoresr§   ð   s�   € Ø€FØ€HØ€MÜ�x‰xâ Ú Ú Ú ð		
ó€Hô �)‰)×
Ñ
 Ó
"€CØ×Ñ¢\°xÀcÐÓJ€AÜ
˜f¨XÀ]Ô
S×
WÑ
WØ	ó€Cô &ØØØ#Øö	rL   T)Úenable_metadata_routingc                 ó   — d}d}d}t        j                  g d¢g d¢g d¢g d¢g«      }t         j                  j                  | «      }|j	                  g d¢|d¬	«      }|j
                  d
   }|j                  d
d|«      }d|i}	t        |¬«      }
|
j                  d¬«        t        |
||¬«      j                  |fi |	¤Ž}t        ||||¬«       y)zVCheck that `GraphicalLassoCV` internally dispatches metadata to
    the splitter.
    rw   rž   r‡   rˆ   r‰   rŠ   r‹   i,  r�   r   Úgroups)r£   T)rª   rŸ   r¢   N)r,   r/   rQ   r‘   r+   ÚshapeÚrandintr   Úset_split_requestr	   r2   r¥   )Úglobal_random_seedr¦   r¤   r¡   r’   r“   r=   r:   rª   Úparamsr    r<   s               rJ   Ú+test_graphical_lasso_cv_scores_with_routingr°   
  sá   € ð
 €FØ€HØ€MÜ�x‰xâ Ú Ú Ú ð		
ó€Hô �)‰)×
Ñ
Ð 2Ó
3€CØ×Ñ¢\°xÀcÐÓJ€AØ—‘˜‘
€IØ�[‰[˜˜A˜yÓ)€FØ˜Ð€FÜ	˜VÔ	$€BØ×Ñ ÐÔ%à
SÔ
˜b¨ÀÔ
O×
SÑ
SØ	ñØñ€Cô &ØØØ#Øö	rL   c                 óÐ  — | j                   }||z  dz   }dg}t        |«      D �cg c]  }d|› d�‘Œ
 }}||z   D ]  }	|	|v sJ ‚t        ||	   «      |k(  rŒJ ‚ t        j                  |D �	cg c]  }	| j                   |	   ‘Œ c}	«      }
|
j                  d¬«      }|
j                  d¬«      }t        | j                   d   |«       t        | j                   d   |«       y c c}w c c}	w )	Nr)   r~   ÚsplitÚ_test_scorer   )ÚaxisÚmean_test_scoreÚstd_test_score)Úcv_results_ÚrangeÚlenr,   Úasarrayr5   Ústdr   )r<   r£   r¡   r¤   Ú
cv_resultsÚtotal_alphasÚkeysÚiÚ
split_keysÚkeyÚ	cv_scoresÚexpected_meanÚexpected_stds                rJ   r¥   r¥   .  sô   € Ø—‘€Jð ! 8Ñ+¨aÑ/€LØˆ:€DÜ27¸³/ÖB¨Q�E˜!˜˜KÒ(ÐB€JÐBØ�jÑ ò 4ˆØ�jÑ Ð Ð Ü�:˜c‘?Ó# |Ó3Ð3Ð3ð4ô —
‘
¸JÖG°S˜CŸO™O¨CÓ0ÒGÓH€IØ—N‘N¨�NÓ*€MØ—=‘= a�=Ó(€Lä�C—O‘OÐ$5Ñ6¸ÔFÜ�C—O‘OÐ$4Ñ5°|ÕDùò Cùò
 Hs   ¥CÁ*C#)r)   )-Ú__doc__r€   Ú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   rK   rU   ÚmarkÚparametrizer^   rm   rq   rz   rƒ   r”   Ú
ValueErrorÚ	TypeErrorrœ   r§   r°   r¥   © rL   rJ   ú<module>rÕ      s+  ðÙ &ã 
Ý ã Û Ý )Ý ç ,÷ó õ 4Ý .Ý ,÷ñ ó.2òb	7ð ‡�×Ñ˜ $¨ Ó0ñó 1ðò0ò64ò;ó@!ð$ ‡�×ÑÐ0Ò2LÓMñ?ó Nð?ð( ‡�×ÑØà
�ˆ˜
 MÐ2Ø
ˆTˆ�J Ð.Ø
˜Ð	˜yÐ*HÐIðóñCóðCò(ñ4 ¨Ô-ñ ó .ð óFErL   