§
    ¥˜ºhŠ-  ã                   óÞ  — 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	 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  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d¦  «        ej'         (                    dd¦  «        d„ ¦   «         ¦   «         Z)ej'         (                    dd¦  «        d„ ¦   «         Z*d„ Z+d„ Z,d „ Z-d!„ Z.ej'         (                    d"g d#¢¦  «        d$„ ¦   «         Z/ej'         0                    d%¦  «        ej'         0                    d&¦  «        ej'         0                    d'¦  «        ej'         0                    d(¦  «        d)„ ¦   «         ¦   «         ¦   «         ¦   «         Z1d*„ Z2ej'         (                    dd¦  «        d+„ ¦   «         Z3d,„ Z4d-„ Z5dS ).z'Testing for Spectral Clustering methodsé    N)Úsparse©Ú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)Úsmoothed_aggregation_solverTFé   éÿÿÿÿé
   é<   é   gš™™™™™Ù?)Ú	n_samplesÚ
n_featuresÚcentersÚcluster_stdÚshuffleÚrandom_stateÚ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¦  «        }|t          j        |¦  «        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   Ú
csr_matrixr   ÚfitÚlabels_r   ÚpickleÚloadsÚdumpsr(   r   r   )r   r!   ÚSÚmatÚmodelÚlabelsÚ
model_copys          úk/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/sklearn/cluster/tests/test_spectral.pyÚtest_spectral_clusteringr8   &   sW  € õ 	Œà/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/ð	
ñ
	ô 
	€Að •6Ô$ QÑ'Ô'Ð(ð >ð >ˆÝ"ØØØ"Ø%Ø'ð
ñ 
ô 
÷ Š#ˆc‰(Œ(ð 	ð ”ˆØ�!Œ9˜Š>ˆ>Ø˜‘ZˆFå" 6Ð+@Ð+@Ð+@ÑAÔAÀQÒFÐFÐFÐFå”\¥&¤,¨uÑ"5Ô"5Ñ6Ô6ˆ
ØÔ$¨Ô(8Ò8Ð8Ð8Ð8ØÔ&¨%Ô*<Ò<Ð<Ð<Ð<Ý˜:Ô-¨u¬}Ñ=Ô=Ð=Ð=ð#>ð >ó    c                 ó:  — t          ddddgddggd¬¦  «        \  }}t          |d¬¦  «        }t          j        |dz
  d¦  «        }t	          j        |¦  «        }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   Ú
