
    ric                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	Z
d dlZd dlmZmZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ d dlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 g dZ6e
jn                  fdZ8 G d d      Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd  ZFej                  j                  d!      ej                  j                  d"g d#      d$               ZJd% ZKd& ZLd' ZMd( ZNd) ZOd* ZPd+ ZQd, ZRd- ZSej                  j                  d!      ej                  j                  d.d/      d0               ZTej                  j                  d1      d2        ZUd3 ZVd4 ZWd5 ZXd6 ZYej                  j                  d7e6      d8        ZZd9 Z[ej                  j                  d1      d:        Z\d; Z]ej                  j                  d<g d=      d>        Z^ej                  j                  d<g d=      d?        Z_d@ Z`dA Zae
jn                  fdBZbdC Zcej                  j                  dDe6      dE        ZddF ZedG Zfej                  j                  d<dHdIg      ej                  j                  dDg d      ej                  j                  dJ e,       e)K      ej                  j                  dLdMdNg      dO                             Zge3ej                  j                  d<dPdQg      ej                  j                  dJ e,       e)K      dR                      Zhy)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                    t         j                  j                  d      }g }|dk(  rt        t	        |||d               D ]o  \  }	\  }
}}|j                  |j                  ||t        j                  |      z  t        t        j                  |
| z                    j                  |             q |dk(  rt        t	        |||d               D ]l  \  }	\  }
}}|j                  |j                  |t        j                  |      t        t        j                  |
| z                    j                  |             n |dk(  rst        t	        ||            D ][  \  }	\  }
}|j                  |j                  ||d   t        t        j                  |
| z                    j                  |             ] |dk(  rut        t	        |||d               D ]Y  \  }	\  }
}}|j                  |j                  ||t        t        j                  |
| z                    j                  |             [ t        j                  |      }|S )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                i/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pygenerate_datarB   5   s    ))


"C
A+%%c'5*[:Q&RS 	LAy1aHH''q266*--s288A	M3J/K&-	 & %c'5*V:L&MN 	LAy1aHH''rwwqz3rxxI'>#?&-	 & "3w#67 	IAv1HH''z&)3rxxI/F+G&-	 & %c'5*V:L&MN 	LAy1aHH''1c"((1y=2I.JKRR	 			!AH    c                   2    e Zd Zddddej                  fdZy)
RandomData      2   c                    || _         || _        || _        |j                  |      j	                  |      | _        | j
                  j	                  |      | j
                  j                         z  | _        |j                  ||      j	                  |      |z  | _        d|j                  |      j	                  |      z   d|j                  ||      j	                  |      z   dz  t        ||      j	                  |      t        j                  t        |      D cg c]!  }t        ||      j	                  |      dz  # c}      d| _        d| j                  d   z  d| j                  d   z  t        j                  | j                  d         t        j                  | j                  d	   D cg c]  }t        j                  |       c}      d| _        t!        t#        t$        t$        D 	cg c]2  }	t'        ||| j
                  | j                  | j                  |	|
      4 c}	            | _        t        j*                  t-        | j
                        D 
cg c]@  \  }
}t        j.                  t1        t        j2                  ||z              |
t0        
      B c}}
      | _        y c c}w c c}w c c}	w c c}}
w )N      ?rG   )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   rO   r5   scaler:   r=   
covariance
covar_typekr>   s               rA   __init__zRandomData.__init__]   s\    #($xx-44U;||**51DLL4D4D4FFXXlJ7>>uEM
sxx5<<UCC388L*=DDUKKPQQ#JSAHHOHH #<0 $JSAHHORUU	

 t//<<$**622JJt//78HH:>:J:J6:RSJJ'S	
  '6 # "!"

(("#
"  &dll3Aq BHHQ]34asC
A Ts   &J75J<67K$AK
N)__name__
__module____qualname__r(   float64r_    rC   rA   rE   rE   \   s     jj:
rC   rE   c            	         t         j                  j                  d      } | j                  dd      }d\  }}}}}d\  }}t	        |||||||      j                  |      }	|	j                  |k(  sJ |	j                  |k(  sJ |	j                  |k(  sJ |	j                  |k(  sJ |	j                  |k(  sJ |	j                  |k(  sJ |	j                  |k(  sJ y )Nr   
   rG   )rG   -C6?      皙?)r#   r)   )rO   toln_initmax_iter	reg_covarr9   init_params)r(   r)   r*   rP   r   fitrO   r9   rk   rn   rm   rl   ro   )
r;   r<   rO   rk   rl   rm   rn   r9   ro   gmms
             rA    test_gaussian_mixture_attributesrr      s    
))


"CQA 6J2L#vx#3 O[
!' 
c!f  |+++/11177c>>==I%%%<<8###::??k)))rC   c                     t         j                  j                  d      } t        |       }|j                  }|j
                  d   }t        |      }| j                  |d      }||_        t        j                  d| d|j                         }t        j                  t        |      5  |j                  |       d d d        | j                  |      dz   }||_        t        j                  dt        j                   |      d	d
t        j"                  |      d	      }t        j                  t        |      5  |j                  |       d d d        | j                  |      }||j%                         dz   z  }||_        t        j                  dt        j$                  |      d	      }t        j                  t        |      5  |j                  |       d d d        |j&                  }	t        |	|      }|j                  |       t)        |	|j                         y # 1 sw Y   mxY w# 1 sw Y   xY w# 1 sw Y   cxY w)Nr   r#   rO      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_initrO   )r(   r)   r*   rE   rO   r<   r   rP   rx   reescapeshapepytestraises
ValueErrorrp   minmaxrQ   r6   r   )
r;   	rand_datarO   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&AN
))	>&7&=&=%>	@C 
z	- 	a .2&AN
))	ff./4 5VV-.s3	5C
 
