
    {KgB                        d dl Z d dlZd dl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 d dlmZ d dlmZmZmZ g d	Zd
dgZd Zd Zd Zd Zd Zd Zd Z ee      d        Zd Z  ee      d        Z! ee      d        Z"ejF                  jI                  d      ejF                  jK                  dg d      d               Z&d Z'd Z(y)    N)gammaln)ConvergenceWarningNotFittedError)adjusted_rand_score)BayesianGaussianMixture)_log_dirichlet_norm_log_wishart_norm)
RandomData)assert_almost_equalassert_array_equalignore_warningsfulltieddiag	sphericaldirichlet_processdirichlet_distributionc                     t         j                  j                  d      } | j                  d      }t	        t        j
                  |            t        j
                  t	        |            z
  }t        |      }t        ||       y )Nr      )nprandomRandomStaterandr   sumr   r   )rngweight_concentrationexpected_normpredected_norms       o/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/mixture/tests/test_bayesian_mixture.pytest_log_dirichlet_normr!      sh    
))


"C88A;BFF#789BFF$%= M ))=>N~6    c                     t         j                  j                  d      } d\  }}t        j                  | j	                  |            dz   }|t        j
                  t        dd|z               z  }t        j                  d      }t        t        ||            D ]  \  }\  }}||d|z  t        j
                  d      z  z   z  t        j                  t        d|t        j                  d|      d d t         j                  f   z
  z        d      z   j                          ||<    t        |||      }	t!        ||	       y )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_normr6   %   s-   
))


"C#L* 67#=(266%1|;K2L+MMHHQKM09 781,, ) !Ij0@266#;0N$NOff+bii:.Fq"**}.UUW  $&	a1 '3ZN ~6r"   c                  `   t         j                  j                  d      } d\  }}}| j                  ||      }| j                         }t	        ||       j                  |      }t        ||j                         t	        ||       j                  |      }t        d|z  |j                         y )Nr   )
   r$   r   )weight_concentration_priorrandom_stater/   r:   r%   )r   r   r   r   r   fitr   weight_concentration_prior_)r   	n_samplesr/   r0   Xr9   bgmms          r    2test_bayesian_mixture_weights_prior_initialisationrA   A   s    
))


"C*2'I|ZJ'A "%"#=C	c!f 	 2D4T4TU #3OSSTUVDl*D,L,LMr"   c                  d   t         j                  j                  d      } d\  }}}| j                  ||      }| j                         }t	        ||       j                  |      }t        ||j                         t	        |       j                  |      }t        d|j                         | j                  |      }t	        |||       j                  |      }t        ||j                         t	        ||       j                  |      }t        |j                  d      |j                         y )	Nr   )r8      r   )mean_precision_priorr:   r:   r%   )r/   
mean_priorr:   r;   axis)
r   r   r   r   r   r<   r   mean_precision_prior_mean_prior_mean)r   r>   r/   r0   r?   rD   r@   rF   s           r    /test_bayesian_mixture_mean_prior_initialisationrL   R   s   
))


"C*2'I|ZJ'A 88:"1	c!f 	 ,d.H.HI #488;DT778 *%J"!js	c!f 	 
D$4$45 #3OSSTUVDA(8(89r"   c            
         t         j                  j                  d      } d\  }}| j                  ||      }|dz
  }t	        ||       }d|dz
   d|dd	}t        j                  t        |
      5  |j                  |       d d d        | j                         |z   dz
  }t	        ||       j                  |      }t        ||j                         |}t	        ||       j                  |      }t        ||j                         t        j                  |j                  d      dz   t        j                  |j                  d      dz   t        j                  t        j                  t        j                  |j                  d                  dz   | j                         d}	t	        |       }dD ]=  }
|
|_        |	|
   |_        |j                  |       t        |	|
   |j"                         ? t        j                  t        j                  |j                              t        j                  t        j                  |j                              t        j$                  |dd      t        j$                  |dd      j'                         d}t	        d      }dD ]3  }
