o
    Ö­jJ  ã                   @   sÂ  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m	Z	m
Z
mZmZ d dl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 d d	lmZ d d
lmZ  d dl!m"Z"m#Z#m$Z$m%Z%m&Z& eej' (d¡gZ)ej'j*Z*e +g d¢¡ ,d¡Z-e +ddgddgddgddgddgddgddgddgddgddgddgg¡Z.e +ddgddgddgg¡Z/e +ddgddgd d!gg¡Z0e +g d"¢¡Z1G d#d$„ d$ƒZ2G d%d&„ d&ƒZ3e*d'd(�G d)d*„ d*ƒƒZ4dS )+é    N)Údeepcopy©ÚLock)Úassert_array_equalÚassert_equalÚassert_Úsuppress_warnings)Úraises)ÚkmeansÚkmeans2Úpy_vqÚvqÚwhitenÚClusterErrorÚ
_krandinit)Ú_vq)Úarray_api_compatible)Úmatrix)Úarray_api_extra)ÚSCIPY_ARRAY_APIÚarray_namespaceÚxp_copyÚxp_assert_closeÚxp_assert_equalÚskip_xp_backends(�  gš™™™™™Àg¸…ëQ¸ò?ç®Gázú¿ç
×£p=
û?gR¸…ëQ Àg…ëQ¸…@g¸…ëQ¸Àgffffffî?ç333333û¿g)\�Âõ(@çáz®Gáú¿çÃõ(\�Âå?g®GázÀg¸…ëQ¸
@çR¸…ëQÀgffffff@g…ëQ¸…û¿g
×£p=
ç¿ç×£p=
×ÿ¿g¸…ëQ¸@g      Àçq=
×£p@çš™™™™™ÀgHáz®G@g
×£p=
Àg333333@g…ëQ¸ù¿gìQ¸…ëý?ç\�Âõ(\ÿ¿g…ëQ¸@g®GázÀçáz®Gá@g=
×£p=Àç{®Gázô?g      Àçš™™™™™@gìQ¸…ëù¿g      ô?ç\�Âõ(\Àg\�Âõ(\	@ç¸…ëQ¸ò¿g¸…ëQ¸¾?ç=
×£p=ÀgHáz®GÑ¿ç�Âõ(\� Àgš™™™™™á¿r)   gq=
×£põ?g�Âõ(\�Àg¤p=
×£@ç…ëQ¸…Àg¸…ëQ¸Î?g\�Âõ(\û¿ç×£p=
×@gìQ¸…ëÀg)\�Âõ(@g¤p=
×£ Àç…ëQ¸…@g=
×£p=þ¿gö(\�Âõ@g¸…ëQ¸ Àg¤p=
×£Ð?gq=
×£pí¿g…ëQ¸ñ?ç      Àç)\�Âõ(ì?r/   g)\�Âõ( @g=
×£p=Àr%   ç=
×£p= Àg\�Âõ(\@g®GázÀg333333Ó?ç×£p=
×Àg�Âõ(\�Ò¿r(   g®Gáz®	@gffffffÀg®Gáz®û?g¸…ëQ¸Àg®Gázæ?çö(\�Âõü¿r-   gö(\�ÂõÀg®Gáz@gffffffÀçö(\�Âõô?g¸…ëQ¸ú¿ç¸…ëQ¸Àgáz®Gáò¿ç\�Âõ(\@ç\�Âõ(\Àg�Âõ(\�@çš™™™™™ý¿g      @r#   çÃõ(\�Âý?g)\�Âõ(Àg…ëQ¸…@g¤p=
×£Àg=
×£p=þ?çÍÌÌÌÌÌø¿g¤p=
×£ @gÃõ(\�Âõ¿gÃõ(\�Âí?ç®GázÀgìQ¸…ë@g…ëQ¸Àg\�Âõ(\@g¤p=
×£
ÀçìQ¸…ë@ç{®Gáz ÀgÍÌÌÌÌÌì¿ç¤p=
×£ÀgÍÌÌÌÌÌ
@ç¸…ëQ¸Àgffffff@çáz®GáÀgš™™™™™ý?ç
×£p=
û¿çÍÌÌÌÌÌü?g=
×£p=ö¿ç…ëQ¸å?r=   gR¸…ëQØ?ç…ëQ¸…÷¿g)\�Âõ(Ü?g¸…ëQ¸Àg)\�Âõ(@gR¸…ëQÀg…ëQ¸…@r    gìQ¸…ë@ç¤p=
×£ð¿gR¸…ëQØ¿r8   gìQ¸…ë@ç
×£p=
Àg\�Âõ(\ç?r?   g=
×£p=ö?çq=
×£põ¿ç      ü?ç333333ÿ¿çÍÌÌÌÌÌô?r#   ç¸…ëQ¸@r!   gHáz®G@g333333Àg×£p=
×@g®Gáz®û¿g)\�Âõ(@r7   g333333ë?r=   g\�Âõ(\ß?gR¸…ëQÀg�Âõ(\� @r1   rJ   g×£p=
×	ÀrK   r:   g
×£p=
÷?gìQ¸…ëé¿gš™™™™™ñ?çìQ¸…ëÀg\�Âõ(\@çq=
×£pù¿gq=
×£p@r#   g\�Âõ(\ç¿gö(\�ÂõÀçÍÌÌÌÌÌô¿r>   gš™™™™™É?g)\�Âõ(ÀgìQ¸…ë	@g®Gáz®ÿ¿gš™™™™™ù?g\�Âõ(\Àg…ëQ¸@çffffffÀç      @r/   ç\�Âõ(\û?g=
×£p=
Àg
×£p=
@ç×£p=
×û¿r0   çHáz®GÀg¸…ëQ¸þ?çìQ¸…ëÀg
×£p=
ó?r2   gö(\�Âõð?r   g×£p=
×ã¿rN   çö(\�ÂõØ?g{®Gázü¿gÍÌÌÌÌÌ@gR¸…ëQÀg…ëQ¸…@g…ëQ¸õ¿rC   g
×£p=
Àç®Gáz@gÍÌÌÌÌÌÀr'   gÃõ(\�Âý¿gHáz®G@g®Gáz Àg®Gáz®ó¿ç¤p=
×£ü¿rV   g
×£p=
Àg¤p=
×£À¿g      Àg¸…ëQ¸@rT   gq=
×£pù?rO   g®Gáz®@rS   g{®Gáz„?g…ëQ¸…Û¿g¤p=
×£À?g\�Âõ(\ÀgHáz®G@g      ü¿gö(\�Âõà¿rA   r   gq=
×£pñ¿g333333Ã?gáz®Gá Àr6   ç{®Gázø¿ç…ëQ¸…ó?çÍÌÌÌÌÌ Àg…ëQ¸…ë¿ç{®GázÀç=
×£p=@g)\�Âõ(Àg¤p=
×£
@gìQ¸…ëñ¿r%   gq=
×£pÀg
×£p=
ó¿r*   gHáz®Gé?ç�Âõ(\�ê¿g
×£p=
ï?g…ëQ¸…	Àg333333÷?rG   r&   g)\�Âõ(Àgáz®Gá@g…ëQ¸ÀgÃõ(\�Â	@ç…ëQ¸…ÿ¿rH   r@   g…ëQ¸…	@r]   g{®Gázø?rM   r9   r7   gffffff@r   g®Gáz®@r1   rP   g�Âõ(\�Àg333333ã¿rD   gHáz®Gõ?rI   gffffffæ?gffffffú¿gR¸…ëQô?g¸…ëQ¸ö¿gq=
×£pñ?ç      Àgö(\�Âõ@r;   g{®Gáz@gÍÌÌÌÌÌÀg®Gáz®ç?gHáz®Gñ¿g¸…ëQ¸ž¿r,   r4   g333333Àr<   gq=
×£pý¿gffffffú?g
×£p=
ÀrP   r+   g×£p=
×@g333333Àg\�Âõ(\@g®Gáz®Àg×£p=
×÷?g\�Âõ(\ó¿rY   g)\�Âõ(Àg
×£p=
@gÍÌÌÌÌÌÀr\   gffffffÀç=
×£p=@gš™™™™™Àgš™™™™™é?r3   g      @g      Àg®Gáz®@ç¤p=
×£ô¿r<   g®Gáz®Àr"   gHáz®Gý¿g®Gáz®ó?g×£p=
×ó¿rE   r[   gö(\�Âõ@g®Gáz
ÀrU   g…ëQ¸…Àg®Gáz@g®GázÀgR¸…ëQ@r   g
×£p=
×?ç�Âõ(\�ö¿g{®Gáz¤?rZ   ç      ð?çìQ¸…ëý¿r`   gHáz®GÀg¸…ëQ¸@rT   g®Gázö?r!   g)\�Âõ(Ì¿rd   g333333ÿ?gáz®Gáê¿r6   g…ëQ¸…Àg{®Gáz@çR¸…ëQô¿g333333@rW   ç{®Gáz
@gáz®GáÀgÍÌÌÌÌÌ@g
×£p=
÷¿r.   g)\�Âõ( Àg®Gáz®×?ra   g…ëQ¸Õ?r5   g{®Gáz@rR   re   r^   rY   r;   g{®GázÄ¿g=
×£p=ú¿g¸…ëQ¸î¿rL   gffffffö?rX   rf   rT   gÍÌÌÌÌÌÜ?g®Gáz®ÀrQ   rF   gö(\�Âõø?r   g\�Âõ(\÷?rb   r   r$   rV   gÃõ(\�Âù¿gáz®Gá @©éÈ   é   g      @é   é   ri   é	   é   é   é   é   gÍÌÌÌÌÌ@ç      @g333333@rB   gUUUUUU@gUUUUUU@g      @g      @g      @rH   )r   rn   ri   ri   ri   ri   rn   ri   rn   rn   rn   c                   @   sV   e Zd Zdd„ Zejdd„ ƒZeddd�dd	„ ƒZd
d„ Z	ej
jedd�dd„ ƒZdS )Ú
TestWhitenc                 C   sf   |  ddgddgddgddgd	d
gg¡}|  ddgddgddgddgddgg¡}tt|ƒ|dd� d S )Ng&cJ^|Y@g´`¹qÄ@g™¹Õ½—	@g}†&?˜Jæ?gU…H~«
@g¨›?gæK=EíŠ@gÞÜF Mpî?g|ÉH“@gH¦à|ú?çìcw&™ï?gb†ÆA|ê?çúÙD=¯Þã?çýâk2×È?ç'µB¿ì?çÅ)Æ;¸"~?çß|¸d=ë?çºÉûz¶õÐ?ç|æºß×Ü?çRêyÔëÝ?çñhãˆµøä>©Úrtol)Úasarrayr   r   )ÚselfÚxpÚdesiredÚobs© r„   úX/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/cluster/tests/test_vq.pyÚtest_whitenU   s   
ü
üzTestWhiten.test_whitenc                 C   ó   t ƒ S ©Nr   ©r€   r„   r„   r…   Úwhiten_lockc   ó   zTestWhiten.whiten_lockú	jax.numpyú)jax arrays do not support item assignment©Úreasonc              	   C   sÜ   |  g d¢g d¢g d¢g¡}|  g d¢g d¢g d¢g¡}|�F tjdd��'}t d	¡ tt|ƒ|d
d� tt|ƒdƒ tt	|d j
tƒƒ W d   ƒ n1 sOw   Y  W d   ƒ d S W d   ƒ d S 1 sgw   Y  d S )N)ç        rc   gÓüJJîî@)r�   rc   g° I �1õ?)r�   rc   gÁ¢KÍXó@)r�   rc   g¾/²�·ç?)r�   rc   gˆ@ý€êÕ?)r�   rc   gÂÀµ´øî?T)ÚrecordÚalwaysr|   r}   rn   éÿÿÿÿ)r   ÚwarningsÚcatch_warningsÚsimplefilterr   r   r   Úlenr   Ú
issubclassÚcategoryÚRuntimeWarning)r€   r�   rŠ   r‚   rƒ   Úwr„   r„   r…   Útest_whiten_zero_stdg   s$   
þ
þ
úÿ"ÿzTestWhiten.test_whiten_zero_stdc              	   C   sP   |j |j|j fD ]}| d|gddgddgddgdd	gg¡}ttt|ƒ q	d S ©
Nrs   rt   ru   rv   rw   rx   ry   rz   r{   )ÚnanÚinfr   Úassert_raisesÚ
ValueErrorr   ©r€   r�   Ú	bad_valuerƒ   r„   r„   r…   Útest_whiten_not_finite{   s   
üúz!TestWhiten.test_whiten_not_finiteú)`np.matrix` unsupported in array API modec                 C   sN   t jt jt j fD ]}td|gddgddgddgdd	ggƒ}ttt|ƒ q	d S r�   )Únprž   rŸ   r   r    r¡   r   r¢   r„   r„   r…   Útest_whiten_not_finite_matrix„   s   üúz(TestWhiten.test_whiten_not_finite_matrixN)Ú__name__Ú
__module__Ú__qualname__r†   ÚpytestÚfixturerŠ   r   rœ   r¤   ÚmarkÚskipifr   r§   r„   r„   r„   r…   rr   S   s    
ÿ
	ÿrr   c                   @   sÀ   e Zd Zedd�dd„ ƒZejjedd�dd„ ƒZ	edd	d
�dd„ ƒZ
ejjedd�dd„ ƒZedd�dd„ ƒZedd	d
�dd„ ƒZedd	d
�dd„ ƒZedd�dd„ ƒZedd�dd„ ƒZdS )ÚTestVqT©Úcpu_onlyc                 C   sZ   t  td gtd gtd gg¡}t| t¡| |¡ƒd }t||jt|jd�dd� d S )Nr   rn   ri   ©ÚdtypeF©Úcheck_dtype)r¦   ÚconcatenateÚXr   r   r   ÚLABEL1Úint64©r€   r�   ÚinitcÚlabel1r„   r„   r…   Ú
test_py_vq’   s
   "
ÿzTestVq.test_py_vqr¥   rŽ   c                 C   sF   t  td gtd gtd gg¡}tttƒt|ƒƒd }t|tƒ d S ©Nr   rn   ri   )r¦   r¶   r·   r   r   r   r¸   rº   r„   r„   r…   Útest_py_vq_matrixš   s   "zTestVq.test_py_vq_matrixz!`_vq` only supports NumPy backend)Únp_onlyr�   c                 C   sf   t  td gtd gtd gg¡}t | t¡| |¡¡\}}t|tƒ t| t¡| |¡ƒ\}}d S r¾   )r¦   r¶   r·   r   r   r   r   r¸   ©r€   r�   r»   r¼   Ú_r„   r„   r…   Útest_vq¢   s   "
zTestVq.test_vqc                 C   s^   t  td gtd gtd gg¡}t ttƒt|ƒ¡\}}t|tƒ tttƒt|ƒƒ\}}d S r¾   )r¦   r¶   r·   r   r   r   r   r¸   rÁ   r„   r„   r…   Útest_vq_matrix©   s   "
zTestVq.test_vq_matrixc                 C   s˜   t d d …df }|d d… }t ||¡\}}| |¡}| |¡}t|d d …tjf |d d …tjf ƒ\}}t||j||jd�dd� t|| |¡ƒ d S )Nr   rj   r²   Fr´   )	r·   r   r   r   r   r¦   Únewaxisr   r¹   )r€   r�   Údatar»   ÚaÚbÚtaÚtbr„   r„   r…   Ú
test_vq_1d±   s   

*zTestVq.test_vq_1dc                 C   s4   |j ddg|jd�}| |j¡}tttj||ƒ d S )Nrc   g       @r²   )r   Úfloat64ÚastypeÚfloat32r    Ú	TypeErrorr   r   )r€   r�   rÇ   rÈ   r„   r„   r…   Útest__vq_sametype¾   s   zTestVq.test__vq_sametypec                 C   s&   |j ddgtd�}tttj||ƒ d S )Nrn   ri   r²   )r   Úintr    rÏ   r   r   )r€   r�   rÇ   r„   r„   r…   Útest__vq_invalid_typeÄ   s   zTestVq.test__vq_invalid_typec                 C   sî   t j dd¡}t j dd¡}t ||¡\}}t| |¡| |¡ƒ\}}t|| |¡dd� t||j||j	d�dd� | 
t j¡}| 
t j¡}t ||¡\}}t| |¡| |¡ƒ\}}t||j||jd�dd� t||j||j	d�dd� d S )Né   rj   r|   r}   r²   Fr´   )r¦   ÚrandomÚrandr   r   r   r   r   r   r¹   rÍ   rÎ   rÌ   ©r€   r�   r·   Ú	code_bookÚcodes0Údis0Úcodes1Údis1r„   r„   r…   Útest_vq_large_nfeatÉ   s    ÿÿzTestVq.test_vq_large_nfeatc                 C   s€   t j dd¡d }t j dd¡d }t ||¡\}}t| |¡| |¡ƒ\}}t|| |¡dd� t||j||j	d�dd	� d S )
Né
   rm   i@B ri   r|   r}   r²   Fr´   )
