o
    tBh>&                     @   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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eddiedfeddiedfeddiedfeddiedfed d!ied"fed#d d$ied%fgd&d' Zd(d) Z d*d+ Z!d,d- Z"d.d/ Z#d0d1 Z$d2d3 Z%d4d5 Z&d6d7 Z'ejd8ee(d9e(d9gd:d; Z)d<d= Z*d>d? Z+d@dA Z,dS )Bz!
Testing for Clustering methods

    N)
csr_matrix)ConvergenceWarning)assert_array_equal)AffinityPropagation)#_equal_similarities_and_preferences)affinity_propagation)
make_blobs)euclidean_distances      
   <      g?T)	n_samples
n_featurescenterscluster_stdshufflerandom_statec            	      C   s   t tdd } t| d }t| |dd\}}t|}t|ks!J t|ddd}|| j	}t|dd	d
}|tj	}t
|| |j}t|}t|j|ksQJ t|ksWJ t| |ddd\}}t
|| d S )NTsquaredr   '   
preferencer   precomputed   r   affinityr   %   )r   verboser   FJ   )r   copyr   )r	   Xnpmedianr   len
n_clustersr   fitlabels_r   cluster_centers_indices_uniquesize)	Sr   cluster_centers_indiceslabelsn_clusters_aflabels_precomputed_labels_no_copy r5   /var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/cluster/tests/test_affinity_propagation.pytest_affinity_propagation!   s,   


r7   c                  C   s^   t tdd } d}tjt|d t| ddddf  W d   dS 1 s(w   Y  dS )zHCheck the shape of the affinity matrix when using `affinity_propagation.Tr   zS must be a square arraymatchNr   )r	   r#   pytestraises
ValueErrorr   )r-   err_msgr5   r5   r6   (test_affinity_propagation_affinity_shapeF   s
   "r>   z input, params, err_type, err_msgdampingzdamping == 0, must be >= 0.5zdamping == 2, must be < 1max_iterzmax_iter == 0, must be >= 1.convergence_iterz#convergence_iter == 0, must be >= 1r   unknownzAffinity must be)r
   r
   r   z6A sparse matrix was passed, but dense data is requiredc                 C   sH   t j||d tdi ||  W d   dS 1 sw   Y  dS )z9Check the parameters validation in `AffinityPropagation`.r8   Nr5   )r:   r;   r   r(   )inputparamserr_typer=   r5   r5   r6   +test_affinity_propagation_params_validationN   s   "rF   c                  C   s.   t ddd} | t}| t}t|| d S )N	euclidean?   r   r   )r   fit_predictr#   predictr   )r1   r/   labels2r5   r5   r6   !test_affinity_propagation_predictd   s   

rM   c                  C   s   t dd} tt | t W d    n1 sw   Y  tttj}t ddd} | 	| tt | t W d    d S 1 sGw   Y  d S )NrG   )r   r   9   rI   )
r   r:   r;   r<   rK   r#   r$   dotTr(   )r1   r-   r5   r5   r6   'test_affinity_propagation_predict_errorl   s   

"rQ   c                  C   s   t ddgddgddgg} tdddd}tt ||  W d    n1 s*w   Y  tt d|j	 tt g d|j
 d S )	Nr   r   R   r   r@   r   )r   r   r   r   r   )r$   arrayr   r:   warnsr   r(   r   emptycluster_centers_r)   )r#   r1   r5   r5   r6   -test_affinity_propagation_fit_non_convergence{   s   r[   c                  C   s>  t ddgddgg} t| dd }tjtdd t|dd\}}W d    n1 s,w   Y  tddg| tddg| tjtdd t|d	d\}}W d    n1 sYw   Y  tdg| tddg| t	  t
d
t t|dd	gdd\}}W d    n1 sw   Y  tdg| tddg| d S )Nr   r   Tr   zmutually equalr8   r   )r   rS   errorir   r   )r$   rW   r	   r:   rX   UserWarningr   r   warningscatch_warningssimplefilter)r#   r-   cluster_center_indicesr/   r5   r5   r6   3test_affinity_propagation_equal_mutual_similarities   s(   

rb   c                  C   s   t ddgddgddgg} tt tdddd| }W d    n1 s(w   Y  t ddgddgd	d	gg}tt ||}W d    n1 sPw   Y  tt g d
| d S )Nr   r   rR   rS   K   rU   r   r
      rV   )	r$   rW   r:   rX   r   r   r(   rK   r   )r#   r1   
to_predictyr5   r5   r6   1test_affinity_propagation_predict_non_convergence   s   rg   c                  C   s   t g dg dg dg} tdddd}d}tjt|d	 ||  W d    n1 s.w   Y  tt g d
|j d S )N)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   rG   r   "   )r   r@   r   zcAffinity propagation did not converge, this model may return degenerate cluster centers and labels.r8   )r   r   r   )	r$   rW   r   r:   rX   r   r(   r   r)   )r#   r1   msgr5   r5   r6   8test_affinity_propagation_non_convergence_regressiontest   s   rj   c                  C   s   t ddgddgddgg} t| dd }t|t drJ t|t ddgr+J t|t ddgr7J t ddgddgg} t| dd }t|t ddgrUJ t|t ddgsaJ t|t dskJ d S )Nr   r   rR   Tr   )r$   rW   r	   r   )r#   r-   r5   r5   r6   'test_equal_similarities_and_preferences   s   rk   c                  C   s   ddgddgddgg} t d| ddd\}}tdddd}|| |j}tddd	d}|| |j}t|| d dks@J d S )
Nr   r   i,  g      ?r   )r   r   r   r   r   )rA   r@   r   L   )r   r   r(   rZ   r$   mean)r   r#   labels_trueapcenters0	centers76r5   r5   r6   &test_affinity_propagation_random_state   s   


rr   r   )r   r   c                 C   s   t jd}|dd}d|d t}tdd}||| | |_t	
  t	dt t||t j|jd td	 W d
   d
S 1 sJw   Y  d
S )zNon-regression, see #13334*   (   r   rd   .   )r   r\   r   dtypeN)r$   randomRandomStaterandastypeintr   r(   rZ   r^   r_   r`   r   r   rK   zerosshape)r   rngr#   rf   ro   r5   r5   r6   :test_affinity_propagation_convergence_warning_dense_sparse   s   

