
    h$,fT                        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ej0                  j3                  dddg      d        Zd Zd Zd Zd Zd Zd Z ej0                  j3                  dddg      d        Z!d  Z"y)!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                  F    t        t        d      } d| cxk  rdk  sJ  J y )N   )r   g?g      ?)r   X	bandwidths    Elib/python3.12/site-packages/sklearn/cluster/tests/test_mean_shift.pytest_estimate_bandwidthr      s'    "14I)"s"""""    c                     t        t        j                  | d      dd      }|j                  t        j                  k(  sJ |t	        j
                  dd      k(  sJ y )	NFcopyr   g333333?)r   quantile        gh㈵>)abs)r   r   astypedtypepytestapprox)global_dtyper   s     r   test_estimate_bandwidth_1sampler,   "   sS     #	E*a#I ??agg%%%ct4444r    z5bandwidth, cluster_all, expected, first_cluster_label)333333?Tr   r   )r-   F   r   c                    t         j                  | d      }t        ||      }|j                  |      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 y )NFr"   )r   cluster_allr   )r0   )r   r'   r   fitlabels_npuniquelencluster_centers_r(   r   )r+   r   r0   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_shiftrB   -   s     ((<e(<	YK	@BVV'(00FIIf%Mm$K("""2222$$444)3*&O&  "yy):; 89 H,,,#A&*====  L000r    c                    t        j                  ddgddgddgg      dz   }t        dd|ddd	      \  }}|j                  | d
      }t	        d      }|j                  |       t	               }|j                  |       t        |j                  |j                         |j                  j                  |j                  j                  k(  sJ t        |j                  |j                         y )Nr   r   r   2   r   r   Tr   r   Fr"   )n_jobs)r3   arrayr   r'   r   r1   r	   r6   r(   r
   r2   )r+   r   r   _ms1ms2s         r   test_parallelrJ   H   s    hhAR1b'23b8GDAq 	
E*A
1
CGGAJ
+CGGAJC((#*>*>?%%)=)=)C)CCCCs{{CKK0r    c                     t        d      }t        j                  | d      }|j                  |      }|j	                  |      }t        ||       y )Nr-   r   Fr"   )r   r   r'   fit_predictpredictr
   )r+   r:   r9   r;   labels2s        r   test_meanshift_predictrO   `   sG    	S	!B((<e(<^^/0Fjj,-Gvw'r    c                      t        dddgddgg      } d}t        j                  t        |      5  | j	                  t
               d d d        y # 1 sw Y   y xY w)N皙?ii)r   seedsz!No point was within bandwidth=0.1)match)r   r)   raises
ValueErrorr1   r   )r:   msgs     r   test_meanshift_all_orphansrW   i   sR    	S"bC:(>	?B
-C	z	- 

	

 
 
s   AAc                  P    t               } t        | d      rJ t        | d      rJ y )Nr6   r2   )r   hasattr)r:   s    r   test_unfittedrZ   s   s-    	Br-...r9%%%%r    c           	      t   t        j                  ddgddgddgddgddgddgg| 	      }t        d
      j                  |      }t        j                  ddgddgddgddgddgddgg| 	      }t        d
      j                  |      }t	        |j
                  g d       t	        |j
                  g d       y )Nr   r   r   r.      r         r(   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r3   rF   r   r1   r
   r2   )r+   r   c1c2s       r   test_cluster_intensity_tierb   z   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           	      z   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	        |j                  |            dk(  sJ ddh}t        |dd      }t        d |D              }t	        |j                  |            dk(  sJ t        j                  d      5  t        |dd      }d d d        t        ||       t        ddddgddggdd      \  }}|j                  | d      }t        |d      }t        |ddgddgg       y # 1 sw Y   `xY w)N      ?gffffff?g?r-          @g @g?r%   r_   >   r%   r%   re   rd   rd   rd   r   c              3   2   K   | ]  }t        |        y wNtuple.0ps     r   	<genexpr>z!test_bin_seeds.<locals>.<genexpr>        21eAh2   r   rh   rg   r   c              3   2   K   | ]  }t        |        y wrj   rk   rm   s     r   rp   z!test_bin_seeds.<locals>.<genexpr>   rq   rr   T)recordg{Gz?d   rQ   )r   r   r   r   r   Fr"   )r3   rF   r   setr5   symmetric_differencewarningscatch_warningsr	   r   r'   r
   )r+   r   ground_truth	test_binstest_resultrG   s         r   test_bin_seedsr}      sh    	
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-	.Iq! Q!Q DAq 	
E*Aa#IyAq6Aq6"23. .s   D11D:max_iterru   c                 B   t        t        |       \  }}t        |       j                  t              }|j                  }|j
                  |j                  k  sJ t        |      t        |      k(  sJ t        ||      D ]  \  }}t        j                  ||      rJ  y )N)r~   )r   r   r   r1   r6   n_iter_r~   r5   zipr3   allclose)r~   	clusters1rG   r:   	clusters2r`   ra   s          r   test_max_iterr      s    a(3LIq	H	%	)	)!	,B##I::$$$y>S^+++i+ #B{{2r"""#r    c                 0   t        j                  g d|       j                  dd      }t        |      }|dk(  sJ t	        ||      |u sJ t        dd       j                  |      }t        d	
      j                  |      }t        j                  g d      }t        |j                  |      t        j                  d      k(  sJ t        |j                  |      t        j                  d      k(  sJ t        |j                  |j                         y )N)r   r   r   r   r   r   r   r   r_   r   r   r   )bin_sizeT)bin_seedingr   F)r   )r   r   r   r   r   r   r   r   )r3   rF   reshaper   r   r   r1   r   r2   r)   r*   r	   r6   )r+   r   r   
ms_binningms_nobinningexpected_labelss         r   test_mean_shift_zero_bandwidthr      s    
)>FFr1MA #1%I>> Y/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__rx   numpyr3   r)   sklearn.clusterr   r   r   r   sklearn.datasetsr   sklearn.metricsr   sklearn.utils._testingr	   r
   
n_clustersrF   r   r   rG   r   r,   markparametrizerB   rJ   rO   rW   rZ   rb   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    