§
    qŠtj-À  ã                   ó”  — d Z ddlZddlZddlmZ ddlZddlZddlm	Z	 ddl
mZ ddlmZmZmZmZ ddlmZmZmZmZmZmZ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" ddl#m$Z$ ddl%m&Z& ddl'm(Z(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/ ddl0m1Z1  ej2        g d¢g d¢g d¢g¦  «        Z3dZ4e3j5        \  Z6Z7 ee4e3dd¬¦  «        \  Z8Z9d„ e.D ¦   «         Z:ej2        ge.z   Z; e<e:¦  «        dk    rg d¢nddgZ=ej>         ?                    de;e=¬¦  «        ej>         ?                    d d!d"g¦  «        ej>         ?                    d#ej@        ejA        g¦  «        d$„ ¦   «         ¦   «         ¦   «         ZBej>         ?                    de;e=¬¦  «        ej>         ?                    d d!d"g¦  «        d%„ ¦   «         ¦   «         ZCej>         ?                    de;e=¬¦  «        d&„ ¦   «         ZDej>         ?                    d'd(d)g¦  «        ej>         ?                    de;e=¬¦  «        ej>         ?                    d*g d+¢¦  «        d,„ ¦   «         ¦   «         ¦   «         ZEej>         ?                    d-d!d"g¦  «        d.„ ¦   «         ZFej>         ?                    d/e:¦  «        d0„ ¦   «         ZGd1„ ZHej>         ?                    d2e8ge:z   e=¬¦  «        ej>         ?                    d3d4d5e3 I                    ¦   «         d6„ gg d7¢¬¦  «        ej>         ?                    d8eeg¦  «        d9„ ¦   «         ¦   «         ¦   «         ZJej>         ?                    d3d4d5e3d:„ gg d7¢¬¦  «        d;„ ¦   «         ZKej>         ?                    d<d=d>d?„ d@fdAg¦  «        ej>         ?                    d8eeg¦  «        dB„ ¦   «         ¦   «         ZLej>         ?                    d8eeg¦  «        dC„ ¦   «         ZMdD„ ZNej>         ?                    d-d!d"g¦  «        ej>         ?                    d*dEdg¦  «        dF„ ¦   «         ¦   «         ZOdG„ ZPej>         ?                    d8eeg¦  «        dH„ ¦   «         ZQdI„ ZRej>         ?                    d2e8ge:z   e=¬¦  «        dJ„ ¦   «         ZSdK„ ZTdL„ ZUej>         ?                    dMdNdOg¦  «        dP„ ¦   «         ZVdQ„ ZWdR„ ZXej>         ?                    d8eeg¦  «        dS„ ¦   «         ZYej>         ?                    de;e=¬¦  «        ej>         ?                    dTed!fed"fedfg¦  «        ej>         ?                    dUddg¦  «        dV„ ¦   «         ¦   «         ¦   «         ZZej>         ?                    d/e:¦  «        ej>         ?                    d8eeg¦  «        dW„ ¦   «         ¦   «         Z[ej>         ?                    d/e:¦  «        ej>         ?                    d3d4d5e3gg dX¢¬¦  «        ej>         ?                    d8eeg¦  «        dY„ ¦   «         ¦   «         ¦   «         Z\ej>         ?                    de;e=¬¦  «        ej>         ?                    d#ej]        ej^        g¦  «        ej>         ?                    d3d5dZg¦  «        ej>         ?                    d8eeg¦  «        d[„ ¦   «         ¦   «         ¦   «         ¦   «         Z_ej>         ?                    d8eeg¦  «        d\„ ¦   «         Z`ej>         ?                    d8eeg¦  «        d]„ ¦   «         Zad^„ Zbd_„ Zcej>         ?                    d2e8ge:z   e=¬¦  «        ej>         ?                    d8eeg¦  «        ej>         d                     eed`„  e	¦   «         D ¦   «         ¦  «         da¬b¦  «        dc„ ¦   «         ¦   «         ¦   «         Zfej>         ?                    d#ej]        ej^        ej@        ejA        g¦  «        ej>         ?                    d8eeg¦  «        dd„ ¦   «         ¦   «         Zgej>         ?                    d2e8ge:z   e=¬¦  «        de„ ¦   «         Zhdf„ Zidg„ Zjdh„ Zkej>         ?                    d2e8ge:z   e=¬¦  «        ej>         ?                    d8eeg¦  «        di„ ¦   «         ¦   «         Zlej>         ?                    d2e8ge:z   e=¬¦  «        ej>         ?                    d8eeg¦  «        dj„ ¦   «         ¦   «         Zmdk„ Znej>         ?                    de;e=¬¦  «        dl„ ¦   «         Zoej>         ?                    d8eeg¦  «        dm„ ¦   «         Zpdn„ Zqej>         ?                    de;e=¬¦  «        ej>         ?                    d d!d"g¦  «        do„ ¦   «         ¦   «         Zrej>         ?                    d#ej@        ejA        g¦  «        ej>         ?                    dpdqdrg¦  «        ds„ ¦   «         ¦   «         Zsej>         ?                    d#ej@        ejA        g¦  «        dt„ ¦   «         Ztej>         ?                    duedvfedwfg¦  «        dx„ ¦   «         Zuej>         ?                    d8eeg¦  «        dy„ ¦   «         Zvej>         ?                    d8eeg¦  «        ej>         ?                    dzd{e4d|z   id}fd3e8dd…         id~fd3d„ id~fd3e8dd€…dd…f         id�fd3d‚„ id�fg¦  «        dƒ„ ¦   «         ¦   «         Zwej>         ?                    dzd„e8dd…         id…fg¦  «        d†„ ¦   «         Zxej>         ?                    d2e8ge:z   ¦  «        ej>         ?                    d#ejA        ej@        g¦  «        d‡„ ¦   «         ¦   «         Zyej>         ?                    d„ e,e8dq¬ˆ¦  «        dg¦  «        d‰„ ¦   «         ZzdŠ„ Z{d‹„ Z|ej>         ?                    dŒd3 ej}        d5¦  «        iddgd|d|ggd|d�œf¦  «        dŽ„ ¦   «         Z~ej>         ?                    d�ed�fed�fed‘fg¦  «        d’„ ¦   «         Zej>         ?                    d“e.dgz   ¦  «        d”„ ¦   «         Z€ej>         ?                    d3d5d4g¦  «        d•„ ¦   «         Z�ej>         ?                    d3d5d4g¦  «        d–„ ¦   «         Z‚ej>         ?                    de;e=¬¦  «        ej>         ?                    d-d!d"g¦  «        d—„ ¦   «         ¦   «         ZƒdS )˜zTesting for K-meansé    N)ÚStringIO)Úthreadpool_info)Úclone)ÚKMeansÚMiniBatchKMeansÚk_meansÚkmeans_plusplus)Ú_euclidean_dense_dense_wrapperÚ_euclidean_sparse_dense_wrapperÚ_inertia_denseÚ_inertia_sparseÚ_is_same_clusteringÚ_relocate_empty_clusters_denseÚ_relocate_empty_clusters_sparse)Ú_labels_inertiaÚ_mini_batch_step)Ú
make_blobs)ÚConvergenceWarning)Úpairwise_distancesÚpairwise_distances_argmin)Úv_measure_score)Úeuclidean_distances)Úassert_allcloseÚassert_array_equalÚcreate_memmap_backed_data)Ú	row_norms)ÚCSR_CONTAINERSÚ_sparse_random_array)Ú_get_threadpool_controller)ç        ç      @r    r    r    )ç      ð?r"   g      @r    r    )r"   r    r    r!   r"   éd   r"   é*   )Ú	n_samplesÚcentersÚcluster_stdÚrandom_statec                 ó.   — g | ]} |t           ¦  «        ‘ŒS © )ÚX)Ú.0Ú	containers     ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/cluster/tests/test_k_means.pyú
<listcomp>r/   2   s    € Ð=Ð=Ð= �	�	�!‘”Ð=Ð=Ð=ó    é   )ÚdenseÚsparse_matrixÚsparse_arrayr2   r3   Úarray_constr)ÚidsÚalgoÚlloydÚelkanÚdtypec                 ó¬  —  | ddgddgddgddgg|¬¦  «        }g d¢}t          j        ddgddgg|¬¦  «        }g d¢}d}t          j        ddgd	dgg|¬¦  «        }d
}	t          d
d||¬¦  «        }
|
                     ||¬¦  «         t	          |
j        |¦  «         t          |
j        |¦  «         t          |
j        |¦  «         |
j	        |	k    sJ ‚d S )Nr   ç      à?é   ©r:   )é   r=   r=   r?   ©r   r   r=   r=   g      Ø?g      À?g      ì?r1   ©Ú
n_clustersÚn_initÚinitÚ	algorithm©Úsample_weight)
ÚnpÚarrayr   Úfitr   Úlabels_r   Úinertia_Úcluster_centers_Ún_iter_)r5   r7   r:   r+   rG   Úinit_centersÚexpected_labelsÚexpected_inertiaÚexpected_centersÚexpected_n_iterÚkmeanss              r.   Útest_kmeans_resultsrU   ;   s  € ð 	ˆ�q˜!�f˜s A˜h¨¨a¨°1°a°&Ð9ÀÐGÑGÔG€AØ �L�L€MÝ”8˜a ˜V a¨ VÐ,°EÐ:Ñ:Ô:€Là"�l�l€OØÐÝ”x %¨ ¨e°Q¨ZÐ 8ÀÐFÑFÔFÐØ€Oå˜q¨°ÈÐNÑNÔN€FØ
‡J‚Jˆq €JÑ.Ô.Ð.å�v”~ Ñ7Ô7Ð7Ý�F”OÐ%5Ñ6Ô6Ð6Ý�FÔ+Ð-=Ñ>Ô>Ð>ØŒ>˜_Ò,Ð,Ð,Ð,Ð,Ð,r0   c                 ó   —  | ddgddgddgddgg¦  «        }t          j        ddgddgg¦  «        }t          dd||¬¦  «        }|                     |¦  «         d}d}t	          |j        |¦  «         |j        |k    sJ ‚	 g d¢}ddgd	dgg}t          |j        |¦  «         t	          |j	        |¦  «         d S # t          $ r: g d
¢}d	dgddgg}t          |j        |¦  «         t	          |j	        |¦  «         Y d S w xY w)Nr   r<   r=   r?   r1   rA   g      Ð?r@   g      è?)r=   r=   r   r   r"   r    )rH   rI   r   rJ   r   rL   rN   r   rK   rM   ÚAssertionError)	r5   r7   r+   rO   rT   rS   rQ   rP   rR   s	            r.   Útest_kmeans_relocated_clustersrX   S   sX  € ð 	ˆ�q˜!�f˜s A˜h¨¨a¨°1°a°&Ð9Ñ:Ô:€Aõ ”8˜c 3˜Z¨!¨Q¨Ð0Ñ1Ô1€Lå˜q¨°ÈÐNÑNÔN€FØ
‡J‚Jˆq�M„M€Mà€OØÐÝ�F”OÐ%5Ñ6Ô6Ð6ØŒ>˜_Ò,Ð,Ð,Ð,ð	CØ&˜,˜,ˆØ! 1˜I¨¨a yÐ1ÐÝ˜6œ>¨?Ñ;Ô;Ð;Ý˜Ô/Ð1AÑBÔBÐBÐBÐBøÝð Cð Cð CØ&˜,˜,ˆØ! 3˜K¨$°¨Ð5ÐÝ˜6œ>¨?Ñ;Ô;Ð;Ý˜Ô/Ð1AÑBÔBÐBÐBÐBÐBð	Cøøøs   Â6B9 Â9A C=Ã<C=c           
      óŒ  — t          j        g d¢¦  «                             dd¦  «        } | |¦  «        }t          j        d¦  «        }t          j        g d¢¦  «                             dd¦  «        }t          j        g d¢¦  «                             dd¦  «        }t          j        g d¢¦  «        }t          j        dt           j        ¬¦  «        }| t           j        u rt          ||||||¦  «         n%t          |j        |j	        |j
        |||||¦  «         t          |g d	¢¦  «         t          |d
