
    e!hB                        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:                  j=                  d      d        Zd Z ej:                  j=                  d      d        Z!d Z"ej:                  j=                  d      ej:                  jG                  dg d      d               Z$d Z%d Z&y)    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                     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       s/var/www/html/diagnosisapp-backend/venv/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_normr4   $   s2   
))


"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 '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-   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!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   )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'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   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	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 P' 0 :,X68N8NO	P bffQSSk*bffQSSk*qqq)VVAAA.335	  #2D9 X'4X>@V@VWX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   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      so    
))


"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   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      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    z-ignore::sklearn.exceptions.ConvergenceWarningc                     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   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                     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      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      sq    ))


"C3a(IFA))L  =Q
&,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'QR	

 ',6\)'
 	q!##Aryy'<'<Q'?@ $ 1 1D4L4L L1277;KQ3OP{=Q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   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  sb    ))


"C3a(I 9#9#991*L #!CctWXD & 
)Z()$'(9(94;K;K$L R y#BFF5)$<bffZ>PQR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   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  H
) 	HJJ'A+0:) c!f  ,0:) c!c'l   ellS.@A? 2 2E4F4FG+	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                  j                  |       }t        |dd      }d|j                  z  }t
        D ]z  }t        ||||d      }||_        t        j                  |      }|j                  |   }	|j                  |	      j                  |	      }
|j                  |	      }t        |
|       | y )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&7G,-r    c                      t         j                  j                  d      j                  dd      } t	        ddd      }|j                  |       }|j                  |       }t        ||       y )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     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-   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/	::"   s   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    