r¦   rÔ   rÕ   r   r   r   r   r   r   r¹   rÖ   r„   r„   r…   Útest_vq_large_featuresá   s   ÿzTestVq.test_vq_large_featuresN)r¨   r©   rª   r   r½   r«   r­   r®   r   r¿   rÃ   rÄ   rË   rÐ   rÒ   rÜ   rÞ   r„   r„   r„   r…   r¯   �   s.    
ÿ


ÿ






r¯   Tr°   c                   @   s  e Zd Zdd„ Zdd„ Zejjedd�dd„ ƒZ	d	d
„ Z
dd„ Zejjedd�dd„ ƒZdd„ Zdd„ Zdd„ Zeddd�dd„ ƒZejdd„ ƒZejjejdkdd�dd„ ƒZdd „ Zd!d"„ Zd#d$„ Zeddd�d%d&„ ƒZejjeddd�d'd(„ ƒƒZd)d*„ Zeddd�d+d,„ ƒZd-S ).Ú	TestKMeanc           	      C   s²   d}d}t j |¡}t j |¡}dt j ||¡ d|  }dt j ||¡ d|  }t  |jd |jd  |ft j¡}||d |jd …< |||jd d …< t| |¡ddd� d S )	Ni,  éd   i'  i N  r   ri   rn   ©Úseed)r¦   rÔ   ÚrandnÚemptyÚshaperÌ   r
   r   )	r€   r�   ÚdÚnÚm1Úm2ÚxÚyrÆ   r„   r„   r…   Útest_large_featuresô   s   "zTestKMean.test_large_featuresc                 C   sb   t j d¡}t  td gtd gtd gg¡}t| t¡| |¡d|d�d }t|| t¡ƒ d S ©Ni1Ô  r   rn   ri   ©ÚiterÚrng)	r¦   rÔ   Údefault_rngr¶   r·   r
   r   r   ÚCODET2©r€   r�   rð   r»   Úcode1r„   r„   r…   Útest_kmeans_simple  s   " zTestKMean.test_kmeans_simpler¥   rŽ   c                 C   sX   t j d¡}t  td gtd gtd gg¡}tttƒt|ƒd|d�d }t|tƒ d S rí   )	r¦   rÔ   rñ   r¶   r·   r
   r   r   rò   ró   r„   r„   r…   Útest_kmeans_simple_matrix  s   "z#TestKMean.test_kmeans_simple_matrixc                 C   s†   |  t¡}|  ddgddgddgg¡}t||ƒ tƒ �}| td¡ t||dd	� W d   ƒ n1 s3w   Y  ttt||d