gdgdgg¦  «         d S )N)
ç      $Àg      #Ài÷ÿÿÿg      !Àiøÿÿÿéÿÿÿÿr=   é	   ç      #@é
   r[   r=   r^   )rZ   éöÿÿÿr_   )g     €0Àr_   r_   )g      $@r   r   r>   )é   r=   r=   iÜÿÿÿr]   )rH   rI   ÚreshapeÚonesÚzerosÚint32r   r   ÚdataÚindicesÚindptrr   r   )r5   r+   rG   Úcenters_oldÚcenters_newÚweight_in_clustersÚlabelss          r.   Útest_relocate_empty_clustersrl   r   s\  € õ
 	ŒÐ?Ð?Ð?Ñ@Ô@×HÒHÈÈQÑOÔO€AØˆ�Q‰Œ€AÝ”G˜B‘K”K€Mõ ”(Ð,Ð,Ð,Ñ-Ô-×5Ò5°b¸!Ñ<Ô<€Kõ
 ”(Ð,Ð,Ð,Ñ-Ô-×5Ò5°b¸!Ñ<Ô<€KÝœ , , ,Ñ/Ô/ÐÝŒX�b¥¤Ð)Ñ)Ô)€Fà•r”xÐÐÝ&Øˆ}˜k¨;Ð8JÈFñ	
ô 	
ð 	
ð 	
õ 	(ØŒFØŒIØŒHØØØØØñ		
ô 		
ð 		
õ Ð)¨9¨9¨9Ñ5Ô5Ð5Ý�K 3 %¨"¨°¨uÐ!5Ñ6Ô6Ð6Ð6Ð6r0   ÚdistributionÚnormalÚblobsÚtol)ç{®Gáz„?g:Œ0âŽyE>g0Žä.ÿ++r   c                 óF  — t           j                             |¦  «        }| dk    r|                     d¬¦  «        }nt	          |¬¦  «        \  }}d||dk     <    ||¦  «        }t          d|d|¬¦  «        }t          d	d|d|¬
¦  «        }|                     |¦  «         |                     |¦  «         t          |j        |j        ¦  «         t          |j
        |j
        ¦  «         |j        |j        k    sJ ‚|j        t          j        |j        d¬¦  «        k    sJ ‚d S )Nrn   ©iˆ  r^   ©Úsize©r(   r   é   r=   )rB   r(   rC   rp   r9   )rE   rB   r(   rC   rp   ç�íµ ÷Æ°>)Úrel)rH   ÚrandomÚRandomStatern   r   r   rJ   r   rM   r   rK   rN   rL   ÚpytestÚapprox)	rm   r5   rp   Úglobal_random_seedÚrndr+   Ú_Úkm_lloydÚkm_elkans	            r.   Útest_kmeans_elkan_resultsrƒ   œ   s2  € õ
 Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ�xÒÐØ�JŠJ˜JˆJÑ'Ô'ˆˆå sÐ+Ñ+Ô+‰ˆˆ1Ø€A€aˆ!‚e�HØˆ�Q‰Œ€Aå Ð1CÈAÐSVÐWÑWÔW€HÝØØØ'ØØðñ ô €Hð ‡L‚L��O„O€OØ‡L‚L��O„O€OÝ�HÔ-¨xÔ/HÑIÔIÐIÝ�xÔ'¨Ô)9Ñ:Ô:Ð:ØÔ˜xÔ/Ò/Ð/Ð/Ð/ØÔ¥¤¨hÔ.?ÀTÐ JÑ JÔ JÒJÐJÐJÐJÐJÐJr0   rE   c                 óÞ   — t           j                             |¦  «        }|                     d¬¦  «        }d}t	          | d|dd|¬¦  «                             |¦  «        }|j        |k     sJ ‚d S )Nrs   rt   i,  rw   r=   r   )rE   rB   r(   rC   rp   Úmax_iter)rH   rz   r{   rn   r   rJ   rN   )rE   r~   r   r+   r…   Úkms         r.   Útest_kmeans_convergencer‡   º   sƒ   € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ�
Š
˜
ˆ
Ñ#Ô#€AØ€Hå	ØØØ'ØØØð
ñ 
ô 
÷ 
‚cˆ!�f„fð ð Œ:˜Ò Ð Ð Ð Ð Ð r0   ÚX_csrc           
      óZ  — t           j                             |¦  «        }t          |                     t          j        ¬¦  «        z   }|                     ¦   «         }t          j        |¦  «        }t          j        |¦  «        }t          j        |j        d         t          j
        ¬¦  «        }t          j        |j        d         t          j
        ¬¦  «        }t          j        t          j        d         t          j
        ¬¦  «        }	t          d d…         }
| d d…         }|	d d…         }t          |
||||t           j                             |¦  «        d¬¦  «        }|dk    sJ ‚t          |
||¦  «        \  }}|dk    sJ ‚||k     sJ ‚t          |||||t           j                             |¦  «        d¬¦  «        }|dk    sJ ‚t          |||¦  «        \  }}|dk    sJ ‚||k     sJ ‚t          ||¦  «         t          ||¦  «         t          ||¦  «         t          ||¦  «         d S )Nrt   r   r>   r^   F)Úrandom_reassignr    )rH   rz   r{   r&   rn   ÚshapeÚcopyÚ
zeros_likerc   r+   r:   rb   r   r   r   r   )rˆ   r~   Úrngrh   Úcenters_old_csrri   Úcenters_new_csrÚweight_sumsÚweight_sums_csrrG   ÚX_mbÚX_mb_csrÚsample_weight_mbÚold_inertiark   Únew_inertiaÚold_inertia_csrÚ
labels_csrÚnew_inertia_csrs                      r.   Ú!test_minibatch_update_consistencyr›   Í   sI  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€Cå˜CŸJšJ­G¬M˜JÑ:Ô:Ñ:€KØ!×&Ò&Ñ(Ô(€Oå”- Ñ,Ô,€KÝ”m OÑ4Ô4€Oå”(˜;Ô,¨QÔ/µq´wÐ?Ñ?Ô?€KÝ”h˜{Ô0°Ô3½1¼7ÐCÑCÔC€Oå”G�AœG AœJ­a¬gÐ6Ñ6Ô6€Mõ ˆSˆbˆSŒ6€DØ�S�b�SŒz€HØ$ S b SÔ)Ðõ #ØØØØØÝ
Œ	×ÒÐ0Ñ1Ô1Øðñ ô €Kð ˜ÒÐÐÐõ *¨$Ð0@À+ÑNÔNÑ€FˆKØ˜ÒÐÐÐØ˜Ò$Ð$Ð$Ð$õ 'ØØØØØÝ
Œ	×ÒÐ0Ñ1Ô1Øðñ ô €Oð ˜SÒ Ð Ð Ð õ #2ØÐ" Oñ#ô #Ñ€J�ð ˜SÒ Ð Ð Ð Ø˜_Ò,Ð,Ð,Ð,õ �v˜zÑ*Ô*Ð*Ý�K Ñ1Ô1Ð1Ý�K Ñ1Ô1Ð1Ý�K Ñ1Ô1Ð1Ð1Ð1r0   c                 ó  — | j         }|j        t          t          fk    sJ ‚| j        }t          j        |¦  «        j        d         t          k    sJ ‚t          t          t          |¦  «        d¦  «         | j
        dk    sJ ‚d S )Nr   r"   r    )rM   r‹   rB   Ú
n_featuresrK   rH   Úuniquer   r   Útrue_labelsrL   )r†   r&   rk   s      r.   Ú_check_fitted_modelr      sƒ   € ð Ô!€GØŒ=�Z­Ð4Ò4Ð4Ð4Ð4àŒZ€FÝŒ9�VÑÔÔ" 1Ô%­Ò3Ð3Ð3Ð3õ •O¥K°Ñ8Ô8¸#Ñ>Ô>Ð>ØŒ;˜ÒÐÐÐÐÐr0   Ú
input_datarD   rz   ú	k-means++c                 ó4   — t                                ¦   «         S ©N©r&   rŒ   ©r+   Úkr(   s      r.   ú<lambda>r¨   "  s   € ÅwÇ|Â|Á~Ä~€ r0   )rz   r¢   ÚndarrayÚcallableÚ	Estimatorc                 ó¤   — t          |t          ¦  «        rdnd} | |t          d|¬¦  «                             |¦  «        }t	          |¦  «         d S )Nr^   r=   r$   ©rD   rB   r(   rC   )Ú
isinstanceÚstrrB   rJ   r    )r«   r¡   rD   rC   r†   s        r.   Útest_all_initr°     s_   € õ ˜d¥CÑ(Ô(Ð/ˆRˆR¨a€FØ	ˆØ�j°rÀ&ð
ñ 
ô 
ç	‚cˆ*�o„oð õ ˜ÑÔÐÐÐr0   c                 ó4   — t                                ¦   «         S r¤   r¥   r¦   s      r.   r¨   r¨   1  s   € ÅÇÂÁÄ€ r0   c                 ó&  — t          | d¦  «        r|                      ¦   «         } t          | t          ¦  «        rdnd}t	          | t
          d|¬¦  «        }t          d¦  «        D ]}|                     t          ¦  «         Œt          |¦  «         d S )NrŒ   r^   r=   r   r­   r#   )
ÚhasattrrŒ   r®   r¯   r   rB   ÚrangeÚpartial_fitr+   r    )rD   rC   r†   Úis       r.   Ú&test_minibatch_kmeans_partial_fit_initr·   /  sš   € õ ˆt�VÑÔð à�yŠy‰{Œ{ˆõ ˜d¥CÑ(Ô(Ð/ˆRˆR¨a€FÝ	Ø�j°qÀð
ñ 
ô 
€Bõ �3‰ZŒZð ð ˆà
�Š•qÑÔÐÐÝ˜ÑÔÐÐÐr0   zinit, expected_n_init)r¢   r=   )rz   Údefaultc                 óH   — |                      || j        d         f¬¦  «        S )Nr=   rt   )Úuniformr‹   )r+   rB   r(   s      r.   r¨   r¨   J  s*   € °×0DÒ0DØ  !¤'¨!¤*Ð-ð 1Eñ 1ô 1€ r0   r¸   )ú
array-liker=   c                 ó   — d\  }}}t           j                             ||¦  «        }|dk    r t           j                             ||¦  «        }|dk    r| t          u rdnd} | ||d¬¦  «                             |¦  «        }|j        |k    sJ ‚dS )	z¬Check that `n_init="auto"` chooses the right number of initializations.
    Non-regression test for #26657:
    https://github.com/scikit-learn/scikit-learn/pull/26657
    )r#   r^   rw   r»   r¸   r?   r^   Úauto©rB   rD   rC   N)rH   rz   Úrandnr   rJ   Ú_n_init)r«   rD   Úexpected_n_initÚn_sampler�   rB   r+   rT   s           r.   Ú,test_kmeans_init_auto_with_initial_centroidsrÃ   D  s    € ð( (2Ñ$€Hˆj˜*Ý
