§
    qŠtj4.  ã                   óÌ  — 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(        j)        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#„ Z0ej(         *                    de¦  «        ej(         *                    d$g d%¢¦  «        d&„ ¦   «         ¦   «         Z1d'„ Z2d(„ Z3ej(         *                    dd¦  «        d)„ ¦   «         Z4d*„ Z5d+„ Z6dS ),z'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| |¬¦  «                             |¦  «        }|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   Ú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_copys	            úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/cluster/tests/test_spectral.pyÚtest_spectral_clusteringr:   '   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gddggd¬¦  «        \  }}t          |d¬¦  «        }t          j        |dz
  d¦  «        } ||¦  «        }t	          |d	d
| ¬¦  «                             |¦  «        j        }t          ||¦  «        dk    sJ ‚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#   r<   r3   ÚXÚyr4   r7   s          r9   Útest_spectral_clustering_sparserE   N   sÅ   € õ ØØ'Ø�Q�˜"˜b˜Ð"Øð	ñ ô �D€A€qõ 	�1˜AÐÑÔ€AÝ
Œ
�1�t‘8˜QÑÔ€AØˆ�aÑÔ€Aõ 	Ø+ØØ"Ø'ð		
ñ 	
ô 	
÷ 
ŠˆQ‰ŒÜ	ð õ ˜q &Ñ)Ô)¨QÒ.Ð.Ð.Ð.Ð.Ð.r;   c                 ó‚  — t          d| g d¢g d¢gd¬¦  «        \  }}d}g }dD ]}t          ||z   ¬¦  «                             |¦  «        }|                     |d	¬
¦  «        }t	          | dd|¬¦  «                             |¦  «        j        }|                     |¦  «         Œ€t          |d         |d         ¦  «         d S )Ni,  )é   rG   rG   )éûÿÿÿrH   rH   r?   r@   r   )r   r   )Ún_neighborsÚdistance)Úmoder   Úprecomputed_nearest_neighbors)r   r*   r+   rI   r   r   )r	   r   r.   Úkneighbors_graphr   r/   Úappendr   )	r3   rC   rD   rI   ÚresultsÚadditional_neighborsÚnnÚgraphr7   s	            r9   Ú,test_precomputed_nearest_neighbors_filteringrS   i   sô   € åØØ'Ø��˜L˜L˜LÐ)Øð	ñ ô �D€A€qð €KØ€GØ 'ð ð ÐÝ¨+Ð8LÑ*LÐMÑMÔM×QÒQÐRSÑTÔTˆØ×#Ò# A¨JÐ#Ñ7Ô7ˆåØ/ØØ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| ¬¦  «        }|                     |¦  «        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*   rA   r   r   rG   Úadditive_chi2c                 ó   — dS )Nr   © )ÚxrD   s     r9   ú<lambda>z!test_affinities.<locals>.<lambda>¢   s   € À€ r;   c                 ó`   — |i k    sJ ‚t          j        | |¦  «                             ¦   «         S ©N)r,   ÚminimumÚsum)r[   rD   Úkwargss      r9   Ú	histogramz"test_affinities.<locals>.histogram¦   s-   € à˜Š|ˆ|ˆ|ˆ|ÝŒz˜!˜QÑÔ×#Ò#Ñ%Ô%Ð%r;   )r	   r   ÚpytestÚwarnsÚUserWarningr.   r   r/   r   Úrandr   Úshape)r3   rC   rD   Úspr7   Úkernels_availableÚkernrb   s           r9   Útest_affinitiesrk   †   sK  € õ Ø 1°°1¨v¸¸B°xÐ.@Èdðñ ô �D€A€qõ 
 qÐ3FÐUVÐ	WÑ	WÔ	W€BÝ	Œ•kÐ)>Ð	?Ñ	?Ô	?ð ð Ø
�Šˆq‰	Œ	ˆ	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å˜q "¤*Ñ-Ô-°Ò2Ð2Ð2Ð2å	 q°Ð@RÐ	SÑ	SÔ	S€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\  }}|                     ||¦  «        }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   rG   )r,   ÚrandomÚRandomStateÚrandnr   ÚastypeÚfloat64rg   Úarray_equalÚuniqueÚarangeÚfloat32)r3   r   r   Ún_componentsÚdataÚlabels_float64Úlabels_float32s          r9   Útest_cluster_qrr|   °   sÒ   € õ
 ”9×(Ò(Ð.@Ð(ÑAÔA€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\  }}|                     ||¦  «        }|                     |¦  «        }t          j        t          |¦  «        |         t          ||         ¦  «        ¦  «        sJ ‚d S )Nrm   )éd   rG   )r,   ro   rp   rq   Úpermutationrt   r   )r3   r   r   rx   ry   Úperms         r9   Ú&test_cluster_qr_permutation_invariancer�   Â   s”   € å”9×(Ò(Ð.@Ð(ÑAÔA€LØ$Ñ€Iˆ|Ø×Ò˜i¨Ñ6Ô6€DØ×#Ò# IÑ.Ô.€DÝŒ>Ý�4ÑÔ˜ÔÝ�4˜”:ÑÔñô ð ð ð ð ð r;   r   )é2   r~   é–   iô  c                 óø  — t           j                             |¬¦  «        }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 )
Nrm   r   r   r   r   )rg   gš™™™™™¹?)r   gš™™™™™é?)r,   ro   rp   ÚrangeÚrandintr-   ÚfloatÚonesrv   Útoarrayrq   r   r   )	r   r<   r3   r   Ún_classÚy_trueÚy_indicatorÚy_true_noisyÚy_preds	            r9   Útest_discretizer�   Î   s  € õ ”9×(Ò(Ð.@Ð(ÑAÔA€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;   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| ¬	¦  «        }t          t          j        |¦  «        ¦  «        dk    sJ ‚t          r+t          |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>   é   )é   é   r   r   r   )Úmaskr!   )r*   r    r   Úamg)r,   ÚindicesÚcopyrr   r‡   r
   Úexpry   Ústdr   Úlenru   Ú
