Ë
    8Ò^jöÙ  ã                   ó   — d dl Z d dlZ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	Z
d dlZd dlmZm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 d dlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d dl'm(Z) d dl'm*Z*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 g d¢Z6e
jn                  fd„Z8 G d„ d«      Z9d„ Z:d„ Z;d„ Z<d„ Z=d„ Z>d„ Z?d„ Z@d„ ZAd„ ZBd„ ZCd„ ZDd „ ZEd!„ ZFejŽ                  j‘                  d"«      ejŽ                  j“                  d#g d$¢«      d%„ «       «       ZJd&„ ZKd'„ ZLd(„ ZMd)„ ZNd*„ ZOd+„ ZPd,„ ZQd-„ ZRd.„ ZSejŽ                  j‘                  d"«      ejŽ                  j“                  d/d0«      d1„ «       «       ZTejŽ                  j‘                  d2«      d3„ «       ZUd4„ ZVd5„ ZWd6„ ZXd7„ ZYejŽ                  j“                  d8e6«      d9„ «       ZZd:„ Z[ejŽ                  j‘                  d2«      d;„ «       Z\d<„ Z]ejŽ                  j“                  d=g d>¢«      d?„ «       Z^ejŽ                  j“                  d=g d>¢«      d@„ «       Z_dA„ Z`dB„ Zae
jn                  fdC„ZbdD„ ZcejŽ                  j“                  dEe6«      dF„ «       ZddG„ ZedH„ ZfejŽ                  j“                  d=dIdJg«      ejŽ                  j“                  dEg d¢«      ejŽ                  j“                  dK e,«       «      ejŽ                  j“                  dLdMdNg«      dO„ «       «       «       «       Zge3ejŽ                  j“                  d=dPdQg«      ejŽ                  j“                  dK e,«       «      dR„ «       «       «       Zhy)Sé    N)ÚStringIO)ÚMock)ÚlinalgÚstats)ÚKMeans)ÚEmpiricalCovariance)Úmake_spd_matrix)Ú
make_blobs)ÚConvergenceWarningÚNotFittedError)Úadjusted_rand_score)ÚGaussianMixture)Ú_compute_log_det_choleskyÚ_compute_precision_choleskyÚ#_estimate_gaussian_covariances_diagÚ#_estimate_gaussian_covariances_fullÚ(_estimate_gaussian_covariances_sphericalÚ#_estimate_gaussian_covariances_tiedÚ_estimate_gaussian_parameters©Údevice)Úget_namespaceÚmove_toÚ)yield_namespace_device_dtype_combinations)Ú_array_api_for_testsÚassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚ'skip_if_array_api_compat_not_configured)Úfast_logdet©ÚfullÚtiedÚdiagÚ	sphericalc                 ó�  — t         j                  j                  d«      }g }|dk(  r‹t        t	        |||d   «      «      D ]o  \  }	\  }
}}|j                  |j                  ||t        j                  |«      z  t        t        j                  |
| z  «      «      «      j                  |«      «       Œq |dk(  rˆt        t	        |||d   «      «      D ]l  \  }	\  }
}}|j                  |j                  |t        j                  |«      t        t        j                  |
| z  «      «      «      j                  |«      «       Œn |dk(  rst        t	        ||«      «      D ][  \  }	\  }
}|j                  |j                  ||d   t        t        j                  |
| z  «      «      «      j                  |«      «       Œ] |dk(  rut        t	        |||d   «      «      D ]Y  \  }	\  }
}}|j                  |j                  ||t        t        j                  |
| z  «      «      «      j                  |«      «       Œ[ t        j                  |«      }|S )Nr   r&   r%   r$   r#   )ÚnpÚrandomÚRandomStateÚ	enumerateÚzipÚappendÚmultivariate_normalÚeyeÚintÚroundÚastyper%   Úvstack)Ú	n_samplesÚ
n_featuresÚweightsÚmeansÚ
precisionsÚcovariance_typeÚdtypeÚrngÚXÚ_ÚwÚmÚcs                úv/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/sklearn/mixture/tests/test_gaussian_mixture.pyÚgenerate_datarB   6   s  € ô �)‰)×
Ñ
 Ó
"€Cà
€AØ˜+Ò%Ü%¤c¨'°5¸*À[Ñ:QÓ&RÓSò 	‰LˆA‰y��1�aØ�H‰HØ×'Ñ'Ø�qœ2Ÿ6™6 *Ó-Ñ-¬s´2·8±8¸AÀ	¹MÓ3JÓ/Kóç‘&˜“-õð	ð ˜&Ò Ü%¤c¨'°5¸*ÀVÑ:LÓ&MÓNò 	‰LˆA‰y��1�aØ�H‰HØ×'Ñ'Ø”r—w‘w˜q“z¤3¤r§x¡x°°I±Ó'>Ó#?óç‘&˜“-õð	ð ˜&Ò Ü"¤3 w°Ó#6Ó7ò 	‰IˆA‰v��1Ø�H‰HØ×'Ñ'Ø�z &Ñ)¬3¬r¯x©x¸¸I¹Ó/FÓ+Góç‘&˜“-õð	ð ˜&Ò Ü%¤c¨'°5¸*ÀVÑ:LÓ&MÓNò 	‰LˆA‰y��1�aØ�H‰HØ×'Ñ'¨¨1¬c´"·(±(¸1¸y¹=Ó2IÓ.JÓK×RÑRØóõð	ô 	�	‰	�!‹€AØ€Hó    c                   ó2   — e Zd Zddddej                  fd„Zy)Ú
RandomDataéÈ   é   é2   c                 ó˜  — || _         || _        || _        |j                  |«      j	                  |«      | _        | j
                  j	                  |«      | j
                  j                  «       z  | _        |j                  ||«      j	                  |«      |z  | _        d|j                  |«      j	                  |«      z   d|j                  ||«      j	                  |«      z   dz  t        ||¬«      j	                  |«      t        j                  t        |«      D �cg c]!  }t        ||¬«      j	                  |«      dz  ‘Œ# c}«      dœ| _        d| j                  d   z  d| j                  d   z  t        j                  | j                  d   «      t        j                  | j                  d	   D �cg c]  }t        j                  |«      ‘Œ c}«      dœ| _        t!        t#        t$        t$        D �	cg c]2  }	t'        ||| j
                  | j                  | j                  |	|¬
«      ‘Œ4 c}	«      «      | _        t        j*                  t-        | j
                  «      D �
�cg c]@  \  }
}t        j.                  t1        t        j2                  ||z  «      «      |
t0        ¬
«      ‘ŒB c}}
«      | _        y c c}w c c}w c c}	w c c}}
w )Nç      à?rG   )Úrandom_state©r&   r%   r$   r#   ç      ð?r&   r%   r$   r#   ©r:   )r4   Ún_componentsr5   Úrandr2   r6   Úsumr7   r	   r(   ÚarrayÚrangeÚcovariancesr   Úinvr8   Údictr,   ÚCOVARIANCE_TYPErB   r<   Úhstackr+   r#   r0   r1   ÚY)Úselfr;   r4   rO   r5   Úscaler:   r=   Ú
covarianceÚ
covar_typeÚkr>   s               rA   Ú__init__zRandomData.__init__^   s\  € ð #ˆŒØ(ˆÔØ$ˆŒà—x‘x Ó-×4Ñ4°UÓ;ˆŒØ—|‘|×*Ñ*¨5Ó1°D·L±L×4DÑ4DÓ4FÑFˆŒØ—X‘X˜l¨JÓ7×>Ñ>¸uÓEÈÑMˆŒ
à˜sŸx™x¨Ó5×<Ñ<¸UÓCÑCØ˜3Ÿ8™8 L°*Ó=×DÑDÀUÓKÑKÐPQÑQÜ# J¸SÔA×HÑHÈÓOÜ—H‘Hô # <Ó0öàô $ J¸SÔA×HÑHÈÓOÐRUÓUòóñ	

ˆÔð ˜t×/Ñ/°Ñ<Ñ<Ø˜$×*Ñ*¨6Ñ2Ñ2Ü—J‘J˜t×/Ñ/°Ñ7Ó8Ü—H‘HØ:>×:JÑ:JÈ6Ñ:RÖS¨J”—‘˜JÕ'ÒSóñ	
ˆŒô ÜÜô '6öð #ô "Ø!Ø"ØŸ™ØŸ
™
Ø×(Ñ(Ø"Ø#öòóó
ˆŒô" —‘ô & d§l¡lÓ3÷á�A�qô —‘œœBŸH™H Q¨¡]Ó3Ó4°a¼sÖCóó
ˆ�ùòAùò Tùòùós   Ä&J7Æ5J<Ç67KÉ$AK
N)Ú__name__Ú
__module__Ú__qualname__r(   Úfloat64r_   © rC   rA   rE   rE   ]   s   „ ð ØØØØ�j‰jô:
rC   rE   c            	      ó°  — t         j                  j                  d«      } | j                  dd«      }d\  }}}}}d\  }}t	        |||||||¬«      j                  |«      }	|	j                  |k(  sJ ‚|	j                  |k(  sJ ‚|	j                  |k(  sJ ‚|	j                  |k(  sJ ‚|	j                  |k(  sJ ‚|	j                  |k(  sJ ‚|	j                  |k(  sJ ‚y )Nr   é
   rG   )rG   ç-Cëâ6?é   é   çš™™™™™¹?)r#   r)   )rO   ÚtolÚn_initÚmax_iterÚ	reg_covarr9   Úinit_params)r(   r)   r*   rP   r   ÚfitrO   r9   rk   rn   rm   rl   ro   )
r;   r<   rO   rk   rl   rm   rn   r9   ro   Úgmms
             rA   Ú test_gaussian_mixture_attributesrr   ›   sñ   € ä
�)‰)×
Ñ
 Ó
"€CØ�‰��Q‹€Að 6JÑ2€L�#�v˜x¨Ø#3Ñ €O�[Ü
Ø!ØØØØØ'Øô÷ 
�cˆ!ƒfð ð ×Ñ˜|Ò+Ð+Ð+Ø×Ñ /Ò1Ð1Ð1Ø�7‰7�cŠ>Ðˆ>Ø�=‰=˜IÒ%Ð%Ð%Ø�<‰<˜8Ò#Ð#Ð#Ø�:‰:˜ÒÐÐØ�?‰?˜kÒ)Ð)Ñ)rC   c                  óš  — t         j                  j                  d«      } t        | «      }|j                  }|j
                  d   }t        |¬«      }| j                  |d«      }||_        t        j                  d|› d|j                  › �«      }t        j                  t        |¬«      5  |j                  |«       d d d «       | j                  |«      dz   }||_        t        j                  dt        j                   |«      d	›d
t        j"                  |«      d	›�«      }t        j                  t        |¬«      5  |j                  |«       d d d «       | j                  |«      }||j%                  «       dz   z  }||_        t        j                  dt        j$                  |«      d	›�«      }t        j                  t        |¬«      5  |j                  |«       d d d «       |j&                  }	t        |	|¬«      }|j                  |«       t)        |	|j                  «       y # 1 sw Y   �ŒmxY w# 1 sw Y   ŒæxY w# 1 sw Y   ŒcxY w)Nr   r#   ©rO   é   z2The parameter 'weights' should have the shape of (z,), but got ©ÚmatchzIThe parameter 'weights' should be in the range [0, 1], but got max value z.5fz, min value zEThe parameter 'weights' should be normalized, but got sum(weights) = )Úweights_initrO   )r(   r)   r*   rE   rO   r<   r   rP   rx   ÚreÚescapeÚshapeÚpytestÚraisesÚ
ValueErrorrp   ÚminÚmaxrQ   r6   r   )
r;   Ú	rand_datarO   r<   ÚgÚweights_bad_shapeÚmsgÚweights_bad_rangeÚweights_bad_normr6   s
             rA   Útest_check_weightsr‡   ¶   s  € Ü
�)‰)×
Ñ
 Ó
"€CÜ˜3“€Ià×)Ñ)€LØ�‰�FÑ€Aä \Ô2€Að Ÿ™ ¨qÓ1ÐØ&€A„NÜ
�)‰)ð	Øˆ>˜Ð&7×&=Ñ&=Ð%>ð	@ó€Cô 
�‰”z¨Ô	-ñ Ø	�‰ˆaŒ÷ð Ÿ™ Ó.°Ñ2ÐØ&€A„NÜ
�)‰)ð	Ü—f‘fÐ.Ó/°Ð4ð 5Ü—V‘VÐ-Ó.¨sÐ3ð	5ó€Cô
 
�‰”z¨Ô	-ñ Ø	�‰ˆaŒ÷ð —x‘x Ó-ÐØ'Ð+;×+?Ñ+?Ó+AÀAÑ+EÑFÐØ%€A„NÜ
�)‰)ð	"Ü"$§&¡&Ð)9Ó":¸3Ð!?ð	Aó€Cô 
�‰”z¨Ô	-ñ Ø	�‰ˆaŒ÷ð ×Ñ€GÜ W¸<ÔH€AØ‡E�Eˆ!„HÜ�w §¡Õ/÷;ñ ú÷ð ú÷ð ús$   Â+H(Ä>H5ÇIÈ(H2È5H>ÉI
c                  óð  — t         j                  j                  d«      } t        | «      }|j                  |j
                  }}|j                  d   }t        |¬«      }| j                  |dz   |«      }||_	        d}t        j                  t        |¬«      5  |j                  |«       d d d «       |j                  }||_	        |j                  |«       t        ||j                  «       y # 1 sw Y   ŒDxY w)Nr   r#   rt   ru   z/The parameter 'means' should have the shape of rv   )r(   r)   r*   rE   rO   r5   r<   r   rP   Ú
means_initr|   r}   r~   rp   r7   r   )	r;   r�   rO   r5   r<   r‚   Úmeans_bad_shaper„   r7   s	            rA   Útest_check_meansr‹   æ   sÈ   € Ü
�)‰)×
Ñ
 Ó
"€CÜ˜3“€Ià(×5Ñ5°y×7KÑ7K�*€LØ�‰�FÑ€Aä \Ô2€Að —h‘h˜|¨aÑ/°Ó<€OØ"€A„LØ
;€CÜ	�‰”z¨Ô	-ñ Ø	�‰ˆaŒ÷ð �O‰O€EØ€A„LØ‡E�Eˆ!„HÜ�u˜aŸl™lÕ+÷ð ús   ÂC,Ã,C5c                  ó~  — t         j                  j                  d«      } t        | «      }|j                  |j
                  }}t        j                  |dz   ||f«      t        j                  |dz   |dz   f«      t        j                  |dz   |f«      t        j                  |dz   «      dœ}t        j                  |||f«      }t        j                  |«      |d<   d|d<   ||d   t        j                  ||fd«      t        j                  |d«      dœ}dddddœ}t        D �]   }t        | «      j                  |   }	t        ||| ¬«      }
||   |
_        d	|› d
�}t        j                  t        |¬«      5  |
j!                  |	«       d d d «       ||   |
_        d|› d||   › �}t        j                  t        |¬«      5  |
j!                  |	«       d d d «       |j"                  |   |
_        |
j!                  |	«       t%        |j"                  |   |
j                  «       �Œ y # 1 sw Y   ŒŸxY w# 1 sw Y   ŒaxY w)Nr   ru   r"   g      ð¿)r   r   r   zsymmetric, positive-definiteÚpositive©rO   r9   rK   zThe parameter 'z$ precision' should have the shape ofrv   ú'z precision' should be )r(   r)   r*   rE   rO   r5   Úonesr/   r#   rW   r<   r   Úprecisions_initr|   r}   r~   rp   r8   r   )r;   r�   rO   r5   Úprecisions_bad_shapeÚprecisions_not_posÚprecisions_not_positiveÚnot_positive_errorsr]   r<   r‚   r„   s               rA   Útest_check_precisionsr–   ý   s0  € Ü
�)‰)×
Ñ
 Ó
"€CÜ˜3“€Ià(×5Ñ5°y×7KÑ7K�*€Lô —‘˜¨Ñ)¨:°zÐBÓCÜ—‘˜ a™¨°a©Ð8Ó9Ü—‘˜¨Ñ)¨:Ð6Ó7Ü—W‘W˜l¨QÑ.Ó0ñ	Ðô Ÿ™ ,°
¸JÐ!GÓHÐÜŸF™F :Ó.Ð�qÑØ"&Ð�wÑð #Ø" 1Ñ%Ü—‘˜ zÐ2°DÓ9Ü—W‘W˜\¨4Ó0ñ	Ðð /Ø.ØØñ	Ðô &ó Pˆ
Ü�s‹O×Ñ˜jÑ)ˆÜØ%°zÐPSô
ˆð
 1°Ñ<ˆÔØ 
˜|Ð+OÐPˆÜ�]‰]œ:¨SÔ1ñ 	Ø�E‰E�!ŒH÷	ð 4°JÑ?ˆÔØ�*�Ð3Ð4GÈ
Ñ4SÐ3TÐUˆÜ�]‰]œ:¨SÔ1ñ 	Ø�E‰E�!ŒH÷	ð &×0Ñ0°Ñ<ˆÔØ	�‰ˆaŒÜ˜9×/Ñ/°
Ñ;¸Q×=NÑ=NÖOñ+P÷	ð 	ú÷	ð 	ús   Å7H'ÇH3È'H0	È3H<	c            	      óÎ  — t         j                  j                  d«      } d\  }}| j                  ||«      }| j                  |d«      }t        j                  |«      |z  }t        j
                  |g«      }t        j                  d|f«      }t        ||||d«      }t        d¬«      }	|	j                  |«       t        |	j                  |d   d¬«      d«       t        |	j                  |d   d¬«      d«       t        |d	«      }
t        j
                  |
D �cg c]"  }t        j                  ||j                  «      ‘Œ$ c}«      }t        j
                  |D �cg c]  }t        j                   |«      ‘Œ c}«      }t#        ||«       t        j$                  |df«      }t        j
                  |g«      }|j'                  d¬
«      j)                  d«      }t        ||||d«      }t        d¬«      }	|	j                  |«       t        |	j                  |d   d¬«      d«       t        |	j                  |d   d¬«      d«       t        |d	«      }
t        j
                  |
D �cg c]"  }t        j                  ||j                  «      ‘Œ$ c}«      }t        j
                  |D �cg c]  }t        j                   |«      ‘Œ c}«      }t#        ||«       y c c}w c c}w c c}w c c}w )Nr   ©éô  rG   ru   T)Úassume_centeredÚ	frobenius©ÚnormÚspectralr#   ©Úaxis)ru   éÿÿÿÿF)r(   r)   r*   rP   ÚsqrtrR   Úzerosr   r   rp   r   Ú
error_normr   ÚdotÚTr   rU   r   r�   ÚmeanÚreshape)r;   r4   r5   r<   ÚrespÚX_respÚnkÚxkÚcovars_predÚecovÚprecs_chol_predÚprecÚ
precs_predÚcovÚ	precs_ests                  rA   Útest_suffstat_sk_fullr´   6  sE  € ô �)‰)×
Ñ
 Ó
"€CØ"Ñ€Iˆzð 	�‰�˜JÓ'€AØ�8‰8�I˜qÓ!€DÜ�W‰W�T‹]˜QÑ€FÜ	�‰�9�+Ó	€BÜ	�‰�1�j�/Ó	"€BÜ5°d¸A¸rÀ2ÀqÓI€KÜ¨tÔ4€DØ‡H�HˆVÔÜ˜Ÿ™¨°A©¸[˜ÓIÈ1ÔMÜ˜Ÿ™¨°A©¸Z˜ÓHÈ!ÔLô 2°+¸vÓF€OÜ—‘¸OÖL°Dœ2Ÿ6™6 $¨¯©Õ/ÒLÓM€JÜ—‘°[ÖA¨cœ&Ÿ*™* S�/ÒAÓB€IÜ˜i¨Ô4ô �7‰7�I˜q�>Ó"€DÜ	�‰�9�+Ó	€BØ	
�‰�Qˆ‹×	Ñ	 Ó	(€BÜ5°d¸A¸rÀ2ÀqÓI€KÜ¨uÔ5€DØ‡H�HˆQ„KÜ˜Ÿ™¨°A©¸[˜ÓIÈ1ÔMÜ˜Ÿ™¨°A©¸Z˜ÓHÈ!ÔLô 2°+¸vÓF€OÜ—‘¸OÖL°Dœ2Ÿ6™6 $¨¯©Õ/ÒLÓM€JÜ—‘°[ÖA¨cœ&Ÿ*™* S�/ÒAÓB€IÜ˜i¨Õ4ùò% MùÚAùò MùÚAs   Ä'KÅKÉ"'KÊ#K"c                  ój  — t         j                  j                  d«      } d\  }}}| j                  ||«      }||j	                  d¬«      d d …t         j
                  f   z  }| j                  ||«      }|j	                  d¬«      }t        j                  |j                  |«      |d d …t         j
                  f   z  }t        ||||d«      }t        j                  |d d …t         j
                  t         j
                  f   |z  d«      |z  }t        ||||d«      }	t        «       }
||
_        t        |
j                  |	d¬«      d«       t        |
j                  |	d¬«      d«       t        |	d«      }t        j                  ||j                  «      }t        j                   |	«      }t#        ||«       y )	Nr   ©r™   rG   rG   ru   rŸ   r›   rœ   rž   r$   )r(   r)   r*   rP   rQ   Únewaxisr¥   r¦   r   r   r   Úcovariance_r   r¤   r   r   rU   r   )r;   r4   r5   rO   r©   r<   r«   r¬   Úcovars_pred_fullÚcovars_pred_tiedr®   r¯   r±   r³   s                 rA   Útest_suffstat_sk_tiedr»   `  sr  € ä
�)‰)×
Ñ
 Ó