Œ	�Š˜ *Ñ-Ô-€AØˆ|ÒÐÝŒy�Š˜z¨:Ñ6Ô6ˆØ˜)Ò#Ð#Ø(­OÐ;Ð;˜!˜!ÀˆàˆY *°4ÀÐGÑGÔG×KÒKÈAÑNÔN€FØŒ>˜_Ò,Ð,Ð,Ð,Ð,Ð,r0   c                 ó‚  — t          j        t          ¦  «        }t          j        t          ¦  «        } | t          t          d|¬¦  «                             t          ¦  «        } | t          |d|¬¦  «                             |¦  «        }t          |j        |j        ¦  «         t          |j	        |j	        ¦  «         d S )Nr=   ©rB   rD   rC   r(   )
rH   Úasfortranarrayr+   r&   rB   rJ   r   rM   r   rK   )r«   r~   Ú	X_fortranÚcenters_fortranÚkm_cÚkm_fs         r.   Útest_fortran_aligned_datarË   c  s¸   € õ Ô!¥!Ñ$Ô$€IÝÔ'­Ñ0Ô0€Oàˆ9Ý¥G°AÐDVðñ ô ç	‚c�!�f„fð 	ð ˆ9ÝØØØ'ð	ñ ô ÷
 
‚cˆ)�n„nð 	õ �DÔ)¨4Ô+@ÑAÔAÐAÝ�t”| T¤\Ñ2Ô2Ð2Ð2Ð2r0   c                  óì   — t          t          dd¬¦  «        } t          j        }t	          ¦   «         t          _        	 |                      t          ¦  «         |t          _        d S # |t          _        w xY w)Nr$   r=   )rB   r(   Úverbose)r   rB   ÚsysÚstdoutr   rJ   r+   )r†   Ú
old_stdouts     r.   Útest_minibatch_kmeans_verboserÑ   v  sZ   € å	¥J¸RÈÐ	KÑ	KÔ	K€BÝ”€JÝ‘”…C„Jð Ø
�Š�q‰	Œ	ˆ	à�Œ
ˆ
ˆ
ø�Z�Œ
ÐÐÐÐs   ½A% Á%A3rq   c           	      óà  — t           j                             d¦  «                             d¬¦  «        }t	          | t
          ddd|d¬¦  «                             |¦  «         |                     ¦   «         }t          j	        d|j
        ¦  «        sJ ‚t          j	        d	|j
        ¦  «        sJ ‚|dk    rt          j	        d
|j
        ¦  «        sJ ‚d S t          j	        d|j
        ¦  «        sJ ‚d S )Nr   rs   rt   r$   rz   r=   )rE   rB   r(   rD   rC   rp   rÍ   zInitialization completezIteration [0-9]+, inertiazstrict convergencez center shift .* within tolerance)rH   rz   r{   rn   r   rB   rJ   Ú
readouterrÚreÚsearchÚout)rE   rp   Úcapsysr+   Úcaptureds        r.   Útest_kmeans_verboserÙ   �  sò   € õ 	Œ	×Ò˜aÑ Ô ×'Ò'¨ZÐ'Ñ8Ô8€Aå
ØÝØØØØØðñ ô ÷ 
‚cˆ!�f„f€fà× Ò Ñ"Ô"€HåŒ9Ð/°´Ñ>Ô>Ð>Ð>Ð>ÝŒ9Ð1°8´<Ñ@Ô@Ð@Ð@Ð@à
ˆa‚x€xÝŒyÐ.°´Ñ=Ô=Ð=Ð=Ð=Ð=Ð=åŒyÐ<¸h¼lÑKÔKÐKÐKÐKÐKÐKr0   c                  óÀ   — t          j        t          d¬¦  «        5  t          dd¬¦  «                             t
          ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz,init_size.* should be larger than n_clusters©Úmatchr^   é   )Ú	init_sizerB   )r|   ÚwarnsÚRuntimeWarningr   rJ   r+   r*   r0   r.   Ú'test_minibatch_kmeans_warning_init_sizerá   œ  s¦   € å	ŒÝÐMð
ñ 
ô 
ð <ð <õ 	 "°Ð4Ñ4Ô4×8Ò8½Ñ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <ó   œ*AÁAÁAc                 óÎ   — t          j        t          d¬¦  «        5   | t          t          d¬¦  «                             t          ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NzAExplicit initial center position passed: performing only one initrÛ   r^   ©rD   rB   rC   )r|   rß   rà   r&   rB   rJ   r+   )r«   s    r.   Ú'test_warning_n_init_precomputed_centersrå   ¤  sÀ   € õ 
ŒÝØQð
ñ 
ô 
ð Ið Ið 	ˆ	•w­:¸bÐAÑAÔA×EÒEÅaÑHÔHÐHð	Ið Ið Iñ Iô Ið Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Ið Ið Is   œ1AÁAÁ!Ac                 óØ  — t          dd| ¬¦  «        \  }}d|d d d…d d …f<   t          dd| d¬	¦  «                             |¦  «        }|j                             d
¬¦  «                             ¦   «         }|dk    sJ d|›d�¦   «         ‚t          dd| d¬	¦  «                             |¦  «        }|j                             d
¬¦  «                             ¦   «         }|dk    sJ d|›d�¦   «         ‚t          d| d¬¦  «        }t          d¦  «        D ]}|                     |¦  «         Œ|j                             d
¬¦  «                             ¦   «         }|dk    sJ d|›d�¦   «         ‚d S )Nr#   rw   )r%   r&   r(   r   r1   rÝ   r^   rz   )rB   Ú
batch_sizer(   rD   r=   ©Úaxisr\   znum_non_zero_clusters=z is too smalléÈ   )rB   r(   rD   )r   r   rJ   rM   ÚanyÚsumr´   rµ   )r~   Úzeroed_XrŸ   r†   Únum_non_zero_clustersr¶   s         r.   Ú test_minibatch_sensible_reassignrï   ¯  sÈ  € õ 'Ø˜qÐ/Aðñ ô Ñ€Hˆkð €HˆSˆSˆqˆS�!�!�!ˆVÑå	Ø "Ð3EÈHð
ñ 
ô 
ç	‚cˆ(�m„mð ð Ô/×3Ò3¸Ð3Ñ;Ô;×?Ò?ÑAÔAÐØ  1Ò$Ð$Ð$Ð&NÐ)>Ð&NÐ&NÐ&NÑ$Ô$Ð$õ 
Ø #Ð4FÈXð
ñ 
ô 
ç	‚cˆ(�m„mð ð Ô/×3Ò3¸Ð3Ñ;Ô;×?Ò?ÑAÔAÐØ  1Ò$Ð$Ð$Ð&NÐ)>Ð&NÐ&NÐ&NÑ$Ô$Ð$õ 
 BÐ5GÈhÐ	WÑ	WÔ	W€BÝ�3‰ZŒZð !ð !ˆØ
�Š�xÑ Ô Ð Ð àÔ/×3Ò3¸Ð3Ñ;Ô;×?Ò?ÑAÔAÐØ  1Ò$Ð$Ð$Ð&NÐ)>Ð&NÐ&NÐ&NÑ$Ô$Ð$Ð$Ð$r0   c           
      óè  — t          j        t          t          f¦  «        }t	          t          ¦  «        D ]/}t
          t          |k                                  d¬¦  «        ||<   Œ0t          j        t          ¦  «        }t          j
        |¦  «        }t          | ||d¦  «        d          }t          | |||t          j        t          ¦  «        t           j                             |¦  «        dd¬¦  «         t          | ||d¦  «        d          }||k    sJ ‚t          | |||t          j        t          ¦  «        t           j                             |¦  «        dd¬¦  «         t!          ||¦  «         d S )Nr   rè   r=   T)rŠ   Úreassignment_ratiogVçž¯Ò<)rH   ÚemptyrB   r�   r´   r+   rŸ   Úmeanrb   r%   Ú
empty_liker   r   rc   rz   r{   r   )r¡   r~   Úperfect_centersr¶   rG   ri   Úscore_beforeÚscore_afters           r.   Útest_minibatch_reassignrø   Ð  sp  € õ ”h¥
­JÐ7Ñ8Ô8€OÝ•:ÑÔð >ð >ˆÝ�{¨aÒ/Ô0×5Ò5¸1Ð5Ñ=Ô=ˆ˜ÑÐå”G�IÑ&Ô&€MÝ”- Ñ0Ô0€Kõ
 $ J°¸ÐPQÑRÔRÐSTÔUÐU€LåØØØØÝ
Œ•ÑÔÝ
Œ	×ÒÐ0Ñ1Ô1ØØð	ñ 	ô 	ð 	õ # :¨}¸kÈ1ÑMÔMÈaÔPÐP€Kà˜+Ò%Ð%Ð%Ð%õ ØØØØÝ
Œ•ÑÔÝ
Œ	×ÒÐ0Ñ1Ô1ØØ ð	ñ 	ô 	ð 	õ �K Ñ1Ô1Ð1Ð1Ð1r0   c                  óh   — t          ddt          dd¬¦  «                             t          ¦  «         d S )Nr#   r^   r$   T)rB   rç   rÞ   r(   rÍ   )r   r%   rJ   r+   r*   r0   r.   Ú&test_minibatch_with_many_reassignmentsrú     s8   € õ
 ØØÝØØðñ ô ÷ 
‚c�!�f„f€f€f€fr0   c                  ól  — t          ddd¬¦  «                             t          ¦  «        } | j        dk    sJ ‚t          ddd¬¦  «                             t          ¦  «        } | j        dk    sJ ‚t          dddt          dz   ¬¦  «                             t          ¦  «        } | j        t          k    sJ ‚d S )Nr^   rw   r=   )rB   rç   rC   é   é   )rB   rç   rC   rÞ   )r   rJ   r+   Ú
_init_sizer%   ©r†   s    r.   Útest_minibatch_kmeans_init_sizer     s¼   € õ 
 B°1¸QÐ	?Ñ	?Ô	?×	CÒ	CÅAÑ	FÔ	F€BØŒ=˜BÒÐÐÐõ 
 B°1¸QÐ	?Ñ	?Ô	?×	CÒ	CÅAÑ	FÔ	F€BØŒ=˜BÒÐÐÐõ 
Ø !¨A½ÀQ¹ð
ñ 
ô 
ç	‚c�!�f„fð ð Œ=�IÒ%Ð%Ð%Ð%Ð%Ð%r0   ztol, max_no_improvement)ç-Cëâ6?N)r   r^   c                 ó   — t          ddd¬¦  «        \  }}}t          d|d|dddd|¬¦	  «	        }|                     |¦  «         d|j        cxk     rdk     sn J ‚|                      ¦   «         }|€d	|j        v sJ ‚|dk    rd
|j        v sJ ‚d S d S )Nr?   r   T)r&   r(   Úreturn_centersrÝ   r^   r=   )	rB   rD   rç   rp   r(   r…   rC   rÍ   Úmax_no_improvementz Converged (small centers change)z*Converged (lack of improvement in inertia))r   r   rJ   rN   rÓ   rÖ   )r×   rp   r  r+   r€   r&   r†   rØ   s           r.   Ú#test_minibatch_declared_convergencer  #  sØ   € õ  q°qÈÐNÑNÔN�M€A€qˆ'å	ØØØØØØØØØ-ð

