Ë
    ÷Q(h�B  ã                   óÒ  — 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       úi/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/mixture/tests/test_bayesian_mixture.pyÚtest_log_dirichlet_normr      sh   € Ü
�)‰)×
Ñ
 Ó
"€CàŸ8™8 A›;ÐÜœBŸF™FÐ#7Ó8Ó9¼B¿F¹FÜÐ$Ó%ó=ñ €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¸#Ñ=ÐØ(¬2¯6©6´%¸¸1¸|Ñ;KÓ2LÓ+MÑMÐä—H‘H˜Q“K€MÜ09ÜÐÐ 7Ó8ó1ò Ñ,ˆÑ,Ð  )ð ! I°°jÑ0@Ä2Ç6Á6È#Ã;Ñ0NÑ$NÑOÜ�f‰fÜØØ+¬b¯i©i¸¸:Ó.FÂqÌ"Ï*É*À}Ñ.UÑUñWóð óñ÷ ‰$‹&ð	ˆ�aÒðô 'ØÐ3°Zó€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ð 	ô Ð2°D×4TÑ4TÔUô #°È3ÔO×SÑSÐTUÓV€DÜ˜˜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ð Ÿ8™8›:ÐÜ"Ø1Àôç	�cˆ!ƒfð 	ô Ð,¨d×.HÑ.HÔIô #°Ô4×8Ñ8¸Ó;€DÜ˜˜T×7Ñ7Ô8ð —‘˜*Ó%€JÜ"Ø!¨jÀsôç	�cˆ!ƒfð 	ô ˜
 D×$4Ñ$4Ô5ô #°È3ÔO×SÑSÐTUÓV€DÜ˜Ÿ™ 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Ø!Ñ€IˆzØ�‰�˜JÓ'€Að %/°Ñ$4Ð!Ü"Ø!>ÈSô€Dð	Ø˜‰Mˆ?˜*Ð%BÀ3Ð$GÀqð	Jð ô 
�‰”z¨Ô	-ñ Ø�‰�Œ÷ð  #Ÿx™x›z¨JÑ6¸Ñ<ÐÜ"Ø!9Èôç	�cˆ!ƒfð 	ô Ð0°$×2PÑ2PÔQð (2Ð$Ü"Ø!AÐPSôç	�cˆ!ƒfð 	ô Ø(¨$×*HÑ*Hôô —‘�q—s‘s Ô# bÑ(Ü—‘�q—s‘s Ô# aÑ'Ü—‘œŸ™¤b§f¡f¨Q¯S©S°qÔ&9Ó:Ó;¸aÑ?Ø—X‘X“Zñ	Ðô #°Ô4€DØ9ò PˆØ'ˆÔØ 0°Ñ :ˆÔØ�‰�ŒÜÐ,¨XÑ6¸×8NÑ8NÕOð	Pô —‘œbŸf™f Q§S¡S›kÓ*Ü—‘œbŸf™f Q§S¡S›kÓ*Ü—‘�q˜q qÔ)Ü—V‘V˜A A¨AÔ.×3Ñ3Ó5ñ	 Ðô #°Ô2€DØ9ò XˆØ'ˆÔØ�‰�ŒÜÐ4°XÑ>À×@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Ø!Ñ€Iˆzô #°Ô4€DØ�‰�˜JÓ'€Aà
D€CÜ	�‰”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Ø!Ñ€Iˆzà�‰�˜JÓ'€Aô #Ø(@ØØô÷ 
�cˆ!ƒfð	 	ð ×1Ñ1´B·F±F¸4×;UÑ;UÓ4VÑVÐÜÐ(¨$¯-©-Ô8ÜœŸ™˜tŸ}™}Ó-¨sÔ3ô $Ø(;ØØô÷ 
�cˆ!ƒfð	 
ð 	×#Ñ# AÑ&¨×)DÑ)DÀQÑ)GÑGð ð ×
%Ñ
% aÑ
(Ð+?Ñ
?€Cà×#Ñ# AÑ&Ø
ñ	ä
�)‰)�QœŸ
™
 3 s¨ 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Ü˜3 bÔ)€IØ×)Ñ)€Lä ò #ˆ