"€CØ*3Ñ'€Iˆz˜<à�8‰8�I˜|Ó,€DØ�$—(‘( �(Ó"¢1¤b§j¡j =Ñ1Ñ1€DØ�‰�˜JÓ'€AØ	�‰�qˆÓ	€BÜ	�‰�—‘˜Ó	˜R¢¤2§:¡: Ñ.Ñ	.€Bä:¸4ÀÀBÈÈAÓNÐä
�‰ˆr’!”R—Z‘Z¤§¡Ð+Ñ,Ð/?Ñ?ÀÓCÀiÑOð ô ;¸4ÀÀBÈÈAÓNÐäÓ €DØ'€DÔÜ˜Ÿ™Ð(8¸{˜ÓKÈQÔOÜ˜Ÿ™Ð(8¸z˜ÓJÈAÔNô 2Ð2BÀFÓK€OÜ—‘˜¨×):Ñ):Ó;€JÜ—
‘
Ð+Ó,€IÜ˜i¨Õ4rC   c                  ó*  — t         j                  j                  d«      } d\  }}}| j                  ||«      }||j	                  d¬«      d d …t         j
                  f   z  }| j                  ||«      }|j	                  d¬«      }t        j                  |j                  |«      |d d …t         j
                  f   z  }t        ||||d«      }t        ||||d«      }	t        «       }