ñ 

ô 

€Bð ‡F‚Fˆ1�I„I€IØˆrŒzÐÐÒÐ˜BÒÐÐÐÐÐà× Ò Ñ"Ô"€HØÐ!Ø1°X´\ÐAÐAÐAÐAØ
ˆa‚x€xØ;¸x¼|ÐKÐKÐKÐKð €xØKÐKr0   c                  óà  — d} t           j        d         }t          d| d¬¦  «                             t           ¦  «        }|j        t          j        |j        | z  |z  ¦  «        k    sJ ‚t          |j        t          ¦  «        sJ ‚t          d| ddd d¬¦  «                             t           ¦  «        }|j        dk    sJ ‚|j        d|z  | z  k    sJ ‚t          |j        t          ¦  «        sJ ‚d S )Nrý   r   r?   )rB   rç   r(   r^   )rB   rç   r(   rp   r  r…   )
r+   r‹   r   rJ   rN   rH   ÚceilÚn_steps_r®   Úint)rç   r%   r†   s      r.   Útest_minibatch_iter_stepsr
  ?  sÿ   € à€JÝ”˜”
€IÝ	 A°*È1Ð	MÑ	MÔ	M×	QÒ	QÕRSÑ	TÔ	T€Bð Œ:�œ "¤+°
Ñ":¸iÑ!GÑHÔHÒHÐHÐHÐHÝ�b”j¥#Ñ&Ô&Ð&Ð&Ð&õ 
ØØØØØØð
ñ 
ô 
÷ 
‚c�!�f„fð ð Œ:˜ÒÐÐÐØŒ;˜2 	™>¨jÑ8Ò8Ð8Ð8Ð8Ý�b”k¥3Ñ'Ô'Ð'Ð'Ð'Ð'Ð'r0   c                  óØ   — t                                ¦   «         } t          dt          d¬¦  «        }|                     | ¦  «         t          |¦  «         t          | t           ¦  «         d S )NFr$   )Úcopy_xrB   r(   )r+   rŒ   r   rB   rJ   r    r   )Úmy_Xr†   s     r.   Útest_kmeans_copyxr  X  sX   € å�6Š6‰8Œ8€DÝ	�u­À"Ð	EÑ	EÔ	E€BØ‡F‚Fˆ4�L„L€LÝ˜ÑÔÐõ �D�!ÑÔÐÐÐr0   c                 óT  — t           j                             |¦  «                             dd¦  «        } | d|d¬¦  «        }|                     |¦  «                             |¦  «        } | d|d¬¦  «        }|                     |¦  «                             |¦  «        }||k    sJ ‚d S )Nr#   r^   r=   )rC   r(   r…   )rH   rz   r{   r¿   rJ   Úscore)r«   r~   r+   Úkm1Ús1Úkm2Ús2s          r.   Útest_score_max_iterr  c  s£   € õ 	Œ	×ÒÐ0Ñ1Ô1×7Ò7¸¸RÑ@Ô@€Aà
ˆ)˜1Ð+=ÈÐ
JÑ
JÔ
J€CØ	�Š�‰Œ×	Ò	˜!Ñ	Ô	€BØ
ˆ)˜1Ð+=ÈÐ
KÑ
KÔ
K€CØ	�Š�‰Œ×	Ò	˜!Ñ	Ô	€BØ�Š7ˆ7ˆ7ˆ7ˆ7ˆ7r0   zEstimator, algorithmr…   c                 óà  — t          ddd|¬¦  «        \  }} |||¬¦  «        } | ddd||¬¦  «        }|�|                     |¬¦  «         |                     |¦  «         |j        }	|                     |¦  «        }
t          |
|	¦  «         |                     |¦  «        }
t          |
|	¦  «         |                     |j        ¦  «        }
t          |
t          j	        d¦  «        ¦  «         d S )Nrê   r^   ©r%   r�   r&   r(   r>   rz   )rB   rD   rC   r…   r(   )rE   )
r   Ú
set_paramsrJ   rK   Úpredictr   Úfit_predictrM   rH   Úarange)r«   rE   r5   r…   Úglobal_dtyper~   r+   r€   r†   rk   Úpreds              r.   Útest_kmeans_predictr  p  s  € õ Ø "¨bÐ?Qðñ ô �D€A€qð 	ˆ�Q˜lÐ+Ñ+Ô+€Aà	ˆØØØØØ'ð
ñ 
ô 
€Bð ÐØ
�Š 	ˆÑ*Ô*Ð*Ø‡F‚Fˆ1�I„I€IØŒZ€Fð �:Š:�a‰=Œ=€DÝ�t˜VÑ$Ô$Ð$ð �>Š>˜!ÑÔ€DÝ�t˜VÑ$Ô$Ð$ð �:Š:�bÔ)Ñ*Ô*€DÝ�t�RœY r™]œ]Ñ+Ô+Ð+Ð+Ð+r0   c                 ó�  — t           j                             |¦  «                             t          f¦  «        } | t
          |d¬¦  «        }|                     t          |¬¦  «          | t
          |d¬¦  «        }|                     ||¬¦  «         t          |j	        |j	        ¦  «         t          |j        |j        ¦  «         d S ©Nr=   ©rB   r(   rC   rF   )rH   rz   r{   Úrandom_sampler%   rB   rJ   r+   r   rK   r   rM   )r«   rˆ   r~   rG   Úkm_denseÚ	km_sparses         r.   Útest_dense_sparser%  ™  sÏ   € õ ”I×)Ò)Ð*<Ñ=Ô=×KÒKÝ	ˆñô €Mð ˆyÝÐ,>Àqðñ ô €Hð ‡L‚L• -€LÑ0Ô0Ð0Ø�	ÝÐ,>Àqðñ ô €Ið ‡M‚M�% }€MÑ5Ô5Ð5å�xÔ'¨Ô):Ñ;Ô;Ð;Ý�HÔ-¨yÔ/IÑJÔJÐJÐJÐJr0   )rz   r¢   r©   c                 óh  — t          |t          ¦  «        rdnd} | t          ||d¬¦  «        }|                     |¦  «         t	          |                     t          ¦  «        |j        ¦  «         |                     t          ¦  «         t	          |                     |¦  «        |j        ¦  «         d S )Nr^   r=   r   rÅ   )r®   r¯   rB   rJ   r   r  r+   rK   )r«   rD   rˆ   rC   r†   s        r.   Útest_predict_dense_sparser'  ­  s“   € õ ˜d¥CÑ(Ô(Ð/ˆRˆR¨a€FØ	ˆ�j¨t¸FÐQRÐ	SÑ	SÔ	S€Bà‡F‚Fˆ5�M„M€MÝ�r—z’z¥!‘}”} b¤jÑ1Ô1Ð1à‡F‚F�1�I„I€IÝ�r—z’z %Ñ(Ô(¨"¬*Ñ5Ô5Ð5Ð5Ð5r0   r©   c           	      óB  — t          j        ddgddgddgddgddgddgg¦  «        } |||¬	¦  «        }|d
k    rdnd}|d
k    r
|d d…         n|} | d|||¬¦  «        }| t          u r|                     d¬¦  «         |                     |¦  «         |j        j        t           j        k    sJ ‚g d¢}	t          t          |j
        |	¦  «        d¦  «         | t          u r>t          |¦  «                             |¦  «        }|j        j        t           j        k    sJ ‚d S d S )Nr   r^   é   r\   r[   r=   r1   r`   r>   r©   rÅ   )rç   )r   r=   r=   r   r   r=   r"   )rH   rI   r   r  rJ   rM   r:   Úfloat64r   r   rK   r   rµ   )
r«   r5   r:   rD   r~   ÚX_denser+   rC   r†   rP   s
             r.   Útest_integer_inputr,  ¿  sY  € õ Œh˜˜A˜  R ¨2¨q¨'°B¸°7¸QÀ¸FÀQÈÀGÐLÑMÔM€GØˆ�W EÐ*Ñ*Ô*€Aà˜)Ò#Ð#ˆQˆQ¨€FØ )Ò+Ð+ˆ7�2�A�2Œ;ˆ;°€Dà	ˆØ˜4¨Ð=Oð
ñ 
ô 
€Bð •OÐ#Ð#Ø
�Š ˆÑ#Ô#Ð#à‡F‚Fˆ1�I„I€Ið ÔÔ$­¬
Ò2Ð2Ð2Ð2à(Ð(Ð(€OÝ•O B¤J°Ñ@Ô@À#ÑFÔFÐFð •OÐ#Ð#Ý�2‰YŒY×"Ò" 1Ñ%Ô%ˆØÔ"Ô(­B¬JÒ6Ð6Ð6Ð6ð $Ð#à6Ð6r0   c                 óÈ  —  | t           |¬¦  «                             t          ¦  «        }|                     |j        ¦  «        }t          |t          |j        ¦  «        ¦  «         t          |                     ¦   «         t          j
        t           ¦  «        ¦  «         |                     t          ¦  «        }t          |t          t          |j        ¦  «        ¦  «         d S )N©rB   r(   )rB   rJ   r+   Ú	transformrM   r   r   r   ÚdiagonalrH   rc   )r«   r~   r†   ÚXts       r.   Útest_transformr2  ß  s°   € ð 
ˆ�jÐ7IÐ	JÑ	JÔ	J×	NÒ	NÍqÑ	QÔ	Q€Bð 
�Š�bÔ)Ñ	*Ô	*€BÝ�BÕ*¨2Ô+>Ñ?Ô?Ñ@Ô@Ð@å�r—{’{‘}”}¥b¤h­zÑ&:Ô&:Ñ;Ô;Ð;ð 
�Š•a‰Œ€BÝ�BÕ*­1¨bÔ.AÑBÔBÑCÔCÐCÐCÐCr0   c                 óê   —  | |d¬¦  «                              t          ¦  «                             t          ¦  «        } | |d¬¦  «                             t          ¦  «        }t	          ||¦  «         d S )Nr=   )r(   rC   )rJ   r+   r/  Úfit_transformr   )r«   r~   ÚX1ÚX2s       r.   Útest_fit_transformr7  ñ  sn   € ð 
ˆÐ 2¸1Ð	=Ñ	=Ô	=×	AÒ	AÅ!Ñ	DÔ	D×	NÒ	NÍqÑ	QÔ	Q€BØ	ˆÐ 2¸1Ð	=Ñ	=Ô	=×	KÒ	KÍAÑ	NÔ	N€BÝ�B˜ÑÔÐÐÐr0   c                 ó¤   — t           j        }dD ]@}t          t          d|| d¬¦  «                             t
          ¦  «        }|j        |k    sJ ‚ŒAd S )N)r=   rw   r^   rz   r=   )rB   rD   rC   r(   r…   )rH   Úinfr   rB   rJ   r+   rL   )r~   Úprevious_inertiarC   r†   s       r.   Útest_n_initr;  ù  sq   € å”vÐØð 
/ð 
/ˆõ Ý!ØØØ+Øð
ñ 
ô 
÷ Š#�a‰&Œ&ð 	ð Œ{Ð.Ò.Ð.Ð.Ð.Ð.ð
/ð 
/r0   c                 ó$  — t          t          t          d | ¬¦  «        \  }}}|j        t          t          fk    sJ ‚t          j        |¦  «        j        d         t          k    sJ ‚t          t          t          |¦  «        d¦  «         |dk    sJ ‚d S )N)rB   rG   r(   r   r"   r    )
r   r+   rB   r‹   r�   rH   rž   r   r   rŸ   )r~   Úcluster_centersrk   Úinertias       r.   Útest_k_means_functionr?  	  s’   € å'.Ý	•j°ÐCUð(ñ (ô (Ñ$€O�V˜Wð Ô ¥ZµÐ$<Ò<Ð<Ð<Ð<ÝŒ9�VÑÔÔ" 1Ô%­Ò3Ð3Ð3Ð3õ •O¥K°Ñ8Ô8¸#Ñ>Ô>Ð>Ø�SŠ=ˆ=ˆ=ˆ=ˆ=ˆ=r0   c              #   ó2   K  — | ]}|d          dk    ¯|V — ŒdS )Úuser_apiÚblasNr*   )r,   r¶   s     r.   ú	<genexpr>rC    s0   è è € ÐDÐD�!¨A¨j¬M¸VÒ,CÐ,CˆAÐ,CÐ,CÐ,CÐ,CÐDÐDr0   zUFails for some global_random_seed on Atlas which cannot be detected by threadpoolctl.)Úreasonc                 óâ  —  | d|¬¦  «        }i }i }i }i }t           j        t           j        fD ]®}|                     |d¬¦  «        }	|                     |	¦  «         |j        ||<   |                     |	¦  «        ||<   |j        ||<   |j        ||<   |j        j	        |k    sJ ‚| t          u r/|                     |	dd…         ¦  «         |j        j	        |k    sJ ‚Œ¯d}
t          |t           j                 |t           j                 |
¬¦  «         t          |t           j                 |t           j                 |t           j                                      ¦   «         |
z  ¬	¦  «         t          |t           j                 |t           j                 |t           j                                      ¦   «         |
z  ¬	¦  «         t          |t           j                 |t           j                 ¦  «         d S )
Nr=   )rC   r(   F©rŒ   r   r?   r  ©Úrtol)Úatol)rH   r*  Úfloat32ÚastyperJ   rL   r/  rM   rK   r:   r   rµ   r   Úmaxr   )r«   r¡   r~   r†   r>  r1  r&   rk   r:   r+   rH  s              r.   Útest_float_precisionrM    sÇ  € ð 
ˆ˜!Ð*<Ð	=Ñ	=Ô	=€Bà€GØ	€BØ€GØ€Få”*�bœjÐ)ð 6ð 6ˆØ×Ò˜e¨%ÐÑ0Ô0ˆØ
�Šˆq‰	Œ	ˆ	àœˆ�‰Ø—L’L ‘O”Oˆˆ5‰	ØÔ,ˆ�‰Øœ
ˆˆu‰ð Ô"Ô(¨EÒ1Ð1Ð1Ð1ð �Ð'Ð'Ø�NŠN˜1˜Q˜q˜Sœ6Ñ"Ô"Ð"ØÔ&Ô,°Ò5Ð5Ð5Ð5øð €DÝ�G�BœJÔ'¨µ´Ô)<À4ÐHÑHÔHÐHÝ�B•r”z”N B¥r¤z¤N¸½B¼J¼×9KÒ9KÑ9MÔ9MÐPTÑ9TÐUÑUÔUÐUÝØ•”
Ô˜W¥R¤ZÔ0°w½r¼zÔ7J×7NÒ7NÑ7PÔ7PÐSWÑ7Wðñ ô ð õ �v�bœjÔ)¨6µ"´*Ô+=Ñ>Ô>Ð>Ð>Ð>r0   c                 óþ   — t                                |d¬¦  «        }t                               |d¬¦  «        } | |t          d¬¦  «        }|                     |¦  «         t          j        |j        |¦  «        rJ ‚d S )NFrF  r=   rä   )r+   rK  r&   rB   rJ   rH   Úmay_share_memoryrM   )r«   r:   Ú
X_new_typeÚcenters_new_typer†   s        r.   Útest_centers_not_mutatedrR  I  s{   € õ —’˜% e�Ñ,Ô,€JÝ—~’~ e°%�~Ñ8Ô8Ðà	ˆÐ(µZÈÐ	JÑ	JÔ	J€BØ‡F‚Fˆ:ÑÔÐåÔ" 2Ô#6Ð8HÑIÔIÐIÐIÐIÐIÐIr0   c                 óè   — t          t          ¬¦  «                             | ¦  «        }t          t          |j        d¬¦  «                             | ¦  «        }t	          |j        |j        ¦  «         d S )N)rB   r=   r¾   )r   rB   rJ   rM   r   )r¡   r  r  s      r.   Útest_kmeans_init_fitted_centersrT  X  sj   € õ �JÐ
'Ñ
'Ô
'×
+Ò
+¨JÑ
7Ô
7€CÝ
�J¨SÔ-AÈ!Ð
LÑ
LÔ
L×
PÒ
PØñô €Cõ �CÔ(¨#Ô*>Ñ?Ô?Ð?Ð?Ð?r0   c                 óh  — t          j        ddgddgddgddgg¦  «        }t          d| ¬¦  «        }d}t          j        t
          |¬¦  «        5  |                     |¦  «         t          |j        ¦  «        t          t          d¦  «        ¦  «        k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r=   é   r.  zmNumber of distinct clusters \(3\) found smaller than n_clusters \(4\). Possibly due to duplicate points in X.rÛ   r?   )
rH   Úasarrayr   r|   rß   r   rJ   ÚsetrK   r´   )r~   r+   r†   Úmsgs       r.   Ú1test_kmeans_warns_less_centers_than_unique_pointsrZ  h  sý   € å
Œ
�Q˜�F˜Q ˜F Q¨ F¨Q°¨FÐ3Ñ4Ô4€AÝ	˜1Ð+=Ð	>Ñ	>Ô	>€Bð	Dð õ 
ŒÕ(°Ð	4Ñ	4Ô	4ð 0ð 0Ø
�Šˆq‰	Œ	ˆ	õ �2”:‰Œ¥#¥e¨A¡h¤h¡-¤-Ò/Ð/Ð/Ð/Ð/ð	0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0s   ÁA
B'Â'B+Â.B+c                 ó.   — t          j        | d¬¦  «        S ©Nr   rè   )rH   Úsort)r&   s    r.   Ú_sort_centersr^  y  s   € ÝŒ7�7 Ð#Ñ#Ô#Ð#r0   c                 ó|  — t           j                             | ¦  «                             ddt          ¬¦  «        }t          j        t          |d¬¦  «        }t          t          dt          | ¬¦  «        }t          |¦  «                             t          |¬¦  «        }t          j        |j        |¦  «        }t          |¦  «                             |¦  «        }t          |j        |¦  «         t          |j        |j        ¦  «         t          t!          |j        ¦  «        t!          |j        ¦  «        ¦  «         d S )Nr=   rw   rt   r   rè   )rD   rC   rB   r(   rF   )rH   rz   r{   Úrandintr%   Úrepeatr+   r   r&   rB   r   rJ   rK   r   r   rL   r^  rM   )r~   rG   ÚX_repeatr†   Úkm_weightedÚrepeated_labelsÚkm_repeateds          r.   Útest_weighted_vs_repeatedrf  }  s  € õ
 ”I×)Ò)Ð*<Ñ=Ô=×EÒEØ	ˆ1•9ð Fñ ô €Mõ Œy�˜M°Ð2Ñ2Ô2€Hå	Ý˜Q­:ÐDVð
ñ 
ô 
€Bõ ˜‘)”)—-’-¥°�-Ñ?Ô?€KÝ”i Ô 3°]ÑCÔC€OÝ˜‘)”)—-’- Ñ)Ô)€Kå�{Ô*¨OÑ<Ô<Ð<Ý�KÔ(¨+Ô*>Ñ?Ô?Ð?ÝÝ�kÔ2Ñ3Ô3Ý�kÔ2Ñ3Ô3ñô ð ð ð r0   c                 óV  — t          j        t          ¦  «        } | t          |d¬¦  «        }t	          |¦  «                             |d ¬¦  «        }t	          |¦  «                             ||¬¦  «        }t          |j        |j        ¦  «         t          |j	        |j	        ¦  «         d S r   )
rH   rb   r%   rB   r   rJ   r   rK   r   rM   )r«   r¡   r~   rG   r†   Úkm_noneÚkm_oness          r.   Útest_unit_weights_vs_no_weightsrj  —  s‘   € õ ”G�IÑ&Ô&€Mà	ˆ�jÐ7IÐRSÐ	TÑ	TÔ	T€BÝ�B‰iŒi�mŠm˜J°dˆmÑ;Ô;€GÝ�B‰iŒi�mŠm˜J°mˆmÑDÔD€Gå�w”¨¬Ñ8Ô8Ð8Ý�GÔ,¨gÔ.FÑGÔGÐGÐGÐGr0   c                 óš  — t           j                             |¦  «                             t          ¬¦  «        } | t
          |d¬¦  «        }t          |¦  «                             ||¬¦  «        }t          |¦  «                             |d|z  ¬¦  «        }t          |j	        |j	        ¦  «         t          |j        |j        ¦  «         d S )Nrt   r=   r!  rF   r<   )rH   rz   r{   rº   r%   rB   r   rJ   r   rK   r   rM   )r«   r¡   r~   rG   r†   Úkm_origÚ	km_scaleds          r.   Útest_scaled_weightsrn  ª  s¯   € õ ”I×)Ò)Ð*<Ñ=Ô=×EÒEÍ9ÐEÑUÔU€Mà	ˆ�jÐ7IÐRSÐ	TÑ	TÔ	T€BÝ�B‰iŒi�mŠm˜J°mˆmÑDÔD€GÝ�b‘	”	—’˜j¸¸mÑ8K�ÑLÔL€Iå�w”¨	Ô(9Ñ:Ô:Ð:Ý�GÔ,¨iÔ.HÑIÔIÐIÐIÐIr0   c                  ór   — t          dd¬¦  «                             t          ¦  «        } | j        dk    sJ ‚d S )Nr9   r=   )rE   r…   )r   rJ   r+   rN   rÿ   s    r.   Ú test_kmeans_elkan_iter_attributerp  ½  s7   € õ 
˜'¨AÐ	.Ñ	.Ô	.×	2Ò	2µ1Ñ	5Ô	5€BØŒ:˜Š?ˆ?ˆ?ˆ?ˆ?ˆ?r0   c                 ó.  —  | dgdgg¦  «        }ddg}t          j        dgdgg¦  «        }t          d|d¬¦  «        }|                     ||¬¦  «         t	          t          |j        ¦  «        ¦  «        dk    sJ ‚t          |j        dgdgg¦  «         d S )	Nr[   r=   gffffffþ?gš™™™™™¹?r^   r1   r¾   rF   )	rH   rI   r   rJ   ÚlenrX  rK   r   rM   )r5   r+   rG   rD   r†   s        r.   Ú#test_kmeans_empty_cluster_relocatedrs  Ä  s§   € ð 	ˆ�r�d˜Q˜C�[Ñ!Ô!€AØ˜#�J€MÝŒ8�b�T˜B˜4�LÑ!Ô!€Då	˜1 4°Ð	2Ñ	2Ô	2€BØ‡F‚Fˆ1˜M€FÑ*Ô*Ð*å�s�2”:‰ŒÑÔ 1Ò$Ð$Ð$Ð$Ý�BÔ'¨2¨$°°¨Ñ5Ô5Ð5Ð5Ð5r0   c                 ó$  — t           j                             |¦  «        }|                     d¬¦  «        }t	          ¦   «                              dd¬¦  «        5   | t          |¬¦  «                             |¦  «        j        }d d d ¦  «         n# 1 swxY w Y   t	          ¦   «                              dd¬¦  «        5   | t          |¬¦  «                             |¦  «        j        }d d d ¦  «         n# 1 swxY w Y   t          ||¦  «         d S )N)é2   r^   rt   r=   Úopenmp)ÚlimitsrA  r.  r1   )
rH   rz   r{   rn   r   ÚlimitrB   rJ   rK   r   )r«   r~   r   r+   Úresult_1Úresult_2s         r.   Ú#test_result_equal_in_diff_n_threadsr{  Ó  s{  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ�
Š
˜ˆ
Ñ!Ô!€Aå	#Ñ	%Ô	%×	+Ò	+°1¸xÐ	+Ñ	HÔ	Hð 
ð 
àˆI¥Ð:LÐMÑMÔMßŠS�‰VŒVÜð 	ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ 
$Ñ	%Ô	%×	+Ò	+°1¸xÐ	+Ñ	HÔ	Hð 
ð 
àˆI¥Ð:LÐMÑMÔMßŠS�‰VŒVÜð 	ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ �x Ñ*Ô*Ð*Ð*Ð*s$   Á+BÂBÂBÂ>+C5Ã5C9Ã<C9c                  óÀ   — t          j        t          d¬¦  «        5  t          dd¬¦  «                             t
          ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz9algorithm='elkan' doesn't make sense for a single clusterrÛ   r=   r9   )rB   rE   )r|   rß   rà   r   rJ   r+   r*   r0   r.   Útest_warning_elkan_1_clusterr}  é  s¦   € å	ŒÝØIð
ñ 
ô 
ð 7ð 7õ 	˜! wÐ/Ñ/Ô/×3Ò3µAÑ6Ô6Ð6ð	7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7râ   c                 ód  — t           j                             |¦  «                             d¬¦  «        }|d d…         } | |¦  «        }d„ } |||¦  «        \  }}t	          dd||d¬¦  «                             |¦  «        }|j        }	|j        }
t          ||	¦  «         t          ||
¦  «         d S )N)r#   rw   rt   rw   c                 óò   — |                      ¦   «         }t          | |¦  «        }t          |j        d         ¦  «        D ]%}| ||k                                  d¬¦  «        ||<   Œ&t          | |¦  «        }||fS r\  )rŒ   r   r´   r‹   ró   )r+   rD   Únew_centersrk   Úlabels        r.   Ú	py_kmeansz+test_k_means_1_iteration.<locals>.py_kmeansû  s~   € Ø—i’i‘k”kˆÝ*¨1¨dÑ3Ô3ˆÝ˜4œ: aœ=Ñ)Ô)ð 	Að 	AˆEØ!" 6¨U¢?Ô!3×!8Ò!8¸aÐ!8Ñ!@Ô!@ˆK˜ÑÐÝ*¨1¨kÑ:Ô:ˆØ�{Ð"Ð"r0   r=   )rB   rC   rD   rE   r…   )
rH   rz   r{   rº   r   rJ   rK   rM   r   r   )r5   r7   r~   r+   rO   r‚  Ú	py_labelsÚ
py_centersÚ	cy_kmeansÚ	cy_labelsÚ
cy_centerss              r.   Útest_k_means_1_iterationrˆ  ò  sÑ   € õ
 	Œ	×ÒÐ0Ñ1Ô1×9Ò9¸xÐ9ÑHÔH€AØ�R�a�R”5€LØˆ�Q‰Œ€Að#ð #ð #ð &˜I a¨Ñ6Ô6Ñ€IˆzåØ˜Q \¸TÈAðñ ô ç	‚cˆ!�f„fð ð Ô!€IØÔ+€Jå�y )Ñ,Ô,Ð,Ý�J 
Ñ+Ô+Ð+Ð+Ð+r0   ÚsquaredTFc                 ó�  — t           j                             |¦  «        }t          ddd|| ¬¦  «        }|                     ¦   «                              d¦  «        }|                     d¦  «                             | d¬¦  «        }|d	z                       ¦   «         }||z
  d	z                       ¦   «         }|r|nt          j	        |¦  «        }t          |||¦  «        }	t          |j        |j        |||¦  «        }
| t           j        k    rd
nd}t          |	|
|¬¦  «         t          |	||¬¦  «         t          |
||¬¦  «         d S )N)r=   r#   r<   Úcsr©ÚdensityÚformatrŽ   r:   r[   r#   FrF  r1   r  gH¯¼šò×z>rG  )rH   rz   r{   r   Útoarrayra   r¿   rK  rì   Úsqrtr
   r   re   rf   rJ  r   )r:   r‰  r~   rŽ   Úa_sparseÚa_denseÚbÚb_squared_normÚexpectedÚdistance_dense_denseÚdistance_sparse_denserH  s               r.   Útest_euclidean_distancer˜    sQ  € õ
 Œ)×
Ò
Ð 2Ñ
3Ô
3€CÝ#Ø˜# e°¸Eðñ ô €Hð ×ÒÑ Ô ×(Ò(¨Ñ,Ô,€GØ�	Š	�#‰Œ×Ò˜e¨%ÐÑ0Ô0€AØ˜‘d—Z’Z‘\”\€Nà˜1‘ Ñ"×'Ò'Ñ)Ô)€HØ"Ð9ˆxˆx­¬°Ñ(9Ô(9€Hå9¸'À1ÀgÑNÔNÐÝ;ØŒ�xÔ'¨¨N¸Gñô Ðð �BœJÒ&Ð&ˆ4ˆ4¨D€DÝÐ(Ð*?ÀdÐKÑKÔKÐKÝÐ(¨(¸Ð>Ñ>Ô>Ð>ÝÐ)¨8¸$Ð?Ñ?Ô?Ð?Ð?Ð?r0   c                 ó2  — t           j                             |¦  «        }t          ddd|| ¬¦  «        }|                     ¦   «         }|                     d¦  «                             | d¬¦  «        }|                     dd	¦  «                             | d¬¦  «        }|                     ddt           j        ¬
¦  «        }|||         z
  dz   	                    d¬¦  «        }t          j	        ||z  ¦  «        }	t          ||||d¬¦  «        }
t          ||||d¬¦  «        }| t           j        k    rdnd}t          |
||¬¦  «         t          |
|	|¬¦  «         t          ||	|¬¦  «         d}||k    }||         ||         z
  dz   	                    d¬¦  «        }t          j	        |||         z  ¦  «        }	t          ||||d|¬¦  «        }
t          ||||d|¬¦  «        }t          |
||¬¦  «         t          |
|	|¬¦  «         t          ||	|¬¦  «         d S )N)r#   r^   r<   r‹  rŒ  r#   FrF  rw   r^   )ru   r:   r1   r=   rè   )Ú	n_threadsr  rx   rG  )rš  Úsingle_label)rH   rz   r{   r   r�  r¿   rK  r`  rd   rì   r   r   rJ  r   )r:   r~   rŽ   ÚX_sparser+  rG   r&   rk   Ú	distancesr•  Úinertia_denseÚinertia_sparserH  r�  Úmasks                  r.   Útest_inertiar¡  *  sO  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CÝ#Ø˜3 u°#¸Uðñ ô €Hð ×ÒÑ Ô €GØ—I’I˜c‘N”N×)Ò)¨%°eÐ)Ñ<Ô<€MØ�iŠi˜˜2ÑÔ×%Ò% e°%Ð%Ñ8Ô8€GØ�[Š[˜ ­B¬Hˆ[Ñ5Ô5€Fà˜G FœOÑ+°Ñ1×6Ò6¸AÐ6Ñ>Ô>€IÝŒv�i -Ñ/Ñ0Ô0€Hå" 7¨M¸7ÀFÐVWÐXÑXÔX€MÝ$Ø�- ¨&¸Aðñ ô €Nð �BœJÒ&Ð&ˆ4ˆ4¨D€DÝ�M >¸Ð=Ñ=Ô=Ð=Ý�M 8°$Ð7Ñ7Ô7Ð7Ý�N H°4Ð8Ñ8Ô8Ð8ð €EØ�UŠ?€DØ˜$”- '¨%¤.Ñ0°QÑ6×;Ò;ÀÐ;ÑCÔC€IÝŒv�i -°Ô"5Ñ5Ñ6Ô6€Hå"Ø� ¨¸1È5ðñ ô €Mõ %Ø�- ¨&¸AÈEðñ ô €Nõ �M >¸Ð=Ñ=Ô=Ð=Ý�M 8°$Ð7Ñ7Ô7Ð7Ý�N H°4Ð8Ñ8Ô8Ð8Ð8Ð8r0   zKlass, default_n_initr^   r?   c                 óò   —  | dd¬¦  «        }|                      t          ¦  «         |j        dk    sJ ‚ | dd¬¦  «        }|                      t          ¦  «         | j        dk    r|j        dk    snd S J ‚d S )Nr½   r¢   )rC   rD   r=   rz   r   r^   )rJ   r+   rÀ   Ú__name__)ÚKlassÚdefault_n_initÚests      r.   Útest_n_init_autor§  U  s‰   € à
ˆ%�v KÐ
0Ñ
0Ô
0€CØ‡G‚G�A�J„J€JØŒ;˜!ÒÐÐÐà
ˆ%�v HÐ
-Ñ
-Ô
-€CØ‡G‚G�A�J„J€JØ %¤°(Ò :Ð :ˆ3Œ;˜"ÒÐÐÐÐÐÐAÐÐr0   c                 óò   — t          j        dgdgdgg¦  «        }t          j        g d¢¦  «        } | dd¬¦  «                             ||¬¦  «         t          |t          j        g d¢¦  «        ¦  «         d S )Nr=   r1   rV  )r<   gš™™™™™É?g333333Ó?r   r.  rF   )rH   rI   rJ   r   )r«   r+   rG   s      r.   Útest_sample_weight_unchangedr©  `  s~   € õ 	Œ�1�#˜�s˜Q˜C�Ñ!Ô!€AÝ”H˜_˜_˜_Ñ-Ô-€MØ€I˜¨Ð+Ñ+Ô+×/Ò/°ÀÐ/ÑOÔOÐOå�}¥b¤h¨¨¨Ñ&?Ô&?Ñ@Ô@Ð@Ð@Ð@r0   zparam, matchrB   r=   z#n_samples.* should be >= n_clusterszIThe shape of the initial centers .* does not match the number of clustersc                 ó   — | d d…         S )Nr1   r*   ©ÚX_r§   r(   s      r.   r¨   r¨   u  s   € °°B°Q°B´€ r0   r`   zUThe shape of the initial centers .* does not match the number of features of the datac                 ó   — | d d…d d…f         S )Nr`   r1   r*   r«  s      r.   r¨   r¨     s   € °°B°Q°B¸¸¸°F´€ r0   c                 óÐ   —  | d¬¦  «        }t          j        t          |¬¦  «        5   |j        di |¤Ž                     t
          ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr=   )rC   rÛ   r*   )r|   ÚraisesÚ
