o
    \iz.                     @   s  d Z ddlZddlZddlZddlmZmZ ddlm	Z	 ddl
mZ ddlmZmZ ddlmZ ddlmZ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dd Zdd Zej de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 d.eejg d/d0 Z*d1d2 Z+ej ded3d4 Z,ej ded5d6 Z-d7d8 Z.dS )9z!
Testing for Clustering methods

    N)AffinityPropagationaffinity_propagation)#_equal_similarities_and_preferences)
make_blobs)ConvergenceWarningNotFittedError)euclidean_distances)assert_allcloseassert_array_equal)CSR_CONTAINERS      
   <      g?T)	n_samples
n_featurescenterscluster_stdshufflerandom_statec                 C   sP   t tj|dddd }t|d }t||| d\}}t|}t|ks&J dS )z.Test consistency of the affinity propagations.FcopyTsquaredr   
preferencer   N)r   Xastypenpmedianr   len
n_clusters)global_random_seedglobal_dtypeSr   cluster_centers_indiceslabelsn_clusters_ r*   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/cluster/tests/test_affinity_propagation.pytest_affinity_propagation#   s   
r,   c                  C   s   t tdd } t| d }t|ddd}|| j}t|ddd}|tj}t|| |j}t	|}t
|j|ks>J t|ksDJ d	S )
z^Check equality of precomputed affinity matrix to internally computed affinity
    matrix.
    Tr   r   precomputed   r   affinityr   %   r   verboser   N)r   r   r    r!   r   fitlabels_r
   cluster_centers_indices_r"   uniquesizer#   )r&   r   aflabels_precomputedr(   r'   r)   r*   r*   r+   %test_affinity_propagation_precomputed0   s   
r;   c                  C   s   t tdd } |  }t| d }t|  |rJ t| |ddd t| | t|  |r3J t|  t	| j
d  t| |ddd t|  | | } t|ddd}|tj}t| |ddd\}}t|| d	S )
z.Check behaviour of not copying the input data.Tr   r   r   )r   r   r   Fr2   J   N)r   r   r   r    r!   allclosediagonalr   r	   zerosshaper   r4   r5   r
   )r&   
S_originalr   r9   r(   _labels_no_copyr*   r*   r+   !test_affinity_propagation_no_copyG   s"   

rD   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   z1The matrix of similarities must be a square arraymatchNr   )r   r   pytestraises
ValueErrorr   )r&   err_msgr*   r*   r+   (test_affinity_propagation_affinity_shapec   s
   "rK   csr_containerc                 C   sL   d}t jt|d tdd| d W d    d S 1 sw   Y  d S )Nz8Sparse data was passed for X, but dense data is requiredrE   r-   r0   )r   r   )rG   rH   	TypeErrorr   r4   )rL   rJ   r*   r*   r+   7test_affinity_propagation_precomputed_with_sparse_inputk   s   "rO   c                 C   s<   t d| d}tj|dd}||}||}t|| d S )N	euclideanr0   r   Fr   )r   r   r   fit_predictpredictr
   )r$   r%   r9   X_r(   labels2r*   r*   r+   !test_affinity_propagation_predictr   s
   

rV   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jt
dd | t W d    d S 1 sIw   Y  d S )NrP   rM   r-   9   rQ   zexpecting 60 features as inputrE   )r   rG   rH   r   rS   r   r    dotTr4   rI   )r9   r&   r*   r*   r+   'test_affinity_propagation_predict_error{   s   