d	� d S )Ng5âü ý¿g´§ì!{å¿gLÜ¦^ @gÍ›ý`dò²?g€8Ýìî}Àg?�½îkª¿zKOne of the clusters is empty. Re-run kmeans with a different initializationÚwarn)ÚmissingÚraise)	r   ÚTESTDATA_2Dr
   r   ÚfilterÚUserWarningr   r    r   )r€   r�   rÆ   ÚinitkÚsupr„   r„   r…   Útest_kmeans_lost_cluster  s   

þ
ÿüz"TestKMean.test_kmeans_lost_clusterc                 C   s°   t j d¡}| t  td gtd gtd gg¡¡}tr |jgnt jtg}|D ].}t|tƒ||ƒd|d�d }t|tƒ||ƒd|d�d }t	|| t
¡ƒ t	|| t¡ƒ q'd S ©NéNa¼ r   rn   ri   rî   )r¦   rÔ   rñ   r   r¶   r·   r   r   r   r   ÚCODET1rò   )r€   r�   rð   r»   ÚarraysÚtprô   Úcode2r„   r„   r…   Útest_kmeans2_simple$  s   (ûzTestKMean.test_kmeans2_simplec                 C   s„   t j d¡}| t  td gtd gtd gg¡¡}tttƒt|ƒd|d�d }tttƒt|ƒd|d�d }t|t	ƒ t|t
ƒ d S r   )r¦   rÔ   rñ   r   r¶   r·   r   r   r   r  rò   )r€   r�   rð   r»   rô   r  r„   r„   r…   Útest_kmeans2_simple_matrix/  s   (
z$TestKMean.test_kmeans2_simple_matrixc                 C   s\   |  t¡}|d d …df }|d d… }t||d�}t||ddd�d  t||dd�d  d S )Nr   rj   ©r�   rn   )rï   râ   ri   ©rï   )r   rú   r   r   )r€   r�   rÆ   Údata1r»   Úcoder„   r„   r…   Útest_kmeans2_rank1:  s   
zTestKMean.test_kmeans2_rank1c                 C   s,   |  t¡}|d d …df }t|ddd� d S )Nr   ri   rn   r	  )r   rú   r   )r€   r�   rÆ   r
  r„   r„   r…   Útest_kmeans2_rank1_2E  s   
zTestKMean.test_kmeans2_rank1_2c                 C   s4   |  t¡}| |d¡d d…d d …f }t|dƒ d S )N©rÓ   rÓ   rÝ   ri   )r   rú   Úreshaper   )r€   r�   rÆ   r„   r„   r…   Útest_kmeans2_high_dimJ  s   
zTestKMean.test_kmeans2_high_dimrŒ   r�   c                 C   sÖ   t j d¡}| t¡}d}t||d|d� t|d d …df |d|d� t||d|d� t|d d …df |d|d� tƒ �%}|jdd� t||d	|d� t|d d …df |d	|d� W d   ƒ d S 1 sdw   Y  d S )
Nr  rj   Úpoints©Úminitrð   rn   ú++z%One of the clusters is empty. Re-run.)ÚmessagerÔ   )r¦   rÔ   rñ   r   rú   r   r   rû   )r€   r�   rð   rÆ   Úkrþ   r„   r„   r…   Útest_kmeans2_initQ  s   
"ýzTestKMean.test_kmeans2_initc                 C   r‡   rˆ   r   r‰   r„   r„   r…   Ú
krand_lockd  r‹   zTestKMean.krand_lockÚwin32zFails with MemoryError in Wine.c                 C   s¾   |  t¡}| |d¡| |d¡d d…d d …f g}tdƒ}t|ƒ}|�2 |D ]&}tj d¡}t||||ƒ}t	j
|j|d�}	t	j
|j|d�}
t|	|
dd� q&W d   ƒ d S 1 sXw   Y  d S )	Nrg   r  rÝ   g    €„.AéÒ  r  gºI+‡†?)Úatol)r   rú   r  rÑ   r   r¦   rÔ   rñ   r   ÚxpxÚcovÚTr   )r€   r�   r  rÆ   Údatasr  Úxp_testrð   ÚinitÚorig_covÚinit_covr„   r„   r…   Útest_krandinith  s   

ÿû"ÿzTestKMean.test_krandinitc                 C   s   t tt| g ¡dƒ d S )Nri   )r    r¡   r   r   ©r€   r�   r„   r„   r…   Útest_kmeans2_emptyx  s   zTestKMean.test_kmeans2_emptyc                 C   sF   t tt| t¡dƒ t tt| t¡dƒ t tt| t¡| g ¡ƒ d S )Nr   )r    r¡   r
   r   r·   r   r%  r„   r„   r…   Útest_kmeans_0k|  s   zTestKMean.test_kmeans_0kc                 C   s`   |j g d¢|jd�}t|ddd�}t|d |j dg|jd�ƒ t|d |j d|jd�d	 ƒ d S )
