§
    qŠtj  ã                   ó¾  — d Z ddlZddlZddlZddlmZmZmZm	Z	 ddl
mZ ddlmZ ddlmZmZ dZ ej        ddgd	d	gdd	gg¦  «        d
z   Z eddeddd¬¦  «        \  ZZd„ Zd„ Zd„ Zej                             dddg¦  «        d„ ¦   «         Zej        j        d„ ¦   «         Zd„ Zd„ Zd„ Z d„ Z!d„ Z"ej                             dddg¦  «        d „ ¦   «         Z#d!„ Z$dS )"z,
Testing for mean shift clustering methods

é    N)Ú	MeanShiftÚestimate_bandwidthÚget_bin_seedsÚ
mean_shift)Ú
make_blobs)Úv_measure_score)Úassert_allcloseÚassert_array_equalé   é   éÿÿÿÿé
   i,  é   çš™™™™™Ù?Té   ©Ú	n_samplesÚ
n_featuresÚcentersÚcluster_stdÚshuffleÚrandom_statec                  ó¼   — t          ¦   «         } |                      t          j        d¦  «                             dd¦  «        ¦  «        j        }|| j        k     sJ ‚d S )Nr   r   r   )r   ÚfitÚnpÚonesÚreshapeÚn_iter_Úmax_iter)ÚmodelÚn_iters     úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/cluster/tests/test_mean_shift.pyÚ$test_convergence_of_1d_constant_datar#      sR   € õ ‰KŒK€EØ�YŠY•r”w˜r‘{”{×*Ò*¨2¨qÑ1Ô1Ñ2Ô2Ô:€FØ�E”NÒ"Ð"Ð"Ð"Ð"Ð"ó    c                  óT   — t          t          d¬¦  «        } d| cxk    rdk    sn J ‚d S )NéÈ   )r   gÍÌÌÌÌÌì?g      ø?)r   ÚX©Ú	bandwidths    r"   Útest_estimate_bandwidthr*   %   s?   € å"¥1°Ð4Ñ4Ô4€IØ�)Ð"Ð"Ò"Ð"˜sÒ"Ð"Ð"Ð"Ð"Ð"Ð"Ð"r$   c                 óÄ   — t          t                               | d¬¦  «        dd¬¦  «        }|j        t          j        k    sJ ‚|t	          j        dd¬¦  «        k    sJ ‚d S )	NF©Úcopyr   g333333Ó?)r   Úquantileç        gñhãˆµøä>)Úabs)r   r'   ÚastypeÚdtypeÚpytestÚapprox)Úglobal_dtyper)   s     r"   Útest_estimate_bandwidth_1sampler6   +   sl   € õ #Ý	�Š� EˆÑ*Ô*°aÀ#ðñ ô €Ið Œ?�aœgÒ%Ð%Ð%Ð%Ø�œ c¨tÐ4Ñ4Ô4Ò4Ð4Ð4Ð4Ð4Ð4r$   z5bandwidth, cluster_all, expected, first_cluster_label)ç333333ó?Tr   r   )r7   Fé   r   c                 óÞ  — t                                | d¬¦  «        }t          ||¬¦  «        }|                     |¦  «        j        }t          j        |¦  «        }t          |¦  «        }	|	|k    sJ ‚|d         |k    sJ ‚|j        j	        | k    sJ ‚t          ||¬¦  «        \  }
}t          j        |¦  «        }t          |¦  «        }||k    sJ ‚|d         |k    sJ ‚|
j	        | k    sJ ‚d S )NFr,   )r)   Úcluster_allr   )r:   )r'   r1   r   r   Úlabels_r   ÚuniqueÚlenÚcluster_centers_r2   r   )r5   r)   r:   ÚexpectedÚfirst_cluster_labelÚX_with_global_dtypeÚmsÚlabelsÚlabels_uniqueÚn_clusters_Úcluster_centersÚlabels_mean_shiftÚlabels_mean_shift_uniqueÚn_clusters_mean_shifts                 r"   Útest_mean_shiftrJ   6   s  € õ Ÿ(š( <°e˜(Ñ<Ô<ÐÝ	˜Y°KÐ	@Ñ	@Ô	@€BØ�VŠVÐ'Ñ(Ô(Ô0€FÝ”I˜fÑ%Ô%€MÝ�mÑ$Ô$€KØ˜(Ò"Ð"Ð"Ð"Ø˜ÔÐ2Ò2Ð2Ð2Ð2ØÔÔ$¨Ò4Ð4Ð4Ð4å)3Ø¨ð*ñ *ô *Ñ&€OÐ&õ  "œyÐ):Ñ;Ô;ÐÝÐ 8Ñ9Ô9ÐØ  HÒ,Ð,Ð,Ð,Ø# AÔ&Ð*=Ò=Ð=Ð=Ð=ØÔ  LÒ0Ð0Ð0Ð0Ð0Ð0r$   c                 óÔ  — t          j        ddgddgddgg¦  «        dz   }t          dd|dd|¬¦  «        \  }}|                     | d	¬
¦  «        }t	          d¬¦  «        }|                     |¦  «         t	          ¦   «         }|                     |¦  «         t          |j        |j        ¦  «         |j        j        |j        j        k    sJ ‚t          |j
        |j
        ¦  «         d S )Nr   r   r   é2   r   r   Tr   Fr,   )Ún_jobs)r   Úarrayr   r1   r   r   r	   r>   r2   r
   r;   )r5   Úglobal_random_seedr   r'   Ú_Úms1Úms2s          r"   Útest_parallelrS   S   sî   € åŒh˜˜A˜  R ¨1¨b¨'Ð2Ñ3Ô3°bÑ8€GÝØØØØØØ'ðñ ô �D€A€qð 	