ValueErrorr  rJ   r+   )r«   ÚparamrÜ   r†   s       r.   Útest_wrong_paramsr²  j  sµ   € ð> 
ˆ˜!Ð	Ñ	Ô	€BÝ	Œ•z¨Ð	/Ñ	/Ô	/ð &ð &ØˆŒÐÐ˜ÐÐ×"Ò"¥1Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &s   ¨&AÁAÁ"AÚx_squared_normszKThe length of x_squared_norms .* should be equal to the length of n_samplesc                 óž   — t          j        t          |¬¦  «        5  t          t          t
          fi | ¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )NrÛ   )r|   r¯  r°  r	   r+   rB   )r±  rÜ   s     r.   Ú!test_kmeans_plusplus_wrong_paramsrµ  Ž  s•   € õ 
Œ•z¨Ð	/Ñ	/Ô	/ð 0ð 0Ý��:Ð/Ð/¨Ð/Ð/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0s   œAÁAÁ	Ac                 ó¦  — |                       |¦  «        }t          |t          |¬¦  «        \  }}|j        d         t          k    sJ ‚|dk                         ¦   «         sJ ‚||j        d         k                         ¦   «         sJ ‚|j        d         t          k    sJ ‚|                     d¬¦  «        |                     d¬¦  «        k                         ¦   «         sJ ‚|                     d¬¦  «        |                     d¬¦  «        k                         ¦   «         sJ ‚t          t          |                               |¦  «        |¦  «         d S )Nrv   r   rè   )	rK  r	   rB   r‹   ÚallrL  Úminr   r+   )r¡   r:   r~   re   r&   rf   s         r.   Útest_kmeans_plusplus_outputr¹  �  sG  € ð ×Ò˜UÑ#Ô#€DÝ&Ø�jÐ'9ðñ ô Ñ€GˆWð Œ=˜Ô�zÒ)Ð)Ð)Ð)Ø�qŠL×ÒÑÔÐÐÐØ�t”z !”}Ò$×)Ò)Ñ+Ô+Ð+Ð+Ð+ð Œ=˜Ô�zÒ)Ð)Ð)Ð)Ø�KŠK˜QˆKÑÔ 4§8¢8° 8Ñ#3Ô#3Ò3×8Ò8Ñ:Ô:Ð:Ð:Ð:Ø�KŠK˜QˆKÑÔ 4§8¢8° 8Ñ#3Ô#3Ò3×8Ò8Ñ:Ô:Ð:Ð:Ð:õ
 •A�g”J×%Ò% eÑ,Ô,¨gÑ6Ô6Ð6Ð6Ð6r0   ©r‰  c                 óz   — t          t          t          | ¬¦  «        \  }}t          t          |         |¦  «         d S )N)r³  )r	   r+   rB   r   )r³  r&   rf   s      r.   Útest_kmeans_plusplus_normsr¼  º  s7   € õ '¥q­*ÀoÐVÑVÔVÑ€GˆWå•A�g”J Ñ(Ô(Ð(Ð(Ð(r0   c                 óÊ   — t          t          t          | ¬¦  «        \  }}t          j        t          ¦  «        }t          |t          | ¬¦  «        \  }}t          ||¦  «         d S )Nrv   )r	   r+   rB   rH   rÆ   r   )r~   Ú	centers_cr€   rÇ   rÈ   s        r.   Útest_kmeans_plusplus_dataorderr¿  Â  sd   € å"¥1¥jÐ?QÐRÑRÔR�L€IˆqåÔ!¥!Ñ$Ô$€Iå(Ø•:Ð,>ðñ ô Ñ€O�Qõ �I˜Ñ/Ô/Ð/Ð/Ð/r0   c                  óD  — t          j        g d¢t           j        ¬¦  «        } t          | | d¦  «        sJ ‚t          j        g d¢t           j        ¬¦  «        }t          | |d¦  «        sJ ‚t          j        g d¢t           j        ¬¦  «        }t          | |d¦  «        rJ ‚d S )N)r=   r   r   r=   r1   r   r1   r=   r>   r?   )r   r1   r1   r   r=   r1   r=   r   )r=   r   r   r1   r1   r   r1   r=   )rH   rI   rd   r   )Úlabels1Úlabels2Úlabels3s      r.   Útest_is_same_clusteringrÄ  Ï  s«   € åŒhÐ/Ð/Ð/µr´xÐ@Ñ@Ô@€GÝ˜w¨°Ñ3Ô3Ð3Ð3Ð3õ ŒhÐ/Ð/Ð/µr´xÐ@Ñ@Ô@€GÝ˜w¨°Ñ3Ô3Ð3Ð3Ð3õ ŒhÐ/Ð/Ð/µr´xÐ@Ñ@Ô@€GÝ" 7¨G°QÑ7Ô7Ð7Ð7Ð7Ð7Ð7r0   Úkwargs)rD   rC   c                 ó¤   — t          j        ddgddgddgddggt           j        ¬¦  «        }t          dddi| ¤Ž}|                     |¦  «         dS )	zZCheck that init works with numpy scalar strings.

    Non-regression test for #21964.
    r   r<   r=   r>   rB   r1   Nr*   )rH   rW  r*  r   rJ   )rÅ  r+   Ú
