§
    ¨éUg€.  ã                   ó¨  — 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 	 ddl m!Z! dZ"n# e#$ r dZ"Y nw xY w ej$        ddgddgddgg¦  «        dz   Z% edde%ddd¬¦  «        \  Z&Z'ej(         )                    de¦  «        ej(         )                    dd¦  «        ej(         )                    dd¦  «        d„ ¦   «         ¦   «         ¦   «         Z*ej(         )                    de¦  «        ej(         )                    dd¦  «        d„ ¦   «         ¦   «         Z+d „ Z,d!„ Z-d"„ Z.d#„ Z/ej(         )                    de¦  «        ej(         )                    d$g d%¢¦  «        d&„ ¦   «         ¦   «         Z0ej(         1                    d'¦  «        ej(         1                    d(¦  «        ej(         1                    d)¦  «        ej(         1                    d*¦  «        d+„ ¦   «         ¦   «         ¦   «         ¦   «         Z2d,„ Z3ej(         )                    dd¦  «        d-„ ¦   «         Z4d.„ Z5d/„ Z6dS )0z'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           
      óî  — t          j        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }| ||¦  «        fD ]½}t          ddd| |¬¦  «                             |¦  «        }|j        }|d         dk    rd|z
  }t          |g d	¢¦  «        dk    sJ ‚t          j        t          j        |¦  «        ¦  «        }|j	        |j	        k    sJ ‚|j
        |j
        k    sJ ‚t          |j        |j        ¦  «         Œ¾d S )
N)ç      ð?r&   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   )ÚnpÚarrayr   ÚfitÚlabels_r   ÚpickleÚloadsÚdumpsr*   r    r   )r    r#   r   ÚSÚmatÚmodelÚlabelsÚ
model_copys           úb/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/cluster/tests/test_spectral.pyÚtest_spectral_clusteringr9   '   sV  € õ 	Œà/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/ð	
ñ
	ô 
	€Að �=�= Ñ#Ô#Ð$ð >ð >ˆÝ"ØØØ"Ø%Ø'ð
ñ 
ô 
÷ Š#ˆc‰(Œ(ð 	ð ”ˆØ�!Œ9˜Š>ˆ>Ø˜‘ZˆFå" 6Ð+@Ð+@Ð+@ÑAÔAÀQÒFÐFÐFÐFå”\¥&¤,¨uÑ"5Ô"5Ñ6Ô6ˆ
ØÔ$¨Ô(8Ò8Ð8Ð8Ð8ØÔ&¨%Ô*<Ò<Ð<Ð<Ð<Ý˜:Ô-¨u¬}Ñ=Ô=Ð=Ð=ð#>ð >ó    Úcoo_containerc                 ó(  — t          ddddgddggd¬¦  «        \  }}t          |d¬¦  «        }t          j        |dz
  d¦  «        } ||¦  «        }t	          dd	d