z	- 	a xx-'+;+?+?+AA+EF%AN
))	""$&&)9":3!?	AC 
z	- 	a GW<HAEE!Hw/;   s$   +H(>H5I(H25H>I
c                     t         j                  j                  d      } t        |       }|j                  |j
                  }}|j                  d   }t        |      }| j                  |dz   |      }||_	        d}t        j                  t        |      5  |j                  |       d d d        |j                  }||_	        |j                  |       t        ||j                         y # 1 sw Y   DxY w)Nr   r#   rt   ru   z/The parameter 'means' should have the shape of rv   )r(   r)   r*   rE   rO   r5   r<   r   rP   
means_initr|   r}   r~   rp   r7   r   )	r;   r   rO   r5   r<   r   means_bad_shaper   r7   s	            rA   test_check_meansr      s    
))


"C3I(55y7K7K*LFA\2A hh|a/<O"AL
;C	z	- 	a OOEALEE!Huall+ s   C,,C5c                  ~   t         j                  j                  d      } t        |       }|j                  |j
                  }}t        j                  |dz   ||f      t        j                  |dz   |dz   f      t        j                  |dz   |f      t        j                  |dz         d}t        j                  |||f      }t        j                  |      |d<   d|d<   ||d   t        j                  ||fd      t        j                  |d      d}ddddd}t        D ]   }t        |       j                  |   }	t        |||       }
||   |
_        d	| d
}t        j                  t        |      5  |
j!                  |	       d d d        ||   |
_        d| d||    }t        j                  t        |      5  |
j!                  |	       d d d        |j"                  |   |
_        |
j!                  |	       t%        |j"                  |   |
j                          y # 1 sw Y   xY w# 1 sw Y   axY w)Nr   ru   r"   g      )r   r   r   zsymmetric, positive-definitepositiverO   r9   rK   zThe parameter 'z$ precision' should have the shape ofrv   'z precision' should be )r(   r)   r*   rE   rO   r5   onesr/   r#   rW   r<   r   precisions_initr|   r}   r~   rp   r8   r   )r;   r   rO   r5   precisions_bad_shapeprecisions_not_posprecisions_not_positivenot_positive_errorsr]   r<   r   r   s               rA   test_check_precisionsr      s0   
))


"C3I(55y7K7K*L ):zBCaa89):67WWlQ.0	 ,
J!GHFF:.q"&w #"1%z2D9WW\40	 /.	 & P
sOj)%zPS

 1<
|+OP]]:S1 	EE!H	 4J?*34G
4S3TU]]:S1 	EE!H	 &00<	a9//
;Q=N=NO+P	 		 	s   7H'H3'H0	3H<	c            	         t         j                  j                  d      } d\  }}| j                  ||      }| j                  |d      }t        j                  |      |z  }t        j
                  |g      }t        j                  d|f      }t        ||||d      }t        d      }	|	j                  |       t        |	j                  |d   d      d       t        |	j                  |d   d      d       t        |d	      }
t        j
                  |
D cg c]"  }t        j                  ||j                        $ c}      }t        j
                  |D cg c]  }t        j                   |       c}      }t#        ||       t        j$                  |df      }t        j
                  |g      }|j'                  d
      j)                  d      }t        ||||d      }t        d      }	|	j                  |       t        |	j                  |d   d      d       t        |	j                  |d   d      d       t        |d	      }
t        j
                  |
D cg c]"  }t        j                  ||j                        $ c}      }t        j
                  |D cg c]  }t        j                   |       c}      }t#        ||       y c c}w c c}w c c}w c c}w )Nr     rG   ru   T)assume_centered	frobeniusnormspectralr#   axis)ru   F)r(   r)   r*   rP   sqrtrR   zerosr   r   rp   r   
error_normr   dotTr   rU   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  sE    ))


"C"Iz 	J'A88Iq!DWWT]QF	9+	B	1j/	"B5dAr2qIKt4DHHVA[I1MAZH!L 2+vFOOLD266$/LMJ[Ac&**S/ABIi4 77Iq>"D	9+	B	
Q			(B5dAr2qIKu5DHHQKA[I1MAZH!L 2+vFOOLD266$/LMJ[Ac&**S/ABIi4% MA MAs   'KK"'K#K"c                  j   t         j                  j                  d      } d\  }}}| j                  ||      }||j	                  d      d d t         j
                  f   z  }| j                  ||      }|j	                  d      }t        j                  |j                  |      |d d t         j
                  f   z  }t        ||||d      }t        j                  |d d t         j
                  t         j
                  f   |z  d      |z  }t        ||||d      }	t               }
||
_        t        |
j                  |	d      d       t        |
j                  |	d      d       t        |	d      }t        j                  ||j                        }t        j                   |	      }t#        ||       y )	Nr   r   rG   rG   ru   r   r   r   r   r$   )r(   r)   r*   rP   rQ   newaxisr   r   r   r   r   covariance_r   r   r   r   rU   r   )r;   r4   r5   rO   r   r<   r   r   covars_pred_fullcovars_pred_tiedr   r   r   r   s                 rA   test_suffstat_sk_tiedr   _  sr   
))


"C*3'Iz<88I|,D$((("1bjj=11DJ'A	q	B		R2::.	.B:4BAN
r!RZZ+,/??CiO  ;4BAN D'D(8{KQO(8zJAN 22BFKO):):;J

+,Ii4rC   c                  *   t         j                  j                  d      } d\  }}}| j                  ||      }||j	                  d      d d t         j
                  f   z  }| j                  ||      }|j	                  d      }t        j                  |j                  |      |d d t         j
                  f   z  }t        ||||d      }t        ||||d      }	t               }