clusterings      r.   Ú-test_kmeans_with_array_like_or_np_scalar_initrÈ  ß  sc   € õ 	Œ
�Q˜�F˜S !˜H s¨A h°°A°Ð7½r¼zÐJÑJÔJ€AåÐ/Ð/ 1Ð/¨Ð/Ð/€Jà‡N‚N�1ÑÔÐÐÐr0   zKlass, methodrJ   rµ   c                 ó(  ‡— | j                              ¦   «         Š | ¦   «         } t          ||¦  «        t          ¦  «         |j        j        d         }|                     ¦   «         }t          ˆfd„t          |¦  «        D ¦   «         |¦  «         dS )z=Check `feature_names_out` for `KMeans` and `MiniBatchKMeans`.r   c                 ó   •— g | ]}‰› |› �‘Œ	S r*   r*   )r,   r¶   Ú
class_names     €r.   r/   z*test_feature_names_out.<locals>.<listcomp>ú  s$   ø€ ÐFÐFÐF¨q˜:Ð* qÐ*Ð*ÐFÐFÐFr0   N)	r£  ÚlowerÚgetattrr+   rM   r‹   Úget_feature_names_outr   r´   )r¤  ÚmethodrT   rB   Ú	names_outrË  s        @r.   Útest_feature_names_outrÑ  î  s‘   ø€ ð ”×%Ò%Ñ'Ô'€JØˆU‰WŒW€FØ…GˆF�FÑÔ�AÑÔÐØÔ(Ô.¨qÔ1€Jà×,Ò,Ñ.Ô.€IÝÐFÐFÐFÐFµE¸*Ñ4EÔ4EÐFÑFÔFÈ	ÑRÔRÐRÐRÐRr0   Úcsr_containerc                 ó@  — t          dddd¬¦  «        \  }}| � | |¦  «        }t          ¦   «         }|                     |¦  «        }t          |j        ¦  «        |_        t          |j        ¦  «        |_        |                     |¦  «        }t          ||¦  «         dS )z_Check that predict does not change cluster centers.

    Non-regression test for gh-24253.
    rê   r^   r   r  N)r   r   r  r   rM   rK   r  r   )rÒ  r+   r€   rT   Úy_pred1Úy_pred2s         r.   Ú,test_predict_does_not_change_cluster_centersrÖ  ý  sš   € õ  °¸BÈQÐOÑOÔO�D€A€qØÐ ØˆM˜!ÑÔˆå‰XŒX€FØ× Ò  Ñ#Ô#€Gå7¸Ô8OÑPÔP€FÔÝ.¨v¬~Ñ>Ô>€F„Nà�nŠn˜QÑÔ€GÝ�w Ñ(Ô(Ð(Ð(Ð(r0   c           
      óŠ  — t           j                             |¦  «        }t          ddd|¬¦  «        \  }}t	          |d¬¦  «        }t          ¦   «         }|                     ||| |                     |j        d         ¬¦  «        dt           j                             |¦  «        ¬	¦  «        }|                     ||| t          j	        |j        d         ¦  «        dt           j                             |¦  «        ¬	¦  «        }t          j        t          ¦  «        5  t          ||¦  «         d
