
    >[g                        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j2                  j5                  dddg      d        Zd Zd Zd Zd Zd Z d Z!ej2                  j5                  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                      t               } | j                  t        j                  d      j	                  dd            j
                  }|| j                  k  sJ y )Nr   r   r   )r   fitnponesreshapen_iter_max_iter)modeln_iters     `/var/www/html/bid-api/venv/lib/python3.12/site-packages/sklearn/cluster/tests/test_mean_shift.py$test_convergence_of_1d_constant_datar#      sF     KEYYrwwr{**2q12::FENN"""    c                  F    t        t        d      } d| cxk  rdk  sJ  J y )N   )r   g?g      ?)r   X	bandwidths    r"   test_estimate_bandwidthr*   %   s'    "14I)"s"""""r$   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_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                    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   )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(<	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)r   arrayr   r1   r   r   r	   r>   r2   r
   r;   )r5   r   r'   _ms1ms2s         r"   test_parallelrR   Q   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 )Nr7   r(   Fr,   )r   r'   r1   fit_predictpredictr
   )r5   rB   rA   rC   labels2s        r"   test_meanshift_predictrW   i   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   r3   raises
ValueErrorr   r'   )rB   msgs     r"   test_meanshift_all_orphansr_   r   sI    	S"bC:(>	?B
-C	z	-
	
 
.	-	-s   AAc                  P    t               } t        | d      rJ t        | d      rJ y )Nr>   r;   )r   hasattr)rB   s    r"   test_unfittedrb   |   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   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_tierj      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?r7          @g @g?r/   rg   >   r/   r/   rm   rl   rl   rl   r   c              3   2   K   | ]  }t        |        y wNtuple.0ps     r"   	<genexpr>z!test_bin_seeds.<locals>.<genexpr>        2	1eAh	   r   rp   ro   r   c              3   2   K   | ]  }t        |        y wrr   rs   ru   s     r"   rx   z!test_bin_seeds.<locals>.<genexpr>   ry   rz   T)recordg{Gz?d   rY   )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_resultrO   s         r"   test_bin_seedsr      sa    	
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:r   r}   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   r   r>   r   r   r=   zipr   allclose)r   	clusters1rO   rB   	clusters2rh   ri   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   rg   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>> 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__r   numpyr   r3   sklearn.clusterr   r   r   r   sklearn.datasetsr   sklearn.metricsr   sklearn.utils._testingr	   r
   
n_clustersrN   r   r'   rO   r#   r*   r6   markparametrizerJ   rR   rW   r_   rb   rj   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$   