t        ||	      D ]  \  }}t        j                  t        j                  |            |
_        t        j                  |      }t        |
j                  |d      d       t        |
j                  |d      d        t!        |	d      }t        |	d	|d
z  z         y )Nr   r   ru   r   r   r   r   r%   rM   rG   )r(   r)   r*   rP   rQ   r   r   r   r   r   r   r,   r%   r   r   r   r   )r;   r4   r5   rO   r   r<   r   r   r   covars_pred_diagr   cov_fullcov_diagr   s                 rA   test_suffstat_sk_diagr   }  sa   
))


"C*3'Iz<88I|,D$((("1bjj=11DJ'A	q	B		R2::.	.B:4BAN:4BAN D!"24DE K(772778#45778$DOOH;OGKDOOH:OFJ	K 22BFKO(#0B*BCrC   c                 p   t         j                  j                  d      }d\  }}|j                  ||      j	                  |       }||j                         z
  }t        j                  |df|       }t        j                  |g|       }|j                         }t        ||||d      }t        j                  |j                         j                  |j                               ||z  z  }	t        ||	       |j                  | k(  sJ t        |d      }
t        |d|
dz  z         |
j                  | k(  sJ y )Nr   r   ru   rN   r&   rM   rG   )r(   r)   r*   rP   r2   r   r   rR   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"IzJ'..|<A	AFFHA77Iq>6D	9+\	2B	
BDT1bRTVWXVVAIIKMM199;?Y -/EF &&,666 22GUO-s_a5G/GH  L000rC   c           	         d}t        t        j                  j                  d      |       }t        D ]  }|j
                  |   }|dk(  r7t        j                  |D cg c]  }t        j                  |       c}      }na|dk(  rt        j                  |      }nF|dk(  r7t        j                  |D cg c]  }t        j                  |       c}      }n
|dk(  r||z  }|j                  | k(  sJ t        t        ||      ||      }t        |d	t        j                        z         |j                  | k(  rJ  y c c}w c c}w )
NrG   r   rN   r#   r$   r%   r&   )r5   g      )rE   r(   r)   r*   rW   rT   rR   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% 2
**:6
HH%L#fjjo%LMM6!"JJz2M6!HHj%Isbggcl%IJM;&&
2M <///0'
J?!

 	",rvvm7L0LM!!\111)2 &M &Js   E
5E
c                 2   t        j                  t        |       t        |      f      }t        j                  |      }t	        t        ||            D ]@  \  }\  }}t        j                  j                  | ||      j                  d      |d d |f<   B |S )Nru   r   )
r(   emptylenr   r+   r,   r   r   logpdfrQ   )r<   r7   covarsr   stdsir   stds           rA   _naive_lmvnpdf_diagr     s    88SVSZ()D776?D#Ct$45 A;D#ZZ&&q$488a8@QT
AKrC   c                  @   ddl m}  t        j                  j	                  d      }t        |      }d}|j                  }|j                  }|j                  }|j                  ||      }|j                  ||      }t        |||      }	t        j                  |D 
cg c]-  }
t        j                  dt        j                  |
      z        / c}
      } | |||d      }t        ||	       dt        j                  |      z  } | |||d      }t        ||	       t        j                  |D 
cg c]  }
|
 c}
      j                  d      }t        j                  t        j                  d|z              }t        |||g|z        }	 | |||d      }t        ||	       |j                  d	      }dt        j                  |j                  d	            z  }t        |||D cg c]  }|g|z  
 c}      }	 | |||d
      }t        ||	       y c c}
w c c}
w c c}w )Nr   )_estimate_log_gaussian_probr   rM   r#   r%   r   r$   ru   r&   )!sklearn.mixture._gaussian_mixturer   r(   r)   r*   rE   r5   rO   r7   rP   r   rR   r%   r   r   r   )r   r;   r   r4   r5   rO   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J'A(E;?N kJ2773#34JKJ*1eZHHh7 BGGK00O*1e_fMHh7 (({3!A3499q9AK{!234J(EK=<3OPN*1eZHHh7 #''Q'/BGGK$4$4!$4$<==O(	5-=>A3#>N +1e_kRHh75 K 4 ?s   2H-	H%Hc            	      t   t         j                  j                  d      } t        | d      }|j                  }|j
                  }|j                  }| j                  ||      }t        D ]  }|j                  }|j                  }|j                  |   }	t        || |||	|      }
|
j                  |       |
j                  |      }t        |j!                  d      t        j"                  |             t%        |
j&                  |       t%        |
j(                  |       t%        |
j*                  |	        y )Nr      r[   rO   rK   rx   r   r   r9   ru   r   )r(   r)   r*   rE   r4   r5   rO   rP   rW   r6   r7   r8   r   rp   predict_probar   rQ   r   r   rx   r   r   )r;   r   r4   r5   rO   r<   r]   r6   r7   r8   r   r   s               rA   ,test_gaussian_mixture_estimate_log_prob_respr     s   
))


"C3a(I##I%%J))LJ'A% :
##))*5
% &&
 	
aq!!$((("2BGGI4FG1>>731<</1,,j9#:rC   c            	      b   t         j                  j                  d      } t        |       }t        D ]  }|j
                  |   }|j                  }t        |j                  | |j                  |j                  |j                  |   |      }d}t        j                  t        |      5  |j                  |       d d d        |j!                  |       |j                  |      }|j#                  |      j%                  d      }t'        ||       t)        ||      dkD  rJ  y # 1 sw Y   lxY w)Nr   r   sThis GaussianMixture instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.rv   ru   r   ffffff?)r(   r)   r*   rE   rW   r<   rY   r   rO   r6   r7   r8   r|   r}   r   predictrp   r   argmaxr   r   )	r;   r   r]   r<   rY   r   r   Y_predY_pred_probas	            rA   +test_gaussian_mixture_predict_predict_probar     s   
))