Ü)ò 	#ˆJØ—‘˜JÑ'ˆAÜ*Ø0:Ø Ñ-Ø *ØØØ ØôˆDô $&§6¡6 'Ðô ˜3“Zò �Ø#6Ð Ø&*§h¡h¨q£k×&>Ñ&>Ð#Ø*Ð.>Ò>Ð>Ð>à—?“?Ùðð —?“?Ð"�?ñ+	#ñ#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   çH¯¼šò×z>)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Ü˜3 aÔ(€IØ�‰�FÑ€AØ×)Ñ)€Lä ó =Qˆ
ä&Ø,6Ø˜\Ñ)Ø"ØØØô
ˆð 	×Ñ˜qÔ!Ø×#Ñ# A¤r§y¡y×'<Ñ'<¸QÓ'?Ô@à×Ñ × 8Ñ 8º¼B¿J¹JÌÏ
É
Ð9RÑ SÑSð 	ô
 'Ø,6Ø˜\Ñ)Ø"ØØØô
ˆð 	×Ñ˜qÔ!Ø×#Ñ# A¤r§y¡y×'<Ñ'<¸QÓ'?Ô@à×+Ñ+¨d×.FÑ.FÑFˆÜ˜O¬R¯W©WÐ5EÀqÓ-IÔJô 'Ø,6Ø˜\Ñ)Ø"ØØØô
ˆð 	×Ñ˜qÔ!Ø×#Ñ# A¤r§y¡y×'<Ñ'<¸QÓ'?Ô@à×,Ñ,¨t×/GÑ/GÊÌ2Ï:É:ÈÑ/VÑVÐÜØœbŸh™hÐ@PÖ'Q¸¬¯©°­Ò'QÓRô	
ô
 'Ø,6Ø˜\Ñ)Ø'ØØØô
ˆð 	×Ñ˜qÔ!Ø×#Ñ# A¤r§y¡y×'<Ñ'<¸QÓ'?Ô@à $× 1Ñ 1°D×4LÑ4LÑ LÐÜÐ1´2·7±7Ð;KÈQÓ3OÖ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Ü˜3 aÔ(€IØ  9×#9Ñ#9Ñ9¸1�*€Lô #Ø!¨C¸cÀtÐWXô€Dô &ó ˆ
Ø)ˆÔØ�‰�—‘˜ZÑ(Ô)à˜ÒÜ$'¨×(9Ñ(9¸4×;KÑ;KÓ$Lò RÑ ��yÜ#¤B§F¡F¨5°)Ó$<¼b¿f¹fÀZÓ>PÕQñRà˜6Ò!ÜÜ—‘�t×(Ñ(¨$×*:Ñ*:Ó;¼R¿V¹VÀJÓ=Oõð ˜6Ò!ÜØ×!Ñ! D×$4Ñ$4Ñ4Ü—‘˜ zÐ2Ó3öô  Ø×!Ñ! D×$4Ñ$4Ñ4´b·g±g¸lÓ6Köñ'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Ü˜3 cÔ*€IØ�y×-Ñ-Ñ-€Lä ò Hˆ
Ü)ò 	HˆJØ—‘˜JÑ'ˆAÜ+Ø0:Ø)ØØØØô÷ ‰c�!‹fð ô ,Ø0:Ø)ØØØØô÷ ‰c�!�c‘'‹lð ô   §¡¨e¯l©l¸SÑ.@ÔAÜ §¡°·±Ô?Ü × 2Ñ 2°E×4FÑ4FÕ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 )Né2   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€IØ�y×-Ñ-Ñ-€Lä%ò -ˆ
Ü'Ø%ØØØØô
ˆð !+ˆÔÜ—‘˜eÓ$ˆØ�K‰K˜
Ñ#ˆà—)‘)˜A“,×&Ñ& qÓ)ˆØ×#Ñ# AÓ&ˆÜ˜7 GÕ,ñ-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Ó ×&Ñ& r¨1Ó-€AÜ	 ¨a¸ÈÔ	K€BØ�n‰n˜QÓ€GØ�j‰j˜‹m€GÜ�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”÷ ð �H‰H�QŒKØ—\‘\ !“_ˆFØ×-Ñ-¨aÓ0×7Ñ7¸QÐ7Ó?ˆLÜ˜v |Ô4Ü& q¨&Ó1°TÓ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ò7ò8Nò":ò8<Xò~
ò"5ðJ ‡�×ÑÐKÓLñ#ó Mð#ò@EQðP ‡�×ÑÐKÓLñ ó Mð òFHð@ ‡�×ÑÐ9Ó:Ø‡�×ÑØòóñ-óó ;ð-ò,)ó:r    