|
|_        |j                  |       t        ||
   |j"                         5 y # 1 sw Y   [xY w)Nr   r8   r   r%   )degrees_of_freedom_priorr:   z@The parameter 'degrees_of_freedom_prior' should be greater than    z
, but got z.3f.match)biasr8   r$   rC   r   rE   )rH   ddof)r   r   r   r   r   pytestraises
ValueErrorr<   r   degrees_of_freedom_prior_covTr   
atleast_2dcovariance_typecovariance_priorcovariance_prior_varrK   )r   r>   r0   r?   bad_degrees_of_freedom_prior_r@   msgrO    degrees_of_freedom_prior_defaultr^   cov_typecovariance_prior_defaults               r    5test_bayesian_mixture_precisions_prior_initialisationrf   n   sr   
))


"C!IzJ'A %/$4!"!>SD	M?*%B3$Gq	J  
z	- 
.  #xxzJ6<"!9	c!f 	 0$2P2PQ (2$"!APS	c!f 	 ($*H*H qss#b(qss#a'bffQSSq&9:;a?XXZ	 #4D9' 0 :,X68N8NO	 : bffQSSk*bffQSSk*qqq)VVAAA.335	  #2D9'4X>@V@VW :W 
.	-s   1KK&c                     t         j                  j                  d      } d\  }}t        |       }| j	                  ||      }d}t        j                  t        |      5  |j                  |       d d d        y # 1 sw Y   y xY w)Nr   rN   rE   z8This BayesianGaussianMixture instance is not fitted yet.rR   )	r   r   r   r   r   rV   rW   rX   score)r   r>   r0   r@   r?   rb   s         r    %test_bayesian_mixture_check_is_fittedri      sf    
))


"C!Iz #4DJ'A
DC	z	-

1 
.	-	-s    A;;Bc            	      J   t         j                  j                  d      } d\  }}| j                  ||      }t	        dd|       j                  |      }|j                  t        j                  |j                        z  }t        ||j                         t        t        j                  |j                        d       t	        dd|       j                  |      }|j                  d   |j                  d   z   }|j                  d   |z  }|j                  d   |z  t        j                  dt        j                  |d d	       f      z  }|t        j                  |      z  }t        ||j                         t        t        j                  |j                        d       y )
Nr   rN   r   rC   )weight_concentration_prior_typer/   r:   r%   r   rP   )r   r   r   r   r   r<   weight_concentration_r   r   weights_hstackcumprod)	r   r>   r0   r?   r@   expected_weightsdpgmmweight_dirichlet_sumtmps	            r    test_bayesian_mixture_weightsru      sx   
))


"C!IzJ'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"   )categoryc                     t         j                  j                  d      } t        | d      }|j                  }t
        D ]  }t        D ]  }|j                  |   }t        |d|z  |dd| d      }t         j                   }t        d	      D ]4  }|}	|j                  |      j                  }||	k\  sJ |j                  s4 n |j                  rJ   y )
Nr      scaler   TrP   MbP?)rk   r/   r]   
warm_startmax_iterr:   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                     t         j                  j                  d      } t        | d      }|j                  d   }|j
                  }t        D ]p  }t        |d|z  dddd      }|j                  |       |j                  |t         j                  j                  d             |j                  |j                  d d t         j                  t         j                  f   z  }t        |d|z  d	ddd      }|j                  |       |j                  |t         j                  j                  d             |j                  |j                  z  }t        |t        j                  |d             t        |d|z  d