"C3I% 5
KK
#KK"//"** %00<&
F 	 ]]>5 	IIaL	 	
a1q)00a086<0"1f-44415"	 	s   (D%%D.	zignore:.*did not converge.*zseed, max_iter, tol))r   rG   Hz>)ru   rG   rj   )rh   ,  r   )   r   rj   c                    t         j                  j                  |       }t        ||      }t        D ]  }|j
                  |   }|j                  }t        |j                  ||j                  |j                  |j                  |   |||      }	t        j                  |	      }
|
j                  |      j                  |      }|	j!                  |      }t#        ||       t%        ||      dkD  sJ |	j&                  j(                  |k(  sJ |	j*                  j(                  |k(  sJ |	j,                  j(                  |k(  rJ  y )NrN   )rO   rK   rx   r   r   r9   rm   rk   r   )r(   r)   r*   rE   rW   r<   rY   r   rO   r6   r7   r8   copydeepcopyrp   r   fit_predictr   r   means_r:   weights_precisions_)seedrm   rk   r   r;   r   r]   r<   rY   r   fY_pred1Y_pred2s                rA   !test_gaussian_mixture_fit_predictr  <  s"    ))


%C3l3I% 3
KK
#KK"//"** %00<&	
 MM!%%(""1%--"7G,"1g.555xx~~---zz<///}}""l222-3rC   c                      t         j                  j                  d      j                  dd      } t	        ddd      }|j                  |       }|j                  |       }t        ||       y )Nr     r   )rO   rl   rK   )r(   r)   r*   randnr   r   r   r   )r<   gmy_pred1y_pred2s       rA   (test_gaussian_mixture_fit_predict_n_initr  b  sV    
		a &&tQ/A	a	BBnnQGjjmGw(rC   c           	      r   t         j                  j                  d      }t        ||       }|j                  }|j
                  }t        D ]U  }|j                  |   }t        |dd||      }|j                  |       t        t        j                  |j                        t        j                  |j                        dd       |j                  d d df   j                         }|j                   d d df   j                         }	t        |j                  |   |j                   |	   dd       |dk(  r|j"                  }
|j$                  d   }ng|d	k(  rKt        j&                  |j"                  g|z        }
t        j&                  |j$                  d	   g|z        }n|d
k(  rt        j&                  |j"                  D cg c]  }t        j(                  |      |z   c}      }
t        j&                  |j$                  d
   D cg c]  }t        j(                  |      |z   c}      }n|dk(  rt        j&                  |j"                  D cg c]  }t        j*                  |       c}      }
t        j&                  |j$                  d   D cg c]  }t        j*                  |       c}      }t        j,                  
dd      j                         }t        j,                  dd      j                         }	t/        ||	      D ]9  \  }}t1               }||   |_        t        |j5                  |
|         dd       ; |j                  j6                  | k(  sJ |j8                  j6                  | k(  sJ |j"                  j6                  | k(  rVJ  y c c}w c c}w c c}w c c}w )Nr   rN      rO   rl   rn   rK   r9   rj   g{Gz?rtolatolr#   r$   r&   r%   ru   rG   )axis1axis2g333333?)r  )r(   r)   r*   rE   r5   rO   rW   r<   r   rp   r   sortr   r6   r   argsortr7   r   r8   rR   r/   r%   tracer,   r   r   r   r:   covariances_)r   r;   r   r5   rO   r]   r<   r   arg_idx1arg_idx2	prec_pred	prec_testr@   dr^   hr   s                    rA   test_gaussian_mixture_fitr  k  s   
))


"C3l3I%%J))L% /3
KK
#%&
 	
a 	GGAJJ):):!;#D	
 88AqD>))+??1a4(002HHX	 9$	
 I!,,V4I6!!--<!?@I)"6"6v">!?,!NOI;&!--!PQ"&&"4q"8!PQI1:1E1Ek1RSA
#a'SI 6!amm!D"''!*!DEIi6J6J66R!S"''!*!STI88IQa8@@B88IQa8@@B(+ 	IDAq&(D(|DDOOIaL914H		I xx~~---~~##|333}}""l222_/3: "QS "E!Ss   N%
N*
N/
N4
c                     t         j                  j                  d      } t        |       }|j                  }d}t
        D ]  }|j                  |   }t        |dd| |      }g }t        |      D ]3  }|j                  |       |j                  |j                  |             5 t        j                  |      }t        ||d| |      }	|	j                  |       t        |j                         |	j                  |              y )Nr   rf   ru   r  )r(   r)   r*   rE   rO   rW   r<   r   rS   rp   r-   scorerR   r   r   )
r;   r   rO   rl   r]   r<   r   llr=   g_bests
             rA   %test_gaussian_mixture_fit_best_paramsr     s    
))


"C3I))LF% 7
KK
#%&
 v 	"AEE!HIIaggaj!	" XXb\ %&
 	

1BFFHfll1o6-7rC   c            	      T   t         j                  j                  d      } t        | d      }|j                  }d}t
        D ]Y  }|j                  |   }t        |d|d| |      }d}t        j                  t        |      5  |j                  |       d d d        [ y # 1 sw Y   fxY w)Nr   ru   r   rO   rl   rm   rn   rK   r9   zBest performing initialization did not converge. Try different init parameters, or increase max_iter, tol, or check for degenerate data.rv   )r(   r)   r*   rE   rO   rW   r<   r   r|   warnsr   rp   )r;   r   rO   rm   r]   r<   r   r   s           rA   -test_gaussian_mixture_fit_convergence_warningr$    s    
))


