a
    ‡ù»jnF  ã                   @   sª  d dl Z d dl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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¡Z*e %g d ¢¡Z+G d!d"„ d"ƒZ,G d#d$„ d$ƒZ-e$d%d&�G d'd(„ d(ƒƒZ.dS ))é    N)Údeepcopy)Úassert_array_equalÚassert_equalÚassert_Úsuppress_warnings)Úraises)ÚkmeansÚkmeans2Úpy_vqÚvqÚwhitenÚClusterErrorÚ
_krandinit)Ú_vq)Úarray_api_compatible)Úmatrix)ÚSCIPY_ARRAY_APIÚcopyÚcovÚxp_assert_closeÚxp_assert_equalÚskip_if_array_api(�  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Ø¿r5   gìQ¸…ë@ç
×£p=
Àg\�Âõ(\ç?r<   g=
×£p=ö?çq=
×£põ¿ç      ü?ç333333ÿ¿çÍÌÌÌÌÌô?r    ç¸…ëQ¸@r   gHáz®G@g333333Àg×£p=
×@g®Gáz®û¿g)\�Âõ(@r4   g333333ë?r:   g\�Âõ(\ß?gR¸…ëQÀg�Âõ(\� @r.   rG   g×£p=
×	ÀrH   r7   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=
×û¿r-   çHáz®GÀg¸…ëQ¸þ?çìQ¸…ëÀg
×£p=
ó?r/   gö(\�Âõð?r   g×£p=
×ã¿rK   çö(\�ÂõØ?g{®Gázü¿gÍÌÌÌÌÌ@gR¸…ëQÀg…ëQ¸…@g…ëQ¸õ¿r@   g
×£p=
Àç®Gáz@gÍÌÌÌÌÌÀr$   gÃõ(\�Âý¿gHáz®G@g®Gáz Àg®Gáz®ó¿ç¤p=
×£ü¿rS   g
×£p=
Àg¤p=
×£À¿g      Àg¸…ëQ¸@rQ   gq=
×£pù?rL   g®Gáz®@rP   ç{®Gáz„?g…ëQ¸…Û¿g¤p=
×£À?g\�Âõ(\ÀgHáz®G@g      ü¿gö(\�Âõà¿r>   r   gq=
×£pñ¿g333333Ã?gáz®Gá Àr3   ç{®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÷?rD   r#   g)\�Âõ(Àgáz®Gá@g…ëQ¸ÀgÃõ(\�Â	@ç…ëQ¸…ÿ¿rE   r=   g…ëQ¸…	@r[   g{®Gázø?rJ   r6   r4   gffffff@r   g®Gáz®@r.   rM   g�Âõ(\�Àg333333ã¿rA   gHáz®Gõ?rF   gffffffæ?gffffffú¿gR¸…ëQô?g¸…ëQ¸ö¿gq=
×£pñ?ç      Àgö(\�Âõ@r8   g{®Gáz@gÍÌÌÌÌÌÀg®Gáz®ç?gHáz®Gñ¿g¸…ëQ¸ž¿r)   r1   g333333Àr9   gq=
×£pý¿gffffffú?g
×£p=
ÀrM   r(   g×£p=
×@g333333Àg\�Âõ(\@g®Gáz®Àg×£p=
×÷?g\�Âõ(\ó¿rW   g)\�Âõ(Àg
×£p=
@gÍÌÌÌÌÌÀrZ   gffffffÀç=
×£p=@gš™™™™™Àgš™™™™™é?r0   g      @g      Àg®Gáz®@ç¤p=
×£ô¿r9   g®Gáz®Àr   gHáz®Gý¿g®Gáz®ó?g×£p=
×ó¿rB   rY   gö(\�Âõ@g®Gáz
ÀrR   g…ëQ¸…Àg®Gáz@g®GázÀgR¸…ëQ@r   g
×£p=
×?ç�Âõ(\�ö¿g{®Gáz¤?rX   ç      ð?çìQ¸…ëý¿r^   gHáz®GÀg¸…ëQ¸@rQ   g®Gázö?r   g)\�Âõ(Ì¿rb   g333333ÿ?gáz®Gáê¿r3   g…ëQ¸…Àg{®Gáz@çR¸…ëQô¿g333333@rT   ç{®Gáz
@gáz®GáÀgÍÌÌÌÌÌ@g
×£p=
÷¿r+   g)\�Âõ( Àg®Gáz®×?r_   g…ëQ¸Õ?r2   g{®Gáz@rO   rc   r\   rW   r8   g{®GázÄ¿g=
×£p=ú¿g¸…ëQ¸î¿rI   gffffffö?rV   rd   rQ   gÍÌÌÌÌÌÜ?g®Gáz®ÀrN   rC   gö(\�Âõø?r   g\�Âõ(\÷?r`   r   r!   rS   gÃõ(\�Âù¿gáz®Gá @©éÈ   é   g      @é   é   rg   é	   é   é   é   é   gÍÌÌÌÌÌ@ç      @g333333@r?   gUUUUUU@gUUUUUU@g      @g      @g      @rE   )r   rl   rg   rg   rg   rg   rl   rg   rl   rl   rl   c                   @   s<   e Zd Zdd„ Z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ãˆµøä>©Zrtol)Úasarrayr   r   )ÚselfÚxpÚdesiredÚobs© r�   úAE:\soccer\ml_env\Lib\site-packages\scipy/cluster/tests/test_vq.pyÚtest_whitenS   s    
ü
üzTestWhiten.test_whitenc                 C   s¦   |  g d¢g d¢g d¢g¡}|  g d¢g d¢g d¢g¡}tjdd��N}t d	¡ tt|ƒ|d
d� tt|ƒdƒ tt	|d j
tƒƒ W d   ƒ n1 s˜0    Y  d S )N)ç        ra   gÓüJJîî@)r„   ra   g° I �1õ?)r„   ra   gÁ¢KÍXó@)r„   ra   g¾/²�·ç?)r„   ra   gˆ@ý€êÕ?)r„   ra   gÂÀµ´øî?T)ÚrecordÚalwaysrz   r{   rl   éÿÿÿÿ)r|   ÚwarningsÚcatch_warningsÚsimplefilterr   r   r   Úlenr   Ú
issubclassÚcategoryÚRuntimeWarning)r}   r~   r   r€   Úwr�   r�   r‚   Útest_whiten_zero_stda   s    
þ
þ
zTestWhiten.test_whiten_zero_stdc              	   C   sP   |j |j|j fD ]8}| d|gddgddgddgdd	gg¡}ttt|ƒ qd S ©
Nrq   rr   rs   rt   ru   rv   rw   rx   ry   )ÚnanÚinfr|   Úassert_raisesÚ
ValueErrorr   ©r}   r~   Z	bad_valuer€   r�   r�   r‚   Útest_whiten_not_finiteq   s    
üz!TestWhiten.test_whiten_not_finiteú)`np.matrix` unsupported in array API mode©Úreasonc                 C   sN   t jt jt j fD ]6}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_matrixz   s    üz(TestWhiten.test_whiten_not_finite_matrixN)Ú__name__Ú
__module__Ú__qualname__rƒ   r�   r—   ÚpytestÚmarkÚskipifr   rœ   r�   r�   r�   r‚   rp   Q   s   	ÿrp   c                   @   sÆ   e Zd Zedd�dd„ ƒZejjedd�dd„ ƒZ	edd	gd
�dd„ ƒZ
ejjedd�dd„ ƒZedd�dd„ ƒZedd	gd
�dd„ ƒZedd	gd
�dd„ ƒZedd�dd„ ƒZedd�dd„ ƒZdS )ÚTestVqT©Z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   rl   rg   ©ZdtypeF©Z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   rl   rg   )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)Znp_onlyÚreasonsc                 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   rh   r¥   Fr¦   )	r¨   r   r   r|   r
   r›   Z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 )Nra   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 )Nrl   rg   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é   rh   rz   r{   r¥   Fr¦   )r›   ÚrandomÚrandr   r   r
   r|   r   r   rª   r½   r¾   r¼   ©r}   r~   r¨   Z	code_bookZcodes0Zdis0Zcodes1Z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é
   rk   i@B rg   rz   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dd„ Zejjejdkdd�dd„ ƒZdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Z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 S )Ni,  éd   i'  i N  r   rg   )r›   rÄ   Z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   s`   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   rl   rg   ©Úiter)	r›   rÄ   Úseedr§   r¨   r   r|   r   ÚCODET2©r}   r~   r¬   Úcode1r�   r�   r‚   Útest_kmeans_simpleû   s    "zTestKMean.test_kmeans_simpler˜   r™   c                 C   sV   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 sf0    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¶   Z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 ]X}t|tƒ||ƒdd�d }t|tƒ||ƒdd�d }t	|| t
¡ƒ t	|| t¡ƒ qNd S ©NiNa¼ r   rl   rg   rÖ   )r›   rÄ   rØ   r|   r§   r¨   r   r   r	   r   ÚCODET1rÙ   )r}   r~   r¬   Z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‚   Útest_kmeans2_simple_matrix$  s    (
z$TestKMean.test_kmeans2_simple_matrixc                 C   sZ   |  t¡}|d d …df }|d d… }t||d�}t||dd�d  t||dd�d  d S )Nr   rh   ©r~   rl   rÖ   rg   )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   rg   rl   rÖ   )r|   rá   r	   )r}   r~   r¶   rí   r�   r�   r‚   Útest_kmeans2_rank1_28  s    
zTestKMean.test_kmeans2_rank1_2c                 C   s4   |  t¡}| |d¡d d…d d …f }t|dƒ d S )N©rÃ   rÃ   rÈ   rg   )r|   rá   Úreshaper	   )r}   r~   r¶   r�   r�   r‚   Útest_kmeans2_high_dim=  s    
zTestKMean.test_kmeans2_high_dimc                 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ƒ �D}|jdd� t||d	d� t|d d …df |d	d� W d   ƒ n1 sº0    Y  d S )
Ni90  rh   Úpoints©Úminitrl   ú++z%One of the clusters is empty. Re-run.)ÚmessagerÄ   )r›   rÄ   rØ   r|   rá   r	   r   râ   )r}   r~   r¶   Úkrä   r�   r�   r‚   Útest_kmeans2_initD  s    
zTestKMean.test_kmeans2_initÚwin32zFails with MemoryError in Wine.c           	      C   s„   |  t¡}| |d¡| |d¡d d…d d …f g}tdƒ}|D ]@}tj d¡}t||||ƒ}t|j	ƒ}t|j	ƒ}t
||dd� q>d S )Nre   rñ   rÈ   g    €„.AéÒ  rU   )Zatol)r|   rá   rò   rÁ   r›   rÄ   Údefault_rngr   r   ÚTr   )	r}   r~   r¶   Zdatasrù   ÚrngÚinitZorig_covZinit_covr�   r�   r‚   Útest_krandinitU  s    