| ¬¦  «                             |¦  «        j        }t          ||¦  «        dk    sJ ‚d S )Né   r   r   r   ç{®Gáz„?©r   r   r   r   )Úgammag-Cëâ6?r   r)   )r   r*   r+   r#   )r	   r   r,   Úmaximumr   r.   r/   r   )r#   r;   ÚXÚyr3   r6   s         r8   Útest_spectral_clustering_sparserD   K   sÂ   € õ Ø 1°°1¨v¸¸B°xÐ.@Èdðñ ô �D€A€qõ 	�1˜AÐÑÔ€AÝ
Œ
�1�t‘8˜QÑÔ€AØˆ�aÑÔ€Aõ 	ØØØ"Ø'ð		
ñ 	
ô 	
÷ 
ŠˆQ‰ŒÜ	ð õ ˜q &Ñ)Ô)¨QÒ.Ð.Ð.Ð.Ð.Ð.r:   c                  ó‚  — t          ddddgddggd¬¦  «        \  } }d}g }dD ]}t          ||z   ¬	¦  «                             | ¦  «        }|                     | d
¬¦  «        }t	          ddd|¬¦  «                             |¦  «        j        }|                     |¦  «         Œ€t          |d         |d         ¦  «         d S )NéÈ   r   r   r   r>   r?   r   )r   r   )Ún_neighborsÚconnectivity)ÚmodeÚprecomputed_nearest_neighbors)r   r*   r+   rG   )r	   r   r.   Úkneighbors_graphr   r/   Úappendr   )rB   rC   rG   ÚresultsÚadditional_neighborsÚnnÚgraphr6   s           r8   Ú,test_precomputed_nearest_neighbors_filteringrQ   c   sñ   € åØ A°°A°¸¸R¸Ð/AÈtðñ ô �D€A€qð €KØ€GØ 'ð ð ÐÝ¨+Ð8LÑ*LÐMÑMÔM×QÒQÐRSÑTÔTˆØ×#Ò# A¨NÐ#Ñ;Ô;ˆåØØØ8Ø'ð	ñ ô ÷ ŠS�‰ZŒZÜð 	ð 	�Š�vÑÔÐÐå�w˜q”z 7¨1¤:Ñ.Ô.Ð.Ð.Ð.r:   c                  óÐ  — t          ddddgddggd¬¦  «        \  } }t          ddd¬	¦  «        }t          j        t          d
¬¦  «        5  |                     | ¦  «         d d d ¦  «         n# 1 swxY w Y   t          ||j        ¦  «        dk    sJ ‚t          ddd¬¦  «        }|                     | ¦  «        j        }t          ||¦  «        dk    sJ ‚t          d¦  «         	                    dd¦  «        dz  } t          ¦   «         }|D ]M}|dk    rEt          d|d¬	¦  «        }|                     | ¦  «        j        }| j        d         f|j        k    sJ ‚ŒNt          dd„ d¬	¦  «        }|                     | ¦  «        j        }| j        d         f|j        k    sJ ‚d„ }t          d|d¬	¦  «        }|                     | ¦  «        j        }| j        d         f|j        k    sJ ‚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                 ó   — dS )Nr   © )ÚxrC   s     r8   ú<lambda>z!test_affinities.<locals>.<lambda>™   s   € À€ r:   c                 ó`   — |i k    sJ ‚t          j        | |¦  «                             ¦   «         S ©N)r,   ÚminimumÚsum)rZ   rC   Úkwargss      r8   Ú	histogramz"test_affinities.<locals>.histogram�   s-   € à˜Š|ˆ|ˆ|ˆ|ÝŒz˜!˜QÑÔ×#Ò#Ñ%Ô%Ð%r:   )r	   r   ÚpytestÚwarnsÚUserWarningr.   r   r/   r   Úrandr   Úshape)rB   rC   Úspr6   Úkernels_availableÚkernra   s          r8   Útest_affinitiesrj   }   sJ  € õ Ø 1°°1¨v¸¸B°xÐ.@Èdðñ ô �D€A€qõ 
 qÐ3FÐUVÐ	WÑ	WÔ	W€BÝ	Œ•kÐ)>Ð	?Ñ	?Ô	?ð ð Ø