"C3a(I))LH% 
KK
#%&
1 	
 \\,C8 	EE!H	 		 	s   BB'	c                  H   t         j                  j                  d      } d\  }}}| j                  ||      }t        D ]b  }t        ||d      j                  |      j                  |      }t        ||dd      j                  |      j                  |      }||k\  rbJ  y )Nr   rH   r   rG   r   r   rO   r9   rK   rl   )r(   r)   r*   r  rW   r   rp   r  )r;   r4   r5   rO   r<   cv_typetrain1train2s           rA   test_multiple_initr+    s    
))


"C*2'Iz<		)Z(A"  )7QR SVU1X 	 ) '	 SVU1X 	 % rC   c                      t         j                  j                  d      } d\  }}}| j                  ||      }ddddd}t        D ]7  }t        |||       j                  |      }|j                         ||   k(  r7J  y )	Nr   r&           )   rL   r   )r(   r)   r*   r  rW   r   rp   _n_parameters)r;   r4   r5   rO   r<   n_paramsr(  r   s           rA   "test_gaussian_mixture_n_parametersr3    s    
))


"C*2'Iz<		)Z(ARDH" 6%wS

#a& 	
  HW$5555	6rC   c                  H   t         j                  j                  d      } d\  }}}| j                  ||      }t	        |d|       j                  |      j                  |      }dD ]:  }t	        |||       j                  |      j                  |      }t        ||       < y )Nr   )d   ru   ru   r#   r   )r$   r%   r&   )r(   r)   r*   r  r   rp   bicr   )r;   r4   n_dimrO   r<   bic_fullr9   r6  s           rA   test_bic_1d_1componentr9    s     ))


"C%."Iul		)U#A%vC	
 
Q	Q  9 
+) / 
 SVSV 	 	Hc*
+rC   c                     t         j                  j                  d      } d\  }}}| j                  ||      }dt	        t        j
                  |j                  d            |dt        j                  dt         j                  z        z   z  z   z  }t        D ]  }t        ||| d      }|j                  |       d|z  |z  d|j                         z  z   }d|z  |z  t        j                  |      |j                         z  z   }	|t        j                  |      z  }
|j                  |      |z
  |z  |
k  sJ |j                  |      |	z
  |z  |
k  rJ  y )	Nr   )rH   rh   rG   rJ   ru   )biasrG   rF   )rO   r9   rK   rm   )r(   r)   r*   r  r!   r   r   r   pirW   r   rp   r1  r   aicr6  )r;   r4   r5   rO   r<   sghr(  r   r=  r6  bounds              rA   test_gaussian_mixture_aic_bicr@    s?   
))


"C*2'Iz<		)Z(A
BFF133Q'(:RVVAI=N9N+OOC # 4%#	
 	
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4rC   c            	         t         j                  j                  d      } t        |       }|j                  }t
        D ]  }|j                  |   }t        |dd| |d      }t        |dd| |d      }t        j                  }t               t        _	        	 |j                  |       |j                  |       |t        _	         y # |t        _	        w xY w)Nr   ru   )rO   rl   rn   rK   r9   verboserG   )r(   r)   r*   rE   rO   rW   r<   r   sysstdoutr   rp   )r;   r   rO   r]   r<   r   r  
old_stdouts           rA   test_gaussian_mixture_verboserF  3  s    
))


"C3I))L% $
KK
#%&
 %&
 ZZ
Z
	$EE!HEE!H#CJ1$0 $CJs   "CCr   )r   ru   rG   c           	      L   | }t         j                  j                  |      }d\  }}}|j                  ||      }t	        |ddd|d      }t	        |ddd|d      }|j                  |       |j                  |      j                  |      }	|j                  |      j                  |      }
t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         |
|	kD  sJ t	        |ddd|dd	
      }t	        |ddd|dd	
      }|j                  |       |j                  rJ |j                  |       t        d      D ]!  }|j                  |       |j                  s! n |j                  sJ y )Nr   ru   rG   r   F)rO   rl   rm   rn   rK   
warm_startTr   ư>)rO   rl   rm   rn   rK   rH  rk   r  )r(   r)   r*   rP   r   rp   r  r   r   r   r   
converged_rS   )r   rK   r;   r4   r5   rO   r<   r   r  score1score2r=   s               rA   test_warm_startrM  R  s    L
))


-C*3'Iz<J'A 	!!	A 	!!	A EE!HUU1X^^AFUU1X^^AF

AJJ/!((+q}}5F?? 	!!	A 	!!	A EE!H||EE!H 4[ 	a<< <<<rC   z-ignore::sklearn.exceptions.ConvergenceWarningc                  V   t         j                  j                  d      } t        |       }|j                  }|j
                  d   }dD ]_  }t        |d||       }t        d      D ]!  }|j                  |       |j                  s! n |j                  sJ ||j                  k\  r_J  y )Nr   r#   )ru   rG   rH   T)rO   rH  rm   rK   r5  )r(   r)   r*   rE   rO   r<   r   rS   rp   rJ  n_iter_)r;   r   rO   r<   rm   rq   r=   s          rA   )test_convergence_detected_with_warm_startrP    s     ))


"C3I))LFA '%	
 s 	AGGAJ~~	 ~~~3;;&&&'rC   c                    d}t         j                  j                  d      }t        |d|       }|j                  }|j
                  |   }|j                  | k(  sJ t        |ddd||      }d}t        j                  t        |      5  |j                  |       d d d        t        j                         5  t        j                  d	t               |j!                  |       d d d        |j"                  j                  | k(  sJ |j$                  j                  | k(  sJ |j                  |      }|j'                  |      j)                         }	t+        ||	       |	j                  | k(  sJ t        |dd||
      j!                  |      }