d
d
¦  «         d
S # 1 swxY w Y   d
S )zªCheck that sample weight is used during init.

    `_init_centroids` is shared across all classes inheriting from _BaseKMeans so
    it's enough to check for KMeans.
    rê   r^   r  Trº  r   rt   rw   ©r+   r³  rD   rG   Ún_centroidsr(   N)rH   rz   r{   r   r   r   Ú_init_centroidsrº   r‹   rb   r|   r¯  rW   r   )	rD   r~   rŽ   r+   r€   r³  rT   Úclusters_weightedÚclusterss	            r.   Útest_sample_weight_initrÝ    s�  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CÝØ "¨bÐ?Qðñ ô �D€A€qõ   ¨4Ð0Ñ0Ô0€Oå‰XŒX€FØ×.Ò.Ø
Ø'ØØ—k’k q¤w¨q¤z�kÑ2Ô2ØÝ”Y×*Ò*Ð+=Ñ>Ô>ð /ñ ô Ðð ×%Ò%Ø
Ø'ØÝ”g˜aœg aœjÑ)Ô)ØÝ”Y×*Ò*Ð+=Ñ>Ô>ð &ñ ô €Hõ 
Œ•~Ñ	&Ô	&ð 5ð 5ÝÐ)¨8Ñ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5s   ÄD8Ä8D<Ä?D<c           
      óô  — t           j                             |¦  «        }t          ddd|¬¦  «        \  }}|                     |j        d         ¬¦  «        }d|ddd…<   t          |d¬	¦  «        }t          ¦   «         }|                     ||| |d
t           j                             |¦  «        ¬¦  «        }t          |ddd…         |¦  «        }	t          j
        t          j        |	d¦  «        ¦  «        rJ ‚dS )z»Check that if sample weight is 0, this sample won't be chosen.

    `_init_centroids` is shared across all classes inheriting from _BaseKMeans so
    it's enough to check for KMeans.
    r#   rw   r  r   rt   Nr1   Trº  r^   rØ  )rH   rz   r{   r   rº   r‹   r   r   rÚ  r   rë   Úisclose)
rD   r~   rŽ   r+   r€   rG   r³  rT   rÛ  Úds
             r.   Útest_sample_weight_zerorá  3  s  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CÝØ !¨QÐ=Oðñ ô �D€A€qð —K’K Q¤W¨Q¤Z�KÑ0Ô0€MØ€M�#�#�A�#ÑÝ ¨4Ð0Ñ0Ô0€Oå‰XŒX€FØ×.Ò.Ø
