
    0PhB                        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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 g d	Zd
dgZd Zd Zd Zd Zd Zd Zd Zej                            d          d             Zd Z ej                            d          d             Z!d Z"ej                            d          ej        #                    dg d          d                         Z$d Z%d Z&dS )    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                  2   t           j                            d          } |                     d          }t	          t          j        |                    t          j        t	          |                    z
  }t          |          }t          ||           d S )Nr      )nprandomRandomStaterandr   sumr   r
   )rngweight_concentrationexpected_normpredected_norms       k/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/mixture/tests/test_bayesian_mixture.pytest_log_dirichlet_normr      s    
)


"
"C88A;;BF#78899BF$%%= = M ))=>>N~66666    c                     t           j                            d          } d\  }}t          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                                    ||<   t          |||          }	t!          ||	           d S )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   $   sd   
)


"
"C#L* 6 677#=(26%1|;K2L2L+M+MMHQKKM09 7881 1  ,, ) !Ij0@26#;;0N$NOf+bi:.F.Fqqq"*}.UUW    $&&	a '3Z N ~66666r    c                     t           j                            d          } d\  }}}|                     ||          }|                                 }t	          ||                               |          }t          ||j                   t	          ||                               |          }t          d|z  |j                   d S )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'I|ZJ''A "%"#=C  	c!ff 	 2D4TUUU #3OOOSSTUVVDl*D,LMMMMMr    c                     t           j                            d          } d\  }}}|                     ||          }|                                 }t	          ||                               |          }t          ||j                   t	          |                               |          }t          d|j                   |                     |          }t	          |||                               |          }t          ||j                   t	          ||                               |          }t          |	                    d          |j                   d S )	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   sO   
)


"
"C*2'I|ZJ''A 88::"1  	c!ff 	 ,d.HIII #44488;;DT7888 *%%J"!js  	c!ff 	 
D$4555 #3OOOSSTUVVDA(899999r    c            
         t           j                            d          } d\  }}|                     ||          }|dz
  }t	          ||           }d|dz
   d|dd	}t          j        t          |
          5  |                    |           d d d            n# 1 swxY w Y   |                                 |z   dz
  }t	          ||                               |          }t          ||j
                   |}t	          ||                               |          }t          ||j
                   t          j        |j        d          dz   t          j        |j        d          dz   t          j        t          j        t          j        |j        d                              dz   |                                 d}	t	          |           }dD ]F}
|
|_        |	|
         |_        |                    |           t          |	|
         |j                   Gt          j        t          j        |j                            t          j        t          j        |j                            t          j        |dd          t          j        |dd                                          d}t	          d          }dD ]9}
|
|_        |                    |           t          ||
         |j                   :d S )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   s]   
)


"
"C!IzJ''A %/$4!"!>S  D	JM	J 	J%BI	J 	J 	J  
z	-	-	-                  #xxzzJ6<"!9  	c!ff 	 0$2PQQQ (2$"!APS  	c!ff 	 ($*H   qs###b(qs###a'bfQSq&9&9&9::;;a?XXZZ	  #444D9 P P' 0 :,X68NOOOO bfQSkk**bfQSkk**qqq)))VAAA...3355	    #222D9 X X'4X>@VWWWWX Xs   9BB"Bc                  0   t           j                            d          } d\  }}t          |           }|                     ||          }d}t          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )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      s    
)


"
"C!Iz #444DJ''A
DC	z	-	-	-  

1                 s   (BBBc            	      F   t           j                            d          } d\  }}|                     ||          }t	          dd|                               |          }|j        t          j        |j                  z  }t          ||j	                   t          t          j        |j	                  d           t	          dd|                               |          }|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           d S )
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      s   
)


"
"C!IzJ''A #(@   
c!ff	 	 1BF4;U4V4VV($-888t}--s333 $(;   
c!ff	 
 	#A&)DQ)GG  
%a
(+?
?C#A&
	
)Q
3ss8,,-
.
.	/ 
 /000(%.999u~..44444r    z-ignore::sklearn.exceptions.ConvergenceWarningc                     t           j                            d          } t          | d          }|j        }t
          D ]}t          D ]}}|j        |         }t          |d|z  |dd| d          }t           j	         }t          d	          D ]/}|}	|                    |          j        }||	k    sJ |j        r n0|j        sJ ~d S )
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 $&6' 3ZZ  #6 &*hhqkk&>#*.>>>>>? E?""""+	## #r    c            	      h   t           j                            d          } t          | d          }|j        d         }|j        }t          D ]d}t          |d|z  dddd          }|                    |           |	                    |t           j                            d                     |j
        |j        d d t           j        t           j        f         z  }t          |d|z  d	ddd          }|                    |           |	                    |t           j                            d                     |j
        |j        z  }t          |t          j        |d                     t          |d|z  d
