
    /Цic                        S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJr  S SK	r
S SKrS SKJrJr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  S S	KJrJr  S S
KJr  S SKJr  S SKJ r J!r!J"r"J#r#J$r$J%r%J&r&  S SK'J(r(J)r)J*r*J+r+J,r,  S SK-J.r.J/r/J0r0J1r1J2r2J3r3  S SK4J5r5  / SQr6\
Rn                  4S jr8 " S S5      r9S r:S r;S r<S r=S r>S r?S r@S rAS rBS rCS rDS rES  rF\R                  R                  S!5      \R                  R                  S"/ S#Q5      S$ 5       5       rJS% rKS& rLS' rMS( rNS) rOS* rPS+ rQS, rRS- rS\R                  R                  S!5      \R                  R                  S.S/5      S0 5       5       rT\R                  R                  S15      S2 5       rUS3 rVS4 rWS5 rXS6 rY\R                  R                  S7\65      S8 5       rZS9 r[\R                  R                  S15      S: 5       r\S; r]\R                  R                  S</ S=Q5      S> 5       r^\R                  R                  S</ S=Q5      S? 5       r_S@ r`SA ra\
Rn                  4SB jrbSC rc\R                  R                  SD\65      SE 5       rdSF reSG rf\R                  R                  S<SHSI/5      \R                  R                  SD/ SQ5      \R                  R                  SJ\," 5       \)SK9\R                  R                  SLSMSN/5      SO 5       5       5       5       rg\3\R                  R                  S<SPSQ/5      \R                  R                  SJ\," 5       \)SK9SR 5       5       5       rhg)S    N)StringIO)Mock)linalgstats)KMeans)EmpiricalCovariance)make_spd_matrix)
make_blobs)ConvergenceWarningNotFittedError)adjusted_rand_score)GaussianMixture)_compute_log_det_cholesky_compute_precision_cholesky#_estimate_gaussian_covariances_diag#_estimate_gaussian_covariances_full(_estimate_gaussian_covariances_spherical#_estimate_gaussian_covariances_tied_estimate_gaussian_parameters)_convert_to_numpy_get_namespace_device_dtype_idsdeviceget_namespace)yield_namespace_device_dtype_combinations)_array_api_for_testsassert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equal'skip_if_array_api_compat_not_configured)fast_logdetfulltieddiag	sphericalc                    [         R                  R                  S5      n/ nUS:X  a  [        [	        X#US   5      5       Ho  u  n	u  pnUR                  UR                  X[         R                  " U5      -  [        [         R                  " X-  5      5      5      R                  U5      5        Mq     US:X  a  [        [	        X#US   5      5       Hm  u  n	u  pnUR                  UR                  U[         R                  " U5      [        [         R                  " X-  5      5      5      R                  U5      5        Mo     US:X  ar  [        [	        X#5      5       HZ  u  n	u  pUR                  UR                  XS   [        [         R                  " X-  5      5      5      R                  U5      5        M\     US:X  at  [        [	        X#US   5      5       HX  u  n	u  pnUR                  UR                  X[        [         R                  " X-  5      5      5      R                  U5      5        MZ     [         R                  " U5      nU$ )Nr   r&   r%   r$   r#   )nprandomRandomState	enumeratezipappendmultivariate_normaleyeintroundastyper%   vstack)	n_samples
n_featuresweightsmeans
precisionscovariance_typedtyperngX_wmcs                j/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pygenerate_datarB   5   s    ))


"C
A+%%c'*[:Q&RSLAyaHH''266*--s288AM3J/K&- T & %c'*V:L&MNLAyaHH''rwwqz3rxx'>#?&- O & "3w#67IAvHH''&)3rxx/F+G&- 8 & %c'*V:L&MNLAyaHH''c"((1=2I.JKRR O 			!AH    c                   <    \ rS rSrSSSS\R
                  4S jrSrg)
