
    UgB                        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j#        $                    d          ej#        %                    dg d          d                         Z&d Z'd Z(dS )    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                  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       j/var/www/surfInsights/venv3-11/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_normr6   %   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/   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!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   )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   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   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   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   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      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   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      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"   )categoryc                     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   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 $&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      ry   r   r   rP   Hz>)rk   r/   r]   r}   r:   r~   r   r   c                 6    g | ]}t          j        |          S  )r   r   ).0rZ   s     r    
<listcomp>z+test_compare_covar_type.<locals>.<listcomp>5  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   rK   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   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  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   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  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   )rP   r   皙?)rC   ,  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>   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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$   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     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/   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 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   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"   r    <module>r      sx         ! ! ! ! ! ! A A A A A A A A 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 ,---# # .-#@EQ EQ EQP ,---    .- F ,---H H .-H@ 9::   - -  ;:-,) ) ): : : : :r"   