ddd      }|j                  |       |j                  |t         j                  j                  d             |j                  |j                  d d t         j                  f   z  }t        |t        j                  |D 	cg c]  }	t        j                   |	       c}	             t        |d|z  dddd      }|j                  |       |j                  |t         j                  j                  d             |j                  |j                  z  }
t        |
t        j                  |d             s y c c}	w )Nr      ry   r   r   rP   Hz>)rk   r/   r]   r}   r:   r~   r   r   r   )r   r   r   r
   r?   r/   r   r   _check_parameters_initialize_parameterscovariances_degrees_of_freedom_r-   r   rK   arrayr   )r   r   r?   r/   r   r@   full_covariancestied_covariancediag_covariancesrZ   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   Kc                  H   t         j                  j                  d      } t        | d      }d|j                  z  d}}t        |d| dd      }t        D ]K  }||_        |j                  |j                  |          |dk(  r\t        |j                  |j                        D ]8  \  }}t        t        j                  ||      t        j                  |             : |d	k(  rHt        t        j                  |j                  |j                        t        j                  |             |d
k(  r:t        |j                  |j                  z  t        j                   ||f             t        |j                  |j                  z  t        j                   |             N y )Nr   r   ry   r   d   r{   r/   r}   r:   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/   r0   r@   r   covar	precisions           r    test_check_covariance_precisionr   H  sY    ))


"C3a(I 9#9#991*L #!CctWXD &o
)Z()$'(9(94;K;K$L y#BFF5)$<bffZ>PQ %M6!t(($*:*:;RVVJ=O 6!!!D$4$44z23  !!D$4$44bggl6K' &r"   c            
         t         j                  j                  d      } t        | d      }d|j                  z  }t
        D ]  }t        D ]  }|j                  |   }t        ||dddd      j                  |      }t        ||dddd      j                  |dz         }t        |j                  |j                  dz
         t        |j                  |j                         t        |j                  |j                           y )Nr   r   ry   r   r{   )rk   r/   r}   r:   r~   r   )r   r   r   r
   r/   r   r   r?   r   r<   r   means_rn   r   )r   r   r/   r   r   r?   bgmm1bgmm2s           r    test_invariant_translationr   l  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   )rP   r   皙?)rC   ,  r   )   r   r   c                    t         j                  j                  |       }t        |dd      }d|j                  z  }t
        D ]z  }t        ||||d      }||_        t        j                  |      }|j                  |   }	|j                  |	      j                  |	      }
|j                  |	      }t        |
|       | y )N2   r   )r>   rz   r   r   r   )r   r   r   r
   r/   r   r   r]   copydeepcopyr?   r<   predictfit_predictr   )seedr}   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&7G, &r"   c                      t         j                  j                  d      j                  dd      } t	        ddd      }|j                  |       }|j                  |       }t        ||       y )Nr   r   r$   r8   )r/   n_initr:   )r   r   r   randnr   r   r   r   )r?   gmy_pred1y_pred2s       r    (test_bayesian_mixture_fit_predict_n_initr     sV    
		a &&r1-A	 a	KBnnQGjjmGw(r"   c                  2   t         j                  j                  d      } t        |       }t        D ]  }t
        D ]  }|j                  |   }|j                  }t        |j                  | ||      }d}t        j                  t        |      5  |j                  |       d d d        |j                  |       |j                  |      }|j                  |      j!                  d      }	t#        ||	       t%        ||      dk\  rJ   y # 1 sw Y   nxY w)Nr   )r/   r:   rk   r]   z{This BayesianGaussianMixture instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.rR   rP   rG   gffffff?)r   r   r   r
   r   r   r?   Yr   r/   rV   rW   r   r   r<   predict_probaargmaxr   r   )
r   r   r   r   r?   r   r@   rb   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   rV   scipy.specialr   sklearn.exceptionsr   r   sklearn.metrics.clusterr   sklearn.mixturer   !sklearn.mixture._bayesian_mixturer   r	   +sklearn.mixture.tests.test_gaussian_mixturer
   sklearn.utils._testingr   r   r   r   r   r!   r6   rA   rL   rf   ri   ru   r   r   r   r   markfilterwarningsparametrizer   r   r    r"   r    <module>r      s      ! A 7 3 T B  8!#;<
	778N":8<X~
"5J ,-# .#@EQP ,-  . F ,-H .H@ 9:- ;-,):r"   