RandomData\         2   c                    X l         X0l        X@l        UR                  U5      R	                  U5      U l        U R
                  R	                  U5      U R
                  R                  5       -  U l        UR                  X45      R	                  U5      U-  U l        SUR                  U5      R	                  U5      -   SUR                  X45      R	                  U5      -   S-  [        XAS9R	                  U5      [        R                  " [        U5       Vs/ s H  n[        XAS9R	                  U5      S-  PM      sn5      S.U l        SU R                  S   -  SU R                  S   -  [        R                  " U R                  S   5      [        R                  " U R                  S	    Vs/ s H  n[        R                  " U5      PM     sn5      S.U l        [!        [#        [$        [$         V	s/ s H0  n	['        UUU R
                  U R                  U R                  U	US
9PM2     sn	5      5      U l        [        R*                  " [-        U R
                  5       V
Vs/ s H>  u  p[        R.                  " [1        [        R2                  " X-  5      5      U
[0        S
9PM@     snn
5      U l        g s  snf s  snf s  sn	f s  snn
f )N      ?rH   )random_stater&   r%   r$   r#         ?r&   r%   r$   r#   r:   )r4   n_componentsr5   randr2   r6   sumr7   r	   r(   arrayrangecovariancesr   invr8   dictr,   COVARIANCE_TYPErB   r<   hstackr+   r#   r0   r1   Y)selfr;   r4   rP   r5   scaler:   r=   
covariance
covar_typekr>   s               rA   __init__RandomData.__init__]   sa    #($xx-44U;||**51DLL4D4D4FFXXl7>>uEM
sxx5<<UCC388L=DDUKKPQQ#JAHHOHH #<00 $JAHHORUU0	

 t//<<$**622JJt//78HH:>:J:J6:RS:RJJ':RS	
  '6 '6
 "!"

(("# '6
"  &dll33DA BHHQ]34asC3
A Ts   %J5. J:37J?"AK
)	r<   rZ   rU   r7   rP   r5   r4   r8   r6   N)__name__
__module____qualname____firstlineno__r(   float64r`   __static_attributes__ rC   rA   rE   rE   \   s     jj:
rC   rE   c            
         [         R                  R                  S5      n U R                  SS5      nSu  p#pEnSu  px[	        UUUUUUUS9R                  U5      n	U	R                  U:X  d   eU	R                  U:X  d   eU	R                  U:X  d   eU	R                  U:X  d   eU	R                  U:X  d   eU	R                  U:X  d   eU	R                  U:X  d   eg )Nr   
   rH   )rH   -C6?      皙?)r#   r)   )rP   toln_initmax_iter	reg_covarr9   init_params)r(   r)   r*   rQ   r   fitrP   r9   ro   rr   rq   rp   rs   )
r;   r<   rP   ro   rp   rq   rr   r9   rs   gmms
             rA    test_gaussian_mixture_attributesrv      s    
))


"CQA 6J2Lv#3 O
!' 
c!f  |+++/11177c>>==I%%%<<8###::??k)))rC   c                     [         R                  R                  S5      n [        U 5      nUR                  nUR
                  S   n[        US9nU R                  US5      nXTl        [        R                  " SU SUR                   35      n[        R                  " [        US9   UR                  U5        S S S 5        U R                  U5      S-   nXtl        [        R                  " S[         R                   " U5      S	 S
[         R"                  " U5      S	 35      n[        R                  " [        US9   UR                  U5        S S S 5        U R                  U5      nXR%                  5       S-   -  nXl        [        R                  " S[         R$                  " U5      S	 35      n[        R                  " [        US9   UR                  U5        S S S 5        UR&                  n	[        XS9nUR                  U5        [)        XR                  5        g ! , (       d  f       GNk= f! , (       d  f       N= f! , (       d  f       Nm= f)Nr   r#   rP      z2The parameter 'weights' should have the shape of (z,), but got matchzIThe parameter 'weights' should be in the range [0, 1], but got max value z.5fz, min value zEThe parameter 'weights' should be normalized, but got sum(weights) = )weights_initrP   )r(   r)   r*   rE   rP   r<   r   rQ   r|   reescapeshapepytestraises
ValueErrorrt   minmaxrR   r6   r   )
r;   	rand_datarP   r<   gweights_bad_shapemsgweights_bad_rangeweights_bad_normr6   s
             rA   test_check_weightsr      s   
))


"C3I))LFA\2A q1&N
))	>&7&=&=%>	@C 
z	-	a 
. .2&N
))	ff./4 5VV-.s3	5C
 
z	-	a 
. xx-'+?+?+AA+EF%N
))	""$&&)9":3!?	AC 
z	-	a 
. GWHAEE!Hw/; 
.	- 
.	- 
.	-s$   &H9H.H?
H+.
H<?
Ic                     [         R                  R                  S5      n [        U 5      nUR                  UR
                  p2UR                  S   n[        US9nU R                  US-   U5      nXel	        Sn[        R                  " [        US9   UR                  U5        S S S 5        UR                  nXl	        UR                  U5        [        XR                  5        g ! , (       d  f       NG= f)Nr   r#   rx   ry   z/The parameter 'means' should have the shape of rz   )r(   r)   r*   rE   rP   r5   r<   r   rQ   
means_initr   r   r   rt   r7   r   )	r;   r   rP   r5   r<   r   means_bad_shaper   r7   s	            rA   test_check_meansr      s    
))


"C3I(55y7K7K*FA\2A hh|a/<O"L
;C	z	-	a 
. OOELEE!Hull+ 
.	-s   C##
C1c                     [         R                  R                  S5      n [        U 5      nUR                  UR
                  p2[         R                  " US-   X345      [         R                  " US-   US-   45      [         R                  " US-   U45      [         R                  " US-   5      S.n[         R                  " X#U45      n[         R                  " U5      US'   SUS'   UUS   [         R                  " X#4S5      [         R                  " US5      S.nSSSSS.n[         H  n[        U 5      R                  U   n	[        X(U S9n
XH   U
l        S	U S
3n[        R                  " [        US9   U
R!                  U	5        S S S 5        Xh   U
l        SU SXx    3n[        R                  " [        US9   U
R!                  U	5        S S S 5        UR"                  U   U
l        U
R!                  U	5        [%        UR"                  U   U
R                  5        M     g ! , (       d  f       N= f! , (       d  f       Nl= f)Nr   ry   r"   g      )r   r   r   zsymmetric, positive-definitepositiverP   r9   rL   zThe parameter 'z$ precision' should have the shape ofrz   'z precision' should be )r(   r)   r*   rE   rP   r5   onesr/   r#   rX   r<   r   precisions_initr   r   r   rt   r8   r   )r;   r   rP   r5   precisions_bad_shapeprecisions_not_posprecisions_not_positivenot_positive_errorsr^   r<   r   r   s               rA   test_check_precisionsr      s   
))


"C3I(55y7K7K* ):BCaa89):67WWlQ.0	 ,J!GHFF:.q"&w #"1%2D9WW\40	 /.	 &
sOj)%PS

 1<
|+OP]]:S1EE!H 2 4?*34G4S3TU]]:S1EE!H 2 &00<	a9//
;Q=N=NO+ & 21 21s   3H 9H1 
H.	1
H?	c            	         [         R                  R                  S5      n Su  pU R                  X5      nU R                  US5      n[         R                  " U5      U-  n[         R
                  " U/5      n[         R                  " SU45      n[        XCXgS5      n[        SS9n	U	R                  U5        [        U	R                  US   SS9S5        [        U	R                  US   SS9S5        [        US	5      n
[         R
                  " U
 Vs/ s H#  n[         R                  " XR                  5      PM%     sn5      n[         R
                  " U Vs/ s H  n[        R                   " U5      PM     sn5      n[#        X5        [         R$                  " US45      n[         R
                  " U/5      nUR'                  SS
9R)                  S5      n[        XCXgS5      n[        SS9n	U	R                  U5        [        U	R                  US   SS9S5        [        U	R                  US   SS9S5        [        US	5      n
[         R
                  " U
 Vs/ s H#  n[         R                  " XR                  5      PM%     sn5      n[         R
                  " U Vs/ s H  n[        R                   " U5      PM     sn5      n[#        X5        g s  snf s  snf s  snf s  snf )Nr     rH   ry   T)assume_centered	frobeniusnormspectralr#   axis)ry   F)r(   r)   r*   rQ   sqrtrS   zerosr   r   rt   r   
error_normr   dotTr   rV   r   r   meanreshape)r;   r4   r5   r<   respX_respnkxkcovars_predecovprecs_chol_predprec
precs_predcov	precs_ests                  rA   test_suffstat_sk_fullr   5  sA    ))


"C"I 	'A88Iq!DWWT]QF	9+	B	1j/	"B5drqIKt4DHHVA[I1MAZH!L 2+vFOOLOD266$/OLMJ[A[c&**S/[ABIi4 77Iq>"D	9+	B	
Q			(B5drqIKu5DHHQKA[I1MAZH!L 2+vFOOLOD266$/OLMJ[A[c&**S/[ABIi4% MA MAs   *K K*K Kc                  D   [         R                  R                  S5      n Su  pnU R                  X5      nXDR	                  SS9S S 2[         R
                  4   -  nU R                  X5      nUR	                  SS9n[         R                  " UR                  U5      US S 2[         R
                  4   -  n[        XEXgS5      n[         R                  " US S 2[         R
                  [         R
                  4   U-  S5      U-  n[        XEXgS5      n	[        5       n
Xl        [        U
R                  U	SS9S5        [        U
R                  U	SS9S5        [        U	S5      n[         R                  " XR                  5      n[        R                   " U	5      n[#        X5        g )	Nr   r   rH   rH   ry   r   r   r   r   r$   )r(   r)   r*   rQ   rR   newaxisr   r   r   r   r   covariance_r   r   r   r   rV   r   )r;   r4   r5   rP   r   r<   r   r   covars_pred_fullcovars_pred_tiedr   r   r   r   s                 rA   test_suffstat_sk_tiedr   _  s\   
))


"C*3'I<88I,D((("1bjj=11D'A	q	B		R2::.	.B:4BAN
r!RZZ+,/??CiO  ;4BAN D'(8{KQO(8zJAN 22BFKO):):;J

+,Ii4rC   c                  
   [         R                  R                  S5      n Su  pnU R                  X5      nXDR	                  SS9S S 2[         R
                  4   -  nU R                  X5      nUR	                  SS9n[         R                  " UR                  U5      US S 2[         R
                  4   -  n[        XEXgS5      n[        XEXgS5      n	[        5       n
[        X5       H~  u  p[         R                  " [         R                  " U5      5      U
l        [         R                  " U5      n[        U
R                  USS9S5        [        U
R                  USS9S5        M     [!        U	S5      n[        U	S	US
-  -  5        g )Nr   r   ry   r   r   r   r   r%   rN   rH   )r(   r)   r*   rQ   rR   r   r   r   r   r   r   r,   r%   r   r   r   r   )r;   r4   r5   rP   r   r<   r   r   r   covars_pred_diagr   cov_fullcov_diagr   s                 rA   test_suffstat_sk_diagr   }  sF   
))


"C*3'I<88I,D((("1bjj=11D'A	q	B		R2::.	.B:4BAN:4BAN D!"2E772778#45778$DOOH;OGKDOOH:OFJ	 F 22BFKO(#0B*BCrC   c                 `   [         R                  R                  S5      nSu  p#UR                  X#5      R	                  U 5      nXDR                  5       -
  n[         R                  " US4U S9n[         R                  " U/U S9nUR                  5       n[        XTXgS5      n[         R                  " UR                  5       R                  UR                  5       5      X2-  -  n	[        X5        UR                  U :X  d   e[        US5      n
[        USU
S-  -  5        U
R                  U :X  d   eg )Nr   r   ry   rO   r&   rN   rH   )r(   r)   r*   rQ   r2   r   r   rS   r   r   flattenr   r   r:   r   )global_dtyper;   r4   r5   r<   r   r   r   covars_pred_sphericalcovars_pred_spherical2r   s              rA   #test_gaussian_suffstat_sk_sphericalr     s
    ))


"C"I'..|<A	FFHA77Iq>6D	9+\	2B	
BDTbVWXVVAIIKMM199;? -F &&,666 22GUO-s_a5G/GH  L000rC   c           	         Sn[        [        R                  R                  S5      U S9n[         GH  nUR
                  U   nUS:X  a<  [        R                  " U Vs/ s H  n[        R                  " U5      PM     sn5      nOiUS:X  a  [        R                  " U5      nOLUS:X  a<  [        R                  " U Vs/ s H  n[        R                  " U5      PM     sn5      nO
US:X  a  XA-  nUR                  U :X  d   e[        [        XC5      UUS9n[        US	[        R                  " W5      -  5        UR                  U :X  a  GM   e   g s  snf s  snf )
NrH   r   rO   r#   r$   r%   r&   )r5   g      )rE   r(   r)   r*   rX   rU   rS   r   detprodr:   r   r   r   log)r   r5   r   r^   r]   r   predected_detexpected_dets           rA   test_compute_log_det_choleskyr     s&   J299003<HI%o
**:6
HH%L#fjjo%LMM6!"JJz2M6!HHj%Ijsbggclj%IJM;&&2M <///0'
?!

 	",rvvm7L0LM!!\111) & &M &Js    E
< E
c                 .   [         R                  " [        U 5      [        U5      45      n[         R                  " U5      n[	        [        X5      5       H<  u  nu  pg[        R                  R                  XU5      R                  SS9US S 2U4'   M>     U$ )Nry   r   )
r(   emptylenr   r+   r,   r   r   logpdfrR   )r<   r7   covarsr   stdsir   stds           rA   _naive_lmvnpdf_diagr     su    88SVSZ()D776?D#C$45;DZZ&&q488a8@QT
 6KrC   c                  4   SSK Jn   [        R                  R	                  S5      n[        U5      nSnUR                  nUR                  nUR                  nUR                  XT5      nUR                  X45      n[        XU5      n	[        R                  " U V
s/ s H0  n
[        R                  " S[        R                  " U
5      -  5      PM2     sn
5      nU " XUS5      n[        X5        S[        R                  " U5      -  nU " XUS5      n[        X5        [        R                  " U V
s/ s H  oPM     sn
5      R                  SS9n[        R                  " [        R                  " SU-  5      5      n[        XU/U-  5      n	U " XUS5      n[        X5        UR                  S	S9nS[        R                  " UR                  S	S95      -  n[        XU Vs/ s H	  nU/U-  PM     sn5      n	U " XUS
5      n[        X5        g s  sn
f s  sn
f s  snf )Nr   )_estimate_log_gaussian_probr   rN   r#   r%   r   r$   ry   r&   )!sklearn.mixture._gaussian_mixturer   r(   r)   r*   rE   r5   rP   r7   rQ   r   rS   r%   r   r   r   )r   r;   r   r4   r5   rP   r7   covars_diagr<   log_prob_naivex
precs_fulllog_probprecs_chol_diagcovars_tied
precs_tiedcovars_sphericalprecs_sphericalr_   s                      rA   'test_gaussian_mixture_log_probabilitiesr     s   M ))


"C3II%%J))LOOE((<4K'A(;?N kJk2773#34kJKJ*1ZHHh7 BGGK00O*1_fMHh7 (({3{!A{3499q9AK{!234J(K=<3OPN*1ZHHh7 #''Q'/BGGK$4$4!$4$<==O(	-=>-=A3#-=>N +1_kRHh75 K 4 ?s   7H.HHc            
      f   [         R                  R                  S5      n [        U SS9nUR                  nUR
                  nUR                  nU R                  X#5      n[         H  nUR                  nUR                  nUR                  U   n	[        UU UUU	US9n
U
R                  U5        U
R                  U5      n[        UR!                  SS9[         R"                  " U5      5        [%        U
R&                  U5        [%        U
R(                  U5        [%        U
R*                  U	5        M     g )Nr      r\   rP   rL   r|   r   r   r9   ry   r   )r(   r)   r*   rE   r4   r5   rP   rQ   rX   r6   r7   r8   r   rt   predict_probar   rR   r   r   r|   r   r   )r;   r   r4   r5   rP   r<   r^   r6   r7   r8   r   r   s               rA   ,test_gaussian_mixture_estimate_log_prob_respr     s    
))


"C3a(I##I%%J))L'A%
##))*5
% &&
 	
aq!!$((("2BGGI4FG1>>731<</1,,j9# &rC   c            
      ^   [         R                  R                  S5      n [        U 5      n[         H  nUR
                  U   nUR                  n[        UR                  U UR                  UR                  UR                  U   US9nSn[        R                  " [        US9   UR                  U5        S S S 5        UR!                  U5        UR                  U5      nUR#                  U5      R%                  SS9n['        Xx5        [)        XG5      S:  a  M   e   g ! , (       d  f       No= f)Nr   r   sThis GaussianMixture instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.rz   ry   r   ffffff?)r(   r)   r*   rE   rX   r<   rZ   r   rP   r6   r7   r8   r   r   r   predictrt   r   argmaxr   r   )	r;   r   r^   r<   rZ   r   r   Y_predY_pred_probas	            rA   +test_gaussian_mixture_predict_predict_probar     s    
))


"C3I%
KK
#KK"//"** %00<&
F 	 ]]>5IIaL 6 	
a1q)00a0860"1-4441 &" 65s   #D
D,	zignore:.*did not converge.*zseed, max_iter, tol))r   rH   Hz>)ry   rH   rn   )rl   ,  r   )   r   rn   c                    [         R                  R                  U 5      n[        XCS9n[         GH  nUR
                  U   nUR                  n[        UR                  UUR                  UR                  UR                  U   UUUS9n	[        R                  " U	5      n
U
R                  U5      R                  U5      nU	R!                  U5      n[#        X5        [%        X5      S:  d   eU	R&                  R(                  U:X  d   eU	R*                  R(                  U:X  d   eU	R,                  R(                  U:X  a  GM   e   g )NrO   )rP   rL   r|   r   r   r9   rq   ro   r   )r(   r)   r*   rE   rX   r<   rZ   r   rP   r6   r7   r8   copydeepcopyrt   r   fit_predictr   r   means_r:   weights_precisions_)seedrq   ro   r   r;   r   r^   r<   rZ   r   fY_pred1Y_pred2s                rA   !test_gaussian_mixture_fit_predictr  <  s    ))


%C33I%o
KK
#KK"//"** %00<&	
 MM!%%(""1%--"7,"1.555xx~~---zz<///}}""l222- &rC   c                      [         R                  R                  S5      R                  SS5      n [	        SSSS9nUR                  U 5      nUR                  U 5      n[        X#5        g )Nr     r   )rP   rp   rL   )r(   r)   r*   randnr   r   r   r   )r<   gmy_pred1y_pred2s       rA   (test_gaussian_mixture_fit_predict_n_initr  b  sT    
		a &&tQ/A	a	BBnnQGjjmGw(rC   c           	         [         R                  R                  S5      n[        XS9nUR                  nUR
                  n[         GHc  nUR                  U   n[        USSUUS9nUR                  U5        [        [         R                  " UR                  5      [         R                  " UR                  5      SSS9  UR                  S S 2S4   R                  5       nUR                   S S 2S4   R                  5       n	[        UR                  U   UR                   U	   SSS9  US:X  a  UR"                  n
UR$                  S   nGOUS	:X  aM  [         R&                  " UR"                  /U-  5      n
[         R&                  " UR$                  S	   /U-  5      nGO-US
:X  a  [         R&                  " UR"                   Vs/ s H  n[         R(                  " U5      U-  PM     sn5      n
[         R&                  " UR$                  S
    Vs/ s H  n[         R(                  " U5      U-  PM     sn5      nOUS:X  a  [         R&                  " UR"                   Vs/ s H  n[         R*                  " U5      PM     sn5      n
[         R&                  " UR$                  S    Vs/ s H  n[         R*                  " U5      PM     sn5      n[         R,                  " W
SSS9R                  5       n[         R,                  " WSSS9R                  5       n	[/        X5       H4  u  p[1        5       nX   Ul        [        UR5                  X   5      SSS9  M6     UR                  R6                  U :X  d   eUR8                  R6                  U :X  d   eUR"                  R6                  U :X  a  GMd   e   g s  snf s  snf s  snf s  snf )Nr   rO      rP   rp   rr   rL   r9   rn   g{Gz?rtolatolr#   r$   r&   r%   ry   rH   )axis1axis2g333333?)r  )r(   r)   r*   rE   r5   rP   rX   r<   r   rt   r   sortr   r6   r   argsortr7   r   r8   rS   r/   r%   tracer,   r   r   r   r:   covariances_)r   r;   r   r5   rP   r^   r<   r   arg_idx1arg_idx2	prec_pred	prec_testr@   dr_   hr   s                    rA   test_gaussian_mixture_fitr  k  s   
))


"C33I%%J))L%o
KK
#%&
 	
a 	GGAJJ):):!;#D	
 88AqD>))+??1a4(002HHX	 9$	
 I!,,V4I6!!--<!?@I)"6"6v">!?,!NOI;&!--!P-Q"&&"4q"8-!PQI1:1E1Ek1RS1RA
#a'1RSI 6!amm!Dm"''!*m!DEIi6J6J66R!S6R"''!*6R!STI88IQa8@@B88IQa8@@B+DA&(D(|DDOOIL914H	 , xx~~---~~##|333}}""l222_ &: "QS "E!Ss   #N0
#N5
 N:
$ N?
c            	      
   [         R                  R                  S5      n [        U 5      nUR                  nSn[
         H  nUR                  U   n[        USSU US9n/ n[        U5       H4  nUR                  U5        UR                  UR                  U5      5        M6     [         R                  " U5      n[        UUSU US9n	U	R                  U5        [        UR                  5       U	R                  U5      5        M     g )Nr   rj   ry   r  )r(   r)   r*   rE   rP   rX   r<   r   rT   rt   r-   scorerS   r   r   )
r;   r   rP   rp   r^   r<   r   llr=   g_bests
             rA   %test_gaussian_mixture_fit_best_paramsr$    s    
))


"C3I))LF%
KK
#%&
 vAEE!HIIaggaj!  XXb\ %&
 	

1BFFHfll1o6- &rC   c            
      T   [         R                  R                  S5      n [        U SS9nUR                  nSn[
         HU  nUR                  U   n[        USUSU US9nSn[        R                  " [        US9   UR                  U5        S S S 5        MW     g ! , (       d  f       Mi  = f)Nr   ry   r   rP   rp   rq   rr   rL   r9   zBest performing initialization did not converge. Try different init parameters, or increase max_iter, tol, or check for degenerate data.rz   )r(   r)   r*   rE   rP   rX   r<   r   r   warnsr   rt   )r;   r   rP   rq   r^   r<   r   r   s           rA   -test_gaussian_mixture_fit_convergence_warningr(    s    
))


"C3a(I))LH%
KK
#%&
1 	
 \\,C8EE!H 98 & 98s   9B
B'	c                  :   [         R                  R                  S5      n Su  pnU R                  X5      n[         H\  n[        X5SS9R                  U5      R                  U5      n[        UUSSS9R                  U5      R                  U5      nXv:  a  M\   e   g )Nr   rI   r   rH   r   r   rP   r9   rL   rp   )r(   r)   r*   r  rX   r   rt   r!  )r;   r4   r5   rP   r<   cv_typetrain1train2s           rA   test_multiple_initr/    s    
))


"C*2'I<		)(A")QR SVU1X 	 ) '	 SVU1X 	 % #rC   c                      [         R                  R                  S5      n Su  pnU R                  X5      nSSSSS.n[         H4  n[        X6U S9R                  U5      nUR                  5       XV   :X  a  M4   e   g )	Nr   r*           )   rM   r   )r(   r)   r*   r  rX   r   rt   _n_parameters)r;   r4   r5   rP   r<   n_paramsr,  r   s           rA   "test_gaussian_mixture_n_parametersr7    s{    
))


"C*2'I<		)(ARDH"%S

#a& 	
  H$5555	 #rC   c                  :   [         R                  R                  S5      n Su  pnU R                  X5      n[	        USU S9R                  U5      R                  U5      nS H7  n[	        UUU S9R                  U5      R                  U5      n[        XW5        M9     g )Nr   )d   ry   ry   r#   r   )r$   r%   r&   )r(   r)   r*   r  r   rt   bicr   )r;   r4   n_dimrP   r<   bic_fullr9   r:  s           rA   test_bic_1d_1componentr=    s     ))


"C%."Il		)#A%vC	
 
Q	Q  9) / 
 SVSV 	 	H* 9rC   c                     [         R                  R                  S5      n Su  pnU R                  X5      nS[	        [         R
                  " UR                  SS95      US[         R                  " S[         R                  -  5      -   -  -   -  n[         H  n[        UUU SS9nUR                  U5        SU-  U-  SUR                  5       -  -   nSU-  U-  [         R                  " U5      UR                  5       -  -   n	U[         R                  " U5      -  n
UR                  U5      U-
  U-  U
:  d   eUR                  U5      U	-
  U-  U
:  a  M   e   g )	Nr   )rI   rl   rH   rK   ry   )biasrH   rG   )rP   r9   rL   rq   )r(   r)   r*   r  r!   r   r   r   pirX   r   rt   r5  r   aicr:  )r;   r4   r5   rP   r<   sghr,  r   rA  r:  bounds              rA   test_gaussian_mixture_aic_bicrD    s6   
))


"C*2'I<		)(A
BFF133Q'(:RVVAI=N9N+OOC #%#	
 	
a)mc!A(9$99)mc!BFF9$58I$IIRWWY//a3)+e333a3)+e333 #rC   c            
         [         R                  R                  S5      n [        U 5      nUR                  n[
         H  nUR                  U   n[        USSU USS9n[        USSU USS9n[        R                  n[        5       [        l	         UR                  U5        UR                  U5        U[        l	        M     g ! U[        l	        f = f)Nr   ry   )rP   rp   rr   rL   r9   verboserH   )r(   r)   r*   rE   rP   rX   r<   r   sysstdoutr   rt   )r;   r   rP   r^   r<   r   r  
old_stdouts           rA   test_gaussian_mixture_verboserJ  3  s    
))


"C3I))L%
KK
#%&
 %&
 ZZ
Z
	$EE!HEE!H#CJ1 &0 $CJs   "CCr  )r   ry   rH   c           
      R   U n[         R                  R                  U5      nSu  p4nUR                  X45      n[	        USSSUSS9n[	        USSSUSS9nUR                  U5        UR                  U5      R                  U5      n	UR                  U5      R                  U5      n
[        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        X:  d   e[	        USSSUSS	S
9n[	        USSSUSS	S
9nUR                  U5        UR                  (       a   eUR                  U5        [        S5       H'  nUR                  U5        UR                  (       d  M'    O   UR                  (       d   eg )Nr   ry   rH   r   F)rP   rp   rq   rr   rL   
warm_startTr   ư>)rP   rp   rq   rr   rL   rL  ro   r  )r(   r)   r*   rQ   r   rt   r!  r   r   r   r   
converged_rT   )r  rL   r;   r4   r5   rP   r<   r   r  score1score2r=   s               rA   test_warm_startrQ  R  s    L
))


-C*3'I<'A 	!!	A 	!!	A EE!HUU1X^^AFUU1X^^AF

AJJ/!((+q}}5?? 	!!	A 	!!	A EE!H||EE!H 4[	a<<<  <<<rC   z-ignore::sklearn.exceptions.ConvergenceWarningc                  l   [         R                  R                  S5      n [        U 5      nUR                  nUR
                  S   nS Hi  n[        USUU S9n[        S5       H'  nUR                  U5        UR                  (       d  M'    O   UR                  (       d   eXER                  :  a  Mi   e   g )Nr   r#   )ry   rH   rI   T)rP   rL  rq   rL   r9  )r(   r)   r*   rE   rP   r<   r   rT   rt   rN  n_iter_)r;   r   rP   r<   rq   ru   r=   s          rA   )test_convergence_detected_with_warm_startrT    s     ))


"C3I))LFA%	
 sAGGAJ~~~  ~~~;;&&& rC   c           	         Sn[         R                  R                  S5      n[        USU S9nUR                  nUR
                  U   nUR                  U :X  d   e[        USSSUUS9nSn[        R                  " [        US9   UR                  U5        S S S 5        [        R                  " 5          [        R                  " S	[        5        UR!                  U5        S S S 5        UR"                  R                  U :X  d   eUR$                  R                  U :X  d   eUR                  U5      nUR'                  U5      R)                  5       n	[+        X5        U	R                  U :X  d   e[        USSUUS
9R!                  U5      n
U
R                  U5      UR                  U5      :  d   eg ! , (       d  f       GN!= f! , (       d  f       N= f)Nr#   r      r\   r:   ry   r&  r   rz   ignorer  )r(   r)   r*   rE   rP   r<   r:   r   r   r   r   r!  warningscatch_warningssimplefilterr   rt   r   r  score_samplesr   r   )r   r^   r;   r   rP   r<   gmm1r   	gmm_scoregmm_score_probagmm2s              rA   
test_scorera    s   J
))


"C3a|<I))LJA77l""" !"D	=  
~S	1

1 
2 
	 	 	"h(:; 
# ;;,,,""l222

1I((+002O	3  L000 !" 
c!f 	 ::a=4::a=(((1 
2	1 
#	"s   F/2-G/
F>
Gc                     Sn [         R                  R                  S5      n[        USS9nUR                  nUR
                  U    n[        USSUU S9nSn[        R                  " [        US9   UR                  U5        S S S 5        UR                  U5      R                  U5      nUR                  S   UR                  :X  d   eg ! , (       d  f       NN= f)	Nr#   r   rV  r   ry   r  r   rz   )r(   r)   r*   rE   rP   r<   r   r   r   r   r\  rt   r   r4   )r^   r;   r   rP   r<   ru   r   gmm_score_sampless           rA   test_score_samplesrd    s    J
))


"C3a(I))LJA !"C	=  
~S	1! 
2 
003""1%)<)<<<<	 
2	1s   /C		
Cc                  @   [         R                  R                  S5      n [        U SS9nUR                  n[
         H  nUR                  U   n[        UUSSSU SS9n[         R                  * n[        R                  " 5          [        R                  " S[        5        [        S	5       H?  nUnUR                  U5      R                  U5      nXh:  d   eUR                   (       d  M?    O   UR                   (       d   e S S S 5        M     g ! , (       d  f       M  = f)
Nr   rV  r   Try   r   )rP   r9   rr   rL  rq   rL   ro   rX  iX  )r(   r)   r*   rE   rP   rX   r<   r   infrY  rZ  r[  r   rT   rt   r!  rN  )	r;   r   rP   r^   r<   ru   current_log_likelihoodr=   prev_log_likelihoods	            rA   test_monotonic_likelihoodri    s     ))


"C3a(I))L%
KK
#%&
 #%&&$$&!!(,>? 3Z&<#),)9)9!)<&-DDD>>>   >>!> '& & '&s   A"D)D
D	c                     [         R                  R                  S5      n Su  p[         R                  " [         R                  " US-  U45      [         R
                  " US-  U45      45      n[         H  n[        USUU S9n[        R                  " 5          [        R                  " S[        5        [        R                  " S5      n[        R                  " [         US9   UR#                  U5        S S S 5        UR%                  SS	9R#                  U5        S S S 5        M     g ! , (       d  f       N9= f! , (       d  f       M  = f)
Nr   )rj   r   rH   )rP   rr   r9   rL   rX  zFitting the mixture model failed because some components have ill-defined empirical covariance (for instance caused by singleton or collapsed samples). Try to decrease the number of components, increase reg_covar, or scale the input data.rz   rM  )rr   )r(   r)   r*   r3   r   r   rX   r   rY  rZ  r[  RuntimeWarningr}   r~   r   r   r   rt   
set_params)r;   r4   r5   r<   r^   ru   r   s          rA   test_regularisationrm    s    ))


"C!I
			)q.*-	.)q.*9U0VW	A &
"&	
 $$&!!(N;))NC z5
 6 NNTN*..q1 '& &  65 '&s%   AD9#D(5&D9(
D62D99
E	r^   c                    [         R                  R                  S5      n[        USUS9nUR                  nUR
                  U    n[        UU USS9nUR                  U5        UR                  R                  U:X  d   eUR                  R                  U:X  d   eU S:X  aJ  [        UR                  UR                  5       H%  u  px[        [        R                  " U5      U5        M'     g U S:X  a5  [        [        R                  " UR                  5      UR                  5        g [        UR                  SUR                  -  5        g )	Nr   rV  rW  r   r+  r#   r$   rN   )r(   r)   r*   rE   rP   r<   r   rt   r   r:   r  r,   r   r   rV   )	r^   r   r;   r   rP   r<   ru   r   covars	            rA   ,test_fitted_precision_covariance_concistencyrp  :  s	   
))


"C3a|<I))LJA
!"	C GGAJ??  L000!!\111Vs0@0@AKD%fjj&6> B	v	!&**S__"=s?O?OP!#//39I9I3IJrC   c                     [         R                  R                  S5      n [        U SSS9nUR                  UR
                  p2[         GH  nUR                  U   n[        X4U S9nSn[        R                  " [        US9   UR                  S5        S S S 5        UR                  U5        Sn[        R                  " [        US9   UR                  S5        S S S 5        S	nUR                  U5      u  p[        U5       GH  nUS
:X  a=  [!        UR"                  U   [         R$                  " XU:H     R&                  5      SS9  MG  US:X  a:  [!        UR"                  [         R$                  " XU:H     R&                  5      SS9  M  US:X  aQ  [!        UR"                  U   [         R(                  " [         R$                  " XU:H     R&                  5      5      SS9  M  [!        UR"                  U   [         R*                  " XU:H     UR,                  U   -
  5      SS9  GM"     [         R.                  " [        U5       Vs/ s H  n[         R0                  " XU:H     S5      PM!     sn5      n[!        UR,                  USS9  U	R2                  X4:X  d   e[        SS5       H)  nUR                  U5      u  pU	R2                  X4:X  a  M)   e   GM     g ! , (       d  f       GNJ= f! , (       d  f       GN= fs  snf )Nr   rV  rl   )r\   rP   r   z+This GaussianMixture instance is not fittedrz   zInvalid value for 'n_samples'i N  r#   ry   )decimalr$   r%   r9  )r(   r)   r*   rE   r5   rP   rX   r<   r   r   r   r   samplert   r   rT   r   r  r   r   r%   varr   rS   r   r   )r;   r   r5   rP   r^   r<   ru   r   r4   X_sy_sr_   means_ssample_sizer=   s                  rA   test_samplery  S  sg   
))


"C3aa8I(33Y5K5K%o
KK
#%PS
 <]]>5JJqM 6
-]]:S1JJqM 2 	::i(|$AV#)$$Q'1H)@! v%)$$bffS]__&=q v%)$$Q'1H1H)IST *$$Q'FF3ax=3::a=89 %( ((u\?RS?R!BGGCqM15?RST!#**gqA yyY3333 C=KZZ,FC99 9999 )_ & 65
 216 Ts    KK'&K9

K$	'
K6	c                  R   [        S5       H  n [        [        R                  R	                  U 5      SSS9nUR
                  nUR                  S   n[        USSU S9R                  U5      n[        USSU S9R                  U5      nUR                  UR                  :  a  M   e   g )N   rI   ry   )r4   r\   r#   )rP   rp   rq   rL   rj   )
rT   rE   r(   r)   r*   rP   r<   r   rt   lower_bound_)rL   r   rP   r<   r]  r`  s         rA   	test_initr}    s     b	II!!,/2Q
	 !--KK%a!,

#a& 	 %b1<

#a& 	   D$5$5555 "rC   c                     [         R                  R                  S5      n SnU R                  US4S9n[         R                  " / SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/5      n[         R                  " / SQ5      n/ SQn[        SSUUU [        U5      USS9nUR                  U5        UR                  (       a   eS H  n[        Xg5      (       a  M   e   g)z`GaussianMixture`'s best_parameters, `n_iter_` and `lower_bound_`
must be set appropriately in the case of divergence.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/18216
r   rm   rl   size)gu?g?gn,?)gqz=|?gdUX'n?g.ba˼?)g8?g?g׏'?)g{?g
 ?g(}I^?)gLh?gtM?g@.?)gY8?gj4}_?g$%?)g(.Ag_S.Ag]IN@gŕ&i@g/@gYa2i]U@)?r  ?r  ggfffff?g?r&   ry   )r9   rr   r   r|   rL   rP   r   rq   )r   r   r  precisions_cholesky_rS  r|  lower_bounds_N)
r(   r)   r*   uniformrS   r   r   rt   rN  hasattr)rndr4   r<   r   r   r|   ru   attrs           rA   )test_gaussian_mixture_setting_best_paramsr    s     ))


"CI)Q(A IHIJHG	
	J hh	
	OL #!&'	C GGAJ ~~ s!!!!rC   rs   )r)   random_from_data	k-means++kmeansc                 R   [         R                  R                  U5      n[        USS9nUR                  nUR
                  S   n[        X@USS9nUR                  U5        UR                  n[        R                  " USS9 H"  u  p[         R                  " X5      (       d  M"   e   g )Nr   r   r#   r   )rP   rs   rL   rq   rH   )r)r(   r)   r*   rE   rP   r<   r   rt   r   	itertoolscombinationsallclose)
rs   global_random_seedr;   r   rP   r<   ru   r7   i_meanj_means
             rA   test_init_means_not_duplicatedr    s    
 ))

 2
3C3a(I))LFA
!WXC GGAJJJE#00!<;;v.... =rC   c                    [         R                  R                  U5      n[        USUS9nUR                  nUR
                  S   n[        XPUS9nUR                  U5        UR                  R                  XVR                  S   4:X  d   e[         R                  " UR                  SS9UR                  :*  5      (       d   e[         R                  " UR                  UR                  SS9:*  5      (       d   eUR                  (       d   eUR                  R                  U:X  d   eUR                  R                  U:X  d   eUR                   R                  U:X  d   eg )Nr   rW  r#   )rP   rs   rL   ry   r   r   )r(   r)   r*   rE   rP   r<   r   rt   r   r   allr   r   rN  r:   r  r   )rs   r  r   r;   r   rP   r<   ru   s           rA   test_means_for_all_initsr    s%   
 ))

 2
3C3a|<I))LFA
!C GGAJ::ggaj999966!%%Q%-3::-....66#**1-....>>>::|+++!!\111<<---rC   c                     [         R                  R                  S5      n [        U SS9nUR                  nUR
                  S   nSS/SS//n[        UU USSS	9nUR                  U5        [        UR                  U5        g )
Nr   r   r   r#   r  rm      rM  )rP   rL   r   ro   rq   )
r(   r)   r*   rE   rP   r<   r   rt   r   r   )r;   r   rP   r<   r   ru   s         rA   test_max_iter_zeror    s     ))


"C3a(I))LFAr(RH%J
!C GGAJCJJ
+rC   c                    Sn[         R                  R                  S5      nUR                  US5      [         R                  " SS/5      -   n[         R                  " SS/SS//5      n[         R
                  " UR                  US5      U5      n[         R                  " X5/5      R                  U 5      nS	u  pxp[         R                  " UR                  S   U45      R                  U 5      n[        US
U
S9R                  U5      R                  nS
U[         R                  " UR                  S   5      U4'   [        XkXS9u    pUR                  U :X  d   eS
U-  n[!        UUU	UU
S9R                  U5      nUR"                  R                  U :X  d   eUR$                  R                  U :X  d   eUR&                  R                  U :X  d   e[!        UUU	U
S9R                  U5      nUR"                  R                  U :X  d   eUR$                  R                  U :X  d   eUR&                  R                  U :X  d   eUR(                  UR(                  :X  d   e[+        UR&                  UR&                  5        g)a  Check that we properly initialize `precision_cholesky_` when we manually
provide the precision matrix.

In this regard, we check the consistency between estimating the precision
matrix and providing the same precision matrix as initialization. It should
lead to the same results with the same number of iterations.

If the initialization is wrong then the number of iterations will increase.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/16944
r   r   rH   r  g        gffffffg      @gffffff?)rH   r%   rM  r   ry   )
n_clustersrp   rL   )rr   r9   )rP   r9   rr   r   rL   )rP   r9   rr   rL   N)r(   r)   r*   r  rS   r   r3   r2   r   r   r   rt   labels_aranger   r:   r   r   r  r  rS  r   )r   r4   r;   shifted_gaussianCstretched_gaussianr<   rP   r9   rr   rL   r   labelr=   r]   r   gm_with_initgm_without_inits                     rA   *test_gaussian_mixture_precisions_init_diagr  &  s[    I
))


"CyyA.2r(1CC
3+Sz*+A		)Q 7;
		#89@@NA >P:L9 88QWWQZ./66|DD,q|L	Q	 

 *+D1771:		%&4	9Aq |+++*nO"!''! 
c!f  $$444$$**l:::,,22lBBB%!'!	
 
c!f  !!''<777''--===//55EEE""l&:&::::))?+O+OrC   c                    [         R                  R                  U 5      nUR                  X45      R	                  U5      nUR                  X45      R	                  U5      nXwR                  SS9SS2[         R                  4   -  nXg4$ )z/Randomly generate samples and responsibilities.ry   r   N)r(   r)   r*   random_sampler2   rR   r   )r  r4   r5   rP   r:   rsr<   r   s           rA   _generate_datar  j  sy    			t	$B
)0188?AY56==eDDHH!HQ

]++D7NrC   c                     Sn[        XX25      u  pEn[        Xb5      nUR                  u  p[        XS9n
XEXg4nU
R	                  U5        U
R
                  U
R                  4$ )z^Calculate precision matrix of X and its Cholesky decomposition
for the given covariance type.
rM  )rP   r9   )r   r   r   r   _set_parametersr   r  )r<   r   r9   rr   r6   r7   rU   precisions_choleskyr=   rP   ru   paramss               rA   _calculate_precisionsr  s  sn     I"?	#GK 6kSjjOA
 |
UCk?F??C4444rC   r9   c                     [        USSSUS9u  p4[        X4U 5      u  pVUR                  U:X  d   eUR                  U:X  d   e[        XS9nUR	                  X45        UR
                  n[        X5        g)zNon-regression test for #26415.r9  rl   r   )r  r4   r5   rP   r:   )r9   r   N)r  r  r:   r   _initializer  r   )	r9   r  r   r<   r   r   desired_precisions_choleskyru   actual_precisions_choleskys	            rA   %test_gaussian_mixture_precisions_initr    s     GA 4I	40O   L000&,,<<<
'C OOA!$!9!9.LrC   c                     [         R                  R                  S5      n U R                  [         R                  " S5      [         R
                  " S5      SS9n[        SS9nUR                  U5      R                  5         g)zU
Non-regression test for #23032 ensuring 1-component GM works on only a
few samples.
r   rH   rl   r  ry   rx   N)	r(   r)   r*   r.   r   identityr   rt   rs  )r;   r<   r	  s      rA   -test_gaussian_mixture_single_component_stabler    s]    
 ))


"CR[[^!DA	a	(BFF1IrC   c                    [        [        S9nU R                  [        R                  R
                  SU5        [        R                  R                  U5      n[        U5      n[        UR                  UR                  UR                  UR                  S   US9nUR                  UR                   S   5        UR"                  UR$                  :X  d   eg)zuWhen all init parameters are provided, the Gaussian parameters
are not estimated.

Non-regression test for gh-26015.
)side_effectr   r#   )rP   r|   r   r   rL   N)r   r   setattrsklearnmixture_gaussian_mixturer(   r)   r*   rE   r   rP   r6   r7   r8   rt   r<   
call_countrS  )monkeypatchr  mockr;   r   r	  s         rA   Dtest_gaussian_mixture_all_init_does_not_estimate_gaussian_parametersr    s     9:D))+JD ))

 2
3C3I	++&&??!,,V4
B FF9;;v ??bjj(((rC   r)   r  zarray_namespace, device_, dtype)ids#use_gmm_array_constructor_argumentsFTc                 j	   [        X#5      n[        R                  R                  S5      n[	        U5      nUR
                  U   n	U	R                  U5      n	U(       aU  UR                  R                  U5      UR                  U   R                  U5      UR                  R                  U5      S.n
O0 n
[        SUR                  USU S.U
D6nUR                  U	5        UR                  XS9n[        R                  " SS9   [        R                   " U5      nU
R#                  5        H   u  pUR                  XS9n[%        XU5        M"     UR                  U5        ['        UR(                  5      S   U:X  d   e['        UR*                  5      S   U:X  d   e[-        UR(                  5      [-        U5      :X  d   e[-        UR*                  5      [-        U5      :X  d   eUR/                  U5      nUR1                  U5      nUR3                  U5      nUR5                  U5      nUR7                  U5      nUR9                  U5      nUR;                  S5      u  nnUUUUU/nU H1  n['        U5      S   U:X  d   e[-        U5      [-        U5      :X  a  M1   e   UUU4 H  n[=        U[>        5      (       a  M   e   SSS5        US	:X  a  S
OSnUS	:X  a  SOSnUS	:X  a  SOSn[A        UR(                  [C        WR(                  US95        [A        URD                  [C        URD                  US95        [A        UR*                  [C        UR*                  US9UUS9  [A        URF                  [C        URF                  US9UUS9  [A        URH                  [C        URH                  US9UUS9  [K        UR/                  U	5      [C        WUS95      S:  d   e[A        UR1                  U	5      [C        WUS9UUS9  [A        UR3                  U	5      [C        WUS9US9  [A        UR5                  U	5      WUS9  [A        UR7                  U	5      WUS9  [A        UR9                  U	5      WUS9  UR;                  S5      u  nn [A        U[C        WUS9US9  [A        U [C        WUS95        g! , (       d  f       GN= f)z3Test that array api works in GaussianMixture.fit().r   )r   r   r|   )rP   r9   rL   rs   )r   Tarray_api_dispatchrj   Nfloat32rk   r   gMb@?gMbP?)xp)r  r  r   r  )r  rh   )&r   r(   r)   r*   rE   r<   r2   r7   r8   r6   r   rP   rt   asarrayr  config_contextcloneitemsr  r   r   r  r   r   r   r\  r!  rA  r:  rs  
isinstancefloatr   r   r   r  r   r   )!rs   r9   array_namespacedevice_r:   r  r  r;   r   r<   additional_kwargsru   X_xpgmm_xp
param_nameparam_valuearg_xp
predict_xppredict_proba_xpscore_samples_xpscore_xpaic_xpbic_xpsample_X_xpsample_y_xpresultsresultr!  default_rtolincreased_atolincreased_rtolsample_Xsample_ys!                                    rA   *test_gaussian_mixture_array_api_compliancer    si   " 
o	7B
))


"C3IO$A	A*#//007(33ODKKER%--44U;
 
 ++'	
 C GGAJ::a:(D			4	8s#'8'>'>'@#JZZZ<FF/ (A 	

4V]]+A."444V001!4:::fmm$t444f))*fTl:::^^D)
!//5!//5<<%D!D!#)==#4 [ 
 F (+r111&>VD\111  /EeU++++ 0A 
9H !I-44L"i/TQN"i/TTN CJJ 1&--B GHCLL"3FOO"KL&--"5	   &55"=	 &,,4	 	CKKN,=jR,PQTXXX!*r2	 !*r2 CIIaL(>CGGAJ\:CGGAJ\:BHhH/C,WH/CDi 
9	8s   FR#R#9R##
R2r  r  c                    [        SSSS9u  pE[        SSU S9n[        R                  " SS9   [        R
                  " [        S	S
9   UR                  U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr9  rH   rl   )r4   r5   centersr%   )rP   r9   rs   Tr  z9Allowed `init_params`.+if 'array_api_dispatch' is enabledrz   )r
   r   r  r  r   r   NotImplementedErrorrt   )rs   r  r  r:   r<   r=   ru   s          rA   <test_gaussian_mixture_raises_where_array_api_not_implementedr  Q  s|     DA
 KC 
		4	8]]M
 GGAJ	
 
9	8
 
 
9	8s#   A;A*A;*
A8	4A;;
B	)ir   r  r}   rG  rY  ior   unittest.mockr   numpyr(   r   scipyr   r   r  sklearn.clusterr   sklearn.covariancer   sklearn.datasetsr	   #sklearn.datasets._samples_generatorr
   sklearn.exceptionsr   r   sklearn.metrics.clusterr   sklearn.mixturer   r   r   r   r   r   r   r   r   sklearn.utils._array_apir   r   r   r   r   sklearn.utils._testingr   r   r   r   r   r    sklearn.utils.extmathr!   rX   rf   rB   rE   rv   r   r   r   r   r   r   r   r   r   r   r   r   markfilterwarningsparametrizer  r  r  r$  r(  r/  r7  r=  rD  rJ  rQ  rT  ra  rd  ri  rm  rp  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  rh   rC   rA   <module>r     s     	 
        " 2 , : A 7 +     .7 OQjj$N;
 ;
|*6-0`,.6Pr'5T5<D21026*8`::5< 9:3 ;38)63r7<0 4
6+440$> 9:+@ , ;@F KL' M',-)`=4"D2@ 7K 8K06:r KL6 M6&C"L H//" H..*,(AH EGJJ 5* *O<M =M6)> 3E(FG*,QR%-/'  
 >NxE O S HxEv );(?@%-/'  
 A )rC   