t        ||	«      D ]�  \  }}t        j                  t        j                  |«      «      |
_        t        j                  |«      }t        |
j                  |d¬«      d«       t        |
j                  |d¬«      d«       Œƒ t!        |	d«      }t        |	d	|d
z  z  «       y )Nr   r¶   ru   rŸ   r›   rœ   rž   r%   rM   rG   )r(   r)   r*   rP   rQ   r·   r¥   r¦   r   r   r   r,   r%   r¸   r   r¤   r   )r;   r4   r5   rO   r©   r<   r«   r¬   r¹   Úcovars_pred_diagr®   Úcov_fullÚcov_diagr¯   s                 rA   Útest_suffstat_sk_diagrÀ   ~  sa  € ä
�)‰)×
Ñ
 Ó
"€CØ*3Ñ'€Iˆz˜<à�8‰8�I˜|Ó,€DØ�$—(‘( �(Ó"¢1¤b§j¡j =Ñ1Ñ1€DØ�‰�˜JÓ'€AØ	�‰�qˆÓ	€BÜ	�‰�—‘˜Ó	˜R¢¤2§:¡: Ñ.Ñ	.€BÜ:¸4ÀÀBÈÈAÓNÐÜ:¸4ÀÀBÈÈAÓNÐäÓ €DÜ!Ð"2Ð4DÓEò KÑˆ�(ÜŸ7™7¤2§7¡7¨8Ó#4Ó5ˆÔÜ—7‘7˜8Ó$ˆÜ˜DŸO™O¨H¸;˜OÓGÈÔKÜ˜DŸO™O¨H¸:˜OÓFÈÕJð	Kô 2Ð2BÀFÓK€OÜÐ(¨#°ÀÑ0BÑ*BÕCrC   c                 óp  — t         j                  j                  d«      }d\  }}|j                  ||«      j	                  | «      }||j                  «       z
  }t        j                  |df| ¬«      }t        j                  |g| ¬«      }|j                  «       }t        ||||d«      }t        j                  |j                  «       j                  |j                  «       «      ||z  z  }	t        ||	«       |j                  | k(  sJ ‚t        |d«      }
t        |d|
dz  z  «       |
j                  | k(  sJ ‚y )Nr   r˜   ru   rN   r&   rM   rG   )r(   r)   r*   rP   r2   r§   r�   rR   r   r¥   Úflattenr¦   r   r:   r   )Úglobal_dtyper;   r4   r5   r<   r©   r«   r¬   Úcovars_pred_sphericalÚcovars_pred_spherical2r¯   s              rA   Ú#test_gaussian_suffstat_sk_sphericalrÆ   —  s  € ô �)‰)×
Ñ
 Ó
"€CØ"Ñ€Iˆzà�‰�˜JÓ'×.Ñ.¨|Ó<€AØ	ˆA�F‰F‹H‰€AÜ�7‰7�I˜q�>¨Ô6€DÜ	�‰�9�+ \Ô	2€BØ	
�‰‹€BÜDÀTÈ1ÈbÐRTÐVWÓXÐÜŸV™V A§I¡I£K§M¡M°1·9±9³;Ó?Ø�YÑñÐô Ð-Ð/EÔFØ ×&Ñ&¨,Ò6Ð6Ð6ô 2Ð2GÈÓU€OÜÐ-¨s°_ÀaÑ5GÑ/GÔHØ× Ñ  LÒ0Ð0Ñ0rC   c           	      óš  — d}t        t        j                  j                  d«      | ¬«      }t        D �]  }|j
                  |   }|dk(  r7t        j                  |D �cg c]  }t        j                  |«      ‘Œ c}«      }na|dk(  rt        j                  |«      }nF|dk(  r7t        j                  |D �cg c]  }t        j                  |«      ‘Œ c}«      }n
|dk(  r||z  }|j                  | k(  sJ ‚t        t        ||«      ||¬«      }t        |d	t        j                  «      z  «       |j                  | k(  r�ŒJ ‚ y c c}w c c}w )
NrG   r   rN   r#   r$   r%   r&   )r5   g      à¿)rE   r(   r)   r*   rW   rT   rR   r   ÚdetÚprodr:   r   r   r   Úlog)rÃ   r5   r�   r]   r\   r²   Úpredected_detÚexpected_dets           rA   Útest_compute_log_det_choleskyrÍ   ¯  s%  € Ø€JÜœ2Ÿ9™9×0Ñ0°Ó3¸<ÔH€Iä%ó 2ˆ
Ø×*Ñ*¨:Ñ6ˆ
à˜ÒÜŸH™HÀÖ%L¸#¤f§j¡j°¥oÒ%LÓM‰MØ˜6Ò!Ü"ŸJ™J zÓ2‰MØ˜6Ò!ÜŸH™H¸jÖ%I°s¤b§g¡g¨c¥lÒ%IÓJ‰MØ˜;Ò&Ø&¨
Ñ2ˆMð ×Ñ <Ò/Ð/Ð/Ü0Ü'¨
°JÓ?ØØ!ô
ˆô
 	" ,°´r·v±v¸mÓ7LÑ0LÔMØ×!Ñ! \Ô1Ð1Ð1ñ)2ùò &Mùò &Js   ÁE
Â5E
c                 ó2  — t        j                  t        | «      t        |«      f«      }t        j                  |«      }t	        t        ||«      «      D ]@  \  }\  }}t        j                  j                  | ||«      j                  d¬«      |d d …|f<   ŒB |S )Nru   rŸ   )
r(   ÚemptyÚlenr¢   r+   r,   r   r�   ÚlogpdfrQ   )r<   r7   Úcovarsr©   ÚstdsÚir§   Ústds           rA   Ú_naive_lmvnpdf_diagrÖ   Ê  s‚   € Ü�8‰8”S˜“VœS ›ZÐ(Ó)€DÜ�7‰7�6‹?€DÜ#¤C¨¨tÓ$4Ó5ò A‰ˆ‰;ˆD�#Ü—Z‘Z×&Ñ& q¨$°Ó4×8Ñ8¸aÐ8Ó@ˆŠQ�ˆTŠ
ðAà€KrC   c                  ó@  — ddl m}  t        j                  j	                  d«      }t        |«      }d}|j                  }|j                  }|j                  }|j                  ||«      }|j                  ||«      }t        |||«      }	t        j                  |D �
cg c]-  }
t        j                  dt        j                  |
«      z  «      ‘Œ/ c}
«      } | |||d«      }t        ||	«       dt        j                  |«      z  } | |||d«      }t        ||	«       t        j                  |D �
cg c]  }
|
‘Œ c}
«      j                  d¬«      }t        j                  t        j                  d|z  «      «      }t        |||g|z  «      }	 | |||d«      }t        ||	«       |j                  d	¬«      }dt        j                  |j                  d	¬«      «      z  }t        |||D �cg c]  }|g|z  ‘Œ
 c}«      }	 | |||d
«      }t        ||	«       y c c}
w c c}
w c c}w )Nr   )Ú_estimate_log_gaussian_probr™   rM   r#   r%   rŸ   r$   ru   r&   )Ú!sklearn.mixture._gaussian_mixturerØ   r(   r)   r*   rE   r5   rO   r7   rP   rÖ   rR   r%   r¢   r   r§   )rØ   r;   r�   r4   r5   rO   r7   Úcovars_diagr<   Úlog_prob_naiveÚxÚ
precs_fullÚlog_probÚprecs_chol_diagÚcovars_tiedÚ
precs_tiedÚcovars_sphericalÚprecs_sphericalr^   s                      rA   Ú'test_gaussian_mixture_log_probabilitiesrä   Ò  së  € ÝMô �)‰)×
Ñ
 Ó
"€CÜ˜3“€IØ€IØ×%Ñ%€JØ×)Ñ)€Là�O‰O€EØ—(‘(˜<¨Ó4€KØ�‰�˜JÓ'€AÜ(¨¨E°;Ó?€Nô —‘¸kÖJ¸œ2Ÿ7™7 3¬¯©°«Ñ#3Õ4ÒJÓK€Já*¨1¨e°ZÀÓH€HÜ˜h¨Ô7ð œBŸG™G KÓ0Ñ0€OÙ*¨1¨e°_ÀfÓM€HÜ˜h¨Ô7ô —(‘( {Ö3 !šAÒ3Ó4×9Ñ9¸qÐ9ÓA€KÜ—‘œŸ™  {Ñ!2Ó3Ó4€Jä(¨¨E°K°=À<Ñ3OÓP€NÙ*¨1¨e°ZÀÓH€Hä˜h¨Ô7ð #×'Ñ'¨QÐ'Ó/ÐØœBŸG™G K×$4Ñ$4¸!Ð$4Ó$<Ó=Ñ=€OÜ(Ø	ˆ5Ð-=Ö>¨�A�3˜Ó#Ò>ó€Nñ +¨1¨e°_ÀkÓR€HÜ˜h¨Õ7ùò5 Kùò 4ùò ?s   Â2HÄ-	HÇ%Hc            	      ót  — t         j                  j                  d«      } t        | d¬«      }|j                  }|j
                  }|j                  }| j                  ||«      }t        D ]Í  }|j                  }|j                  }|j                  |   }	t        || |||	|¬«      }
|
j                  |«       |
j                  |«      }t        |j!                  d¬«      t        j"                  |«      «       t%        |
j&                  |«       t%        |
j(                  |«       t%        |
j*                  |	«       ŒÏ y )Nr   é   ©r[   ©rO   rK   rx   r‰   r‘   r9   ru   rŸ   )r(   r)   r*   rE   r4   r5   rO   rP   rW   r6   r7   r8   r   rp   Úpredict_probar   rQ   r�   r   rx   r‰   r‘   )r;   r�   r4   r5   rO   r<   r]   r6   r7   r8   r‚   r©   s               rA   Ú,test_gaussian_mixture_estimate_log_prob_resprê     s  € ä
�)‰)×
Ñ
 Ó
"€CÜ˜3 aÔ(€IØ×#Ñ#€IØ×%Ñ%€JØ×)Ñ)€Là�‰�˜JÓ'€AÜ%ò :ˆ
Ø×#Ñ#ˆØ—‘ˆØ×)Ñ)¨*Ñ5ˆ
ÜØ%ØØ ØØ&Ø&ô
ˆð 	
�‰ˆaŒØ�‰˜qÓ!ˆÜ! $§(¡(° (Ó"2´B·G±G¸IÓ4FÔGÜ˜1Ÿ>™>¨7Ô3Ü˜1Ÿ<™<¨Ô/Ü˜1×,Ñ,¨jÕ9ñ#:rC   c            	      ób  — t         j                  j                  d«      } t        | «      }t        D ]ð  }|j
                  |   }|j                  }t        |j                  | |j                  |j                  |j                  |   |¬«      }d}t        j                  t        |¬«      5  |j                  |«       d d d «       |j!                  |«       |j                  |«      }|j#                  |«      j%                  d¬«      }t'        ||«       t)        ||«      dkD  rŒðJ ‚ y # 1 sw Y   ŒlxY w)Nr   rè   úsThis GaussianMixture instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.rv   ru   rŸ   çffffffî?)r(   r)   r*   rE   rW   r<   rY   r   rO   r6   r7   r8   r|   r}   r   Úpredictrp   ré   Úargmaxr   r   )	r;   r�   r]   r<   rY   r‚   r„   ÚY_predÚY_pred_probas	            rA   Ú+test_gaussian_mixture_predict_predict_probarò     s  € Ü
