Ë
    ÷Q(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	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" ejH                  ddgddgddgg«      dz   Z% edde%ddd¬«      \  Z&Z'ejP                  jS                  de«      ejP                  jS                  dd«      ejP                  jS                  dd«      d„ «       «       «       Z*ejP                  jS                  de«      ejP                  jS                  dd«      d„ «       «       Z+d „ Z,d!„ Z-d"„ Z.d#„ Z/ejP                  jS                  de«      ejP                  jS                  d$g d%¢«      d&„ «       «       Z0d'„ Z1d(„ Z2ejP                  jS                  dd«      d)„ «       Z3d*„ Z4d+„ Z5y# e#$ r dZ"Y �ŒXw xY w),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d| |¬«      j                  |«      }|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                  «       ŒÍ y )
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           úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/cluster/tests/test_spectral.pyÚtest_spectral_clusteringr9   '   s  € ô 	�‰â/Ú/Ú/Ú/Ú/Ú/Ú/ð	
ó
	€Að ‘= Ó#Ð$ò >ˆÜ"ØØØ"Ø%Ø'ô
÷ ‰#ˆc‹(ð 	ð —‘ˆØ�!‰9˜Š>Ø˜‘ZˆFä" 6Ò+@ÓAÀQÒFÐFÐFä—\‘\¤&§,¡,¨uÓ"5Ó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                  |«      j                  }t        ||«      dk(  sJ ‚y )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                  óB  — t        ddddgddggd¬«      \  } }d}g }dD ]l  }t        ||z   ¬	«      j                  | «      }|j                  | d
¬«      }t	        ddd|¬«      j                  |«      j
                  }|j                  |«       Œn t        |d   |d   «       y )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×QÑQÐRSÓTˆØ×#Ñ# A¨NÐ#Ó;ˆäØØØ8Ø'ô	÷ ‰S�‹Zß‰Wð 	ð 	�‰�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  |j                  | «       d d d «       t        ||j                  «      dk(  sJ ‚t        ddd¬«      }|j                  | «      j                  }t        ||«      dk(  sJ ‚t        d«      j                  dd«      dz  } t        «       }|D ]P  }|dk7  sŒ	t        d|d¬	«      }|j                  | «      j                  }| j                  d   f|j                  k(  rŒPJ ‚ t        dd„ d¬	«      }|j                  | «      j                  }| j                  d   f|j                  k(  sJ ‚d„ }t        d|d¬	«      }|j                  | «      j                  }| j                  d   f|j                  k(  sJ ‚y # 1 sw Y   �ŒqxY w)Nr=   r   r   r   r>   r?   r   Únearest_neighbors)r*   r+   r   znot fully connected©Úmatch)r*   r@   r   r   é   Úadditive_chi2c                  ó   — y)Nr   © )ÚxrC   s     r8   ú<lambda>z!test_affinities.<locals>.<lambda>™   s   � r:   c                 óX   — |i k(  sJ ‚t        j                  | |«      j                  «       S ©N)r,   ÚminimumÚsum)rZ   rC   Úkwargss      r8   Ú	histogramz"test_affinities.<locals>.histogram�   s(   € à˜Š|Ðˆ|Ü�z‰z˜!˜QÓ×#Ñ#Ó%Ð%r:   )r	   r   ÚpytestÚwarnsÚUserWarningr.   r   r/   r   Úrandr   Úshape)rB   rC   Úspr6   Úkernels_availableÚkernra   s          r8   Útest_affinitiesrj   }   s·  € ô Ø 1°°1¨v¸¸B°xÐ.@Èdô�D€A€qô 
 qÐ3FÐUVÔ	W€BÜ	�‰”kÐ)>Ô	?ñ Ø
�‰ˆqŒ	÷ä˜q "§*¡*Ó-°Ò2Ð2Ð2ä	 q°ÀÔ	B€BØ�V‰V�A‹Y×Ñ€FÜ˜q &Ó)¨QÒ.Ð.Ð.ä˜2Ó×#Ñ# B¨Ó*¨RÑ/€Aä&Ó(ÐØ!ò 1ˆð �?Ó"Ü#¨q¸4ÈaÔPˆBØ—V‘V˜A“Y×&Ñ&ˆFØ—G‘G˜A‘J�= F§L¡LÓ0Ð0Ð0ð1ô 
 q±>ÐPQÔ	R€BØ�V‰V�A‹Y×Ñ€FØ�G‰G�A‰Jˆ=˜FŸL™LÒ(Ð(Ð(ò&ô
 
 q°9È1Ô	M€BØ�V‰V�A‹Y×Ñ€FØ�G‰G�A‰Jˆ=˜FŸL™LÒ(Ð(Ñ(÷=ñ ús   ÁGÇGc                  óâ  — t         j                  j                  d¬«      } d\  }}| j                  ||«      }t	        |j                  t         j                  «      «      }|j                  |fk(  sJ ‚t        j                  t        j                  |«      t        j                  |«      «      sJ ‚t	        |j                  t         j                  «      «      }t        j                  ||«      sJ ‚y )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‘9×(Ñ(¨aÐ(Ó0€LØ#Ñ€Iˆ|Ø×Ñ˜i¨Ó6€DÜ §¡¬B¯J©JÓ 7Ó8€Nà×Ñ I <Ò/Ð/Ð/ä�>‰>œ"Ÿ)™) NÓ3´R·Y±Y¸|Ó5LÔMÐMÐMä §¡¬B¯J©JÓ 7Ó8€NÜ�>‰>˜.¨.Ô9Ð9Ñ9r:   c                  óô   — t         j                  j                  d¬«      } d\  }}| j                  ||«      }| j	                  |«      }t        j
                  t        |«      |   t        ||   «      «      sJ ‚y )Nrl   rm   )éd   rV   )r,   ro   rp   rq   Úpermutationrt   r   )r   r   rx   ry   Úperms        r8   Ú&test_cluster_qr_permutation_invariancer�   ¹   st   € ä—9‘9×(Ñ(¨aÐ(Ó0€LØ$Ñ€Iˆ|Ø×Ñ˜i¨Ó6€DØ×#Ñ# IÓ.€DÜ�>‰>Ü�4Ó˜ÑÜ�4˜‘:Óôð ñ r:   r   )é2   r~   é–   iô  c                 óÆ  — t         j                  j                  d¬«      }t        dd«      D ]²  }|j	                  d|dz   | «      }t        j
                  |t        «      } |t        j                  | «      t        j                  | «      |ff| |dz   f¬«      }|j                  «       d|j                  | |dz   «      z  z   }t        ||¬	«      }t        ||«      d
