o
    \i-                     @   s  d Z ddlZddlZddlZddlZddlmZ ddlm	Z	m
Z
 ddlmZmZ ddl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 ddlmZ ddlmZmZ z
ddl m!Z! dZ"W n e#yq   dZ"Y nw e$ddgddgddggd Z%edde%dddd\Z&Z'ej()deej()ddej()dddd Z*ej()deej()ddd d! Z+d"d# Z,d$d% Z-d&d' Z.d(d) Z/ej()deej()d*g d+d,d- Z0d.d/ Z1d0d1 Z2ej()ddd2d3 Z3d4d5 Z4d6d7 Z5dS )8z'Testing for Spectral Clustering methods    NLinAlgError)SpectralClusteringspectral_clustering)
cluster_qr
discretize)
make_blobs)img_to_graph)adjusted_rand_score)kernel_metrics
rbf_kernel)NearestNeighbors)check_random_state)assert_array_equal)COO_CONTAINERSCSR_CONTAINERS)smoothed_aggregation_solverTF   
   <      g?)	n_samples
n_featurescenterscluster_stdshufflerandom_statecsr_containereigen_solver)arpacklobpcgassign_labels)kmeansr   r   c           	   
   C   s   t g dg dg dg dg dg dg dg}|||fD ]E}t|dd| |d|}|j}|d dkr;d| }t|g d	dksFJ tt|}|j	|j	ksVJ |j
|j
ks^J t|j|j q d S )
N)      ?r$   r$   皙?        r&   r&   )r%   r%   r%   r$   r$   r$   r$   )r&   r&   r&   r$   r$   r$   r$   r   precomputed)r   
n_clustersaffinityr   r"   r   r   )r   r   r   r   r   r   r   )nparrayr   fitlabels_r
   pickleloadsdumpsr(   r   r   )	r   r"   r   global_random_seedSmatmodellabels
model_copy r7   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/cluster/tests/test_spectral.pytest_spectral_clustering'   s:   r9   coo_containerc                 C   sr   t d|ddgddggdd\}}t|dd}t|d d}||}t|d	d
| d|j}t||dks7J d S )N   r   r   {Gz?r   r   r   r   )gammag-C6?r   r   r'   )r   r(   r)   r"   )r   r   r*   maximumr   r,   r-   r
   )r"   r:   r1   Xyr2   r5   r7   r7   r8   test_spectral_clustering_sparseM   s&   

rB   c           	      C   s   t d| g dg dgdd\}}d}g }dD ]$}t|| d|}|j|d	d
}t| dd|d|j}|| qt|d |d  d S )N   )r   r   r   )r   r   r   r<   r=   r   )r   r   )n_neighborsdistance)modeprecomputed_nearest_neighbors)r   r(   r)   rD   r   r   )r   r   r,   kneighbors_graphr   r-   appendr   )	r1   r@   rA   rD   resultsadditional_neighborsnngraphr5   r7   r7   r8   ,test_precomputed_nearest_neighbors_filteringh   s,   

rN   c                 C   sr  t ddddgddggdd\}}tdddd	}tjtd
d || W d    n1 s.w   Y  t||jdks=J tdd| d}||j}t||dksSJ td	ddd }t
 }|D ]}|dkrtd|dd	}||j}|jd f|jksJ qbtddd dd	}||j}|jd f|jksJ dd }td|dd	}||j}|jd f|jksJ d S )Nr;   r   r   r   r<   r=   r   nearest_neighbors)r(   r)   r   znot fully connectedmatch)r(   r>   r   r      additive_chi2c                 S   s   dS )Nr   r7   )xrA   r7   r7   r8   <lambda>   s    z!test_affinities.<locals>.<lambda>c                 [   s   |i ksJ t | | S N)r*   minimumsum)rT   rA   kwargsr7   r7   r8   	histogram   s   z"test_affinities.<locals>.histogram)r   r   pytestwarnsUserWarningr,   r
   r-   r   randr   shape)r1   r@   rA   spr5   kernels_availablekernrZ   r7   r7   r8   test_affinities   s4   