�)‰)×
Ñ
 Ó
"€CÜ˜3“€IÜ%ò 5ˆ
Ø�K‰K˜
Ñ#ˆØ�K‰KˆÜØ"×/Ñ/ØØ"×*Ñ*Ø —‘Ø%×0Ñ0°Ñ<Ø&ô
ˆðFð 	ô �]‰]œ>°Ô5ñ 	Ø�I‰I�aŒL÷	ð 	
�‰ˆaŒØ—‘˜1“ˆØ—‘ qÓ)×0Ñ0°aÐ0Ó8ˆÜ˜6 <Ô0Ü" 1 fÓ-°Ó4Ð4Ð4ñ15÷"	ð 	ús   Â(D%Ä%D.	zignore:.*did not converge.*zseed, max_iter, tol))r   rG   çH¯¼šò×z>)ru   rG   rj   )rh   é,  ró   )é   rô   rj   c                 ó�  — t         j                  j                  | «      }t        ||¬«      }t        D �]  }|j
                  |   }|j                  }t        |j                  ||j                  |j                  |j                  |   |||¬«      }	t        j                  |	«      }
|
j                  |«      j                  |«      }|	j!                  |«      }t#        ||«       t%        ||«      dkD  sJ ‚|	j&                  j(                  |k(  sJ ‚|	j*                  j(                  |k(  sJ ‚|	j,                  j(                  |k(  r�ŒJ ‚ y )NrN   )rO   rK   rx   r‰   r‘   r9   rm   rk   rí   )r(   r)   r*   rE   rW   r<   rY   r   rO   r6   r7   r8   ÚcopyÚdeepcopyrp   rî   Úfit_predictr   r   Úmeans_r:   Úweights_Úprecisions_)Úseedrm   rk   rÃ   r;   r�   r]   r<   rY   r‚   ÚfÚY_pred1ÚY_pred2s                rA   Ú!test_gaussian_mixture_fit_predictr  =  s"  € ô �)‰)×
Ñ
 Ó
%€CÜ˜3 lÔ3€IÜ%ó 3ˆ
Ø�K‰K˜
Ñ#ˆØ�K‰KˆÜØ"×/Ñ/ØØ"×*Ñ*Ø —‘Ø%×0Ñ0°Ñ<Ø&ØØô	
ˆô �M‰M˜!ÓˆØ—%‘%˜“(×"Ñ" 1Ó%ˆØ—-‘- Ó"ˆÜ˜7 GÔ,Ü" 1 gÓ.°Ò5Ð5Ð5Ø�x‰x�~‰~ Ò-Ð-Ð-Ø�z‰z×Ñ <Ò/Ð/Ð/Ø�}‰}×"Ñ" lÔ2Ð2Ð2ñ-3rC   c                  óÚ   — t         j                  j                  d«      j                  dd«      } t	        ddd¬«      }|j                  | «      }|j                  | «      }t        ||«       y )Nr   éè  ræ   )rO   rl   rK   )r(   r)   r*   Úrandnr   rù   rî   r   )r<   ÚgmÚy_pred1Úy_pred2s       rA   Ú(test_gaussian_mixture_fit_predict_n_initr  c  sV   € ä
�	‰	×Ñ˜aÓ ×&Ñ& t¨QÓ/€AÜ	 a°ÀÔ	B€BØ�n‰n˜QÓ€GØ�j‰j˜‹m€GÜ�w Õ(rC   c           	      ór  — t         j                  j                  d«      }t        || ¬«      }|j                  }|j
                  }t        D �]U  }|j                  |   }t        |dd||¬«      }|j                  |«       t        t        j                  |j                  «      t        j                  |j                  «      dd¬«       |j                  d d …df   j                  «       }|j                   d d …df   j                  «       }	t        |j                  |   |j                   |	   dd¬«       |dk(  r|j"                  }
|j$                  d   }�ng|d	k(  rKt        j&                  |j"                  g|z  «      }
t        j&                  |j$                  d	   g|z  «      }�n|d
k(  rŠt        j&                  |j"                  D �cg c]  }t        j(                  |«      |z  ‘Œ c}«      }
t        j&                  |j$                  d
   D �cg c]  }t        j(                  |«      |z  ‘Œ c}«      }nˆ|dk(  rƒt        j&                  |j"                  D �cg c]  }t        j*                  |«      ‘Œ c}«      }
t        j&                  |j$                  d   D �cg c]  }t        j*                  |«      ‘Œ c}«      }t        j,                  
dd¬«      j                  «       }t        j,                  dd¬«      j                  «       }	t/        ||	«      D ]9  \  }}t1        «       }||   |_        t        |j5                  |
|   «      dd¬«       Œ; |j                  j6                  | k(  sJ ‚|j8                  j6                  | k(  sJ ‚|j"                  j6                  | k(  r�ŒVJ ‚ y c c}w c c}w c c}w c c}w )Nr   rN   é   ©rO   rl   rn   rK   r9   rj   g{®Gáz„?©ÚrtolÚatolr#   r$   r&   r%   ru   rG   )Úaxis1Úaxis2g333333Ã?)r  )r(   r)   r*   rE   r5   rO   rW   r<   r   rp   r   Úsortrû   r6   rú   Úargsortr7   rü   r8   rR   r/   r%   Útracer,   r   r¸   r¤   r:   Úcovariances_)rÃ   r;   r�   r5   rO   r]   r<   r‚   Úarg_idx1Úarg_idx2Ú	prec_predÚ	prec_testr@   Údr^   Úhr®   s                    rA   Útest_gaussian_mixture_fitr  l  s  € ä
�)‰)×
Ñ
 Ó
"€CÜ˜3 lÔ3€IØ×%Ñ%€JØ×)Ñ)€Lä%ó /3ˆ
Ø�K‰K˜
Ñ#ˆÜØ%ØØØØ&ô
ˆð 	
�‰ˆaŒô 	Ü�G‰G�A—J‘JÓ¤§¡¨×):Ñ):Ó!;À#ÈDõ	
ð —8‘8šA˜q˜D‘>×)Ñ)Ó+ˆØ—?‘?¢1 a 4Ñ(×0Ñ0Ó2ˆÜØ�H‰H�XÑ 	§¡°Ñ 9ÀÈ$õ	
ð ˜ÒØŸ™ˆIØ!×,Ñ,¨VÑ4ŠIØ˜6Ò!ÜŸ™ !§-¡- °<Ñ!?Ó@ˆIÜŸ™ )×"6Ñ"6°vÑ">Ð!?À,Ñ!NÓOŠIØ˜;Ò&ÜŸ™À!Ç-Á-Ö!P¸Q¤"§&¡&¨Ó"4°qÓ"8Ò!PÓQˆIÜŸ™Ø1:×1EÑ1EÀkÑ1RÖS¨A”—‘˜
Ó# aÓ'ÒSó‰Ið ˜6Ò!ÜŸ™°a·m±mÖ!D°¤"§'¡'¨!¥*Ò!DÓEˆIÜŸ™°i×6JÑ6JÈ6Ñ6RÖ!S°¤"§'¡'¨!¥*Ò!SÓTˆIä—8‘8˜I¨Q°aÔ8×@Ñ@ÓBˆÜ—8‘8˜I¨Q°aÔ8×@Ñ@ÓBˆÜ˜ (Ó+ò 	I‰DˆAˆqÜ&Ó(ˆDØ(¨™|ˆDÔä˜DŸO™O¨I°a©LÓ9¸1À4ÖHð		Ið �x‰x�~‰~ Ò-Ð-Ð-Ø�~‰~×#Ñ# |Ò3Ð3Ð3Ø�}‰}×"Ñ" lÔ2Ð2Ð2ñ_/3ùò: "QùâSùò "EùÚ!Ss   ÇN%
ÈN*
ÉN/
ÊN4
c                  ó  — t         j                  j                  d«      } t        | «      }|j                  }d}t
        D ]Ã  }|j                  |   }t        |dd| |¬«      }g }t        |«      D ]3  }|j                  |«       |j                  |j                  |«      «       Œ5 t        j                  |«      }t        ||d| |¬«      }	|	j                  |«       t        |j                  «       |	j                  |«      «       ŒÅ y )Nr   rf   ru   r  )r(   r)   r*   rE   rO   rW   r<   r   rS   rp   r-   ÚscorerR   r   r   )
r;   r�   rO   rl   r]   r<   r‚   Úllr=   Úg_bests
             rA   Ú%test_gaussian_mixture_fit_best_paramsr   ¥  së   € Ü
�)‰)×
Ñ
 Ó
"€CÜ˜3“€IØ×)Ñ)€LØ€FÜ%ò 7ˆ
Ø�K‰K˜
Ñ#ˆÜØ%ØØØØ&ô
ˆð ˆÜ�v“ò 	"ˆAØ�E‰E�!ŒHØ�I‰I�a—g‘g˜a“jÕ!ð	"ô �X‰X�b‹\ˆÜ Ø%ØØØØ&ô
ˆð 	�
‰
�1ŒÜ˜BŸF™F›H f§l¡l°1£oÕ6ñ-7rC   c            	      óT  — t         j                  j                  d«      } t        | d¬«      }|j                  }d}t
        D ]Y  }|j                  |   }t        |d|d| |¬«      }d}t        j                  t        |¬«      5  |j                  |«       d d d «       Œ[ y # 1 sw Y   ŒfxY w)Nr   ru   rç   ©rO   rl   rm   rn   rK   r9   zˆBest performing initialization did not converge. Try different init parameters, or increase max_iter, tol, or check for degenerate data.rv   )r(   r)   r*   rE   rO   rW   r<   r   r|   Úwarnsr   rp   )r;   r�   rO   rm   r]   r<   r‚   r„   s           rA   Ú-test_gaussian_mixture_fit_convergence_warningr$  Ã  s«   € Ü
�)‰)×
Ñ
 Ó
"€CÜ˜3 aÔ(€IØ×)Ñ)€LØ€HÜ%ò ˆ
Ø�K‰K˜
Ñ#ˆÜØ%ØØØØØ&ô
ˆð1ð 	ô
 �\‰\Ô,°CÔ8ñ 	Ø�E‰E�!ŒH÷	ð 	ñ÷	ð 	ús   ÂBÂB'	c                  óH  — t         j                  j                  d«      } d\  }}}| j                  ||«      }t        D ]b  }t        ||d¬«      j                  |«      j                  |«      }t        ||dd¬«      j                  |«      j                  |«      }||k\  rŒbJ ‚ y )Nr   ©rH   ræ   rG   rŽ   ræ   ©rO   r9   rK   rl   )r(   r)   r*   r  rW   r   rp   r  )r;   r4   r5   rO   r<   Úcv_typeÚtrain1Útrain2s           rA   Útest_multiple_initr+  Û  s©   € ä
�)‰)×
Ñ
 Ó