�Š� EˆÑ*Ô*€Aå
˜1Ð
Ñ
Ô
€CØ‡G‚GˆA�J„J€Jå
‰+Œ+€CØ‡G‚GˆA�J„J€Jå�CÔ(¨#Ô*>Ñ?Ô?Ð?ØÔÔ%¨Ô)=Ô)CÒCÐCÐCÐCÝ�s”{ C¤KÑ0Ô0Ð0Ð0Ð0r$   c                 óÒ   — t          d¬¦  «        }t                               | d¬¦  «        }|                     |¦  «        }|                     |¦  «        }t          ||¦  «         d S )Nr7   r(   Fr,   )r   r'   r1   Úfit_predictÚpredictr
   )r5   rB   rA   rC   Úlabels2s        r"   Útest_meanshift_predictrX   l   sb   € å	˜SÐ	!Ñ	!Ô	!€BÝŸ(š( <°e˜(Ñ<Ô<ÐØ�^Š^Ð/Ñ0Ô0€FØ�jŠjÐ,Ñ-Ô-€GÝ�v˜wÑ'Ô'Ð'Ð'Ð'r$   c                  óÔ   — t          dddgddgg¬¦  «        } d}t          j        t          |¬¦  «        5  |                      t
          ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nçš™™™™™¹?i÷ÿÿÿiöÿÿÿ)r)   Úseedsz!No point was within bandwidth=0.1)Úmatch)r   r3   ÚraisesÚ
ValueErrorr   r'   )rB   Úmsgs     r"   Útest_meanshift_all_orphansr`   u   s¸   € å	˜S¨"¨b¨°C¸°:Ð(>Ð	?Ñ	?Ô	?€BØ
-€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð 
ð 
Ø
�ŠÝñ	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   µAÁA!Á$A!c                  ój   — t          ¦   «         } t          | d¦  «        rJ ‚t          | d¦  «        rJ ‚d S )Nr>   r;   )r   Úhasattr)rB   s    r"   Útest_unfittedrc      s>   € å	‰Œ€BÝ�rÐ-Ñ.Ô.Ð.Ð.Ð.Ý�r˜9Ñ%Ô%Ð%Ð%Ð%Ð%Ð%r$   c           	      óŽ  — t          j        ddgddgddgddgddgddgg| ¬	¦  «        }t          d¬
¦  «                             |¦  «        }t          j        ddgddgddgddgddgddgg| ¬	¦  «        }t          d¬
¦  «                             |¦  «        }t	          |j        g d¢¦  «         t	          |j        g d¢¦  «         d S )Nr   r   r   r8   é   r   é   é   ©r2   r(   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   rN   r   r   r
   r;   )r5   r'   Úc1Úc2s       r"   Útest_cluster_intensity_tierk   †   sè   € Ý