N)rn   ri   rj   rk   rÝ   r²   rn   g €à7yÃAC)Úthreshr   rq   g333333@r„   ©r   rÌ   r
   r   )r€   r�   rê   Úresr„   r„   r…   Útest_kmeans_large_thres‚  s   "z!TestKMean.test_kmeans_large_thresc                 C   sP   t j d¡}|jddgddgg|jd�}t| t¡dd|d	�\}}t||ƒ d S )
Nl   ÈC.�tà gC:úg>ÿ¿g#Ûù~j¼ì?g'1¬:	Àg-²�ï'@r²   ri   r  r  )r¦   rÔ   rñ   r   rÌ   r   rú   r   )r€   r�   rð   Úprev_resr*  rÂ   r„   r„   r…   Útest_kmeans2_kpp_low_dim‰  s   
ÿÿz"TestKMean.test_kmeans2_kpp_low_dimc           	      C   s®   t j d¡}d}d}t  dt  |¡ dt  |¡ g¡}t  |j|d t  |¡|d�|j|d t  |¡|d�g¡}| |¡}t|d	d
|d�\}}t	| 
|¡| 
| |¡¡ƒ d S )Nl   <DM]4žrà   rÝ   rm   éûÿÿÿr   )Úsizern   ri   r  r  )r¦   rÔ   rñ   ÚvstackÚonesÚmultivariate_normalÚeyer   r   r   Úsign)	r€   r�   rð   Ún_dimr/  ÚcentersrÆ   r*  rÂ   r„   r„   r…   Útest_kmeans2_kpp_high_dim“  s   ÿþ
 z#TestKMean.test_kmeans2_kpp_high_dimc                 C   sh   |j g d¢|jd�}t||  ddg¡ƒ}t|d |j ddg|jd�ƒ t|d |j d	|jd�d
 ƒ d S )N)éýÿÿÿr“   r   rn   rn   é   r²   r_   g®Gáz®ï?r   gš™™™™™Ù¿g       @rn   gñ?r„   r)  )r€   r�   rƒ   r*  r„   r„   r…   Útest_kmeans_diff_convergence§  s   "z&TestKMean.test_kmeans_diff_convergencec                 C   s¬   dt j d¡t j d¡g}|D ]D}t|ƒ}t|ƒ}| t¡}t|d|d�\}}t|d|d�\}	}t||	ƒ dD ]}