"€CØ*2Ñ'€Iˆz˜<Ø�	‰	�)˜ZÓ(€AÜ"ò  ˆäØ)¸7ÐQRô÷ ‰S�‹Vß‰U�1‹Xð 	ô Ø)Ø 'ØØô	÷ ‰S�‹Vß‰U�1‹Xð 	ð ˜ÓÐÐñ% rC   c                  ó   — t         j                  j                  d«      } d\  }}}| j                  ||«      }dddddœ}t        D ]7  }t        ||| ¬«      j                  |«      }|j                  «       ||   k(  rŒ7J ‚ y )	Nr   r&  é   é   é   é)   rL   rŽ   )r(   r)   r*   r  rW   r   rp   Ú_n_parameters)r;   r4   r5   rO   r<   Ún_paramsr(  r‚   s           rA   Ú"test_gaussian_mixture_n_parametersr3  õ  sˆ   € ä
�)‰)×
Ñ
 Ó
"€CØ*2Ñ'€Iˆz˜<Ø�	‰	�)˜ZÓ(€AØ¨°RÀÑD€HÜ"ò 6ˆÜØ%°wÈSô
ç
‰#ˆa‹&ð 	
ð �‰Ó  H¨WÑ$5Ó5Ð5Ð5ñ	6rC   c                  óH  — t         j                  j                  d«      } d\  }}}| j                  ||«      }t	        |d| ¬«      j                  |«      j                  |«      }dD ]:  }t	        ||| ¬«      j                  |«      j                  |«      }t        ||«       Œ< y )Nr   )éd   ru   ru   r#   rŽ   )r$   r%   r&   )r(   r)   r*   r  r   rp   Úbicr   )r;   r4   Ún_dimrO   r<   Úbic_fullr9   r6  s           rA   Útest_bic_1d_1componentr9    s£   € ô �)‰)×
Ñ
 Ó
"€CØ%.Ñ"€Iˆu�lØ�	‰	�)˜UÓ#€AäØ%°vÈCô	
÷ 
‰ˆQ‹ß	‰ˆQ‹ð ð 9ò 
+ˆäØ)Ø /Ø ô÷
 ‰S�‹Vß‰S�‹Vð 	ô 	˜H cÕ*ñ
+rC   c                  ó²  — t         j                  j                  d«      } d\  }}}| j                  ||«      }dt	        t        j
                  |j                  d¬«      «      |dt        j                  dt         j                  z  «      z   z  z   z  }t        D ]½  }t        ||| d¬«      }|j                  |«       d|z  |z  d|j                  «       z  z   }d|z  |z  t        j                  |«      |j                  «       z  z   }	|t        j                  |«      z  }
|j                  |«      |z
  |z  |
k  sJ ‚|j                  |«      |	z
  |z  |
k  rŒ½J ‚ y )	Nr   )rH   rh   rG   rJ   ru   )ÚbiasrG   rF   )rO   r9   rK   rm   )r(   r)   r*   r  r!   r²   r¦   rÊ   ÚpirW   r   rp   r1  r¢   Úaicr6  )r;   r4   r5   rO   r<   Úsghr(  r‚   r=  r6  Úbounds              rA   Útest_gaussian_mixture_aic_bicr@    s?  € ä
�)‰)×
Ñ
 Ó
"€CØ*2Ñ'€Iˆz˜<Ø�	‰	�)˜ZÓ(€Aà
Ü”B—F‘F˜1Ÿ3™3 QÔ'Ó(¨:¸¼R¿V¹VÀAÌÏÉÁIÓ=NÑ9NÑ+OÑOñ€Cô #ò 4ˆÜØ%Ø#ØØô	
ˆð 	
�‰ˆaŒØ�)‰m˜cÑ! A¨¯©Ó(9Ñ$9Ñ9ˆØ�)‰m˜cÑ!¤B§F¡F¨9Ó$5¸¿¹Ó8IÑ$IÑIˆØœRŸW™W YÓ/Ñ/ˆØ—‘�a“˜3‘ )Ñ+¨eÒ3Ð3Ð3Ø—‘�a“˜3‘ )Ñ+¨eÓ3Ð3Ð3ñ4rC   c            	      óª  — t         j                  j                  d«      } t        | «      }|j                  }t
        D ]„  }|j                  |   }t        |dd| |d¬«      }t        |dd| |d¬«      }t        j                  }t        «       t        _	        	 |j                  |«       |j                  |«       |t        _	        Œ† y # |t        _	        w xY w)Nr   ru   )rO   rl   rn   rK   r9   ÚverboserG   )r(   r)   r*   rE   rO   rW   r<   r   ÚsysÚstdoutr   rp   )r;   r�   rO   r]   r<   r‚   r  Ú
old_stdouts           rA   Útest_gaussian_mixture_verboserF  4  sÂ   € Ü
�)‰)×
Ñ
 Ó
"€CÜ˜3“€IØ×)Ñ)€LÜ%ò $ˆ
Ø�K‰K˜
Ñ#ˆÜØ%ØØØØ&Øô
ˆô Ø%ØØØØ&Øô
ˆô —Z‘Zˆ
Ü“ZŒŒ
ð	$Ø�E‰E�!ŒHØ�E‰E�!ŒHà#ŒC�Jñ1$øð0 $ŒC�Jús   Â"CÃCrý   )r   ru   rG   c           	      óL  — | }t         j                  j                  |«      }d\  }}}|j                  ||«      }t	        |ddd|d¬«      }t	        |ddd|d¬«      }|j                  |«       |j                  |«      j                  |«      }	|j                  |«      j                  |«      }
t        |j                  |j                  «       t        |j                  |j                  «       t        |j                  |j                  «       |
|	kD  sJ ‚t	        |ddd|dd	¬
«      }t	        |ddd|dd	¬
«      }|j                  |«       |j                  rJ ‚|j                  |«       t        d«      D ]!  }|j                  |«       |j                  sŒ! n |j                  sJ ‚y )Nr¶   ru   rG   r   F)rO   rl   rm   rn   rK   Ú
warm_startTræ   ç�íµ ÷Æ°>)rO   rl   rm   rn   rK   rH  rk   r  )r(   r)   r*   rP   r   rp   r  r   rû   rú   rü   Ú
converged_rS   )rý   rK   r;   r4   r5   rO   r<   r‚   r  Úscore1Úscore2r=   s               rA   Útest_warm_startrM  S  s�  € ð €LÜ
�)‰)×
Ñ
 Ó
-€CØ*3Ñ'€Iˆz˜<Ø�‰�˜JÓ'€Aô 	Ø!ØØØØ!Øô	€Aô 	Ø!ØØØØ!Øô	€Að ‡E�Eˆ!„HØ�U‰U�1‹X�^‰^˜AÓ€FØ�U‰U�1‹X�^‰^˜AÓ€Fä˜Ÿ
™
 A§J¡JÔ/Ü˜Ÿ™ !§(¡(Ô+Ü˜Ÿ™ q§}¡}Ô5Ø�FŠ?Ðˆ?ô 	Ø!ØØØØ!ØØô	€Aô 	Ø!ØØØØ!ØØô	€Að ‡E�Eˆ!„HØ�|Š|ÐÐà‡E�Eˆ!„Hô �4‹[ò ˆØ	�‰ˆaŒØ�<‹<Ùðð �<Š<Ð‰<rC   z-ignore::sklearn.exceptions.ConvergenceWarningc                  óV  — t         j                  j                  d«      } t        | «      }|j                  }|j
                  d   }dD ]_  }t        |d|| ¬«      }t        d«      D ]!  }|j                  |«       |j                  sŒ! n |j                  sJ ‚||j                  k\  rŒ_J ‚ y )Nr   r#   )ru   rG   rH   T)rO   rH  rm   rK   r5  )r(   r)   r*   rE   rO   r<   r   rS   rp   rJ  Ún_iter_)r;   r�   rO   r<   rm   rq   r=   s          rA   Ú)test_convergence_detected_with_warm_startrP  ˜  s©   € ô �)‰)×
Ñ
 Ó
"€CÜ˜3“€IØ×)Ñ)€LØ�‰�FÑ€Aàò 'ˆÜØ%ØØØô	
ˆô �s“ò 	ˆAØ�G‰G�AŒJØ�~‹~Ùð	ð �~Š~Ðˆ~Ø˜3Ÿ;™;Ó&Ð&Ð&ñ'rC   c                 óš  — d}t         j                  j                  d«      }t        |d| ¬«      }|j                  }|j
                  |   }|j                  | k(  sJ ‚t        |ddd||¬«      }d}t        j                  t        |¬«      5  |j                  |«       d d d «       t        j                  «       5  t        j                  d	t        «       |j!                  |«       d d d «       |j"                  j                  | k(  sJ ‚|j$                  j                  | k(  sJ ‚|j                  |«      }|j'                  |«      j)                  «       }	t+        ||	«       |	j                  | k(  sJ ‚t        |dd||¬
«      j!                  |«      }
|
j                  |«      |j                  |«      kD  sJ ‚y # 1 sw Y   �ŒxY w# 1 sw Y   ŒÞxY w)Nr#   r   é   ©r[   r:   ru   r"  rì   rv   Úignorer  )r(   r)   r*   rE   rO   r<   r:   r   r|   r}   r   r  ÚwarningsÚcatch_warningsÚsimplefilterr   rp   rú   r  Úscore_samplesr§   r   )rÃ   r]   r;   r�   rO   r<   Úgmm1r„   Ú	gmm_scoreÚgmm_score_probaÚgmm2s              rA   Ú
test_scorer]  ¯  s¬  € Ø€JÜ
�)‰)×
Ñ
 Ó
"€CÜ˜3 a¨|Ô<€IØ×)Ñ)€LØ�‰�JÑ€AØ�7‰7�lÒ"Ð"Ð"ô Ø!ØØØØØ"ô€Dð	=ð ô 
�‰”~¨SÔ	1ñ Ø�
‰
�1Œ÷ô 
×	 Ñ	 Ó	"ñ Ü×Ñ˜hÔ(:Ô;Ø�‰�Œ÷ð �;‰;×Ñ Ò,Ð,Ð,Ø×Ñ×"Ñ" lÒ2Ð2Ð2à—
‘
˜1“€IØ×(Ñ(¨Ó+×0Ñ0Ó2€OÜ˜	 ?Ô3Ø× Ñ  LÒ0Ð0Ð0ô Ø!ØØØØ"ô÷ 
�cˆ!ƒfð 	ð �:‰:�a‹=˜4Ÿ:™: a›=Ò(Ð(Ñ(÷1ñ ú÷ð ús   Â
F4Â8,GÆ4F>ÇG
c                  ó¸  — d} t         j                  j                  d«      }t        |d¬«      }|j                  }|j
                  |    }t        |dd|| ¬«      }d}t        j                  t        |¬«      5  |j                  |«       d d d «       |j                  |«      j                  |«      }|j                  d   |j                  k(  sJ ‚y # 1 sw Y   ŒHxY w)	Nr#   r   rR  rç   ru   r  rì   rv   )r(   r)   r*   rE   rO   r<   r   r|   r}   r   rX  rp   r{   r4   )r]   r;   r�   rO   r<   rq   r„   Úgmm_score_sampless           rA   Útest_score_samplesr`  ß  sÒ   € Ø€JÜ
�)‰)×
Ñ
 Ó