Œ�1�a�&˜1˜a˜& 1 a &¨1¨a¨&°1°a°&¸1¸a¸&ÐAÈÐVÑVÔV€AÝ	˜QÐ	Ñ	Ô	×	#Ò	# AÑ	&Ô	&€Bå
Œ�1�a�&˜1˜a˜& 1 a &¨1¨a¨&°1°a°&¸1¸a¸&ÐAÈÐVÑVÔV€AÝ	˜QÐ	Ñ	Ô	×	#Ò	# AÑ	&Ô	&€BÝ�r”zÐ#5Ð#5Ð#5Ñ6Ô6Ð6Ý�r”zÐ#5Ð#5Ð#5Ñ6Ô6Ð6Ð6Ð6r$   c           	      óþ  — t          j        ddgddgddgddgddgddgg| ¬	¦  «        }h d
£}t          |dd¦  «        }t          d„ |D ¦   «         ¦  «        }t	          |                     |¦  «        ¦  «        dk    sJ ‚ddh}t          |dd¦  «        }t          d„ |D ¦   «         ¦  «        }t	          |                     |¦  «        ¦  «        dk    sJ ‚t          j        d¬¦  «        5  t          |dd¦  «        }d d d ¦  «         n# 1 swxY w Y   t          ||¦  «         t          ddddgddggdd¬¦  «        \  }}| 
                    | d¬¦  «        }t          |d¦  «        }t          |ddgddgg¦  «         d S )Nç      ð?gffffffö?gÍÌÌÌÌÌü?r7   ç       @gÍÌÌÌÌÌ @gš™™™™™ñ?r/   rh   >   ©r/   r/   ©rn   rm   ©rm   rm   r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S ©N©Útuple©Ú.0Úps     r"   ú	<genexpr>z!test_bin_seeds.<locals>.<genexpr>�   ó(   è è € Ð2Ð2 1•e˜A‘h”hÐ2Ð2Ð2Ð2Ð2Ð2r$   r   rq   rp   r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rs   rt   rv   s     r"   ry   z!test_bin_seeds.<locals>.<genexpr>¤   rz   r$   T)Úrecordg{®Gáz„?éd   rZ   )r   r   r   r   r   Fr,   )r   rN   r   Úsetr=   Úsymmetric_differenceÚwarningsÚcatch_warningsr	   r   r1   r
   )r5   r'   Úground_truthÚ	test_binsÚtest_resultrP   s         r"   Útest_bin_seedsr…   �   s  € õ 	ŒØ
ˆsˆ�c˜3�Z # s ¨c°3¨Z¸#¸s¸ÀcÈ3ÀZÐPØð	ñ 	ô 	€Að 8Ð7Ð7€LÝ˜a  AÑ&Ô&€IÝÐ2Ð2¨	Ð2Ñ2Ô2Ñ2Ô2€KÝˆ|×0Ò0°Ñ=Ô=Ñ>Ô>À!ÒCÐCÐCÐCð  
Ð+€LÝ˜a  AÑ&Ô&€IÝÐ2Ð2¨	Ð2Ñ2Ô2Ñ2Ô2€KÝˆ|×0Ò0°Ñ=Ô=Ñ>Ô>À!ÒCÐCÐCÐCõ 
Ô	 ¨Ð	-Ñ	-Ô	-ð .ð .Ý! ! T¨1Ñ-Ô-ˆ	ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .å�I˜qÑ!Ô!Ð!õ ØØØ�Q�˜!˜Q˜Ð ØØðñ ô �D€A€qð 	
�Š� EˆÑ*Ô*€AÝ˜a Ñ#Ô#€IÝ�y A q 6¨A¨q¨6Ð"2Ñ3Ô3Ð3Ð3Ð3s   Ã*DÄDÄDr   r}   c                 óX  — t          t          | ¬¦  «        \  }}t          | ¬¦  «                             t          ¦  «        }|j        }|j        |j        k    sJ ‚t          |¦  «        t          |¦  «        k    sJ ‚t          ||¦  «        D ]\  }}t          j
        ||¦  «        sJ ‚Œd S )N)r   )r   r'   r   r   r>   r   r   r=   Úzipr   Úallclose)r   Ú	clusters1rP   rB   Ú	clusters2ri   rj   s          r"   Útest_max_iterr‹   º   s²   € å�a¨(Ð3Ñ3Ô3�L€IˆqÝ	˜HÐ	%Ñ	%Ô	%×	)Ò	)­!Ñ	,Ô	,€BØÔ#€IàŒ:˜œÒ$Ð$Ð$Ð$Ýˆy‰>Œ>�S ™^œ^Ò+Ð+Ð+Ð+å�i Ñ+Ô+ð #ð #‰ˆˆBÝŒ{˜2˜rÑ"Ô"Ð"Ð"Ð"Ð"ð#ð #r$   c                 óX  — t          j        g d¢| ¬¦  «                             dd¦  «        }t          |¦  «        }|dk    sJ ‚t	          ||¬¦  «        |u sJ ‚t          dd ¬¦  «                             |¦  «        }t          d	¬