�Šˆq‰	Œ	ˆ	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å˜q "¤*Ñ-Ô-°Ò2Ð2Ð2Ð2å	 q°ÀÐ	BÑ	BÔ	B€BØ�VŠV�A‰YŒYÔ€FÝ˜q &Ñ)Ô)¨QÒ.Ð.Ð.Ð.å˜2ÑÔ×#Ò# B¨Ñ*Ô*¨RÑ/€Aå&Ñ(Ô(ÐØ!ð 1ð 1ˆð �?Ò"Ð"Ý#¨q¸4ÈaÐPÑPÔPˆBØ—V’V˜A‘Y”YÔ&ˆFØ”G˜A”J�= F¤LÒ0Ð0Ð0Ð0øå	 q°>°>ÐPQÐ	RÑ	RÔ	R€BØ�VŠV�A‰YŒYÔ€FØŒG�AŒJˆ=˜FœLÒ(Ð(Ð(Ð(ð&ð &ð &õ
 
 q°9È1Ð	MÑ	MÔ	M€BØ�VŠV�A‰YŒYÔ€FØŒG�AŒJˆ=˜FœLÒ(Ð(Ð(Ð(Ð(Ð(s   Á
A,Á,A0Á3A0c                  óì  — t           j                             d¬¦  «        } d\  }}|                      ||¦  «        }t	          |                     t           j        ¦  «        ¦  «        }|j        |fk    sJ ‚t          j        t          j	        |¦  «        t          j
        |¦  «        ¦  «        sJ ‚t	          |                     t           j        ¦  «        ¦  «        }t          j        ||¦  «        sJ ‚d S )Né   ©Úseed)r   rV   )r,   ÚrandomÚRandomStateÚrandnr   ÚastypeÚfloat64rf   Úarray_equalÚuniqueÚarangeÚfloat32)r   r   Ún_componentsÚdataÚlabels_float64Úlabels_float32s         r8   Útest_cluster_qrr|   §   sÑ   € õ
 ”9×(Ò(¨aÐ(Ñ0Ô0€LØ#Ñ€Iˆ|Ø×Ò˜i¨Ñ6Ô6€DÝ §¢­B¬JÑ 7Ô 7Ñ8Ô8€NàÔ I <Ò/Ð/Ð/Ð/åŒ>�"œ) NÑ3Ô3µR´Y¸|Ñ5LÔ5LÑMÔMÐMÐMÐMå §¢­B¬JÑ 7Ô 7Ñ8Ô8€NÝŒ>˜.¨.Ñ9Ô9Ð9Ð9Ð9Ð9Ð9r:   c                  ó   — t           j                             d¬¦  «        } d\  }}|                      ||¦  «        }|                      |¦  «        }t          j        t          |¦  «        |         t          ||         ¦  «        ¦  «        sJ ‚d S )Nrl   rm   )éd   rV   )r,   ro   rp   rq   Úpermutationrt   r   )r   r   rx   ry   Úperms        r8   Ú&test_cluster_qr_permutation_invariancer�   ¹   s“   € å”9×(Ò(¨aÐ(Ñ0Ô0€LØ$Ñ€Iˆ|Ø×Ò˜i¨Ñ6Ô6€DØ×#Ò# IÑ.Ô.€DÝŒ>Ý�4ÑÔ˜ÔÝ�4˜”:ÑÔñô ð ð ð ð ð r:   r   )é2   r~   é–   iô  c                 óø  — t           j                             d¬¦  «        }t          dd¦  «        D ]È}|                     d|dz   | ¦  «        }t          j        |t          ¦  «        } |t          j        | ¦  «        t          j        | ¦  «        |ff| |dz   f¬¦  «        }| 	                    ¦   «         d| 
                    | |dz   ¦  «        z  z   }t          ||¬	¦  «        }t          ||¦  «        d
k    sJ ‚ŒÉd S )Nrl   rm   r   r   r   r   )rf   gš™™™™™¹?)r   gš™™™™™é?)r,   ro   rp   ÚrangeÚrandintr-   ÚfloatÚonesrv   Útoarrayrq   r   r   )r   r;   r   Ún_classÚy_trueÚy_indicatorÚy_true_noisyÚy_preds           r8   Útest_discretizer�   Å   s  € õ ”9×(Ò(¨aÐ(Ñ0Ô0€LÝ˜˜B‘<”<ð 9ð 9ˆà×%Ò% a¨°1©°iÑ@Ô@ˆÝ”˜&¥%Ñ(Ô(ˆà#�mÝŒW�YÑÔ¥"¤)¨IÑ"6Ô"6¸Ð!?Ð@Ø˜g¨™kÐ*ð
ñ 
ô 
ˆð #×*Ò*Ñ,Ô,¨s°\×5GÒ5GØ�w ‘{ñ6
ô 6
ñ 0
ñ 
ˆõ ˜L°|ÐDÑDÔDˆÝ" 6¨6Ñ2Ô2°SÒ8Ð8Ð8Ð8Ð8ð9ð 9r:   z:ignore:scipy.rand is deprecated:DeprecationWarning:pyamg.*zBignore:`np.float` is a deprecated alias:DeprecationWarning:pyamg.*zBignore:scipy.linalg.pinv2 is deprecated:DeprecationWarning:pyamg.*zCignore:np.find_common_type is deprecated:DeprecationWarning:pyamg.*c                  ó4  — t          j        d¦  «        \  } }d\  }}d\  }}| |d         z
  dz  ||d         z
  dz  z   |dz  k     }| |d         z
  dz  ||d         z
  dz  z   |dz  k     }||z  }|                     ¦   «         }	|                     t          ¦  «        }