"€CÜ˜3 aÔ(€IØ×)Ñ)€LØ�‰�JÑ€Aô Ø!ØØØØ"ô€Cð	=ð ô 
�‰”~¨SÔ	1ñ Ø×Ñ˜!Ô÷ð Ÿ™ ›
×0Ñ0°Ó3ÐØ×"Ñ" 1Ñ%¨×)<Ñ)<Ò<Ð<Ñ<÷	ð ús   Á7CÃCc            
      ó   — t         j                  j                  d«      } t        | d¬«      }|j                  }t
        D ]Á  }|j                  |   }t        ||ddd| d¬«      }t         j                   }t        j                  «       5  t        j                  dt        «       t        d	«      D ]9  }|}|j                  |«      j                  |«      }||k\  sJ ‚|j                   sŒ9 n |j                   sJ ‚	 d d d «       ŒÃ y # 1 sw Y   ŒÎxY w)
Nr   rR  rç   Tru   ró   )rO   r9   rn   rH  rm   rK   rk   rT  iX  )r(   r)   r*   rE   rO   rW   r<   r   ÚinfrU  rV  rW  r   rS   rp   r  rJ  )	r;   r�   rO   r]   r<   rq   Úcurrent_log_likelihoodr=   Úprev_log_likelihoods	            rA   Útest_monotonic_likelihoodre  ù  s  € ô �)‰)×
Ñ
 Ó
"€CÜ˜3 aÔ(€IØ×)Ñ)€Lä%ò "ˆ
Ø�K‰K˜
Ñ#ˆÜØ%Ø&ØØØØØô
ˆô #%§&¡& ÐÜ×$Ñ$Ó&ñ 	"Ü×!Ñ! (Ô,>Ô?ô ˜3“Zò �Ø&<Ð#Ø),¯©°«×)9Ñ)9¸!Ó)<Ð&Ø-Ð1DÒDÐDÐDà—>“>Ùðð —>’>Ð!‘>÷	"ð 	"ñ"÷	"ð 	"ús   ÂADÃ'DÄD	c                  ó‚  — t         j                  j                  d«      } d\  }}t        j                  t        j                  |dz  |f«      t        j
                  |dz  |f«      f«      }t        D ]³  }t        |d|| ¬«      }t        j                  «       5  t        j                  dt        «       t        j                  d«      }t        j                  t         |¬«      5  |j#                  |«       d d d «       |j%                  d¬	«      j#                  |«       d d d «       Œµ y # 1 sw Y   Œ5xY w# 1 sw Y   ŒÌxY w)
Nr   )rf   ræ   rG   )rO   rn   r9   rK   rT  zîFitting the mixture model failed because some components have ill-defined empirical covariance (for instance caused by singleton or collapsed samples). Try to decrease the number of components, increase reg_covar, or scale the input data.rv   rI  )rn   )r(   r)   r*   r3   r�   r£   rW   r   rU  rV  rW  ÚRuntimeWarningry   rz   r|   r}   r~   rp   Ú
set_params)r;   r4   r5   r<   r]   rq   r„   s          rA   Útest_regularisationri    s  € ô �)‰)×
Ñ
 Ó
"€CØ!Ñ€Iˆzä
�	‰	Ü	�‰�)˜q‘. *Ð-Ó	.´·±¸)Àq¹.È*Ð9UÓ0VÐWó	€Aô &ò 2ˆ
ÜØ"ØØ&Øô	
ˆô ×$Ñ$Ó&ñ 	2Ü×!Ñ! (¬NÔ;Ü—)‘)ðNóˆCô —‘œz°Ô5ñ Ø—‘˜”
÷ð �N‰N TˆNÓ*×.Ñ.¨qÔ1÷	2ð 	2ñ2÷ ð ú÷	2ð 	2ús%   ÂAD5Ã#D)Ã5)D5Ä)D2Ä.D5Ä5D>	r]   c                 ó’  — t         j                  j                  d«      }t        |d|¬«      }|j                  }|j
                  |    }t        || |d¬«      }|j                  |«       |j                  j                  |k(  sJ ‚|j                  j                  |k(  sJ ‚| dk(  rHt        |j                  |j                  «      D ]$  \  }}t        t        j                  |«      |«       Œ& y | dk(  r4t        t        j                  |j                  «      |j                  «       y t        |j                  d|j                  z  «       y )	Nr   rR  rS  ræ   r'  r#   r$   rM   )r(   r)   r*   rE   rO   r<   r   rp   rü   r:   r  r,   r   r   rU   )	r]   rÃ   r;   r�   rO   r<   rq   r°   Úcovars	            rA   Ú,test_fitted_precision_covariance_concistencyrl  ;  s  € ä
�)‰)×
Ñ
 Ó
"€CÜ˜3 a¨|Ô<€IØ×)Ñ)€Là�‰�JÑ€AÜ
Ø!Ø"ØØô	€Cð ‡G�GˆA„JØ�?‰?× Ñ  LÒ0Ð0Ð0Ø×Ñ×!Ñ! \Ò1Ð1Ð1Ø�VÒÜ˜sŸ™°×0@Ñ0@ÓAò 	?‰KˆD�%Ü%¤f§j¡j°Ó&6¸Õ>ñ	?à	�vÒ	Ü!¤&§*¡*¨S¯_©_Ó"=¸s×?OÑ?OÕPä! #§/¡/°3¸×9IÑ9IÑ3IÕJrC   c                  ó   — t         j                  j                  d«      } t        | dd¬«      }|j                  |j
                  }}t        D �]�  }|j                  |   }t        ||| ¬«      }d}t        j                  t        |¬«      5  |j                  d«       d d d «       |j                  |«       d}t        j                  t        |¬«      5  |j                  d«       d d d «       d	}|j                  |«      \  }	}
t        |«      D �]#  }|d
k(  r?t!        |j"                  |   t        j$                  |	|
|k(     j&                  «      d¬«       ŒH|dk(  r<t!        |j"                  t        j$                  |	|
|k(     j&                  «      d¬«       Œ‰|dk(  rRt!        |j"                  |   t        j(                  t        j$                  |	|
|k(     j&                  «      «      d¬«       Œàt!        |j"                  |   t        j*                  |	|
|k(     |j,                  |   z
  «      d¬«       �Œ& t        j.                  t        |«      D �cg c]  }t        j0                  |	|
|k(     d«      ‘Œ  c}«      }t!        |j,                  |d¬«       |	j2                  ||fk(  sJ ‚t        dd«      D ])  }|j                  |«      \  }	}|	j2                  ||fk(  rŒ)J ‚ �Œ“ y # 1 sw Y   �ŒGxY w# 1 sw Y   �ŒxY wc c}w )Nr   rR  rh   )r[   rO   rŽ   z+This GaussianMixture instance is not fittedrv   zInvalid value for 'n_samples'i N  r#   ru   )Údecimalr$   r%   r5  )r(   r)   r*   rE   r5   rO   rW   r<   r   r|   r}   r   Úsamplerp   r~   rS   r   r  r²   r¦   r%   Úvarrú   rR   r§   r{   )r;   r�   r5   rO   r]   r<   rq   r„   r4   ÚX_sÚy_sr^   Úmeans_sÚsample_sizer=   s                  rA   Útest_sampleru  T  s’  € Ü
�)‰)×
Ñ
 Ó
"€CÜ˜3 a°aÔ8€IØ(×3Ñ3°Y×5KÑ5K�€Jä%ó 1:ˆ
Ø�K‰K˜
Ñ#ˆäØ%°zÐPSô
ˆð <ˆÜ�]‰]œ>°Ô5ñ 	Ø�J‰J�qŒM÷	à�‰�Œ
à-ˆÜ�]‰]œ:¨SÔ1ñ 	Ø�J‰J�qŒM÷	ð ˆ	Ø—:‘:˜iÓ(‰ˆˆSä�|Ó$ó 	ˆAØ˜VÒ#Ü)Ø×$Ñ$ QÑ'¬¯©°°C¸1±H±·±Ó)@È!öð ˜vÒ%Ü)Ø×$Ñ$¤b§f¡f¨S°¸±©]¯_©_Ó&=Àqöð ˜vÒ%Ü)Ø×$Ñ$ QÑ'¬¯©´·±¸¸CÀ1¹H¹¿¹Ó1HÓ)IÐSTöô *Ø×$Ñ$ QÑ'Ü—F‘F˜3˜s a™x™=¨3¯:©:°a©=Ñ8Ó9Ø÷ð	ô( —(‘(¼uÀ\Ó?RÖS¸!œBŸG™G C¨¨q©¡M°1Õ5ÒSÓTˆÜ! #§*¡*¨g¸qÕAð �y‰y˜Y¨
Ð3Ò3Ð3Ð3ä   C›=ò 	:ˆKØ—Z‘Z Ó,‰FˆC�Ø—9‘9 ¨jÐ 9Ó9Ð9Ð9ò	:ñ_1:÷	ñ 	ú÷
	ñ 	üò6 Ts   Â
K!ÃK.É#K;
Ë!K+	Ë.K8	c                  ó^  — t        d«      D ]Ÿ  } t        t        j                  j	                  | «      dd¬«      }|j
                  }|j                  d   }t        |dd| ¬«      j                  |«      }t        |dd| ¬«      j                  |«      }|j                  |j                  k\  rŒŸJ ‚ y )Né   rH   ru   )r4   r[   r#   )rO   rl   rm   rK   rf   )
rS   rE   r(   r)   r*   rO   r<   r   rp   Úlower_bound_)rK   r�   rO   r<   rY  r\  s         rA   Ú	test_initry  �  s®   € ô ˜b›	ò 6ˆÜÜ�I‰I×!Ñ! ,Ó/¸2ÀQô
ˆ	ð !×-Ñ-ˆØ�K‰K˜ÑˆäØ%¨a¸!È,ô
ç
‰#ˆa‹&ð 	ô Ø%¨b¸1È<ô
ç
‰#ˆa‹&ð 	ð × Ñ  D×$5Ñ$5Ó5Ð5Ð5ñ6rC   c            
      ó’  — t         j                  j                  d«      } d}| j                  |df¬«      }t        j                  g d¢g d¢g d¢g d¢g d	¢g d
¢g«      }t        j                  g d¢«      }g d¢}t        dd||| t        |«      |d¬«      }|j                  |«       |j                  rJ ‚dD ]  }t        ||«      rŒJ ‚ y)zÛ`GaussianMixture`'s best_parameters, `n_iter_` and `lower_bound_`
    must be set appropriately in the case of divergence.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/18216
    r   ri   rh   ©Úsize)gß¯ŒÝuå?g³ýºÕÐíÊ?gnÏ,¨€À?)gqz=|¸?gdUX'nâ?g.baË¼í?)g£Úê8à?gà—�ŸŸî?g½Í×�ƒ'¶?)g{á¼ÇÇ?g
 ³á?g(}I�^ÑÈ?)gLœähÝ?gtªã“M„Ö?gŽÈ§@.â?)g»YáŒ8ã?g›ïj4}_é?g$%ˆŸÈÈî?)g§(Ìÿ„.Ag_Sˆÿ„.Ag]°IN�@g¬òÅ•&™i@g’âçî¼/@gYa2¤i]U@)ç¡?r}  ç±?r~  ggfffffæ?gŸ™™™™™¹?r&   ru   )r9   rn   r‰   rx   rK   rO   r‘   rm   )rû   rú   r  Úprecisions_cholesky_rO  rx  Úlower_bounds_N)
