
    -iB                        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J	r	  S SK
Jr  S SKJrJr  S SKJr  S SKJrJr  / S	QrS
S/rS rS rS rS rS rS rS r\R:                  R=                  S5      S 5       rS r \R:                  R=                  S5      S 5       r!S r"\R:                  R=                  S5      \R:                  RG                  S/ SQ5      S 5       5       r$S r%S r&g)    N)gammaln)NotFittedError)adjusted_rand_score)BayesianGaussianMixture)_log_dirichlet_norm_log_wishart_norm)
RandomData)assert_almost_equalassert_array_equalfulltieddiag	sphericaldirichlet_processdirichlet_distributionc                     [         R                  R                  S5      n U R                  S5      n[	        [         R
                  " U5      5      [         R
                  " [	        U5      5      -
  n[        U5      n[        X#5        g )Nr      )nprandomRandomStaterandr   sumr   r
   )rngweight_concentrationexpected_normpredected_norms       ^/var/www/html/venv/lib/python3.13/site-packages/sklearn/mixture/tests/test_bayesian_mixture.pytest_log_dirichlet_normr      sf    
))


"C88A;BFF#789BFF$%= M ))=>N6    c                     [         R                  R                  S5      n Su  p[         R                  " U R	                  U5      5      S-   nU[         R
                  " [        SSU-   5      5      -  n[         R                  " S5      n[        [        X45      5       H  u  nu  pxXxSU-  [         R
                  " S5      -  -   -  [         R                  " [        SU[         R                  " SU5      S S 2[         R                  4   -
  -  5      S5      -   R                  5       * XV'   M     [        X4U5      n	[!        XY5        g )Nr   )   r         ?r   r"   g      ?g       @)r   r   r   absr   lograngeempty	enumeratezipr   r   arangenewaxisitemr   r
   )
r   n_components
n_featuresdegrees_of_freedomlog_det_precisions_cholr   kdegrees_of_freedom_k	log_det_kr   s
             r   test_log_wishart_normr4   $   s   
))


"C#L 67#=(266%1|;K2L+MMHHQKM0981,,  !j0@266#;0N$NOff+bii:.Fq"**}.UUW  $&	1 'ZN 6r    c                  J   [         R                  R                  S5      n Su  pnU R                  X5      nU R                  5       n[	        XPS9R                  U5      n[        XVR                  5        [	        X S9R                  U5      n[        SU-  UR                  5        g )Nr   )
   r"   r   )weight_concentration_priorrandom_stater-   r8   r#   )r   r   r   r   r   fitr
   weight_concentration_prior_)r   	n_samplesr-   r.   Xr7   bgmms          r   2test_bayesian_mixture_weights_prior_initialisationr?   @   s    
))


"C*2'IZ'A "%"#=	c!f 	 24T4TU #OSSTUVDl*D,L,LMr    c                  8   [         R                  R                  S5      n Su  pnU R                  X5      nU R                  5       n[	        XPS9R                  U5      n[        XVR                  5        [	        U S9R                  U5      n[        SUR                  5        U R                  U5      n[	        X'U S9R                  U5      n[        XvR                  5        [	        X S9R                  U5      n[        UR                  SS9UR                  5        g )	Nr   )r6      r   )mean_precision_priorr8   r8   r#   )r-   
mean_priorr8   r9   axis)
r   r   r   r   r   r:   r
   mean_precision_prior_mean_prior_mean)r   r<   r-   r.   r=   rB   r>   rD   s           r   /test_bayesian_mixture_mean_prior_initialisationrJ   Q   s    
))


