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_samplesZ
n_featuresÚcentersÚcluster_stdÚshuffleÚrandom_stateÚcsr_containerÚeigen_solver)ÚarpackZ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ÚlabelsZ
model_copy© r4   úr/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/sklearn/cluster/tests/test_spectral.pyÚtest_spectral_clustering'   s:   ùÿûúïr6   Ú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   ç{®Gáz„?©r   r   r   r   )Úgammag-Cëâ6?r   r   r%   )r   r&   r'   r    )r   r   r(   Úmaximumr   r*   r+   r
   )r    r7   r/   ÚXÚyr0   r3   r4   r4   r5   Útest_spectral_clustering_sparseM   s&   
üüø
r?   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   r9   r:   r   )r   r   )Ún_neighborsZdistance)ÚmodeZprecomputed_nearest_neighbors)r   r&   r'   rA   r   r   )r   r   r*   Zkneighbors_graphr   r+   Úappendr   )	r/   r=   r>   rA   ÚresultsZadditional_neighborsÚnnÚgraphr3   r4   r4   r5   Ú,test_precomputed_nearest_neighbors_filteringh   s,   
üüø
rG   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r€td|dd	}| |¡j}|jd f|jks€J ‚qbtddd„ dd	}| |¡j}|jd f|jks›J ‚dd„ }td|dd	}| |¡j}|jd f|jks·J ‚d S )Nr8   r   r   r   r9   r:   r   Znearest_neighbors)r&   r'   r   znot fully connected©Úmatch)r&   r;   r   r   é   Zadditive_chi2c                 S   s   dS )Nr   r4   )Úxr>   r4   r4   r5   Ú<lambda>¡   s    z!test_affinities.<locals>.<lambda>c                 [   s   |i ksJ ‚t  | |¡ ¡ S ©N)r(   ÚminimumÚsum)rK   r>   Úkwargsr4   r4   r5   Ú	histogram¥   s   z"test_affinities.<locals>.histogram)r   r   ÚpytestZwarnsÚUserWarningr*   r
   r+   r   Zrandr   Úshape)r/   r=   r>   Úspr3   Zkernels_availableÚkernrQ   r4   r4   r5   Útest_affinities…   s4   
ÿÿ€rW   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   rJ   )r(   ÚrandomÚRandomStateÚrandnr   ÚastypeZfloat64rT   Úarray_equalÚuniqueÚarangeZfloat32)r/   r   r   Ún_componentsÚdataZlabels_float64Zlabels_float32r4   r4   r5   Útest_cluster_qr¯   s   rc   c                 C   sP   t jj| d}d\}}| ||¡}| |¡}t  t|ƒ| t|| ƒ¡s&J ‚d S )NrX   )éd   rJ   )r(   rZ   r[   r\   Zpermutationr^   r   )r/   r   r   ra   rb   Úpermr4   r4   r5   Ú&test_cluster_qr_permutation_invarianceÁ   s   


þrf   r   )é2   rd   é–   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 )
NrX   r   r   r   r   )rT   gš™™™™™¹?)r   gš™™™™™é?)r(   rZ   r[   ÚrangeÚrandintr)   ÚfloatÚonesr`   Ztoarrayr\   r   r
   )	r   r7   r/   r   Zn_classZy_trueZy_indicatorZy_true_noisyZy_predr4   r4   r5   Útest_discretizeÍ   s   
þÿórm   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 s˜w   Y  d S )N)é(   rn   ))é   é   )r8   é   )é   é   r   r   r   )Úmaskr   )r&   r   r   Zamg)r(   ÚindicesÚcopyr]   rk   r	   Úexprb   Zstdr   Úlenr_   Ú
amg_loadedr
   rR   ÚraisesÚ
ValueError)r/   rK   r>   Zcenter1Zcenter2Zradius1Zradius2Zcircle1Zcircle2Zcirclesrt   ZimgrF   Zlabels_arpackZ
labels_amgr4   r4   r5   Ú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 )
Nr8   r   r   r9   r:   r   )r&   r   )r&   ra   r   )ra   r   )r   r   r*   r+   r   r(   r^   )r/   r=   r>   rU   r3   Zlabels_same_ncompZlabels_diff_ncompr4   r4   r5   Ú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 )Nr8   r   r   r   r9   r:   r   é*   )r&   r   Úverbosez Computing label assignment usingr!   zInitialization completezIteration [0-9]+, inertia)r   r   r*   Z
readouterrÚreÚsearchÚout)r    Úcapsysr=   r>   Zcapturedr4   r4   r5   Ú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 arrayrH   N)r(   ÚmatrixrR   rz   Ú	TypeErrorr   )r=   Úmsgr4   r4   r5   Ú)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 ƒ ‚rM   r   )ÚargsrP   r4   r4   r5   Únew_svdH  s   z;test_spectral_clustering_not_infinite_loop.<locals>.new_svdZsvd)r   é   zSVD did not convergerH   N)Úsetattrr(   Zlinalgrl   rR   rz   r   r   )rƒ   ZmonkeypatchrŠ   Zvectorsr4   r4   r5   Ú*test_spectral_clustering_not_infinite_loopB  s   

"ÿr   )6Ú__doc__r,   r€   Únumpyr(   rR   Zscipy.linalgr   Zsklearn.clusterr   r   Zsklearn.cluster._spectralr   r   Zsklearn.datasetsr   Zsklearn.feature_extractionr	   Zsklearn.metricsr
   Zsklearn.metrics.pairwiser   r   Zsklearn.neighborsr   Zsklearn.utilsr   Zsklearn.utils._testingr   Zsklearn.utils.fixesr   r   Zpyamgr   ry   ÚImportErrorr)   r   r=   Ú_ÚmarkZparametrizer6   r?   rG   rW   rc   rf   rm   r|   r}   r„   rˆ   r   r4   r4   r4   r5   Ú<module>   sf    ÿ 
ú
#*$ 