r(   r)   r*   ÚuniformrR   r   rÐ   rp   rJ  Úhasattr)Úrndr4   r<   r‰   r‘   rx   rq   Úattrs           rA   Ú)test_gaussian_mixture_setting_best_paramsr…  ¡  sÜ   € ô �)‰)×
Ñ
 Ó
"€CØ€IØ�‰˜) Q˜ˆÓ(€Aô —‘âIÚHÚIÚJÚHÚGð	
ó	€Jô —h‘hò	
ó	€Oò€Lô Ø#ØØØ!ØÜ˜Ó&Ø'Øô	€Cð ‡G�GˆA„Jð �~Š~ÐÐðò 	"ˆô �s˜DÕ!Ð!Ð!ñ	"rC   ro   )r)   Úrandom_from_dataú	k-means++Úkmeansc                 óX  — t         j                  j                  |«      }t        |d¬«      }|j                  }|j
                  d   }t        || |d¬«      }|j                  |«       |j                  }t        j                  |d¬«      D ]  \  }}	t        j                  ||	«      sŒJ ‚ y )Nræ   rç   r#   r   )rO   ro   rK   rm   rG   )Úr)r(   r)   r*   rE   rO   r<   r   rp   rú   Ú	itertoolsÚcombinationsÚallclose)
ro   Úglobal_random_seedr;   r�   rO   r<   rq   r7   Úi_meanÚj_means
             rA   Útest_init_means_not_duplicatedr‘  ç  sœ   € ô
 �)‰)×
Ñ
Ð 2Ó
3€CÜ˜3 aÔ(€IØ×)Ñ)€LØ�‰�FÑ€Aä
Ø!¨{ÈÐWXô€Cð ‡G�GˆA„Jà�J‰J€EÜ#×0Ñ0°¸!Ô<ò /‰ˆ�Ü—;‘;˜v vÕ.Ð.Ð.ñ/rC   c                 ó´  — t         j                  j                  |«      }t        |d|¬«      }|j                  }|j
                  d   }t        || |¬«      }|j                  |«       |j                  j                  ||j                  d   fk(  sJ ‚t        j                  |j                  d¬«      |j                  k  «      sJ ‚t        j                  |j                  |j                  d¬«      k  «      sJ ‚|j                  sJ ‚|j                  j                  |k(  sJ ‚|j                  j                  |k(  sJ ‚|j                   j                  |k(  sJ ‚y )Nræ   rS  r#   )rO   ro   rK   ru   r   rŸ   )r(   r)   r*   rE   rO   r<   r   rp   rú   r{   Úallr   r€   rJ  r:   r  rû   )ro   rŽ  rÃ   r;   r�   rO   r<   rq   s           rA   Útest_means_for_all_initsr”  û  s#  € ô
 �)‰)×
Ñ
Ð 2Ó
3€CÜ˜3 a¨|Ô<€IØ×)Ñ)€LØ�‰�FÑ€Aä
Ø!¨{Èô€Cð ‡G�GˆA„Jà�:‰:×Ñ ¨a¯g©g°a©jÐ9Ò9Ð9Ð9Ü�6‰6�!—%‘%˜Q�%“- 3§:¡:Ñ-Ô.Ð.Ð.Ü�6‰6�#—*‘* §¡¨1 £Ñ-Ô.Ð.Ð.Ø�>Š>Ðˆ>Ø�:‰:×Ñ˜|Ò+Ð+Ð+Ø×Ñ×!Ñ! \Ò1Ð1Ð1Ø�<‰<×Ñ Ò-Ð-Ñ-rC   c                  ó  — t         j                  j                  d«      } t        | d¬«      }|j                  }|j
                  d   }ddgddgg}t        || |dd¬	«      }|j                  |«       t        |j                  |«       y )
Nr   ræ   rç   r#   r
  ri   é   rI  )rO   rK   r‰   rk   rm   )
r(   r)   r*   rE   rO   r<   r   rp   r   rú   )r;   r�   rO   r<   r‰   rq   s         rA   Útest_max_iter_zeror—    sƒ   € ô �)‰)×
Ñ
 Ó
"€CÜ˜3 aÔ(€IØ×)Ñ)€LØ�‰�FÑ€AØ�r�(˜R ˜HÐ%€JÜ
Ø!ØØØØô€Cð ‡G�GˆA„Jä�C—J‘J 
Õ+rC   c                 óþ  — d}t         j                  j                  d«      }|j                  |d«      t        j                  ddg«      z   }t        j                  ddgddgg«      }t        j
                  |j                  |d«      |«      }t        j                  ||g«      j                  | «      }d	\  }}}	}
t        j                  |j                  d   |f«      j                  | «      }t        |d
|
¬«      j                  |«      j                  }d
|t        j                  |j                  d   «      |f<   t        |||	|¬«      \  }}}|j                  | k(  sJ ‚d
|z  }t!        |||	||
¬«      j                  |«      }|j"                  j                  | k(  sJ ‚|j$                  j                  | k(  sJ ‚|j&                  j                  | k(  sJ ‚t!        |||	|
¬«      j                  |«      }|j"                  j                  | k(  sJ ‚|j$                  j                  | k(  sJ ‚|j&                  j                  | k(  sJ ‚|j(                  |j(                  k(  sJ ‚t+        |j&                  |j&                  «       y)aü  Check that we properly initialize `precision_cholesky_` when we manually
    provide the precision matrix.

    In this regard, we check the consistency between estimating the precision
    matrix and providing the same precision matrix as initialization. It should
    lead to the same results with the same number of iterations.

    If the initialization is wrong then the number of iterations will increase.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/16944
    rô   r   rG   r
  g        gffffffæ¿g      @gffffffæ?)rG   r%   rI  r   ru   )Ú
n_clustersrl   rK   )rn   r9   )rO   r9   rn   r‘   rK   )rO   r9   rn   rK   N)r(   r)   r*   r  rR   r¥   r3   r2   r£   r{   r   rp   Úlabels_Úaranger   r:   r   rú   r  r  rO  r   )rÃ   r4   r;   Úshifted_gaussianÚCÚstretched_gaussianr<   rO   r9   rn   rK   r©   Úlabelr=   r\   r‘   Úgm_with_initÚgm_without_inits                     rA   Ú*test_gaussian_mixture_precisions_init_diagr¢  '  sh  € ð €IÜ
�)‰)×
Ñ
 Ó
"€CØ—y‘y ¨AÓ.´·±¸2¸r¸(Ó1CÑCÐÜ
�‰�3˜�+  S˜zÐ*Ó+€AÜŸ™ §	¡	¨)°QÓ 7¸Ó;ÐÜ
�	‰	Ð#Ð%7Ð8Ó9×@Ñ@ÀÓN€Að >PÑ:€L�/ 9¨lô �8‰8�Q—W‘W˜Q‘Z Ð.Ó/×6Ñ6°|ÓD€Dä˜,¨q¸|ÔLß	‰ˆQ‹ß	‰ð 
ð
 *+€DŒ�‰�1—7‘7˜1‘:Ó	 Ð	%Ñ&Ü4Ø	ˆ4˜9°oôÑ€A€qˆ*ð ×Ñ˜|Ò+Ð+Ð+Ø˜*‘n€Oä"Ø!Ø'ØØ'Ø!ô÷ 
�cˆ!ƒfð ð ×Ñ×$Ñ$¨Ò4Ð4Ð4Ø×$Ñ$×*Ñ*¨lÒ:Ð:Ð:Ø×,Ñ,×2Ñ2°lÒBÐBÐBä%Ø!Ø'ØØ!ô	÷
 
�cˆ!ƒfð ð ×!Ñ!×'Ñ'¨<Ò7Ð7Ð7Ø×'Ñ'×-Ñ-°Ò=Ð=Ð=Ø×/Ñ/×5Ñ5¸ÒEÐEÐEà×"Ñ" l×&:Ñ&:Ò:Ð:Ð:ÜØ×)Ñ)¨?×+OÑ+OõrC   c                 ó$  — t         j                  j                  | «      }|j                  ||f«      j	                  |«      }|j                  ||f«      j	                  |«      }||j                  d¬«      dd…t         j                  f   z  }||fS )z/Randomly generate samples and responsibilities.ru   rŸ   N)r(   r)   r*   Úrandom_sampler2   rQ   r·   )rý   r4   r5   rO   r:   Úrsr<   r©   s           rA   Ú_generate_datar¦  k  s�   € ä	�‰×	Ñ	˜tÓ	$€BØ
×Ñ˜) ZÐ0Ó1×8Ñ8¸Ó?€AØ×Ñ˜Y¨Ð5Ó6×=Ñ=¸eÓD€DØˆD�H‰H˜!ˆHÓšQ¤§
¡
˜]Ñ+Ñ+€DØˆdˆ7€NrC   c                 óØ   — d}t        | |||«      \  }}}t        ||«      }|j                  \  }}	t        |	|¬«      }
||||f}|
j	                  |«       |
j
                  |
j                  fS )zfCalculate precision matrix of X and its Cholesky decomposition
    for the given covariance type.
    rI  )rO   r9   )r   r   r{   r   Ú_set_parametersrü   r  )r<   r©   r9   rn   r6   r7   rT   Úprecisions_choleskyr=   rO   rq   Úparamss               rA   Ú_calculate_precisionsr«  t  s   € ð €IÜ"?Ø	ˆ4�˜Oó#Ñ€GˆU�Kô 6°kÀ?ÓSÐà—j‘j�O€A€|ô
  |À_Ô
U€CØ�u˜kÐ+>Ð?€FØ×Ñ˜ÔØ�?‰?˜C×4Ñ4Ð4Ð4rC   r9   c                 óü   — t        |ddd|¬«      \  }}t        ||| «      \  }}|j                  |k(  sJ ‚|j                  |k(  sJ ‚t        | |¬«      }|j	                  ||«       |j
                  }t        ||«       y)zNon-regression test for #26415.r5  rh   rõ   )rý   r4   r5   rO   r:   )r9   r‘   N)r¦  r«  r:   r   Ú_initializer  r   )	r9   rŽ  rÃ   r<   r©   r‘   Údesired_precisions_choleskyrq   Úactual_precisions_choleskys	            rA   Ú%test_gaussian_mixture_precisions_initr°  ‰  sœ   € ô ØØØØØô�G€A€tô 4IØ	ˆ4�ó4Ñ0€OÐ0ð × Ñ  LÒ0Ð0Ð0Ø&×,Ñ,°Ò<Ð<Ð<ä
Ø'¸ô€Cð ‡O�O�A�tÔØ!$×!9Ñ!9ÐÜÐ.Ð0KÕLrC   c                  ó  — t         j                  j                  d«      } | j                  t        j                  d«      t        j
                  d«      d¬«      }t        d¬«      }|j                  |«      j                  «        y)za
    Non-regression test for #23032 ensuring 1-component GM works on only a
    few samples.
    r   rG   rh   r{  ru   rt   N)	r(   r)   r*   r.   r£   Úidentityr   rp   ro  )r;   r<   r  s      rA   Ú-test_gaussian_mixture_single_component_stabler³  ¥  s]   € ô
 �)‰)×
Ñ
 Ó