t	|d|
|d�\}}t	|d|
|d�\}	}t||	ƒ q7qd S )Nr  ri   rá   )rÔ   r  r  )r  râ   )
r¦   rÔ   ÚRandomStaterñ   r   r   rú   r
   r   r   )r€   r�   Ú	seed_listrâ   Úseed1Úseed2rÆ   Úres1rÂ   Úres2r  r„   r„   r…   Ú#test_kmeans_and_kmeans2_random_seed®  s   ÿ

ý÷z-TestKMean.test_kmeans_and_kmeans2_random_seedN)r¨   r©   rª   rì   rõ   r«   r­   r®   r   rö   rÿ   r  r  r  r  r  r   r  r¬   r  ÚsysÚplatformr$  r&  r'  r+  r-  Úthread_unsafer7  r:  rA  r„   r„   r„   r…   rß   ñ   sV    ÿ
ÿ
	ÿ

ÿ
ÿ
ÿÿrß   )5r”   rB  Úcopyr   Ú	threadingr   Únumpyr¦   Únumpy.testingr   r   r   r   r«   r	   r    Úscipy.cluster.vqr
   r   r   r   r   r   r   Úscipy.clusterr   Úscipy.conftestr   Úscipy.sparse._sputilsr   Ú
scipy._libr   r  Úscipy._lib._array_apir   r   r   r   r   r­   ÚusefixturesÚ
pytestmarkr   Úarrayr  rú   r·   r  rò   r¸   rr   r¯   rß   r„   r„   r„   r…   Ú<module>   sH    $%Û)þ
þ
þ=a