ddd          }|                    |           |	                    |t           j                            d                     |j
        |j        d d t           j        f         z  }t          |t          j        d |D                                  t          |d|z  dddd          }|                    |           |	                    |t           j                            d                     |j
        |j        z  }	t          |	t          j        |d                     fd S )Nr      rv   r   r   rN   Hz>)ri   r-   r[   rz   r8   r{   r   r   c                 6    g | ]}t          j        |          S  )r   r   ).0rX   s     r   
<listcomp>z+test_compare_covar_type.<locals>.<listcomp>4  s     'Q'Q'Q'Q'Q'Qr    r   )r   r   r   r	   r=   r-   r|   r   _check_parameters_initialize_parameterscovariances_degrees_of_freedom_r+   r
   rI   array)
r   r   r=   r-   r   r>   full_covariancestied_covariancediag_covariancesspherical_covariancess
             r   test_compare_covar_typer      s    )


"
"C3a(((IFA)L  =Q =Q
&,6\)"
 
 
 	q!!!##Ary'<'<Q'?'?@@@ 8BJ
9R SS 	
 ',6\)"
 
 
 	q!!!##Ary'<'<Q'?'?@@@+d.FFORW5Eq-I-IJJJ ',6\)"
 
 
 	q!!!##Ary'<'<Q'?'?@@@,t/G2:/VVbh'Q'Q@P'Q'Q'QRR	
 	
 	

 ',6\)'
 
 
 	q!!!##Ary'<'<Q'?'?@@@ $ 1D4L L127;KQ3O3OPPPP{=Q =Qr    c                      t           j                            d          } t          | d          }d|j        z  d}}t          |d| dd          }t          D ]4}||_        |                    |j	        |                    |dk    rVt          |j        |j                  D ]:\  }}t          t          j        ||          t          j        |                     ;|d	k    r@t          t          j        |j        |j                  t          j        |                     |d
k    r3t          |j        |j        z  t          j        ||f                     t          |j        |j        z  t          j        |                     6d S )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  s    )


"
"C3a(((I 9#991*L #!CctWX  D &  
)Z()))$'(94;K$L$L R R y#BF5)$<$<bfZ>P>PQQQQR6!!t($*:;;RVJ=O=O    6!!!D$44z233     !D$44bgl6K6K   ' r    c            
         t           j                            d          } t          | d          }d|j        z  }t
          D ]}t          D ]}|j        |         }t          ||dddd          	                    |          }t          ||dddd          	                    |dz             }t          |j        |j        dz
             t          |j        |j                   t          |j        |j                   d S )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  s2    )


"
"C3c***Iy--L  H H
) 	H 	HJJ'A+0:)   c!ff  ,0:)   c!c'll   elS.@AAA??? 2E4FGGGG+	HH Hr    zignore:.*did not converge.*zseed, max_iter, tol))r   r   r   )rN   r   皙?)rA   ,  r   )   r   r   c                    t           j                            |           }t          |dd          }d|j        z  }t
          D ]}t          ||||d          }||_        t          j	        |          }|j
        |         }	|                    |	                              |	          }
|                    |	          }t          |
|           d S )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666Iy--L% - -
'%
 
 
 !+e$$K
#))A,,&&q))##A&&7G,,,,- -r    c                     t           j                            d                              dd          } t	          ddd          }|                    |           }|                    |           }t          ||           d S )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     sq    
	a  &&r1--A	 a	K	K	KBnnQGjjmmGw(((((r    c                  h   t           j                            d          } t          |           }t          D ]}t
          D ]}|j        |         }|j        }t          |j	        | ||          }d}t          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   |                    |           |                    |          }|                    |                              d          }	t#          ||	           t%          ||          dk    sJ d S )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 0: *	  D 
 ~S999    Q                              HHQKKK\\!__F--a0077Q7??Lv|444&q&11T99999/	:: :s   
B,,B03B0)'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    r   <module>r      sU         ! ! ! ! ! ! - - - - - - 7 7 7 7 7 7 3 3 3 3 3 3 T T T T T T T T B B B B B B       
 877!#;<
	7 	7 	77 7 78N N N": : :8<X <X <X~
 
 
"5 "5 "5J KLL# # ML#@EQ EQ EQP KLL    ML FH H H@ 9::   - -  ;:-,) ) ): : : : :r    