Ø'ØØ#ØÝ”Y×*Ò*Ð+=Ñ>Ô>ð /ñ ô Ðõ 	˜A˜c˜c ˜cœFÐ$5Ñ6Ô6€AÝŒv•b”j  AÑ&Ô&Ñ'Ô'Ð'Ð'Ð'Ð'Ð'r0   c                 ó0  — t          j        ddgddgddgddgddgg¦  «        }t          d|| ¬¦  «        }d}t          j        t
          |¬¦  «        5  |                      ||¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   |j        dk    sJ ‚dS )zµCheck that kmeans stops when there are more centers than non-duplicate samples

    Non-regression test for issue:
    https://github.com/scikit-learn/scikit-learn/issues/28055
    r   r=   rw   )rB   rD   rE   zENumber of distinct clusters \(4\) found smaller than n_clusters \(5\)rÛ   N)rH   rI   r   r|   rß   r   rJ   rN   )rE   r5   r+   r†   rY  s        r.   Útest_relocating_with_duplicatesrã  Q  så   € õ 	Œ�1�a�&˜1˜a˜& 1 a &¨1¨a¨&°1°a°&Ð9Ñ:Ô:€AÝ	˜1 1°	Ð	:Ñ	:Ô	:€Bà
R€CÝ	ŒÕ(°Ð	4Ñ	4Ô	4ð  ð  Ø
�Šˆ|ˆ|˜A‰ŒÑÔÐð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð Œ:˜Š?ˆ?ˆ?ˆ?ˆ?ˆ?s   ÁA>Á>BÂB)„Ú__doc__rÔ   rÎ   Úior   ÚnumpyrH   r|   Úthreadpoolctlr   Úsklearn.baser   Úsklearn.clusterr   r   r   r	   Úsklearn.cluster._k_means_commonr
   r   r   r   r   r   r   Úsklearn.cluster._kmeansr   r   Úsklearn.datasetsr   Úsklearn.exceptionsr   Úsklearn.metricsr   r   Úsklearn.metrics.clusterr   Úsklearn.metrics.pairwiser   Úsklearn.utils._testingr   r   r   Úsklearn.utils.extmathr   Úsklearn.utils.fixesr   r   Úsklearn.utils.parallelr   rI   r&   r%   r‹   rB   r�   r+   rŸ   ÚX_as_any_csrÚdata_containersrr  Údata_containers_idsÚmarkÚparametrizerJ  r*  rU   rX   rl   rƒ   r‡   r›   r    rŒ   r°   r·   rÃ   rË   rÑ   rÙ   rá   rå   rï   rø   rú   r   r  r
  r  r  r  r%  r'  rd   Úint64r,  r2  r7  r;  r?  Úskipifrë   rM  rR  rT  rZ  r^  rf  rj  rn  rp  rs  r{  r}  rˆ  r˜  r¡  r§  r©  r²  rµ  r¹  r¼  r¿  rÄ  Ústr_rÈ  rÑ  rÖ  rÝ  rá  rã  r*   r0   r.   ú<module>rý     sˆ  ðØ Ð à 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )à Ð Ð Ð Ð Ð Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð FÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð
 ,Ð +Ð +Ð +Ð +Ð +Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ =Ð =Ð =Ð =Ð =Ð =ð ˆ"Œ(à!Ð!Ð!Ø!Ð!Ð!Ø!Ð!Ð!ðñô €ð €	Ø œÑ €
ˆJØ�Ø °cÈðñ ô �€€;ð >Ð=¨nÐ=Ñ=Ô=€Ø”8�*˜~Ñ-€ð €sˆ<ÑÔ˜AÒÐð /Ð.Ð.Ð.à
�?Ð	#ð ð „×Ò˜¨Ð>QÐÑRÔRØ„×Ò˜ '¨7Ð!3Ñ4Ô4Ø„×Ò˜ 2¤:¨r¬zÐ":Ñ;Ô;ð-ð -ñ <Ô;ñ 5Ô4ñ SÔRð-ð* „×Ò˜¨Ð>QÐÑRÔRØ„×Ò˜ '¨7Ð!3Ñ4Ô4ðCð Cñ 5Ô4ñ SÔRðCð: „×Ò˜¨Ð>QÐÑRÔRð&7ð &7ñ SÔRð&7ðR „×Ò˜¨(°GÐ)<Ñ=Ô=Ø„×Ò˜¨Ð>QÐÑRÔRØ„×Ò˜Ð 7Ð 7Ð 7Ñ8Ô8ðKð Kñ 9Ô8ñ SÔRñ >Ô=ðKð6 „×Ò˜ w°Ð&8Ñ9Ô9ð!ð !ñ :Ô9ð!ð$ „×Ò˜ ,Ñ/Ô/ð<2ð <2ñ 0Ô/ð<2ð~ð ð ð „×ÒØØ€Cˆ,ÑØð ñ ô ð
 „×ÒØ
Øˆ{˜GŸLšL™NœNÐ,UÐ,UÐVØ6Ð6Ð6ð ñ ô ð
 „×Ò˜ v¨Ð&?Ñ@Ô@ðð ñ AÔ@ñô ñô ðð „×ÒØ
Øˆ{˜GÐ%NÐ%NÐOØ6Ð6Ð6ð ñ ô ð
ð ñô ð
ð  „×ÒØàØðð ð ð		
ð 	ð
ñô ð „×Ò˜ v¨Ð&?Ñ@Ô@ð-ð -ñ AÔ@ñô ð-ð  „×Ò˜ v¨Ð&?Ñ@Ô@ð3ð 3ñ AÔ@ð3ð$ ð  ð  ð „×Ò˜ w°Ð&8Ñ9Ô9Ø„×Ò˜  q 	Ñ*Ô*ðLð Lñ +Ô*ñ :Ô9ðLð2<ð <ð <ð „×Ò˜ v¨Ð&?Ñ@Ô@ðIð Iñ AÔ@ðIðOð Oð OðB „×ÒØØ€Cˆ,ÑØð ñ ô ð
+2ð +2ñô ð
+2ð\ð ð ð&ð &ð &ð$ „×ÒÐ2°\À7Ð4KÑLÔLðLð Lñ MÔLðLð6(ð (ð (ð2ð ð ð „×Ò˜ v¨Ð&?Ñ@Ô@ð	ð 	ñ AÔ@ð	ð „×Ò˜¨Ð>QÐÑRÔRØ„×ÒØØˆgÐ˜ Ð)¨O¸TÐ+BÐCñô ð „×Ò˜ a¨ XÑ.Ô.ð ,ð  ,ñ /Ô.ñ	ô ñ SÔRð ,ðF „×Ò˜ ,Ñ/Ô/Ø„×Ò˜ v¨Ð&?Ñ@Ô@ðKð Kñ AÔ@ñ 0Ô/ðKð$ „×Ò˜ ,Ñ/Ô/Ø„×ÒØ
ˆX�{ GÐ,Ð2TÐ2TÐ2Tð ñ ô ð „×Ò˜ v¨Ð&?Ñ@Ô@ð
6ð 
6ñ AÔ@ñô ñ 0Ô/ð

6ð „×Ò˜¨Ð>QÐÑRÔRØ„×Ò˜ 2¤8¨R¬XÐ"6Ñ7Ô7Ø„×Ò˜ +¨yÐ!9Ñ:Ô:Ø„×Ò˜ v¨Ð&?Ñ@Ô@ð7ð 7ñ AÔ@ñ ;Ô:ñ 8Ô7ñ SÔRð7ð8 „×Ò˜ v¨Ð&?Ñ@Ô@ðDð Dñ AÔ@ðDð" „×Ò˜ v¨Ð&?Ñ@Ô@ðð ñ AÔ@ðð/ð /ð /ð ð ð ð „×ÒØØ€Cˆ,ÑØð ñ ô ð
 „×Ò˜ v¨Ð&?Ñ@Ô@Ø„×ÒØˆÐDÐD��Ñ(Ô(ÐDÑDÔDÑDÔDÐDð	ð ñ ô ð"?ð "?ñô ñ AÔ@ñô ð"?ðJ „×Ò˜ 2¤8¨R¬X°r´zÀ2Ä:Ð"NÑOÔOØ„×Ò˜ v¨Ð&?Ñ@Ô@ð
Jð 
Jñ AÔ@ñ PÔOð
Jð „×ÒØØ€Cˆ,ÑØð ñ ô ð
@ð @ñô ð
@ð0ð 0ð 0ð"$ð $ð $ðð ð ð4 „×ÒØØ€Cˆ,ÑØð ñ ô ð
 „×Ò˜ v¨Ð&?Ñ@Ô@ð
Hð 
Hñ AÔ@ñô ð
Hð „×ÒØØ€Cˆ,ÑØð ñ ô ð
 „×Ò˜ v¨Ð&?Ñ@Ô@ð
Jð 
Jñ AÔ@ñô ð
Jðð ð ð „×Ò˜¨Ð>QÐÑRÔRð6ð 6ñ SÔRð6ð „×Ò˜ v¨Ð&?Ñ@Ô@ð+ð +ñ AÔ@ð+ð*7ð 7ð 7ð „×Ò˜¨Ð>QÐÑRÔRØ„×Ò˜ '¨7Ð!3Ñ4Ô4ð,ð ,ñ 5Ô4ñ SÔRð,ð6 „×Ò˜ 2¤:¨r¬zÐ":Ñ;Ô;Ø„×Ò˜ T¨5 MÑ2Ô2ð@ð @ñ 3Ô2ñ <Ô;ð@ð2 „×Ò˜ 2¤:¨r¬zÐ":Ñ;Ô;ð'9ð '9ñ <Ô;ð'9ðT „×ÒÐ0°F¸B°<À/ÐSTÐAUÐ2VÑWÔWðBð Bñ XÔWðBð „×Ò˜ v¨Ð&?Ñ@Ô@ðAð Añ AÔ@ðAð „×Ò˜ v¨Ð&?Ñ@Ô@Ø„×ÒØà
˜	 A™Ð	&Ð(NÐOà�Q�r˜�r”UˆOð&ð	
ð Ð7Ð7Ð8ð&ð	
ð �Q�r˜�r˜2˜A˜2�v”YÐð2ð	
ð Ð;Ð;Ð<ð2ð	
ð#ñô ð4&ð &ñ5ô ñ AÔ@ð6&ð „×ÒØð   " 1 "¤Ð&ð3ð	
ðñ	ô 	ð0ð 0ñ	ô 	ð0ð
 „×ÒØØ€Cˆ,Ññô ð „×Ò˜ 2¤:¨r¬zÐ":Ñ;Ô;ð7ð 7ñ <Ô;ñ	ô ð
7ð0 „×ÒÐ*¨Y¨Y°qÀ$Ð-GÑ-GÔ-GÈÐ,NÑOÔOð)ð )ñ PÔOð)ð
0ð 
0ð 
0ð8ð 8ð 8ð  „×ÒØ�˜˜œ Ñ,Ô,Ð-¸!¸Q¸À!ÀQÀÐ8HÐTUÐ/VÐ/VÐWñô ð	ð 	ñô ð	ð „×ÒØØˆe€_�¨Ð.°À-Ð0PÐQñô ðSð Sñ	ô ðSð „×Ò˜¨.¸D¸6Ñ*AÑBÔBð)ð )ñ CÔBð)ð& „×Ò˜ +¨xÐ!8Ñ9Ô9ð5ð 5ñ :Ô9ð5ðB „×Ò˜ +¨xÐ!8Ñ9Ô9ð(ð (ñ :Ô9ð(ð: „×Ò˜¨Ð>QÐÑRÔRØ„×Ò˜ w°Ð&8Ñ9Ô9ðð ñ :Ô9ñ SÔRðð ð r0   