"rZ   c                 C   s   t jddgddgddgg| d}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   dtypeR   r   max_iterr   )r   r   r   r   r   )r    arrayr   rG   warnsr   r4   r	   emptycluster_centers_r
   r5   )r%   r   r9   r*   r*   r+   -test_affinity_propagation_fit_non_convergence   s    rg   c                 C   sB  t jddgddgg| d}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 s[w   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   r\   Tr   zmutually equalrE   r   )r   r^   errorir1   r   )r    rc   r   rG   rd   UserWarningr   r
   warningscatch_warningssimplefilter)r%   r   r&   cluster_center_indicesr(   r*   r*   r+   3test_affinity_propagation_equal_mutual_similarities   s(   

rn   c                 C   s   t jddgddgddgg| d}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 sRw   Y  tt g d| d S )Nr   r   r[   r\   r^   K   r`   r   r      rb   )	r    rc   rG   rd   r   r   r4   rS   r
   )r%   r   r9   
to_predictyr*   r*   r+   1test_affinity_propagation_predict_non_convergence   s    rs   c                 C   s   t jg dg dg dg| d}tdddd}d	}tjt|d
 || W d    n1 s0w   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   r\   rP   r   "   )r0   ra   r   zcAffinity propagation did not converge, this model may return degenerate cluster centers and labels.rE   )r   r   r   )	r    rc   r   rG   rd   r   r4   r
   r5   )r%   r   r9   msgr*   r*   r+   8test_affinity_propagation_non_convergence_regressiontest   s   rv   c                 C   s   t jddgddgddgg| d}t|dd }t|t dr!J t|t ddgr-J t|t ddgr9J t jddgddgg| d}t|dd }t|t ddgrYJ t|t ddgseJ t|t dsoJ d S )Nr   r   r[   r\   Tr   )r    rc   r   r   )r%   r   r&   r*   r*   r+   'test_equal_similarities_and_preferences   s    rw   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 )zCheck that different random states lead to different initialisations
    by looking at the center locations after two iterations.
    r   r   i,        ?r   )r   r   r   r   r   )convergence_iterra   r   L   N)r   r   r4   rf   r    mean)r   r   labels_trueapcenters0	centers76r*   r*   r+   &test_affinity_propagation_random_state   s   


r   	containerc                 C   s   | t d}t jd}|ddj|dd}d|d t}tdd	}||| ||_	t
  t
d
t t||t j|jd td W d   dS 1 sVw   Y  dS )z
    Check that having sparse or dense `centers` format should not
    influence the convergence.
    Non-regression test for gh-13334.
    )r   r   *   (   r   Fr   rp   .   )r   rh   r   r\   N)r    r?   randomRandomStaterandr   intr   r4   rf   rj   rk   rl   r   r
   rS   r@   )r   r%   r   rngr   rr   r}   r*   r*   r+   :test_affinity_propagation_convergence_warning_dense_sparse  s   

""r   c                 C   sX   t jg dg dg dg dg| 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   r\   r   r-   r   r/   )r   r   r   r   )r    rc   r   r4   r
   r5   )r%   r   afpexpectedr*   r*   r+   test_correct_clusters  s   r   c                 C   s2   t ddd}|t || d}t|d d S )NrP   r   rQ   )r   r   )r   r4   r   rS   r
   )rL   r9   r(   r*   r*   r+   test_sparse_input_for_predict$  s   
r   c                 C   sD   t ddd}tjd}| |jdddd}||}t|d d S )	NrP   r   rQ   r   r   )   r   )r8   )r   r   r   r   r   )r   r    r   r   randintrR   r
   )rL   r9   r   r   r(   r*   r*   r+   !test_sparse_input_for_fit_predict.  s
   
r   c                  C   s6   t d} tdddd| }t |jdksJ dS )zMake sure we do not assign multiple clusters to equal points.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/pull/20043
    )   r   rP   rx   r   )r0   dampingr   r   N)r    r?   r   r4   allr5   )r   r9   r*   r*   r+   &test_affinity_propagation_equal_points9  s   
r   )/__doc__rj   numpyr    rG   sklearn.clusterr   r   %sklearn.cluster._affinity_propagationr   sklearn.datasetsr   sklearn.exceptionsr   r   sklearn.metricsr   sklearn.utils._testingr	   r
   sklearn.utils.fixesr   r#   rc   r   r   rB   r,   r;   rD   rK   markparametrizerO   rV   rZ   rg   rn   rs   rv   rw   r   r   r   r   r   r   r*   r*   r*   r+   <module>   sV     

	 

	