|
j                  |      |j                  |      kD  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nr#   r      r[   r:   ru   r"  r   rv   ignorer  )r(   r)   r*   rE   rO   r<   r:   r   r|   r}   r   r  warningscatch_warningssimplefilterr   rp   r   r  score_samplesr   r   )r   r]   r;   r   rO   r<   gmm1r   	gmm_scoregmm_score_probagmm2s              rA   
test_scorer]    s   J
))


"C3a|<I))LJA77l""" !"D	=  
~S	1 

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

1I((+002O	?3  L000 !" 
c!f 	 ::a=4::a=(((1  s   
F48,G4F>G
c                     d} t         j                  j                  d      }t        |d      }|j                  }|j
                  |    }t        |dd||       }d}t        j                  t        |      5  |j                  |       d d d        |j                  |      j                  |      }|j                  d   |j                  k(  sJ y # 1 sw Y   HxY w)	Nr#   r   rR  r   ru   r  r   rv   )r(   r)   r*   rE   rO   r<   r   r|   r}   r   rX  rp   r{   r4   )r]   r;   r   rO   r<   rq   r   gmm_score_sampless           rA   test_score_samplesr`    s    J
))


"C3a(I))LJA !"C	=  
~S	1 ! 
003""1%)<)<<<<	 s   7CCc            
          t         j                  j                  d      } t        | d      }|j                  }t
        D ]  }|j                  |   }t        ||ddd| d      }t         j                   }t        j                         5  t        j                  dt               t        d	      D ]9  }|}|j                  |      j                  |      }||k\  sJ |j                   s9 n |j                   sJ 	 d d d         y # 1 sw Y   xY w)
Nr   rR  r   Tru   r   )rO   r9   rn   rH  rm   rK   rk   rT  iX  )r(   r)   r*   rE   rO   rW   r<   r   infrU  rV  rW  r   rS   rp   r  rJ  )	r;   r   rO   r]   r<   rq   current_log_likelihoodr=   prev_log_likelihoods	            rA   test_monotonic_likelihoodre    s    ))


"C3a(I))L% "
KK
#%&
 #%&&$$& 	"!!(,>? 3Z &<#),)9)9!)<&-1DDDD>> >>!>	" 	""	" 	"s   AD'DD	c                     t         j                  j                  d      } d\  }}t        j                  t        j                  |dz  |f      t        j
                  |dz  |f      f      }t        D ]  }t        |d||       }t        j                         5  t        j                  dt               t        j                  d      }t        j                  t         |      5  |j#                  |       d d d        |j%                  d	      j#                  |       d d d         y # 1 sw Y   5xY w# 1 sw Y   xY w)
Nr   )rf   r   rG   )rO   rn   r9   rK   rT  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.rv   rI  )rn   )r(   r)   r*   r3   r   r   rW   r   rU  rV  rW  RuntimeWarningry   rz   r|   r}   r~   rp   
set_params)r;   r4   r5   r<   r]   rq   r   s          rA   test_regularisationri    s    ))


"C!Iz
			)q.*-	.)q.*9U0VW	A & 2
"&	
 $$& 	2!!(N;))NC z5 
 NNTN*..q1	2 	22  	2 	2s%   AD5#D)5)D5)D2.D55D>	r]   c                    t         j                  j                  d      }t        |d|      }|j                  }|j
                  |    }t        || |d      }|j                  |       |j                  j                  |k(  sJ |j                  j                  |k(  sJ | dk(  rHt        |j                  |j                        D ]$  \  }}t        t        j                  |      |       & y | dk(  r4t        t        j                  |j                        |j                         y t        |j                  d|j                  z         y )	Nr   rR  rS  r   r'  r#   r$   rM   )r(   r)   r*   rE   rO   r<   r   rp   r   r:   r  r,   r   r   rU   )	r]   r   r;   r   rO   r<   rq   r   covars	            rA   ,test_fitted_precision_covariance_concistencyrl  :  s   
))


"C3a|<I))LJA
!"	C GGAJ??  L000!!\111Vs0@0@A 	?KD%%fjj&6>	?	v	!&**S__"=s?O?OP!#//39I9I3IJrC   c                      t         j                  j                  d      } t        | dd      }|j                  |j
                  }}t        D ]  }|j                  |   }t        |||       }d}t        j                  t        |      5  |j                  d       d d d        |j                  |       d}t        j                  t        |      5  |j                  d       d d d        d	}|j                  |      \  }	}
t        |      D ]#  }|d
k(  r?t!        |j"                  |   t        j$                  |	|
|k(     j&                        d       H|dk(  r<t!        |j"                  t        j$                  |	|
|k(     j&                        d       |dk(  rRt!        |j"                  |   t        j(                  t        j$                  |	|
|k(     j&                              d       t!        |j"                  |   t        j*                  |	|
|k(     |j,                  |   z
        d       & t        j.                  t        |      D cg c]  }t        j0                  |	|
|k(     d        c}      }t!        |j,                  |d       |	j2                  ||fk(  sJ t        dd      D ])  }|j                  |      \  }	}|	j2                  ||fk(  r)J   y # 1 sw Y   GxY w# 1 sw Y   xY wc c}w )Nr   rR  rh   )r[   rO   r   z+This GaussianMixture instance is not fittedrv   zInvalid value for 'n_samples'i N  r#   ru   )decimalr$   r%   r5  )r(   r)   r*   rE   r5   rO   rW   r<   r   r|   r}   r   samplerp   r~   rS   r   r  r   r   r%   varr   rR   r   r{   )r;   r   r5   rO   r]   r<   rq   r   r4   X_sy_sr^   means_ssample_sizer=   s                  rA   test_sampleru  S  s   
))


"C3aa8I(33Y5K5KJ% 1:
KK
#%zPS
 <]]>5 	JJqM	
