
    -i              	          S r SSKrSSKrSSKrSSKJrJrJrJ	r	  SSK
Jr  SSKJr  SSKJrJr  Sr\R$                  " SS/S	S	/SS	//5      S
-   r\" SS\SSSS9u  rrS rS rS r\R2                  R5                  SSS/5      S 5       rS rS rS rS rS r S r!\R2                  R5                  SSS/5      S  5       r"S! r#g)"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                      [        5       n U R                  [        R                  " S5      R	                  SS5      5      R
                  nXR                  :  d   eg )Nr   r   r   )r   fitnponesreshapen_iter_max_iter)modeln_iters     X/var/www/html/venv/lib/python3.13/site-packages/sklearn/cluster/tests/test_mean_shift.py$test_convergence_of_1d_constant_datar#      sD     KEYYrwwr{**2q12::FNN"""    c                  D    [        [        SS9n SU s=::  a  S::  d   e   eg )N   )r   g?g      ?)r   X	bandwidths    r"   test_estimate_bandwidthr*   %   s'    "14I)"s"""""r$   c                     [        [        R                  U SS9SSS9nUR                  [        R                  :X  d   eU[        R
                  " SSS9:X  d   eg )	NFcopyr   g333333?)r   quantile        gh㈵>)abs)r   r'   astypedtypepytestapprox)global_dtyper)   s     r"   test_estimate_bandwidth_1sampler6   +   sS     #	E*a#I ??agg%%%ct4444r$   z5bandwidth, cluster_all, expected, first_cluster_label)333333?Tr   r   )r7   F   r   c                    [         R                  U SS9n[        XS9nUR                  U5      R                  n[
        R                  " U5      n[        U5      n	X:X  d   eUS   U:X  d   eUR                  R                  U :X  d   e[        XRS9u  p[
        R                  " U5      n[        U5      nX:X  d   eUS   U:X  d   eU
R                  U :X  d   eg )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	@BVV'(00FIIf%Mm$K"""2222$$444)3*&O  "yy):; 89 ,,,#A&*====  L000r$   c           	         [         R                  " SS/SS/SS//5      S-   n[        SSUSSUS9u  p4UR                  U S	S
9n[	        SS9nUR                  U5        [	        5       nUR                  U5        [        UR                  UR                  5        UR                  R                  UR                  R                  :X  d   e[        UR                  UR                  5        g )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   Q   s    hhAR1b'23b8G'DA 	
E*A
1
CGGAJ
+CGGAJC((#*>*>?%%)=)=)C)CCCCs{{CKK0r$   c                     [        SS9n[        R                  U SS9nUR                  U5      nUR	                  U5      n[        X45        g )Nr7   r(   Fr,   )r   r'   r1   fit_predictpredictr
   )r5   rB   rA   rC   labels2s        r"   test_meanshift_predictrX   i   sE    	S	!B((<e(<^^/0Fjj,-Gv'r$   c                      [        SSS/SS//S9n Sn[        R                  " [        US9   U R	                  [
        5        S S S 5        g ! , (       d  f       g = f)N皙?ii)r)   seedsz!No point was within bandwidth=0.1)match)r   r3   raises
ValueErrorr   r'   )rB   msgs     r"   test_meanshift_all_orphansr`   r   sI    	S"bC:(>	?B
-C	z	-
	
 
.	-	-s   A
Ac                  d    [        5       n [        U S5      (       a   e[        U S5      (       a   eg )Nr>   r;   )r   hasattr)rB   s    r"   test_unfittedrc   |   s3    	Br-....r9%%%%%r$   c           	      `   [         R                  " SS/SS/SS/SS/SS/SS//U S	9n[        SS
9R                  U5      n[         R                  " SS/SS/SS/SS/SS/SS//U S	9n[        SS
9R                  U5      n[	        UR
                  / SQ5        [	        UR
                  / SQ5        g )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    
1a&1a&1a&1a&1a&1a&AVA	Q		#	#A	&B
1a&1a&1a&1a&1a&1a&AVA	Q		#	#A	&Brzz#56rzz#56r$   c           	      p   [         R                  " SS/SS/SS/SS/SS/SS//U S	9n1 S
kn[        USS5      n[        S U 5       5      n[	        UR                  U5      5      S:X  d   eSS1n[        USS5      n[        S U 5       5      n[	        UR                  U5      5      S:X  d   e[        R                  " SS9   [        USS5      nS S S 5        [        X15        [        SSSS/SS//SSS9u  pUR                  U SS9n[        US5      n[        USS/SS//5        g ! , (       d  f       N]= f)N      ?gffffff?g?r7          @g @g?r/   rh   >   r/   r/   rn   rm   rm   rm   r   c              3   8   #    U  H  n[        U5      v   M     g 7fNtuple.0ps     r"   	<genexpr>!test_bin_seeds.<locals>.<genexpr>        2	1eAhh	   r   rq   rp   r   c              3   8   #    U  H  n[        U5      v   M     g 7frs   rt   rv   s     r"   ry   rz      r{   r|   T)recordg{Gz?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c3Z#sc3Z#sc3ZP	A 8LaA&I2	22K|00=>!CCC 
+LaA&I2	22K|00=>!CCC 
	 	 	-!!T1-	 
.I! Q!Q DA 	
E*Aa#IyAq6Aq6"23 
.	-s   D''
D5r   r   c                 B   [        [        U S9u  p[        U S9R                  [        5      nUR                  nUR
                  UR                  ::  d   e[        U5      [        U5      :X  d   e[        X5       H"  u  pV[        R                  " XV5      (       a  M"   e   g )N)r   )r   r'   r   r   r>   r   r   r=   zipr   allclose)r   	clusters1rP   rB   	clusters2ri   rj   s          r"   test_max_iterr      s    a(3LI	H	%	)	)!	,B##I::$$$y>S^+++i+{{2"""" ,r$   c                 &   [         R                  " / SQU S9R                  SS5      n[        U5      nUS:X  d   e[	        XS9UL d   e[        SS S9R                  U5      n[        S	S
9R                  U5      n[         R                  " / SQ5      n[        UR                  U5      [        R                  " S5      :X  d   e[        UR                  U5      [        R                  " S5      :X  d   e[        UR                  UR                  5        g )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Fr1MA #1%I>> /1444 tt<@@CJ/33A6Lhh78O:--?6==QRCSSSS<//AV]]STEUUUUJ//1N1N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   rS   rX   r`   rc   rk   r   r   r    r$   r"   <module>r      s   
    T T ' + F

((QFRHq"g.
/"
41##5 ;+,1	1.10(
&7'4T aX.	# /	#Pr$   