¦  «                             |¦  «        }t          j        g d¢¦  «        }t          |j        |¦  «        t          j
        d¦  «        k    sJ ‚t          |j        |¦  «        t          j
        d¦  «        k    sJ ‚t          |j        |j        ¦  «         d S )N)r   r   r   r   r   r   r   r   rh   r   r   r   )Úbin_sizeT)Úbin_seedingr)   F)rŽ   )r   r   r   r   r   r   r   r   )r   rN   r   r   r   r   r   r   r;   r3   r4   r	   r>   )r5   r'   r)   Ú
ms_binningÚms_nobinningÚexpected_labelss         r"   Útest_mean_shift_zero_bandwidthr’   Ç   s-  € å
ŒÐ)Ð)Ð)°Ð>Ñ>Ô>×FÒFÀrÈ1ÑMÔM€Aõ # 1Ñ%Ô%€IØ˜Š>ˆ>ˆ>ˆ>õ ˜ YÐ/Ñ/Ô/°1Ð4Ð4Ð4Ð4õ  t°tÐ<Ñ<Ô<×@Ò@ÀÑCÔC€JÝ¨Ð/Ñ/Ô/×3Ò3°AÑ6Ô6€LÝ”hÐ7Ð7Ð7Ñ8Ô8€Oå˜:Ô-¨Ñ?Ô?Å6Ä=ÐQRÑCSÔCSÒSÐSÐSÐSÝ˜<Ô/°ÑAÔAÅVÄ]ÐSTÑEUÔEUÒUÐUÐUÐUÝ�JÔ/°Ô1NÑOÔOÐOÐOÐOr$   )%Ú__doc__r€   Únumpyr   r3   Úsklearn.clusterr   r   r   r   Úsklearn.datasetsr   Úsklearn.metricsr   Úsklearn.utils._testingr	   r
   Ú
n_clustersrN   r   r'   rP   r#   r*   r6   ÚmarkÚparametrizerJ   Úthread_unsaferS   rX   r`   rc   rk   r…   r‹   r’   © r$   r"   ú<module>rž      s  ððð ð
 €€€à Ð Ð Ð Ø €€€à TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø +Ð +Ð +Ð +Ð +Ð +Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fà€
Ø
ˆ"Œ(�Q˜�F˜R ˜H q¨" gÐ.Ñ
/Ô
/°"Ñ
4€Ø€zØØØØØØðñ ô �€€1ð#ð #ð #ð#ð #ð #ð5ð 5ð 5ð „×ÒØ;ØÐ+Ð,ñô ð1ð 1ñ	ô ð1ð2 „Ôð1ð 1ñ Ôð1ð0(ð (ð (ð
ð 
ð 
ð&ð &ð &ð7ð 7ð 7ð'4ð '4ð '4ðT „×Ò˜ a¨ XÑ.Ô.ð	#ð 	#ñ /Ô.ð	#ðPð Pð Pð Pð Pr$   