-]]:S1 	JJqM	 	::i(S|$ 	AV#)$$Q'C1H)@! v%)$$bffS]__&=q v%)$$Q'C1H1H)IST *$$Q'FF3sax=3::a=89	( ((u\?RS!BGGCqM15ST!#**gqA yyY
3333 C= 	:KZZ,FC99j 9999	:_1:	 	
	 	6 Ts   
K!K.#K;
!K+	.K8	c                  ^   t        d      D ]  } t        t        j                  j	                  |       dd      }|j
                  }|j                  d   }t        |dd|       j                  |      }t        |dd|       j                  |      }|j                  |j                  k\  rJ  y )N   rH   ru   )r4   r[   r#   )rO   rl   rm   rK   rf   )
rS   rE   r(   r)   r*   rO   r<   r   rp   lower_bound_)rK   r   rO   r<   rY  r\  s         rA   	test_initry    s     b	 6II!!,/2Q
	 !--KK%a!,

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

#a& 	   D$5$55556rC   c            
         t         j                  j                  d      } d}| j                  |df      }t        j                  g dg dg dg dg d	g d
g      }t        j                  g d      }g d}t        dd||| t        |      |d      }|j                  |       |j                  rJ dD ]  }t        ||      rJ  y)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   ri   rh   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&   ru   )r9   rn   r   rx   rK   rO   r   rm   )r   r   r  precisions_cholesky_rO  rx  lower_bounds_N)
r(   r)   r*   uniformrR   r   r   rp   rJ  hasattr)rndr4   r<   r   r   rx   rq   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 ~~ 	" sD!!!	"rC   ro   )r)   random_from_data	k-means++kmeansc                 X   t         j                  j                  |      }t        |d      }|j                  }|j
                  d   }t        || |d      }|j                  |       |j                  }t        j                  |d      D ]  \  }}	t        j                  ||	      sJ  y )Nr   r   r#   r   )rO   ro   rK   rm   rG   )r)r(   r)   r*   rE   rO   r<   r   rp   r   	itertoolscombinationsallclose)
ro   global_random_seedr;   r   rO   r<   rq   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!< /;;vv.../rC   c                    t         j                  j                  |      }t        |d|      }|j                  }|j
                  d   }t        || |      }|j                  |       |j                  j                  ||j                  d   fk(  sJ t        j                  |j                  d      |j                  k        sJ t        j                  |j                  |j                  d      k        sJ |j                  sJ |j                  j                  |k(  sJ |j                  j                  |k(  sJ |j                   j                  |k(  sJ y )Nr   rS  r#   )rO   ro   rK   ru   r   r   )r(   r)   r*   rE   rO   r<   r   rp   r   r{   allr   r   rJ  r:   r  r   )ro   r  r   r;   r   rO   r<   rq   s           rA   test_means_for_all_initsr    s#   
 ))

 2
3C3a|<I))LFA
!{C GGAJ::aggaj999966!%%Q%-3::-...66#**1-...>>>::|+++!!\111<<---rC   c                     t         j                  j                  d      } t        | d      }|j                  }|j
                  d   }ddgddgg}t        || |dd	      }|j                  |       t        |j                  |       y )
Nr   r   r   r#   r
  ri      rI  )rO   rK   r   rk   rm   )
r(   r)   r*   rE   rO   r<   r   rp   r   r   )r;   r   rO   r<   r   rq   s         rA   test_max_iter_zeror    s     ))


"C3a(I))LFAr(RH%J
!C GGAJCJJ
+rC   c                    d}t         j                  j                  d      }|j                  |d      t        j                  ddg      z   }t        j                  ddgddgg      }t        j
                  |j                  |d      |      }t        j                  ||g      j                  |       }d	\  }}}	}
t        j                  |j                  d   |f      j                  |       }t        |d
|
      j                  |      j                  }d
|t        j                  |j                  d         |f<   t        |||	|      \  }}}|j                  | k(  sJ d
|z  }t!        |||	||
      j                  |      }|j"                  j                  | k(  sJ |j$                  j                  | k(  sJ |j&                  j                  | k(  sJ t!        |||	|
      j                  |      }|j"                  j                  | k(  sJ |j$                  j                  | k(  sJ |j&                  j                  | k(  sJ |j(                  |j(                  k(  sJ t+        |j&                  |j&                         y)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   rG   r
  g        gffffffg      @gffffff?)rG   r%   rI  r   ru   )
n_clustersrl   rK   )rn   r9   )rO   r9   rn   r   rK   )rO   r9   rn   rK   N)r(   r)   r*   r  rR   r   r3   r2   r   r{   r   rp   labels_aranger   r:   r   r   r  r  rO  r   )r   r4   r;   shifted_gaussianCstretched_gaussianr<   rO   r9   rn   rK   r   labelr=   r\   r   gm_with_initgm_without_inits                     rA   *test_gaussian_mixture_precisions_init_diagr  &  sh    I
))


"CyyA.2r(1CC
3+Sz*+A		)Q 7;
		#%789@@NA >P:L/9l 88QWWQZ./66|DD,q|L	Q	 

 *+D1771:		%&4	49o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                 $   t         j                  j                  |       }|j                  ||f      j	                  |      }|j                  ||f      j	                  |      }||j                  d      ddt         j                  f   z  }||fS )z/Randomly generate samples and responsibilities.ru   r   N)r(   r)   r*   random_sampler2   rQ   r   )r   r4   r5   rO   r:   rsr<   r   s           rA   _generate_datar  j  s    			t	$B
)Z0188?AY56==eDDDHH!HQ

]++Dd7NrC   c                     d}t        | |||      \  }}}t        ||      }|j                  \  }}	t        |	|      }
||||f}|
j	                  |       |
j
                  |