ÿ

zTestKMean.test_krandinitc                 C   s   t tt| g ¡dƒ d S )Nrg   )r”   r•   r	   r|   ©r}   r~   r�   r�   r‚   Útest_kmeans2_emptyc  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_0kg  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)rl   rg   rh   ri   rÈ   r¥   rl   g €à7yÃAC)Zthreshr   ro   g333333@r�   ©r|   r¼   r   r   )r}   r~   rÒ   Úresr�   r�   r‚   Útest_kmeans_large_thresm  s    z!TestKMean.test_kmeans_large_thresc                 C   sN   |j ddgddgg|jd�}tj d¡ t|  t¡ddd	�\}}t||ƒ d S )
NgC:úg>ÿ¿g#Ûù~j¼ì?g'1¬:	Àg-²�ï'@r¥   é*   rg   r÷   rõ   )r|   r¼   r›   rÄ   rØ   r	   rá   r   )r}   r~   Zprev_resr  r³   r�   r�   r‚   Útest_kmeans2_kpp_low_dimt  s    
ÿÿz"TestKMean.test_kmeans2_kpp_low_dimc                 C   s°   d}d}t  dt  |¡ dt  |¡ g¡}t j d¡ t  t jj|d t  |¡|d�t jj|d t  |¡|d�g¡}| |¡}t|d	d
d�\}}t	| 
|¡| 
| |¡¡ƒ d S )NrË   rÈ   rk   éûÿÿÿr  r   )Úsizerl   rg   r÷   rõ   )r›   ZvstackZonesrÄ   rØ   Zmultivariate_normalÚeyer|   r	   r   Úsign)r}   r~   Zn_dimr  Z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   rl   rl   é   r¥   r]   g®Gáz®ï?r   gš™™™™™Ù¿g       @rl   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 ]�}t|ƒ}t|ƒ}| t¡}t|d|d�\}}t|d|d�\}	}t||	|d� dD ]:}
t	|d|
|d�\}}t	|d|
|d�\}	}t||	|d� qrqd S )Nrü   rg   )rØ   rì   )rÄ   rô   r÷   )rö   rØ   )
r›   rÄ   ZRandomStaterý   r   r|   rá   r   r   r	   )r}   r~   Z	seed_listrØ   Zseed1Zseed2r¶   Zres1r³   Z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ú   ÚsysÚplatformr  r  r  r  r	  r  r  r  r�   r�   r�   r‚   rÊ   ç   s6   ÿ
ÿ
		ÿ
rÊ   )/rˆ   r  r   r   Únumpyr›   Znumpy.testingr   r   r   r   r    r   r”   Zscipy.cluster.vqr   r	   r
   r   r   r   r   Zscipy.clusterr   Zscipy.conftestr   Zscipy.sparse._sputilsr   Zscipy._lib._array_apir   r   r   r   r¡   ZusefixturesZ
pytestmarkr   Úarrayrò   rá   r¨   rç   rÙ   r©   rp   r£   rÊ   r�   r�   r�   r‚   Ú<module>   sB   $%Û)þ
þ
þ5a