t          |
|	¬¦  «        }t          j        |j         |j                             ¦   «         z  ¦  «        |_        t          |ddd¬	¦  «        }t          t          j        |¦  «        ¦  «        dk    sJ ‚t          r+t          |dd
d¬	¦  «        }t          ||¦  «        dk    sJ ‚d S t          j        t           ¦  «        5  t          |dd
d¬	¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)é(   r‘   ))é   é   )r=   é   )rl   é   r   r   r   )Úmaskr!   )r*   r    r   Úamg)r,   ÚindicesÚcopyrr   r‡   r
   Úexpry   Ústdr   Úlenru   Ú
amg_loadedr   rb   ÚraisesÚ
ValueError)rZ   rC   Úcenter1Úcenter2Úradius1Úradius2Úcircle1Úcircle2Úcirclesr–   ÚimgrP   Úlabels_arpackÚ
labels_amgs                 r8   Ú0test_spectral_clustering_with_arpack_amg_solversrª   Ü   s  € õ( Œ:�hÑÔ�D€A€qà)Ñ€GˆWØÑ€GˆWà�7˜1”:‰~ !Ñ# q¨7°1¬:¡~¸!Ñ&;Ñ;¸gÀq¹jÒH€GØ�7˜1”:‰~ !Ñ# q¨7°1¬:¡~¸!Ñ&;Ñ;¸gÀq¹jÒH€Gà˜Ñ€GØ�<Š<‰>Œ>€DØ
�.Š.�Ñ
Ô
€Cå˜ 4Ð(Ñ(Ô(€EÝ”˜œ˜ e¤j§n¢nÑ&6Ô&6Ñ6Ñ7Ô7€E„Jå'Ø˜!¨(Àðñ ô €Mõ �rŒy˜Ñ'Ô'Ñ(Ô(¨AÒ-Ð-Ð-Ð-åð YÝ(Ø˜a¨eÀ!ð
ñ 
ô 
ˆ
õ # =°*Ñ=Ô=ÀÒBÐBÐBÐBÐBÐBåŒ]�:Ñ&Ô&ð 	Yð 	YÝ °!À%ÐVWÐXÑXÔXÐXð	Yð 	Yð 	Yñ 	Yô 	Yð 	Yð 	Yð 	Yð 	Yð 	Yð 	Yð 	Yøøøð 	Yð 	Yð 	Yð 	Yð 	Yð 	Ys   Å,FÆFÆFc                  óˆ  — t          ddddgddggd¬¦  «        \  } }t          dd¬¦  «        }|                     | ¦  «        j        }t          ddd¬	¦  «                             | ¦  «        j        }t	          ||¦  «         t          dd¬
¦  «                             | ¦  «        j        }t          j        ||¦  «        rJ ‚d S )Nr=   r   r   r   r>   r?   r   )r*   r   )r*   rx   r   )rx   r   )r	   r   r.   r/   r   r,   rt   )rB   rC   rg   r6   Úlabels_same_ncompÚlabels_diff_ncomps         r8   Útest_n_componentsr®     sÞ   € õ Ø 1°°1¨v¸¸B°xÐ.@Èdðñ ô �D€A€qõ 
 q°qÐ	9Ñ	9Ô	9€BØ�VŠV�A‰YŒYÔ€Fõ 	 a°aÀaÐHÑHÔH×LÒLÈQÑOÔOÔWð õ �vÐ0Ñ1Ô1Ð1õ
 	¨¸Ð:Ñ:Ô:×>Ò>¸qÑAÔAÔIð õ Œ~˜fÐ&7Ñ8Ô8Ð8Ð8Ð8Ð8Ð8r:   c                 óh  — t          ddddgddggd¬¦  «        \  }}t          ddd¬	¦  «                             |¦  «         |                     ¦   «         }t	          j        d