"C*2'IZ'A 88:"1	c!f 	 ,.H.HI #488;DT778 *%J"!s	c!f 	 
$4$45 #OSSTUVDA(8(89r    c                     [         R                  R                  S5      n Su  pU R                  X5      nUS-
  n[	        X@S9nSUS-
   SUS S	3n[
        R                  " [        US
9   UR                  U5        S S S 5        U R                  5       U-   S-
  n[	        XpS9R                  U5      n[        XuR                  5        Un[	        XS9R                  U5      n[        XR                  5        [         R                  " UR                  SS9S-   [         R                  " UR                  SS9S-   [         R                  " [         R                  " [         R                  " UR                  SS95      5      S-   U R                  5       S.n	[	        U S9nS H;  n
Xl        X   Ul        UR                  U5        [        X   UR"                  5        M=     [         R                  " [         R                  " UR                  5      5      [         R                  " [         R                  " UR                  5      5      [         R$                  " USSS9[         R$                  " USSS9R'                  5       S.n[	        SS9nS H2  n
Xl        UR                  U5        [        X   UR"                  5        M4     g ! , (       d  f       GNK= f)Nr   r6   r   r#   )degrees_of_freedom_priorr8   z@The parameter 'degrees_of_freedom_prior' should be greater than    z
, but got z.3f.match)biasr6   r"   rA   r   rC   )rF   ddof)r   r   r   r   r   pytestraises
ValueErrorr:   r
   degrees_of_freedom_prior_covTr   
atleast_2dcovariance_typecovariance_priorcovariance_prior_varrI   )r   r<   r.   r=   bad_degrees_of_freedom_prior_r>   msgrM    degrees_of_freedom_prior_defaultr\   cov_typecovariance_prior_defaults               r   5test_bayesian_mixture_precisions_prior_initialisationrd   m   sZ   
))


"C!I'A %/$4!"!>D	N:&CC%H	K  
z	- 
.  #xxzJ6<"!9	c!f 	 02P2PQ (2$"!A	c!f 	 (*H*H qss#b(qss#a'bffQSSq&9:;a?XXZ	 #4D9' 0 :,68N8NO	 : bffQSSk*bffQSSk*qqq)VVAAA.335	  #2D9'4>@V@VW :W 
.	-s   )J??
Kc                  
   [         R                  R                  S5      n Su  p[        U S9nU R	                  X5      nSn[
        R                  " [        US9   UR                  U5        S S S 5        g ! , (       d  f       g = f)Nr   rL   rC   z8This BayesianGaussianMixture instance is not fitted yet.rP   )	r   r   r   r   r   rT   rU   rV   score)r   r<   r.   r>   r=   r`   s         r   %test_bayesian_mixture_check_is_fittedrg      sb    
))


"C!I #4D'A
DC	z	-

1 
.	-	-s   A44
Bc            	      B   [         R                  R                  S5      n Su  pU R                  X5      n[	        SSU S9R                  U5      nUR                  [         R                  " UR                  5      -  n[        XTR                  5        [        [         R                  " UR                  5      S5        [	        SSU S9R                  U5      nUR                  S   UR                  S   -   nUR                  S   U-  nUR                  S   U-  [         R                  " S[         R                  " US S	 5      45      -  nU[         R                  " U5      -  n[        XVR                  5        [        [         R                  " UR                  5      S5        g )
Nr   rL   r   rA   )weight_concentration_prior_typer-   r8   r#   r   rN   )r   r   r   r   r   r:   weight_concentration_r   r
   weights_hstackcumprod)	r   r<   r.   r=   r>   expected_weightsdpgmmweight_dirichlet_sumtmps	            r   test_bayesian_mixture_weightsrs      sp   
))


"C!I'A #(@ 
c!f	 	 11BFF4;U;U4VV(--8t}}-s3 $(; 
c!f	 
 	##A&)D)DQ)GG  
%
%a
(+?
?C##A&
	
))Q

3s8,-
.	/ 
 /00(..9u~~.4r    z-ignore::sklearn.exceptions.ConvergenceWarningc                     [         R                  R                  S5      n [        U SS9nUR                  n[
         H  n[         H  nUR                  U   n[        USU-  USSU SS9n[         R                  * n[        S	5       H:  nUn	UR                  U5      R                  nXy:  d   eUR                  (       d  M:    O   UR                  (       a  M   e   M     g )
Nr      scaler   TrN   MbP?)ri   r-   r[   
warm_startmax_iterr8   toliX  )r   r   r   r	   r-   
PRIOR_TYPECOVARIANCE_TYPEr=   r   infr&   r:   lower_bound_
converged_)
r   	rand_datar-   
prior_type
covar_typer=   r>   current_lower_bound_prev_lower_bounds
             r   test_monotonic_likelihoodr      s     ))


"C3b)I))L 
)JJ'A*0:- * D $&66' 3Z#6 &*hhqk&>&>#*>>>???   ???"?+ * !r    c                     [         R                  R                  S5      n [        U SS9nUR                  S   nUR
                  n[         GHl  n[        USU-  SSSSS9nUR                  U5        UR                  U[         R                  R                  S5      5        UR                  UR                  S S 2[         R                  [         R                  4   -  n[        USU-  S	SSSS9nUR                  U5        UR                  U[         R                  R                  S5      5        UR                  UR                  -  n[        U[         R                  " US5      5        [        USU-  S
SSSS9nUR                  U5        UR                  U[         R                  R                  S5      5        UR                  UR                  S S 2[         R                  4   -  n[        U[         R                  " U V	s/ s H  n	[         R                   " U	5      PM     sn	5      5        [        USU-  SSSSS9nUR                  U5        UR                  U[         R                  R                  S5      5        UR                  UR                  -  n
[        U
[         R                  " US5      5        GMo     g s  sn	f )Nr      rv   r   r   rN   Hz>)ri   r-   r[   rz   r8   r{   r   r   r   )r   r   r   r	   r=   r-   r|   r   _check_parameters_initialize_parameterscovariances_degrees_of_freedom_r+   r
   rI   arrayr   )r   r   r=   r-   r   r>   full_covariancestied_covariancediag_covariancesrX   spherical_covariancess              r   test_compare_covar_typer      sr    ))


"C3a(IFA))L j
&,6\)"
 	q!##Aryy'<'<Q'?@ 8 8BJJ

9R SS 	
 ',6\)"
 	q!##Aryy'<'<Q'?@++d.F.FFORWW5Eq-IJ ',6\)"
 	q!##Aryy'<'<Q'?@,,t/G/G2::/VVbhh@P'Q@P@P'QR	

 ',6\)'
 	q!##Aryy'<'<Q'?@ $ 1 1D4L4L L1277;KQ3OP{ !Z (Rs    J=c                  R   [         R                  R                  S5      n [        U SS9nSUR                  -  Sp2[        USU SSS9n[         GHV  nXTl        UR                  UR                  U   5        US:X  a_  [        UR                  UR                  5       H9  u  pg[        [         R                  " Xg5      [         R                  " U5      5        M;     M  US	:X  aK  [        [         R                  " UR                  UR                  5      [         R                  " U5      5        M  US
:X  a;  [        UR                  UR                  -  [         R                   " X#45      5        GM  [        UR                  UR                  -  [         R                   " U5      5        GMY     g )Nr   r   rv   r   d   rx   r-   rz   r8   r{   	reg_covarr   r   r   )r   r   r   r	   r-   r   r}   r[   r:   r=   r)   r   precisions_r
   doteyeones)r   r   r-   r.   r>   r   covar	precisions           r   test_check_covariance_precisionr   G  sO    ))


"C3a(I 9#9#991* #!CctWXD &o
)Z()$'(9(94;K;K$L #BFF5$<bffZ>PQ %M6!t(($*:*:;RVVJ=O 6!!!D$4$4423  !!D$4$44bggl6K' &r    c                     [         R                  R                  S5      n [        U SS9nSUR                  -  n[
         H  n[         H  nUR                  U   n[        UUSSSSS9R                  U5      n[        UUSSSSS9R                  US-   5      n[        UR                  UR                  S-
  5        [        UR                  UR                  5        [        UR                  UR                  5        M     M     g )Nr   r   rv   r   rx   )ri   r-   rz   r8   r{   r   )r   r   r   r	   r-   r|   r}   r=   r   r:   r
   means_rl   r   )r   r   r-   r   r   r=   bgmm1bgmm2s           r   test_invariant_translationr   k  s     ))


"C3c*Iy---L 
)JJ'A+0:) c!f  ,0:) c!c'l   ellS.@A? 2 2E4F4FG+ * !r    zignore:.*did not converge.*zseed, max_iter, tol))r   r   r   )rN   r   皙?)rA   ,  r   )   r   r   c           	      x   [         R                  R                  U 5      n[        USSS9nSUR                  -  n[
         Hw  n[        UUUUSS9nXgl        [        R                  " U5      nUR                  U   n	UR                  U	5      R                  U	5      n
UR                  U	5      n[        X5        My     g )N2   r   )r<   rw   r   r   r   )r   r   r   r	   r-   r}   r   r[   copydeepcopyr=   r:   predictfit_predictr   )seedrz   r{   r   r   r-   r   r   r   r=   Y_pred1Y_pred2s               r   !test_bayesian_mixture_fit_predictr     s     ))


%C3"A6Iy---L%
'%
 !+e$KK
#))A,&&q)##A&7, &r    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   r"   r6   )r-   n_initr8   )r   r   r   randnr   r   r   r   )r=   gmy_pred1y_pred2s       r   (test_bayesian_mixture_fit_predict_n_initr     sT    
		a &&r1-A	 a	KBnnQGjjmGw(r    c            	      2   [         R                  R                  S5      n [        U 5      n[         H  n[
         H  nUR                  U   nUR                  n[        UR                  U 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	[#        X5        [%        XX5      S:  a  M   e   M     g ! , (       d  f       Ns= f)Nr   )r-   r8   ri   r[   z{This BayesianGaussianMixture instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.rP   rN   rE   gffffff?)r   r   r   r	   r|   r}   r=   Yr   r-   rT   rU   r   r   r:   predict_probaargmaxr   r   )
r   r   r   r   r=   r   r>   r`   Y_predY_pred_probas
             r   +test_bayesian_mixture_predict_predict_probar     s    
))


"C3I 
)JJ'AA*&33 0: *	D 
 ~S9Q : HHQK\\!_F--a077Q7?Lv4&q1T999/ * !" :9s   	D
D)'r   numpyr   rT   scipy.specialr   sklearn.exceptionsr   sklearn.metrics.clusterr   sklearn.mixturer   !sklearn.mixture._bayesian_mixturer   r   +sklearn.mixture.tests.test_gaussian_mixturer	   sklearn.utils._testingr
   r   r}   r|   r   r4   r?   rJ   rd   rg   rs   markfilterwarningsr   r   r   r   parametrizer   r   r    r    r   <module>r      s      ! - 7 3 T B
 8!#;<
	778N":8<X~
"5J KL# M#@EQP KL  M FH@ 9:- ;-,):r    