j                  fS )zfCalculate precision matrix of X and its Cholesky decomposition
    for the given covariance type.
    rI  )rO   r9   )r   r   r{   r   _set_parametersr   r  )r<   r   r9   rn   r6   r7   rT   precisions_choleskyr=   rO   rq   paramss               rA   _calculate_precisionsr  s  s     I"?	4O#GUK 6k?SjjOA|
 |_
UCuk+>?F??C4444rC   r9   c                     t        |ddd|      \  }}t        |||       \  }}|j                  |k(  sJ |j                  |k(  sJ t        | |      }|j	                  ||       |j
                  }t        ||       y)zNon-regression test for #26415.r5  rh   r   )r   r4   r5   rO   r:   )r9   r   N)r  r  r:   r   _initializer  r   )	r9   r  r   r<   r   r   desired_precisions_choleskyrq   actual_precisions_choleskys	            rA   %test_gaussian_mixture_precisions_initr    s     GAt 4I	440O0   L000&,,<<<
'C OOAt!$!9!9.0KLrC   c                     t         j                  j                  d      } | j                  t        j                  d      t        j
                  d      d      }t        d      }|j                  |      j                          y)za
    Non-regression test for #23032 ensuring 1-component GM works on only a
    few samples.
    r   rG   rh   r{  ru   rt   N)	r(   r)   r*   r.   r   identityr   rp   ro  )r;   r<   r  s      rA   -test_gaussian_mixture_single_component_stabler    s]    
 ))


"CR[[^!DA	a	(BFF1IrC   c                    t        t              }| j                  t        j                  j
                  d|       t        j                  j                  |      }t        |      }t        |j                  |j                  |j                  |j                  d   |      }|j                  |j                   d          |j"                  |j$                  k(  sJ y)zWhen all init parameters are provided, the Gaussian parameters
    are not estimated.

    Non-regression test for gh-26015.
    )side_effectr   r#   )rO   rx   r   r   rK   N)r   r   setattrsklearnmixture_gaussian_mixturer(   r)   r*   rE   r   rO   r6   r7   r8   rp   r<   
call_countrO  )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                 	   t        ||      }t        j                  j                  d      }t	        |      }|j
                  |   }	|	j                  |      }	|rU|j                  j                  |      |j                  |   j                  |      |j                  j                  |      d}
ni }
t        d|j                  |d| d|
}|j                  |	       |j                  |	|      }t        j                  d      5  t        j                   |      }|
j#                         D ]%  \  }}|j                  ||      }t%        |||       ' |j                  |       t'        |j(                        d   |k(  sJ t'        |j*                        d   |k(  sJ t-        |j(                        t-        |      k(  sJ t-        |j*                        t-        |      k(  sJ |j/                  |      }|j1                  |      }|j3                  |      }|j5                  |      }|j7                  |      }|j9                  |      }|j;                  d      \  }}|||||g}|D ].  }t'        |      d   |k(  sJ t-        |      t-        |      k(  r.J  |||fD ]  }t=        |t>              rJ  	 ddd       |d	k(  rd
nd}|d	k(  rdnd}|d	k(  rdnd}tA        |j(                  tC        j(                  |             tA        |jD                  tC        |jD                  |             tA        |j*                  tC        |j*                  |      ||       tA        |jF                  tC        |jF                  |      ||       tA        |jH                  tC        |jH                  |      ||       tK        |j/                  |	      tC        |            dkD  sJ tA        |j1                  |	      tC        |      ||       tA        |j3                  |	      tC        |      |       tA        |j5                  |	      |       tA        |j7                  |	      |       tA        |j9                  |	      |       |j;                  d      \  }} tA        |tC        |      |       tA        | tC        |             y# 1 sw Y   xY w)z3Test that array api works in GaussianMixture.fit().r   )r   r   rx   )rO   r9   rK   ro   )r   Tarray_api_dispatchrf   Nfloat32rg   r   gMb@?gMbP?)xp)r  r  r   r  )r  rd   )&r   r(   r)   r*   rE   r<   r2   r7   r8   r6   r   rO   rp   asarrayr  config_contextcloneitemsr  r   r   r  r   r   r   rX  r  r=  r6  ro  
isinstancefloatr   r   r   r  r   r   )!ro   r9   array_namespacedevice_r:   r  r  r;   r   r<   additional_kwargsrq   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    s   " 
ow	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'>'>'@ 	0#JZZGZ<FFJ/	0 	

4V]]+A."444V001!4:::fmm$t444f))*fTl:::^^D)
!//5!//5<<%D!D!#)==#4 [ 
  	2F (+r111&>VD\111	2 / 	,EeU+++	,A!,H !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!, !,s   FSS0SSr  r  c                    t        ddd      \  }}t        dd|       }t        j                  d      5  t	        j
                  t        d	
      5  |j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr5  rG   rh   )r4   r5   centersr%   )rO   r9   ro   Tr  z9Allowed `init_params`.+if 'array_api_dispatch' is enabledrv   )r
   r   r  r  r|   r}   NotImplementedErrorrp   )ro   r  r  r:   r<   r=   rq   s          rA   <test_gaussian_mixture_raises_where_array_api_not_implementedr  Q  s     DAq
 KC 
		4	8 ]]M
 	 GGAJ		 	 	 s#   BA5$B5A>	:BB
)ir   r  ry   rC  rU  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!   rW   rc   rB   rE   rr   r   r   r   r   r   r   r   r   r   r   r   r   markfilterwarningsparametrizer  r  r  r   r$  r+  r3  r9  r@  rF  rM  rP  r]  r`  re  ri  rl  ru  ry  r  r  r  r  r  r  r  r  r  r  r  r  rd   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   