
    e!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)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_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                       u/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/sklearn/covariance/tests/test_graphical_lasso.pytest_graphical_lassosrK      s    CI%l3L!#TMD
**T
C((#)(LA"1%G! ?v$ 
	9F!0d%f"D%  DL!E&M hhuo//OE8A:!"''%.%8
	9 	T
DLt<dU6]>!?& &**1-E	KKNe//dQGe//fqI 	
AFF1IAFE( ?CCAFQQU eAh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"1d;G}=AA'JEE$$biimmG&<="7!4LAyIryy}}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    ''%BUVWDAq"1%G"4!4LAq& 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   dw?)glE!N?r   ',r   )r   g5Ry;2@r   r   )rd   r   ggC%d?XIſ)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     HH9999		
E XX8798		
F 	!!A"1%G  0#G3UQW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@gHZ?rc   gɉ1t?gO{̓%	g4#(#e @rY   r   r   Frf   rg   )	cov_skggm
icov_skggmr=   r>   rA   r<   rl   s          rJ   test_graph_lasso_2Drq      s     :x08Z2HIJIJ4{J6OPQJ!!!QR%(A"1%G  4#G3UQW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{Gz?t<i?gb?gHWY?)rt   gիr?gH紁Nk?ۨxV4b?)gb?g`ܴNk?gR*贁N{?Lgם?)g:glWY?gExV4b?rv   ru   )gR%l8@g,0r   r   )g0gCKZ8@gg      ))r   gTs gGrO#c@r   )r   gm>(r   g     |@r   g{Gz?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     iiBG HHFPPP		
E XX2=3,		
F 	!!'1*-A"1%G  ;#4e&
	T 	"#ua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3L!#TMD
**T
C((#)(LA**K!Z
QD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)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   rX   r   r   g?r   r   rX   r   g333333?r   r   r   r   gffffff?r   r   r   r   r      r5   r<   r   g{Gz?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     xx    		
H ))


"C\xcJAt.CDFFQ7;;A>rL   zalphas,err_type,err_msgg{Gzr   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)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/   rQ   r   r+   pytestraisesr	   r2   )r~   err_typeerr_msgr   r   r=   s         rJ   ,test_graphical_lasso_cv_alphas_invalid_arrayr      s     xx    		
H ))


"C\xcJA	xw	/ 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xx    		
H ))


"C\xcJA
fX]
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xx    		
H ))

 2
3C\xcJA
I[[Ay)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:D27/BQE!K(BJBj  4j   :c?#|3334 

JGSCOOC0GHINNN*M==a=(LCOO$56FCOO$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 . , .2b	7 $0 1064;@!$ 02LM? N?( 

M2
TJ.
	y*HICC(4 -  . FErL   