""r   c                  C   sX   t jg dg dg dg dgdd} tdddd	| }t g d
}t|j| d S )N)r   r   r   r   )r   r   r   r   )r   r   r   r   float32rv   r   r   r   r   )r   r   r   r   )r$   rW   r   r(   r   r)   )r#   afpexpectedr5   r5   r6   !test_affinity_propagation_float32   s   r   c                  C   s2   t ddd} | t | td}t|d d S )NrG   rs   rI   )r   r   )r   r(   r#   rK   r   r   )r1   r/   r5   r5   r6   test_sparse_input_for_predict  s   
r   c                  C   sD   t ddd} tjd}t|jdddd}| |}t|d d S )	NrG   rs   rI   r   r   )   r   )r,   )r   r   r   r   r
   )r   r$   rx   ry   r   randintrJ   r   )r1   r   r#   r/   r5   r5   r6   !test_sparse_input_for_fit_predict  s
   
r   )-__doc__numpyr$   r:   r^   scipy.sparser   sklearn.exceptionsr   sklearn.utils._testingr   sklearn.clusterr   %sklearn.cluster._affinity_propagationr   r   sklearn.datasetsr   sklearn.metricsr	   r'   rW   r   r#   r3   r7   r>   markparametrizer<   	TypeErrorrF   rM   rQ   r[   rb   rg   rj   rk   rr   r}   r   r   r   r   r5   r5   r5   r6   <module>   sh     

%
  
	