amg_loadedr   rc   ÚraisesÚ
ValueError)r3   r[   rD   Úcenter1Úcenter2Úradius1Úradius2Úcircle1Úcircle2Úcirclesr—   ÚimgrR   Úlabels_arpackÚ
labels_amgs                  r9   Ú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å'Ø˜!¨(ÐASðñ ô €Mõ �rŒy˜Ñ'Ô'Ñ(Ô(¨AÒ-Ð-Ð-Ð-åð YÝ(Ø˜a¨eÐBTð
ñ 
ô 
ˆ
õ # =°*Ñ=Ô=ÀÒ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gddggd¬¦  «        \  }}t          d| ¬¦  «        }|                     |¦  «        j        }t          dd| ¬¦  «                             |¦  «        j        }t	          ||¦  «         t          d| ¬	¦  «                             |¦  «        j        }t          j        ||¦  «        rJ ‚d S )
Nr>   r   r   r?   r@   r   )r*   r   )r*   rx   r   )rx   r   )r	   r   r.   r/   r   r,   rt   )r3   rC   rD   rh   r7   Úlabels_same_ncompÚlabels_diff_ncomps          r9   Útest_n_componentsr¯     sç   € õ ØØ'Ø�Q�˜"˜b˜Ð"Øð	ñ ô �D€A€qõ 
 qÐ7IÐ	JÑ	JÔ	J€BØ�VŠV�A‰YŒYÔ€Fõ 	Ø qÐ7Ið	
ñ 	
ô 	
÷ 
ŠˆQ‰ŒÜ	ð õ �vÐ0Ñ1Ô1Ð1õ
 	¨Ð8JÐKÑKÔKß	ŠˆQ‰ŒÜ	ð õ
 Œ~˜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#   ÚcapsysrC   rD   Úcaptureds        r9   Ú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 )zcCheck that spectral_clustering raises an informative error when passed
    an np.matrix. See #10993r(   g       @z<np\.matrix is not supported. Please convert to a numpy arrayrV   N)r,   Úmatrixrc   rŸ   Ú	TypeErrorr   )rC   Úmsgs     r9   Ú)test_spectral_clustering_np_matrix_raisesr¾   9  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   )Úargsra   s     r9   Únew_svdz;test_spectral_clustering_not_infinite_loop.<locals>.new_svdI  s   € Ý‰mŒmÐr;   Úsvd)r   é   zSVD did not convergerV   N)Úsetattrr,   Úlinalgrˆ   rc   rŸ   r   r   )r·   ÚmonkeypatchrÂ   Úvectorss       r9   Ú*test_spectral_clustering_not_infinite_looprÉ   C  sÄ   € ðð ð ð ×Ò�œ	 5¨'Ñ2Ô2Ð2ÝŒg�gÑÔ€Gå	Œ•{Ð*@Ð	AÑ	AÔ	Að ð Ý�7ÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁA1Á1A5Á8A5)7Ú__doc__r0   r´   Únumpyr,   rc   Ú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   rC   Ú_ÚmarkÚno_check_spmatrixÚparametrizer:   rE   rS   rk   r|   r�   r�   r«   r¯   r¹   r¾   rÉ   rZ   r;   r9   ú<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ñ Ôð >ðF „×Ò˜¨.Ñ9Ô9Ø„×Ò˜Ð*PÑQÔQð/ð /ñ RÔQñ :Ô9ð/ð2/ð /ð /ð:')ð ')ð ')ðT:ð :ð :ð$	ð 	ð 	ð „×Ò˜¨.Ñ9Ô9Ø„×Ò˜Ð&9Ð&9Ð&9Ñ:Ô:ð9ð 9ñ ;Ô:ñ :Ô9ð9ð&!Yð !Yð !YðH9ð 9ð 9ð@ „×Ò˜Ð*PÑQÔQðEð Eñ RÔQðEð"ð ð ðð ð ð ð s   ÁA' Á'A1Á0A1