coo_matrixr   r-   r.   r   )r!   ÚXÚyr2   r5   s        r7   Útest_spectral_clustering_sparserC   I   sÁ   € åØ 1°°1¨v¸¸B°xÐ.@Èdðñ ô �D€A€qõ 	�1˜AÐÑÔ€AÝ
Œ
�1�t‘8˜QÑÔ€AÝÔ˜!ÑÔ€Aõ 	ØØØ"Ø'ð		
ñ 	
ô 	
÷ 
ŠˆQ‰ŒÜ	ð õ ˜q &Ñ)Ô)¨QÒ.Ð.Ð.Ð.Ð.Ð.r9   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)   rF   )r
   r   r-   Úkneighbors_graphr   r.   Úappendr   )rA   rB   rF   ÚresultsÚadditional_neighborsÚnnÚgraphr5   s           r7   Ú,test_precomputed_nearest_neighbors_filteringrP   `   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¤:Ñ.Ô.Ð.Ð.Ð.r9   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   © )ÚxrB   s     r7   ú<lambda>z!test_affinities.<locals>.<lambda>–   s   € À€ r9   c                 ó`   — |i k    sJ ‚t          j        | |¦  «                             ¦   «         S ©N)r*   ÚminimumÚsum)rY   rB   Úkwargss      r7   Ú	histogramz"test_affinities.<locals>.histogramš   s-   € à˜Š|ˆ|ˆ|ˆ|ÝŒz˜!˜QÑÔ×#Ò#Ñ%Ô%Ð%r9   )r
   r   ÚpytestÚwarnsÚUserWarningr-   r   r.   r   Úrandr   Úshape)rA   rB   Úspr5   Úkernels_availableÚkernr`   s          r7   Útest_affinitiesri   z   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   rU   )r*   ÚrandomÚRandomStateÚrandnr   ÚastypeÚfloat64re   Úarray_equalÚuniqueÚarangeÚfloat32)r   r   Ún_componentsÚdataÚlabels_float64Úlabels_float32s         r7   Ú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Ð9r9   c                  ó   — t           j                             d¬¦  «        } d\  }}|                      ||¦  «        }|                      |¦  «        }t          j        t          |¦  «        |         t          ||         ¦  «        ¦  «        sJ ‚d S )Nrk   rl   )éd   rU   )r*   rn   ro   rp   Úpermutationrs   r   )r   r   rw   rx   Úperms        r7   Ú&test_cluster_qr_permutation_invariancer€   ¶   s“   € å”9×(Ò(¨aÐ(Ñ0Ô0€LØ$Ñ€Iˆ|Ø×Ò˜i¨Ñ6Ô6€DØ×#Ò# IÑ.Ô.€DÝŒ>Ý�4ÑÔ˜ÔÝ�4˜”:ÑÔñô ð ð ð ð ð r9   r   )é2   r}   é–   iô  c                 ó
  — t           j                             d¬¦  «        }t          dd¦  «        D ]Ñ}|                     d|dz   | ¦  «        }t          j        |t          ¦  «        }t          j        t          j	        | ¦  «        t          j
        | ¦  «        |ff| |dz   f¬¦  «        }|                     ¦   «         d|                     | |dz   ¦  «        z  z   }t          ||¬	¦  «        }t          ||¦  «        d
k    sJ ‚ŒÒd S )Nrk   rl   r   r   r   r   )re   gš™™™™™¹?)r   gš™™™™™é?)r*   rn   ro   ÚrangeÚrandintr+   Úfloatr   r@   Úonesru   Útoarrayrp   r	   r   )r   r   Ún_classÚy_trueÚy_indicatorÚy_true_noisyÚy_preds          r7   Útest_discretizerŽ   Â   s  € õ ”9×(Ò(¨aÐ(Ñ0Ô0€LÝ˜˜B‘<”<ð 9ð 9ˆà×%Ò% a¨°1©°iÑ@Ô@ˆÝ”˜&¥%Ñ(Ô(ˆåÔ'ÝŒ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ð 9r9   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;   é   )rk   é   r   r   r   )Úmaskr   )r(   r   r   Úamg)r*   ÚindicesÚcopyrq   r†   r   Úexprx   Ústdr   Úlenrt   Ú
amg_loadedr   ra   ÚraisesÚ
ValueError)rY   rB   Úcenter1Úcenter2Úradius1Úradius2Úcircle1Úcircle2Úcirclesr•   ÚimgrO   Úlabels_arpackÚ
labels_amgs                 r7   Ú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(   rw   r   )rw   r   )r
   r   r-   r.   r   r*   rs   )rA   rB   rf   r5   Úlabels_same_ncompÚlabels_diff_ncomps         r7   Ú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Ð8r9   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!   ÚcapsysrA   rB   Úcaptureds        r7   Ú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ÐDr9   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 arrayrS   N)r*   Úmatrixra   r�   Ú	TypeErrorr   )rA   Úmsgs     r7   Ú)test_spectral_clustering_np_matrix_raisesr¼   4  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     r7   Únew_svdz;test_spectral_clustering_not_infinite_loop.<locals>.new_svdD  s   € Ý‰mŒmÐr9   Úsvd)r   é   zSVD did not convergerS   N)Úsetattrr*   Úlinalgr‡   ra   r�   r   r	   )rµ   ÚmonkeypatchrÀ   Úvectorss       r7   Ú*test_spectral_clustering_not_infinite_looprÇ   >  sÄ   € ðð ð ð ×Ò�œ	 5¨'Ñ2Ô2Ð2ÝŒg�gÑÔ€Gå	Œ•{Ð*@Ð	AÑ	AÔ	Að ð Ý�7ÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁA1Á1A5Á8A5)6Ú__doc__r/   r²   Únumpyr*   ra   Úscipyr   Ú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   Úpyamgr   rœ   ÚImportErrorr+   r   rA   Ú_ÚmarkÚparametrizer8   rC   rP   ri   r{   r€   rŽ   Úfilterwarningsr©   r­   r·   r¼   rÇ   rX   r9   r7   ú<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ð „×Ò˜Ð)=Ñ>Ô>Ø„×Ò˜Ð*PÑQÔQð>ð >ñ RÔQñ ?Ô>ð>ðB „×Ò˜Ð*PÑQÔQð/ð /ñ RÔQð/ð,/ð /ð /ð4')ð ')ð ')ðT:ð :ð :ð$	ð 	ð 	ð „×Ò˜Ð&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% Á%A/Á.A/