"€CØ×Ñ¤§¡¨£¬R¯[©[¸«^À!ÐÓD€AÜ	 aÔ	(€BØ‡F�Fˆ1ƒI×ÑÕrC   c                 ó¶  — t        t        ¬«      }| j                  t        j                  j
                  d|«       t        j                  j                  |«      }t        |«      }t        |j                  |j                  |j                  |j                  d   |¬«      }|j                  |j                   d   «       |j"                  |j$                  k(  sJ ‚y)z�When all init parameters are provided, the Gaussian parameters
    are not estimated.

    Non-regression test for gh-26015.
    )Úside_effectr   r#   )rO   rx   r‰   r‘   rK   N)r   r   ÚsetattrÚsklearnÚmixtureÚ_gaussian_mixturer(   r)   r*   rE   r   rO   r6   r7   r8   rp   r<   Ú
call_countrO  )ÚmonkeypatchrŽ  Úmockr;   r�   r  s         rA   ÚDtest_gaussian_mixture_all_init_does_not_estimate_gaussian_parametersr½  °  s²   € ô Ô9Ô:€DØ×ÑÜ�‰×)Ñ)Ð+JÈDôô �)‰)×
Ñ
Ð 2Ó
3€CÜ˜3“€Iä	Ø×+Ñ+Ø×&Ñ&Ø—?‘?Ø!×,Ñ,¨VÑ4Øô
€Bð ‡F�Fˆ9�;‰;�vÑÔð �?‰?˜bŸj™jÒ(Ð(Ñ(rC   r)   r†  z(array_namespace, device_name, dtype_nameÚ#use_gmm_array_constructor_argumentsFTc                 ó$
  — t        |||«      \  }}t        j                  j                  d«      }t	        |«      }	|	j
                  |   }
|
j                  |«      }
|rU|	j                  j                  |«      |	j                  |   j                  |«      |	j                  j                  |«      dœ}ni }t        d|	j                  |d| dœ|¤Ž}|j                  |
«       |j                  |
|¬«      }t        j                  d¬«      5  t        j                   |«      }|j#                  «       D ]%  \  }}|j                  ||¬«      }t%        |||«       Œ' |j                  |«       t'        |j(                  «      d   |k(  sJ ‚t'        |j*                  «      d   |k(  sJ ‚t-        |j(                  «      t-        |«      k(  sJ ‚t-        |j*                  «      t-        |«      k(  sJ ‚|j/                  |«      }|j1                  |«      }|j3                  |«      }|j5                  |«      }|j7                  |«      }|j9                  |«      }|j;                  d«      \  }}|||||g}|D ].  }t'        |«      d   |k(  sJ ‚t-        |«      t-        |«      k(  rŒ.J ‚ |||fD ]  }t=        |t>        «      rŒJ ‚ 	 ddd«       |d	k(  rd
nd}|d	k(  rdnd}|d	k(  rdnd}tA        |j(                  tC        j(                  t        d¬«      «       tA        |jD                  tC        |jD                  t        d¬«      «       tA        |j*                  tC        |j*                  t        d¬«      ||¬«       tA        |jF                  tC        |jF                  t        d¬«      ||¬«       tA        |jH                  tC        |jH                  t        d¬«      ||¬«       tK        |j/                  |
«      tC        t        d¬«      «      dkD  sJ ‚tA        |j1                  |
«      tC        t        d¬«      ||¬«       tA        |j3                  |
«      tC        t        d¬«      |¬«       tA        |j5                  |
«      |¬«       tA        |j7                  |
«      |¬«       tA        |j9                  |
«      |¬«       |j;                  d«      \  } }!tA        | tC        t        d¬«      |¬«       tA        |!tC        t        d¬«      «       y# 1 sw Y   �ŒOxY w)z3Test that array api works in GaussianMixture.fit().r   )r‰   r‘   rx   )rO   r9   rK   ro   r   T©Úarray_api_dispatchrf   NÚfloat32rg   ró   gü©ñÒMb@?gü©ñÒMbP?Úcpu)Úxpr   )r  r  rí   r  )r  rd   )&r   r(   r)   r*   rE   r<   r2   r7   r8   r6   r   rO   rp   Úasarrayr·  Úconfig_contextÚcloneÚitemsr¶  r   rú   r  Úarray_api_devicerî   ré   rX  r  r=  r6  ro  Ú
isinstanceÚfloatr   r   rû   r  rü   r   )"ro   r9   Úarray_namespaceÚdevice_nameÚ
dtype_namer¾  rÄ  r   r;   r�   r<   Úadditional_kwargsrq   ÚX_xpÚgmm_xpÚ
param_nameÚparam_valueÚarg_xpÚ
predict_xpÚpredict_proba_xpÚscore_samples_xpÚscore_xpÚaic_xpÚbic_xpÚsample_X_xpÚsample_y_xpÚresultsÚresultr  Údefault_rtolÚincreased_atolÚincreased_rtolÚsample_XÚsample_ys"                                     rA   Ú*test_gaussian_mixture_array_api_compliancerä  Ï  s¯  € ô  & o°{ÀJÓO�J€Bˆä
�)‰)×
Ñ
 Ó
"€CÜ˜3“€IØ�‰�OÑ$€AØ	�‰�Ó€Aá*à#Ÿ/™/×0Ñ0°Ó<Ø(×3Ñ3°OÑD×KÑKÈJÓWØ%×-Ñ-×4Ñ4°ZÓ@ñ
Ñð Ðä
ð Ø×+Ñ+Ø'ØØñ	ð
 ñ€Cð ‡G�GˆA„Jà�:‰:�a ˆ:Ó'€Dä	×	Ñ	°4Ô	8ñ !,Ü—‘˜sÓ#ˆØ'8×'>Ñ'>Ó'@ò 	0Ñ#ˆJ˜Ø—Z‘Z °F�ZÓ;ˆFÜ�F˜J¨Õ/ð	0ð 	�
‰
�4Ôä˜VŸ]™]Ó+¨AÑ.°"Ò4Ð4Ð4Ü˜V×0Ñ0Ó1°!Ñ4¸Ò:Ð:Ð:Ü §¡Ó.Ô2BÀ4Ó2HÒHÐHÐHÜ × 3Ñ 3Ó4Ô8HÈÓ8NÒNÐNÐNà—^‘^ DÓ)ˆ
Ø!×/Ñ/°Ó5ÐØ!×/Ñ/°Ó5ÐØ—<‘< Ó%ˆØ—‘˜DÓ!ˆØ—‘˜DÓ!ˆØ#)§=¡=°Ó#4Ñ ˆ�[ð ØØØØð
ˆð ò 	FˆFÜ  Ó(¨Ñ+¨rÒ1Ð1Ð1Ü# FÓ+Ô/?ÀÓ/EÓEÐEÐEð	Fð  ¨Ð/ò 	,ˆEÜ˜e¤UÕ+Ð+Ð+ñ	,÷A!,ðH &¨Ò2‘4¸€LØ'¨9Ò4‘T¸!€NØ'¨9Ò4‘T¸$€Nô �C—J‘J¤¨¯©¼"ÀUÔ KÔLÜ�C—L‘L¤'¨&¯/©/¼bÈÔ"OÔPÜØ×ÑÜ�×#Ñ#¬°5Ô9ØØõ	ô Ø× Ñ Ü�×+Ñ+´¸5ÔAØØõ	ô Ø�‰Ü�×"Ñ"¤r°%Ô8ØØõ	ô 	˜CŸK™K¨›N¬G°JÄ2ÈeÔ,TÓUØ
ò	ðð	ô Ø×Ñ˜!ÓÜÐ ¤R°Ô6ØØõ	ô Ø×Ñ˜!ÓÜÐ ¤R°Ô6Øõô �C—I‘I˜a“L (°Õ>Ü�C—G‘G˜A“J ¨\Õ:Ü�C—G‘G˜A“J ¨\Õ:ØŸ™ B›Ñ€HˆhäØ”'˜+¬"°UÔ;À,õô �Hœg k´bÀÔGÕH÷o!,ñ !,ús   ÄFTÊTÊ4TÔTrˆ  r‡  c                 ó  — t        ddd¬«      \  }}t        dd| ¬«      }t        j                  d¬«      5  t	        j
                  t        d	¬
«      5  |j                  |«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nr5  rG   rh   )r4   r5   Úcentersr%   )rO   r9   ro   TrÀ  z9Allowed `init_params`.+if 'array_api_dispatch' is enabledrv   )r
   r   r·  rÆ  r|   r}   ÚNotImplementedErrorrp   )ro   rÌ  rÍ  rÎ  r<   r=   rq   s          rA   Ú<test_gaussian_mixture_raises_where_array_api_not_implementedrè  T  sŒ   € ô ØØØô�D€A€qô
 Ø¨¸Kô€Cô 
×	Ñ	°4Ô	8ñ Ü�]‰]ÜØMô
ñ 	ð �G‰G�AŒJ÷		÷ð ÷	ð 	ú÷ð ús#   ¶BÁA5Á$BÁ5A>	Á:BÂB
)ir÷   r‹  ry   rC  rU  Úior   Úunittest.mockr   Únumpyr(   r|   Úscipyr   r   r·  Úsklearn.clusterr   Úsklearn.covariancer   Úsklearn.datasetsr	   Ú#sklearn.datasets._samples_generatorr
   Úsklearn.exceptionsr   r   Úsklearn.metrics.clusterr   Úsklearn.mixturer   rÙ   r   r   r   r   r   r   r   Úsklearn.utils._array_apir   rÉ  r   r   r   Úsklearn.utils._testingr   r   r   r   r   r    Úsklearn.utils.extmathr!   rW   rc   rB   rE   rr   r‡   r‹   r–   r´   r»   rÀ   rÆ   rÍ   rÖ   rä   rê   rò   ÚmarkÚfilterwarningsÚparametrizer  r  r  r   r$  r+  r3  r9  r@  rF  rM  rP  r]  r`  re  ri  rl  ru  ry  r…  r‘  r”  r—  r¢  r¦  r«  r°  r³  r½  rä  rè  rd   rC   rA   ú<module>rú     sž  ðó Û Û 	Û 
Û Ý Ý ã Û ß ã Ý "Ý 2Ý ,Ý :ß AÝ 7Ý +÷÷ ñ õ÷ñ ÷
÷ õ .â7€ð OQÏjÉjó$÷N;
ñ ;
ò|*ò6-0ò`,ò.6Pòr'5òT5ò<Dò21ò02ò6ò*8ò`:ò:5ð< ‡�×ÑÐ9Ó:Ø‡�×ÑØòóñ3óó ;ð3ò8)ò63òr7ò<ò0 ò4
6ò+ò44ò0$ð> ‡�×ÑÐ9Ó:Ø‡�×Ñ˜ Ó+ñ@ó ,ó ;ð@ðF ‡�×ÑÐKÓLñ'ó Mð'ò,-)ò`=ò4"òD2ð@ ‡�×Ñ˜ Ó7ñKó 8ðKò06:ðr ‡�×ÑÐKÓLñ6ó Mð6ò&C"ðL ‡�×ÑØÒHóñ/óð/ð" ‡�×ÑØÒHóñ.óð.ò*,ò(AðH EGÇJÁJó ò5ð* ‡�×ÑÐ*¨OÓ<ñMó =ðMò6ò)ð> ‡�×Ñ˜¨Ð3EÐ(FÓGØ‡�×ÑÐ*Ò,QÓRØ‡�×ÑØ.Ù-Ó/óð ‡�×ÑÐ>ÀÈÀÓNñ{Ió Oó	ó Só Hð{Ið| )Ø‡�×Ñ˜¨°;Ð(?Ó@Ø‡�×ÑØ.Ù-Ó/óñó	ó Aó )ñrC   