kD  rŒ²J ‚ y )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‘9×(Ñ(¨aÐ(Ó0€LÜ˜˜B“<ò 9ˆà×%Ñ% a¨°1©°iÓ@ˆÜ—‘˜&¤%Ó(ˆá#Ü�W‰W�YÓ¤"§)¡)¨IÓ"6¸Ð!?Ð@Ø˜g¨™kÐ*ô
ˆð #×*Ñ*Ó,¨s°\×5GÑ5GØ�w ‘{ó6
ñ 0
ñ 
ˆô ˜L°|ÔDˆÜ" 6¨6Ó2°SÓ8Ð8Ð8ñ9r:   c                  óÖ  — 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  }|j                  «       }	|j                  t        «      }
t        |
|	¬«      }t        j                  |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 ‚y t        j                  t         «      5  t        |dd
d¬	«       d d d «       y # 1 sw Y   y xY w)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ª   Ú   sk  € ô
 �:‰:�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¡j§n¡nÓ&6Ñ6Ó7€E„Jä'Ø˜!¨(Àô€Mô Œr�y‰y˜Ó'Ó(¨AÒ-Ð-Ð-åÜ(Ø˜a¨eÀ!ô
ˆ
ô # =°*Ó=ÀÒBÐBÑBä�]‰]œ:Ó&ñ 	YÜ °!À%ÐVWÕX÷	Y÷ 	Yñ 	Yús   ÅEÅE(c                  óf  — t        ddddgddggd¬«      \  } }t        dd¬«      }|j                  | «      j                  }t        ddd¬	«      j                  | «      j                  }t	        ||«       t        dd¬
«      j                  | «      j                  }t        j                  ||«      rJ ‚y )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€BØ�V‰V�A‹Y×Ñ€Fô 	 a°aÀaÔH×LÑLÈQÓO×WÑWð ô �vÐ0Ô1ô
 	¨¸Ô:×>Ñ>¸qÓA×IÑIð ô �~‰~˜fÐ&7Ô8Ð8Ð8Ð8r:   c                 óf  — t        ddddgddggd¬«      \  }}t        ddd¬	«      j                  |«       |j                  «       }t	        j
                  d
|j                  «      sJ ‚| dk(  rEt	        j
                  d|j                  «      sJ ‚t	        j
                  d|j                  «      sJ ‚y y )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à× Ñ Ó"€Hä�9‰9Ð8¸(¿,¹,ÔGÐGÐGà˜Ò Ü�y‰yÐ3°X·\±\ÔBÐBÐBÜ�y‰yÐ5°x·|±|ÔDÐDÑDð !r:   c                  ó´   — t        j                  ddgddgg«      } d}t        j                  t        |¬«      5  t        | «       ddd«       y# 1 sw Y   yxY w)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½   '  sO   € ô 	�	‰	�C˜�:  S˜zÐ*Ó+€Aà
I€CÜ	�‰”y¨Ô	,ñ Ü˜AÔ÷÷ ñ ús   ¹AÁAc                 óì   — d„ }|j                  t        j                  d|«       t        j                  d«      }t	        j
                  t        d¬«      5  t        |«       ddd«       y# 1 sw Y   yxY w)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_svd7  s
   € Ü‹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È   1  sY   € òð ×ÑœŸ	™	 5¨'Ô2Ü�g‰g�gÓ€Gä	�‰”{Ð*@Ô	Añ Ü�7Ô÷÷ ñ ús   ÁA*Á*A3)6Ú__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�   rª   r®   r¸   r½   rÈ   rY   r:   r8   ú<module>rÛ      sÑ  ðÙ -ã Û 	ã Û Ý $ç Cß <Ý 'Ý 3Ý /ß ?Ý .Ý ,Ý 5ß >ðÝ1à€Jð ˆ"�(‰(�Q˜�F˜R ˜H q¨" gÐ.Ó
/°"Ñ
4€ÙØØØØØØô�€€1ð ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜Ð)=Ó>Ø‡�×Ñ˜Ð*PÓQñ>ó Ró ?ó :ð>ðB ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜Ð*PÓQñ/ó Ró :ð/ò,/ò4')òT:ò$	ð ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜Ò&9Ó:ñ9ó ;ó :ð9ò&!YòH9ð. ‡�×Ñ˜Ð*PÓQñEó RðEò"óøðq ò ØƒJðús   ÁF4 Æ4F?Æ>F?