a
    h                     @   s   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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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!ejd(dd)gd*d+ Z"d,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                  C   s2   t  } | tdddj}|| jk s.J d S )Nr   r   r   )r   fitnpZonesreshapen_iter_max_iter)modelZn_iter r   a/var/www/html/assistant/venv/lib/python3.9/site-packages/sklearn/cluster/tests/test_mean_shift.py$test_convergence_of_1d_constant_data   s    r    c                  C   s*   t tdd} d|   kr dks&n J d S )N   )r   g?g      ?)r   X	bandwidthr   r   r   test_estimate_bandwidth%   s    r%   c                 C   sB   t tj| ddddd}|jtjks(J |tjdddks>J d S )	NFcopyr   g333333?)r   Zquantile        gh㈵>)abs)r   r"   astypedtypepytestapprox)global_dtyper$   r   r   r   test_estimate_bandwidth_1sample+   s
    r/   z5bandwidth, cluster_all, expected, first_cluster_label)333333?Tr
   r   )r0   F   r   c                 C   s   t j| dd}t||d}||j}t|}t|}	|	|ksDJ |d |ksTJ |jj	| ksdJ t
||d\}
}t|}t|}||ksJ |d |ksJ |
j	| ksJ d S )NFr&   )r$   cluster_allr   )r2   )r"   r*   r   r   labels_r   uniquelencluster_centers_r+   r   )r.   r$   r2   expectedZfirst_cluster_labelX_with_global_dtypemslabelsZlabels_uniqueZn_clusters_Zcluster_centersZlabels_mean_shiftZlabels_mean_shift_uniqueZn_clusters_mean_shiftr   r   r   test_mean_shift6   s     


r;   c                 C   s   t ddgddgddggd }tdd|dddd	\}}|j| d
d}tdd}|| t }|| t|j|j |jj|jjksJ t	|j
|j
 d S )Nr   r   r   2   r   r   Tr   r   Fr&   )Zn_jobs)r   arrayr   r*   r   r   r   r6   r+   r	   r3   )r.   r   r"   _Zms1Zms2r   r   r   test_parallelQ   s"     
	


r?   c                 C   s:   t dd}tj| dd}||}||}t|| d S )Nr0   r#   Fr&   )r   r"   r*   Zfit_predictZpredictr	   )r.   r9   r8   r:   Zlabels2r   r   r   test_meanshift_predicti   s
    


r@   c                  C   sX   t dddgddggd} d}tjt|d | t W d    n1 sJ0    Y  d S )N皙?ii)r$   Zseedsz!No point was within bandwidth=0.1)match)r   r,   Zraises
ValueErrorr   r"   )r9   msgr   r   r   test_meanshift_all_orphansr   s    rE   c                  C   s&   t  } t| drJ t| dr"J d S )Nr6   r3   )r   hasattr)r9   r   r   r   test_unfitted|   s    rG   c                 C   s   t jddgddgddgddgddgddgg| d	}tdd
|}t jddgddgddgddgddgddgg| d	}tdd
|}t|jg d t|jg d d S )Nr   r   r   r1      r
         r+   r#   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r=   r   r   r	   r3   )r.   r"   c1c2r   r   r   test_cluster_intensity_tie   s    22rN   c                 C   s@  t jddgddgddgddgddgddgg| d	}h d
}t|dd}tdd |D }t||dksnJ ddh}t|dd}tdd |D }t||dksJ tjdd t|dd}W d    n1 s0    Y  t|| t	ddddgddggddd\}}|j
| dd}t|d}t|ddgddgg d S )N      ?gffffff?g?r0          @g @g?r(   rK   >   rO   rO   rP   rO   )r(   r(   r   c                 s   s   | ]}t |V  qd S Ntuple.0pr   r   r   	<genexpr>       z!test_bin_seeds.<locals>.<genexpr>r   rQ   rR   r   c                 s   s   | ]}t |V  qd S rS   rT   rV   r   r   r   rY      rZ   T)recordg{Gz?d   rA   )r   r   r   r   r   Fr&   )r   r=   r   setr5   symmetric_differencewarningscatch_warningsr   r   r*   r	   )r.   r"   Zground_truthZ	test_binsZtest_resultr>   r   r   r   test_bin_seeds   s2    &*


ra   r   r\   c                 C   sr   t t| d\}}t| dt}|j}|j|jks6J t|t|ksJJ t||D ]\}}t	
||sTJ qTd S )N)r   )r   r"   r   r   r6   r   r   r5   zipr   Zallclose)r   Z	clusters1r>   r9   Z	clusters2rL   rM   r   r   r   test_max_iter   s    rc   c                 C   s   t jg d| ddd}t|}|dks.J t||d|u sBJ tdd d|}td	d
|}t g d}t|j|t	
dksJ t|j|t	
dksJ t|j|j d S )N)r   r   r   r   r   r   r
   r
   rK   r   r   r   )Zbin_sizeT)bin_seedingr$   F)rd   )r   r   r   r   r   r   r   r   )r   r=   r   r   r   r   r   r   r3   r,   r-   r   r6   )r.   r"   r$   Z
ms_binningZms_nobinningZexpected_labelsr   r   r   test_mean_shift_zero_bandwidth   s    re   )$__doc__r_   numpyr   r,   Zsklearn.clusterr   r   r   r   Zsklearn.datasetsr   Zsklearn.metricsr   Zsklearn.utils._testingr   r	   Z
n_clustersr=   r   r"   r>   r    r%   r/   markZparametrizer;   r?   r@   rE   rG   rN   ra   rc   re   r   r   r   r   <module>   sD    

	
	

*