|j        ¦  «        sJ ‚| dk    r8t	          j        d|j        ¦  «        sJ ‚t	          j        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#   ÚcapsysrB   rC   Úcaptureds        r8   Útest_verboser¸   &  sÒ   € õ Ø 1°°1¨v¸¸B°xÐ.@Èdðñ ô �D€A€qõ  !°"¸aÐ@Ñ@Ô@×DÒDÀQÑGÔGÐGà× Ò Ñ"Ô"€HåŒ9Ð8¸(¼,ÑGÔGÐGÐGÐGà˜Ò Ð ÝŒyÐ3°X´\ÑBÔBÐBÐBÐBÝŒyÐ5°x´|ÑDÔDÐDÐDÐDð !Ð àDÐDr:   c                  óÄ   — t          j        ddgddgg¦  «        } d}t          j        t          |¬¦  «        5  t          | ¦  «         ddd¦  «         dS # 1 swxY 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 arrayrT   N)r,   Úmatrixrb   rž   Ú	TypeErrorr   )rB   Úmsgs     r8   Ú)test_spectral_clustering_np_matrix_raisesr½   8  s¬   € õ 	Œ	�C˜�:  S˜zÐ*Ñ+Ô+€Aà
I€CÝ	Œ•y¨Ð	,Ñ	,Ô	,ð ð Ý˜AÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ¸AÁAÁAc                 óü   — d„ }|                      t          j        d|¦  «         t          j        d¦  «        }t	          j        t          d¬¦  «        5  t          |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zkCheck that discretize raises LinAlgError when svd never converges.

    Non-regression test for #21380
    c                  ó   — t          ¦   «         ‚r]   r   )Úargsr`   s     r8   Únew_svdz;test_spectral_clustering_not_infinite_loop.<locals>.new_svdH  s   € Ý‰mŒmÐr:   Úsvd)r   é   zSVD did not convergerT   N)Úsetattrr,   Úlinalgrˆ   rb   rž   r   r   )r¶   ÚmonkeypatchrÁ   Úvectorss       r8   Ú*test_spectral_clustering_not_infinite_looprÈ   B  sÄ   € ðð ð ð ×Ò�œ	 5¨'Ñ2Ô2Ð2ÝŒg�gÑÔ€Gå	Œ•{Ð*@Ð	AÑ	AÔ	Að ð Ý�7ÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁA1Á1A5Á8A5)7Ú__doc__r0   r³   Únumpyr,   rb   Ú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   rB   Ú_ÚmarkÚparametrizer9   rD   rQ   rj   r|   r�   r�   Úfilterwarningsrª   r®   r¸   r½   rÈ   rY   r:   r8   ú<module>rÜ      sþ  ðØ -Ð -à €€€Ø 	€	€	€	à Ð Ð Ð Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $à CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø /Ð /Ð /Ð /Ð /Ð /Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø .Ð .Ð .Ð .Ð .Ð .Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >ðØ1Ð1Ð1Ð1Ð1Ð1à€J€JøØð ð ð Ø€J€J€Jðøøøð ˆ"Œ(�Q˜�F˜R ˜H q¨" gÐ.Ñ
/Ô
/°"Ñ
4€Ø€zØØØØØØðñ ô �€€1ð „×Ò˜¨.Ñ9Ô9Ø„×Ò˜Ð)=Ñ>Ô>Ø„×Ò˜Ð*PÑQÔQð>ð >ñ RÔQñ ?Ô>ñ :Ô9ð>ðB „×Ò˜¨.Ñ9Ô9Ø„×Ò˜Ð*PÑQÔQð/ð /ñ RÔQñ :Ô9ð/ð,/ð /ð /ð4')ð ')ð ')ðT:ð :ð :ð$	ð 	ð 	ð „×Ò˜¨.Ñ9Ô9Ø„×Ò˜Ð&9Ð&9Ð&9Ñ:Ô:ð9ð 9ñ ;Ô:ñ :Ô9ð9ð* „×ÒØ@ñô ð „×ÒØHñô ð „×ÒØHñô ð „×ÒØIñô ð!Yð !Yñô ñ	ô ñ	ô ñ	ô ð!YðH9ð 9ð 9ð. „×Ò˜Ð*PÑQÔQðEð Eñ RÔQðEð"ð ð ðð ð ð ð s   ÁA' Á'A1Á0A1