
    _nd                        d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddl
mZ ddl
mZ dd	l
mZ dd
lmZ ddl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j                            dddg          d             Zd Z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)sparse)assert_array_equal)assert_allclose)	MeanShift)
mean_shift)estimate_bandwidth)get_bin_seeds)
make_blobs)v_measure_score      
   i,     皙?T   	n_samples
n_featurescenterscluster_stdshufflerandom_statec                  T    t          t          d          } d| cxk    rdk    sn J d S )N   )r   g?g      ?)r   X	bandwidths    Elib/python3.11/site-packages/sklearn/cluster/tests/test_mean_shift.pytest_estimate_bandwidthr    #   s?    "1444I)""""s""""""""    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        gh㈵>)abs)r   r   astypedtypepytestapprox)global_dtyper   s     r   test_estimate_bandwidth_1sampler-   )   sl     #	E**a#  I ?ag%%%%ct444444444r!   z5bandwidth, cluster_all, expected, first_cluster_label)333333?Tr   r   )r.   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   )r1   )r   r(   r   fitlabels_npuniquelencluster_centers_r)   r   )r,   r   r1   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_shiftrC   4   s    ((<e(<<	YK	@	@	@BVV'((0FIf%%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}t          j        t          |          5  t          |            d d d            d S # 1 swxY w Y   d S )N)  rE   z7A sparse matrix was passed, but dense data is required.match)r   
lil_matrixr*   raises	TypeErrorr   )r   msgs     r   *test_estimate_bandwidth_with_sparse_matrixrL   O   s    ,''A
CC	y	,	,	,  1                 s   AAAc                    t          j        ddgddgddgg          dz   }t          d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   r   Fr#   )n_jobs)r4   arrayr
   r(   r   r2   r   r7   r)   r   r3   )r,   r   r   _ms1ms2s         r   test_parallelrT   W   s    hAR1b'233b8G  DAq 	
E**A
1


CGGAJJJ
++CGGAJJJC(#*>???%)=)CCCCCs{CK00000r!   c                     t          d          }t                              | d          }|                    |          }|                    |          }t          ||           d S )Nr.   r   Fr#   )r   r   r(   fit_predictpredictr   )r,   r;   r:   r<   labels2s        r   test_meanshift_predictrY   o   sb    	S	!	!	!B((<e(<<^^/00Fjj,--Gvw'''''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皙?ii)r   seedsz!No point was within bandwidth=0.1rF   )r   r*   rI   
ValueErrorr2   r   )r;   rK   s     r   test_meanshift_all_orphansr^   x   s    	S"bC:(>	?	?	?B
-C	z	-	-	- 
 

	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   AA!$A!c                  j    t                      } t          | d          rJ t          | d          rJ d S )Nr7   r3   )r   hasattr)r;   s    r   test_unfittedra      s>    	Br-.....r9%%%%%%%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   r/      r         r)   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r4   rP   r   r2   r   r3   )r,   r   c1c2s       r   test_cluster_intensity_tieri      s    
1a&1a&1a&1a&1a&1a&AVVVA	Q				#	#A	&	&B
1a&1a&1a&1a&1a&1a&AVVVA	Q				#	#A	&	&Brz#5#5#5666rz#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?r.          @g @g?r&   rf   >   r&   r&   rl   rk   rk   rk   r   c              3   4   K   | ]}t          |          V  d S Ntuple.0ps     r   	<genexpr>z!test_bin_seeds.<locals>.<genexpr>   (      221eAhh222222r!   r   ro   rn   r   c              3   4   K   | ]}t          |          V  d S rq   rr   rt   s     r   rw   z!test_bin_seeds.<locals>.<genexpr>   rx   r!   T)recordg{Gz?d   r[   )r   r   r   r   r   Fr#   )r4   rP   r	   setr6   symmetric_differencewarningscatch_warningsr   r
   r(   r   )r,   r   ground_truth	test_binstest_resultrQ   s         r   test_bin_seedsr      s    	
sc3Z#sc3Z#sc3ZP	 	 	A 877LaA&&I22	22222K|00==>>!CCCC 
+LaA&&I22	22222K|00==>>!CCCC 
	 	-	-	- . .!!T1--	. . . . . . . . . . . . . . .Iq!!! Q!Q   DAq 	
E**Aa##IyAq6Aq6"233333s   *DDDmax_iterr{   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   r2   r7   n_iter_r   r6   zipr4   allclose)r   	clusters1rQ   r;   	clusters2rg   rh   s          r   test_max_iterr      s    a(333LIq	H	%	%	%	)	)!	,	,B#I:$$$$y>>S^^++++i++ # #B{2r""""""# #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   rf   r   r   r   )bin_sizeT)bin_seedingr   F)r   )r   r   r   r   r   r   r   r   )r4   rP   reshaper   r	   r   r2   r   r3   r*   r+   r   r7   )r,   r   r   
ms_binningms_nobinningexpected_labelss         r   test_mean_shift_zero_bandwidthr      s-   
)))>>>FFr1MMA #1%%I>>>> Y///14444 tt<<<@@CCJ///33A66Lh77788O:-??6=QRCSCSSSSS</AAV]STEUEUUUUUJ/1NOOOOOr!   )&__doc__numpyr4   r~   r*   scipyr   sklearn.utils._testingr   r   sklearn.clusterr   r   r   r	   sklearn.datasetsr
   sklearn.metricsr   
n_clustersrP   r   r   rQ   r    r-   markparametrizerC   rL   rT   rY   r^   ra   ri   r   r   r    r!   r   <module>r      sA   
             5 5 5 5 5 5 2 2 2 2 2 2 % % % % % % & & & & & & . . . . . . ) ) ) ) ) ) ' ' ' ' ' ' + + + + + + 

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