
    /Цi,                     b   S r SSKrSSKJr  SSKrSSKrSSKJr  SSK	J
r
  SSKJrJr  SSKJrJrJrJr  SSKJr  SS	KJr  SS
KJr  SSKJrJrJr  S rS r\R>                  RA                  SSS/5      \R>                  RC                  S5      S 5       5       r"S r#S r$\R>                  RA                  SSS/5      S 5       r%S r&\R>                  RA                  S/ SQ5      S 5       r'\R>                  RA                  SSS/\(S4SS/\(S4SS/\)S 4/5      S! 5       r*S" r+\" S#S$9S% 5       r,S& r-g)'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                 x   SnSn[        U 5      n[        USUS9n[        R                  " U5      nUR	                  [
        R                  " U5      XRS9n[        U5      nS H  n[        5       n	[        5       n
S Hg  n[        USUUS	S
SS9u  pnXU'   XU'   [
        R                  " U5      R                  u  pUS:X  a  MG  [        [
        R                  " U5      S5        Mi     [        U	S   U	S   SS9  [        U
S   U
S   SS9  M     [        SS	S
SS9R!                  U5      nUR#                  U5        [        UR$                  W	S   SS9  XfR'                  S5      -
  n[)        5       nS H6  n[        US9R!                  U5      R*                  nUR-                  U5        M8     [/        US   US   5        g)z!Test the graphical lasso solvers.
   d   gffffff?alpharandom_statesize)        皙?      ?cdlarsTgHz>gdy=)return_costsr   modetolenet_tolmax_iterr   g|=r   r   gMb`?atolr   )r   r"   r#   r$   ư>)rtol)FTassume_centered   N)r   r   r   invmultivariate_normalnpzerosr
   dictr   arrayTr   diffr   r   fitscorecovariance_meanlist
precision_appendr   )global_random_seeddim	n_samplesr   preccovXemp_covr   covsicovsmethodcov_icov_costsdual_gapmodelZprecsr*   prec_s                        l/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/sklearn/covariance/tests/test_graphical_lasso.pytest_graphical_lassosrN      s    CI%&89L!#TMD
**T
C((#(LA"1%G!v$F!0!"D  L!&M hhuo//OEA:!"''%.%8! %$ 	T
DLt<dU6]>- "2 4%#NRRSTUE	KKNE%%tDz= 	
FF1IAFE(?CCAFQQU ) eAha1    c                 x   [         R                  R                  U 5      R                  SS5      n[	        USS9n[        SSS9R                  U5      n[        UR                  [         R                  R                  U5      5        [        USS9u  pE[        U[         R                  R                  U5      5        g	)
z;Test graphical_lasso's early return condition when alpha=0.r   r   Tr)   r   precomputed)r   
covariance)r   N)r.   randomRandomStaterandnr
   r   r4   r   r9   r   r,   r   )r;   r@   rA   rI   _	precisions         rM   (test_graphical_lasso_when_alpha_equals_0rX   N   s    
		0177R@A"1d;G}=AA'JEE$$biimmG&<="7!4LAIryy}}W56rO   r!   r   r   z-ignore::sklearn.exceptions.ConvergenceWarningc                 z    [         R                  " SSSS9u  p[        U5      n[        USU SSS9u    p$US:X  d   eg )	Ni     r   )r=   
n_featuresr   皙?   T)r!   r$   return_n_iter)r   make_classificationr
   r   )r!   r@   rV   rA   n_iters        rM   test_graphical_lasso_n_iterra   Z   sL     ''%BUVWDA"1%G"4!4LAq Q;;rO   c                  :   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        R                  " 5       R                  n[        U5      nS	 H'  n[        US
SUS9u  pV[        XP5        [        Xa5        M)     g )N)gJSo?r   ڧ1?羥{!<?)r   g-ꊾ'?r   r   )rc   r   g[@瘈ο]?)rd   r   re   dw?)glE!N?r   ',r   )r   g5Ry;2@r   r   )rg   r   ggC%d?XIſ)r   r   rh   gv?r   g      ?Fr   r    r!   r.   r1   r   	load_irisdatar
   r   r   )cov_Ricov_Rr@   rA   rD   r?   icovs          rM   test_graphical_lasso_irisrp   f   s     HH9999		
E XX8798		
F 	!!A"1%G #G3UQWX	!#-!$/ !rO   c                  4   [         R                  " SS/SS//5      n [         R                  " SS/SS//5      n[        R                  " 5       R                  S S 2SS 24   n[        U5      nS H'  n[        US	S
US9u  pV[        XP5        [        Xa5        M)     g )Ng@gHZ?rf   gɉ1t?gO{̓%	g4#(#e @r]   r   r   Fri   rj   )	cov_skggm
icov_skggmr@   rA   rD   r?   ro   s          rM   test_graph_lasso_2Drt      s     :x08Z2HIJIJ4{J6OPQJ!!!QR%(A"1%G #G3UQWX	!#1!$3 !rO   rD   c                 `   [         R                  " SS5      n[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " / SQ/ SQ/ S	Q/ S
Q/5      n[        R                  " 5       R
                  US S 24   n[        U5      n[        USSU S9u  pg[        XbSS9  [        XsSS9  g )Nr      )g{Gz?t<i?gb?gHWY?)rw   gիr?gH紁Nk?ۨxV4b?)gb?g`ܴNk?gR*贁N{?Lgם?)g:glWY?gExV4b?ry   rx   )gR%l8@g,0r   r   )g0gCKZ8@gg      ))r   gTs gGrO#c@r   )r   gm>(r   g     |@g{Gz?Fri   r'   r%   gh㈵>)	r.   aranger1   r   rk   rl   r
   r   r   )rD   indicesrm   rn   r@   rA   r?   ro   s           rM   "test_graphical_lasso_iris_singularr|      s     iiBG HHFPPP		
E XX2=3,		
F 	!!'1*-A"1%Gt%fUICCT*Dt,rO   c                    SnSn[         R                  R                  U 5      n[        USUS9n[        R
                  " U5      nUR                  [         R                  " U5      XRS9n[        R                  n [        5       [        l	        [        SSSS9R                  U5        U[        l	        g ! U[        l	        f = f)	N      gQ?r   r   r   r   )verbosealphasr"   )r.   rS   rT   r   r   r,   r-   r/   sysstdoutr   r	   r4   )r;   r<   r=   r   r>   r?   r@   orig_stdouts           rM   test_graphical_lasso_cvr      s    
CI99(();<L!#TMD
**T
C((#(LA**K!Z
QD9==a@ 
[
s   :-B3 3C alphas_container_type)r8   tupler1   c                     [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  R                  S5      nUR	                  / SQUSS9n[        S	S
/U 5      n[        USSS9R                  U5        g)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   r\   r   r   g?r   r   r\   r   g333333?r   r   r   r   gffffff?r   r   r   r   r      r7   r?   r   g{Gz?Q?r   r+   r   r"   n_jobsN)r.   r1   rS   rT   r-   r   r	   r4   )r   true_covrngr@   r   s        rM   'test_graphical_lasso_cv_alphas_iterabler      sx     xx    		
H ))


"C\xcJAt.CDFFQ7;;A>rO   zalphas,err_type,err_msgg{Gzr   zmust be > 0
not_numberzmust be an instance of floatc                 <   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  R                  S5      nUR	                  / SQUSS9n[
        R                  " XS	9   [        U S
SS9R                  U5        SSS5        g! , (       d  f       g= f)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.   r1   rS   rT   r-   pytestraisesr	   r4   )r   err_typeerr_msgr   r   r@   s         rM   ,test_graphical_lasso_cv_alphas_invalid_arrayr      s     xx    		
H ))


"C\xcJA	x	/D;??B 
0	/	/s   )B
Bc                    SnSnSn[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  R                  U 5      nUR	                  / SQUS	S
9n[        XUS9R                  U5      n[        UUUUS9  g )N   r~      r   r   r   r   r   r   r   cvr   n_refinementsr?   n_splitsr   n_alphas)r.   r1   rS   rT   r-   r	   r4   !_assert_graphical_lasso_cv_scores)r;   splitsr   r   r   r   r@   r?   s           rM   test_graphical_lasso_cv_scoresr      s    FHMxx    		
H ))

 2
3C\xcJA
f]
S
W
W	C &#	rO   T)enable_metadata_routingc                    SnSnSn[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  R                  U 5      nUR	                  / SQUSS	9nUR
                  S
   nUR                  S
SU5      nSU0n	[        US9n
U
R                  SS9  [        XUS9R                  " U40 U	D6n[        UUUUS9  g)zNCheck that `GraphicalLassoCV` internally dispatches metadata to
the splitter.
r~   r   r   r   r   r   r   i,  r   r   groups)r   T)r   r   r   N)r.   r1   rS   rT   r-   shaperandintr   set_split_requestr	   r4   r   )r;   r   r   r   r   r   r@   r=   r   paramsr   r?   s               rM   +test_graphical_lasso_cv_scores_with_routingr     s    
 FHMxx    		
H ))

 2
3C\xcJA
I[[Ay)FF	V	$B%
b
O
S
S	C &#	rO   c                    U R                   nX#-  S-   nS/n[        U5       Vs/ s H	  nSU S3PM     nnXh-    H  n	X;   d   e[        XI   5      U:X  a  M   e   [        R                  " U V	s/ s H  oR                   U	   PM     sn	5      n
U
R                  SS9nU
R                  SS9n[        U R                   S   U5        [        U R                   S   U5        g s  snf s  sn	f )	Nr+   r   split_test_scorer   )axismean_test_scorestd_test_score)cv_results_rangelenr.   asarrayr7   stdr   )r?   r   r   r   
cv_resultstotal_alphaskeysi
split_keyskey	cv_scoresexpected_meanexpected_stds                rM   r   r   :  s    J !+a/L:D27/B/QE!K(/JB    :?#|333 ! 

JGJSOOC0JGHINNN*M==a=(LCOO$56FCOO$45|D C
 Hs   C/C$).__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   rN   rX   markparametrizefilterwarningsra   rp   rt   r|   r   r   
ValueError	TypeErrorr   r   r   r    rO   rM   <module>r      sh   & 
    )  ,  4 . , /2d	7 $0KL M 1064 D&>2&- 3&-R!$ 02LM? N?( 

M2
TJ.
	y*HICC(4 -  . FErO   