
    0Ph                        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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     e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/cluster/tests/test_mean_shift.py$test_convergence_of_1d_constant_datar#      sR     KKEYYrwr{{**2q1122:FEN""""""    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4I)""""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        gh㈵>)abs)r   r'   astypedtypepytestapprox)global_dtyper)   s     r"   test_estimate_bandwidth_1sampler6   +   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   )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(<<	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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)r   arrayr   r1   r   r   r	   r>   r2   r
   r;   )r5   r   r'   _ms1ms2s         r"   test_parallelrR   Q   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 )Nr7   r(   Fr,   )r   r'   r1   fit_predictpredictr
   )r5   rB   rA   rC   labels2s        r"   test_meanshift_predictrW   i   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.1)match)r   r3   raises
ValueErrorr   r'   )rB   msgs     r"   test_meanshift_all_orphansr_   r   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_unfittedrb   |   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   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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?r7          @g @g?r/   rg   >   r/   r/   rm   rl   rl   rl   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   rp   ro   r   c              3   4   K   | ]}t          |          V  d S rr   rs   ru   s     r"   rx   z!test_bin_seeds.<locals>.<genexpr>   ry   r$   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      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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   	clusters1rO   rB   	clusters2rh   ri   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   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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__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 T T T T T T T T T T ' ' ' ' ' ' + + + + + + F F F F F F F F

"(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$   