rc   c                 C   s   t jj| d}d\}}|||}t|t j}|j|fks!J t t 	|t 
|s/J t|t j}t ||s?J d S )Nseed)r   rR   )r*   randomRandomStaterandnr   astypefloat64r_   array_equaluniquearangefloat32)r1   r   r   n_componentsdatalabels_float64labels_float32r7   r7   r8   test_cluster_qr   s   rs   c                 C   sP   t jj| d}d\}}|||}||}t t|| t|| s&J d S )Nrd   )d   rR   )r*   rf   rg   rh   permutationrk   r   )r1   r   r   ro   rp   permr7   r7   r8   &test_cluster_qr_permutation_invariance   s   


rw   r   )2   rt      i  c           	      C   s   t jj|d}tddD ]B}|d|d | }t |t}|t | t | |ff| |d fd}|	 d|
| |d   }t||d}t||d	ksNJ qd S )
Nrd   r   r   r   r   )r_   g?)r   g?)r*   rf   rg   rangerandintr+   floatonesrm   toarrayrh   r   r
   )	r   r:   r1   r   n_classy_truey_indicatory_true_noisyy_predr7   r7   r8   test_discretize   s   
r   c                 C   s>  t d\}}d\}}d\}}||d  d ||d  d  |d k }||d  d ||d  d  |d k }||B }	|	 }
|	t}t||
d}t |j |j  |_t	|dd| d	}t
t |dksjJ trt	|dd
| d	}t||dks}J d S tt t	|dd
dd	 W d    d S 1 sw   Y  d S )N)(   r   ))      )r;      )      r   r   r   )maskr    )r(   r   r   amg)r*   indicescopyri   r|   r	   exprp   stdr   lenrl   
amg_loadedr
   r[   raises
ValueError)r1   rT   rA   center1center2radius1radius2circle1circle2circlesr   imgrM   labels_arpack
labels_amgr7   r7   r8   0test_spectral_clustering_with_arpack_amg_solvers   s,   ((
"r   c                 C   s   t d| ddgddggdd\}}td| d}||j}tdd| d|j}t|| td| d	|j}t||r>J d S )
Nr;   r   r   r<   r=   r   )r(   r   )r(   ro   r   )ro   r   )r   r   r,   r-   r   r*   rk   )r1   r@   rA   r`   r5   labels_same_ncomplabels_diff_ncompr7   r7   r8   test_n_components  s(   


r   c                 C   s   t ddddgddggdd\}}tdddd	| | }td
|js'J | dkr=td|js4J td|js?J d S d S )Nr;   r   r   r   r<   r=   r   *   )r(   r   verbosez Computing label assignment usingr#   zInitialization completezIteration [0-9]+, inertia)r   r   r,   
readouterrresearchout)r"   capsysr@   rA   capturedr7   r7   r8   test_verbose&  s   
r   c                  C   sV   t ddgddgg} d}tjt|d t|  W d   dS 1 s$w   Y  dS )zbCheck that spectral_clustering raises an informative error when passed
    a np.matrix. See #10993r&   g       @z<np\.matrix is not supported. Please convert to a numpy arrayrP   N)r*   matrixr[   r   	TypeErrorr   )r@   msgr7   r7   r8   )test_spectral_clustering_np_matrix_raises8  s
   
"r   c                 C   s^   dd }| tjd| td}tjtdd t| W d   dS 1 s(w   Y  dS )zkCheck that discretize raises LinAlgError when svd never converges.

    Non-regression test for #21380
    c                  _   s   t  rV   r   )argsrY   r7   r7   r8   new_svdH  s   z;test_spectral_clustering_not_infinite_loop.<locals>.new_svdsvd)r      zSVD did not convergerP   N)setattrr*   linalgr}   r[   r   r   r   )r   monkeypatchr   vectorsr7   r7   r8   *test_spectral_clustering_not_infinite_loopB  s   

"r   )6__doc__r.   r   numpyr*   r[   scipy.linalgr   sklearn.clusterr   r   sklearn.cluster._spectralr   r   sklearn.datasetsr   sklearn.feature_extractionr	   sklearn.metricsr
   sklearn.metrics.pairwiser   r   sklearn.neighborsr   sklearn.utilsr   sklearn.utils._testingr   sklearn.utils.fixesr   r   pyamgr   r   ImportErrorr+   r   r@   _markparametrizer9   rB   rN   rc   rs   rw   r   r   r   r   r   r   r7   r7   r7   r8   <module>   sf     

#*$ 

