o
    tBhO                     @   s`  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dlmZ dZeddgddgddggd Zeddedddd\ZZdd Zdd Zejdddgdd Zd d! Zd"d# Zd$d% Z d&d' Z!d(d) Z"d*d+ Z#d,d- Z$d.d/ Z%ejd0dd1gd2d3 Z&d4d5 Z'dS )6z,
Testing for mean shift clustering methods

    N)sparse)assert_array_equal)assert_array_almost_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                  C   s,   t tdd} d|   krdksJ  J d S )N   )r   g?g      ?)r   X	bandwidth r   |/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/cluster/tests/test_mean_shift.pytest_estimate_bandwidth$   s    r    c                  C   s(   t tddd} | tjdddksJ d S )Nr   g333333?)r   quantile        gh㈵>)abs)r   r   pytestapproxr   r   r   r   test_estimate_bandwidth_1sample*   s   r&   z5bandwidth, cluster_all, expected, first_cluster_label)333333?Tr   r   )r'   F   r   c                 C   s   t | |d}|tj}t|}t|}||ksJ |d |ks#J tt|d\}}	t|	}
t|
}||ks:J |
d |ksBJ d S )N)r   cluster_allr   )r)   )r   fitr   labels_npuniquelenr   )r   r)   expectedfirst_cluster_labelmslabelslabels_uniquen_clusters_cluster_centerslabels_mean_shiftlabels_mean_shift_uniquen_clusters_mean_shiftr   r   r   test_mean_shift1   s   

r9   c                  C   sP   d} t | d}d}tjt|d |t W d    d S 1 s!w   Y  d S )Nr   r   z?bandwidth needs to be greater than zero or None, got -1\.000000matchr   r$   raises
ValueErrorr*   r   )r   r1   msgr   r   r   "test_mean_shift_negative_bandwidthE   s   
"r@   c                  C   sJ   t d} d}tjt|d t|  W d    d S 1 sw   Y  d S )N)  rA   z7A sparse matrix was passed, but dense data is required.r:   )r   
lil_matrixr$   r=   	TypeErrorr   )r   r?   r   r   r   *test_estimate_bandwidth_with_sparse_matrixM   s
   

"rD   c                  C   s|   t ddgddgddggd } tdd| dddd	\}}tdd
}|| t }|| t|j|j t|j|j d S )Nr   r   r   2   r   r   Tr   r   )n_jobs)	r,   arrayr
   r   r*   r   cluster_centers_r   r+   )r   r   _ms1ms2r   r   r   test_parallelU   s    

	

rL   c                  C   s,   t dd} | t}| t}t|| d S )Nr'   r   )r   fit_predictr   predictr   )r1   r2   labels2r   r   r   test_meanshift_predictj   s   


rP   c                  C   sZ   t dddgddggd} d}tjt|d | t W d    d S 1 s&w   Y  d S )N皙?ii)r   seedsz!No point was within bandwidth=0.1r:   r<   )r1   r?   r   r   r   test_meanshift_all_orphansr   s   "rS   c                  C   s&   t  } t| dr
J t| drJ d S )NrH   r+   )r   hasattr)r1   r   r   r   test_unfitted|   s   rU   c               	   C   s   t ddgddgddgddgddgddgg} tdd	| }t ddgddgddgddgddgddgg} td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,   rG   r   r*   r   r+   )r   c1c2r   r   r   test_cluster_intensity_tie   s   ..r[   c               	   C   s.  t 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 |D }t||dks5J ddh}t| d
d}tdd |D }t||dksSJ tjdd t| dd
}W d    n1 sjw   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"   >   r"   r"   r]   r\   r\   r\   r   c                 s       | ]}t |V  qd S Ntuple.0pr   r   r   	<genexpr>       z!test_bin_seeds.<locals>.<genexpr>r   r`   r_   r   c                 s   ra   rb   rc   re   r   r   r   rh      ri   T)recordg{Gz?d   rQ   )r   r   r   r   r   )r,   rG   r	   setr.   symmetric_differencewarningscatch_warningsr   r
   r   )r   ground_truth	test_binstest_resultrI   r   r   r   test_bin_seeds   s0   &


rs   max_iterrk   c                 C   sr   t t| d\}}t| dt}|j}|j|jksJ t|t|ks%J t||D ]\}}t	
||s6J q*d S )N)rt   )r   r   r   r*   rH   n_iter_rt   r.   zipr,   allclose)rt   	clusters1rI   r1   	clusters2rY   rZ   r   r   r   test_max_iter   s   rz   c                  C   s   t g ddd} t| }|dksJ t| |d| u sJ tdd d| }tdd	| }t g d
}t|j|dksAJ t|j|dksKJ t	|j
|j
 d S )N)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   )r,   rG   reshaper   r	   r   r*   r   r+   r   rH   )r   r   
ms_binningms_nobinningexpected_labelsr   r   r   test_mean_shift_zero_bandwidth   s   r   )(__doc__numpyr,   rn   r$   scipyr   sklearn.utils._testingr   r   r   sklearn.clusterr   r   r   r	   sklearn.datasetsr
   sklearn.metricsr   
n_clustersrG   r   r   rI   r    r&   markparametrizer9   r@   rD   rL   rP   rS   rU   r[   rs   rz   r   r   r   r   r   <module>   sT     




(
