Ë
    ÷Q(h*/  ã            
       ó8  — d dl Z d dlmZ d dlZd dlZd dlmZ d dl	m
Z
mZmZmZmZmZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ g d	¢Zg d
¢Zd+d„Zej:                  j=                  dddej>                  fg«      ej:                  j=                  de«      ej:                  j=                  de«      d„ «       «       «       Z ej:                  j=                  dddej>                  fg«      ej:                  j=                  de«      ej:                  j=                  de«      d„ «       «       «       Z!ej:                  j=                  dddg«      d„ «       Z"ej:                  j=                  dddg«      d„ «       Z#d„ Z$ej:                  j=                  dddddd„ ddfg«      d „ «       Z%d!„ Z&ej:                  j=                  de«      ej:                  j=                  de«      ej:                  j=                  d"e«      d#„ «       «       «       Z'd$„ Z(d%„ Z)d&„ Z*d'„ Z+d(„ Z,d)„ Z-d*„ Z.y),é    N)Úproduct)Úrand)ÚcloneÚdatasetsÚmanifoldÚ	neighborsÚpipelineÚpreprocessing)Ú
make_blobs)Úpairwise_distances)Úassert_allcloseÚassert_allclose_dense_sparseÚassert_array_equal)ÚCSR_CONTAINERS)ÚautoÚdenseÚarpack)r   ÚFWÚDFc           	      ó†  — t        t        j                  |«      «      }t        j                  t        t        t        |«      d¬«      «      «      j                  | d¬«      }|r]t        j                  j                  d«      }d|j                  |d«      j                  | d¬«      z  }t        j                  ||fd«      }|S )Né   )ÚrepeatF©Úcopyr   çš™™™™™¹?é   )ÚintÚmathÚsqrtÚnpÚarrayÚlistr   ÚrangeÚastypeÚrandomÚRandomStateÚrandnÚconcatenate)ÚdtypeÚn_ptsÚ	add_noiseÚ
n_per_sideÚXÚrngÚnoises          ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/manifold/tests/test_isomap.pyÚcreate_sample_datar1      sš   € ä”T—Y‘Y˜uÓ%Ó&€JÜ
�‰””gœe JÓ/¸Ô:Ó;Ó<×CÑCÀEÐPUÐCÓV€AÙä�i‰i×#Ñ# AÓ&ˆØ�c—i‘i  qÓ)×0Ñ0°¸UÐ0ÓCÑCˆÜ�N‰N˜A˜u˜: qÓ)ˆØ€Hó    zn_neighbors, radius)é   NÚeigen_solverÚpath_methodc                 ó¸  — d}t        | |d¬«      }|�t        j                  ||d¬«      }nt        j                  ||d¬«      }t	        j
                  ||d||¬«      }|j                  |«       |�#t        j                  |j                  |d¬«      }	n"t        j                  |j                  |d¬«      }	| t        j                  k(  rdnd	}
t        ||	|
¬
«       y )Né   F©r*   r+   Údistance©Úmoder   ©Ún_neighborsÚradiusÚn_componentsr4   r5   çñhãˆµøä>r   ©Úatol)r1   r   Úkneighbors_graphÚradius_neighbors_graphr   ÚIsomapÚfitÚ
embedding_r    Úfloat32r   )Úglobal_dtyper=   r>   r4   r5   r*   r-   ÚGÚclfÚG_isorB   s              r0   Útest_isomap_simple_gridrM   "   sÊ   € ð €EÜ˜<¨uÀÔF€Að ÐÜ×&Ñ& q¨+¸JÔG‰ä×,Ñ,¨Q°¸ZÔHˆä
�/‰/ØØØØ!Øô€Cð ‡G�GˆA„JàÐÜ×*Ñ*¨3¯>©>¸;ÈZÔX‰ä×0Ñ0Ø�N‰N˜F¨ô
ˆð  ¤2§:¡:Ò-‰4°1€DÜ   E°Ö5r2   c                 óH  — | t         j                  u rt        j                  d«       d}t	        | |d¬«      }|�'t        j                  ||d¬«      j                  «       }n&t        j                  ||d¬«      j                  «       }t        j                  «       }|j                  d|dz  z  «      }	t        j                  ||d||¬	«      }
|
j                  |«       |�#t        j                  |
j                  |d¬«      }n"t        j                  |
j                  |d¬«      }|j                  «       }|j                  d|dz  z  «      }t         j                   j#                  |	|z
  «      |z  }| t         j                  k(  rd
nd}t%        ||
j'                  «       |¬«       y )NzwSkipping test due to numerical instabilities on float32 datafrom KernelCenterer used in the reconstruction_error methodr7   Tr8   r9   r:   g      à¿r   r<   r@   r   rA   )r    rH   ÚpytestÚskipr1   r   rC   ÚtoarrayrD   r
   ÚKernelCentererÚfit_transformr   rE   rF   rG   ÚlinalgÚnormr   Úreconstruction_error)rI   r=   r>   r4   r5   r*   r-   rJ   ÚcentererÚKrK   rL   ÚK_isorV   rB   s                  r0   Ú test_isomap_reconstruction_errorrZ   E   so  € ð ”r—z‘zÑ!Ü�‰ðJô	
ð €EÜ˜<¨uÀÔE€Að ÐÜ×&Ñ& q¨+¸JÔG×OÑOÓQ‰ä×,Ñ,¨Q°¸ZÔH×PÑPÓRˆÜ×+Ñ+Ó-€HØ×Ñ˜t a¨¡d™{Ó+€Aä
�/‰/ØØØØ!Øô€Cð ‡G�GˆA„Jð ÐÜ×*Ñ*¨3¯>©>¸;ÈZÔX‰ä×0Ñ0Ø�N‰N˜F¨ô
ˆð �M‰M‹O€EØ×"Ñ" 4¨%°©(¡?Ó3€Eô Ÿ9™9Ÿ>™>¨!¨e©)Ó4°uÑ<ÐØ¤2§:¡:Ò-‰4°1€DÜÐ(¨#×*BÑ*BÓ*DÈ4ÖPr2   )r   N)Ng      à?c                 óÆ  — d}d}d}t        j                  |d¬«      \  }}|j                  | d¬«      }t        j                  |||¬«      }|j                  |«      }	t        j                  j                  d«      }
| |
j                  |j                  Ž z  }|j                  ||z   «      }t        j                  t        j                  |	|z
  d	z  «      «      d	|z  k  sJ ‚y )
NéÈ   é
   g{®Gáz„?r   ©Úrandom_stateFr   )r?   r=   r>   r   )r   Úmake_s_curver$   r   rE   rS   r    r%   r&   r'   ÚshapeÚ	transformr   Úmean)rI   r=   r>   Ú	n_samplesr?   Únoise_scaler-   ÚyÚisoÚX_isor.   r/   ÚX_iso2s                r0   Útest_transformrj   v   sÔ   € à€IØ€LØ€Kô × Ñ  ¸Ô;�D€A€qà	�‰� EˆÓ*€Aô �/‰/Ø!¨{À6ô€Cð ×Ñ˜aÓ €Eô �)‰)×
Ñ
 Ó
"€CØ˜)˜#Ÿ)™) Q§W¡WÐ-Ñ-€EØ�]‰]˜1˜u™9Ó%€Fô �7‰7”2—7‘7˜E F™N¨qÑ0Ó1Ó2°Q¸±_ÒDÐDÑDr2   )Ng      $@c                 ó2  — t        j                  d¬«      \  }}|j                  |d¬«      }t        j                  dt        j                  | |¬«      fdt        j                  «       fg«      }|j                  ||«       d|j                  ||«      k  sJ ‚y )	Nr   r^   Fr   Úisomap©r=   r>   rK   gÍÌÌÌÌÌì?)r   r   r$   r	   ÚPipeliner   rE   r   ÚKNeighborsClassifierrF   Úscore)r=   r>   rI   r-   rf   rK   s         r0   Útest_pipelinerq   �   sŠ   € ô
 ×Ñ¨AÔ.�D€A€qØ	�‰� EˆÓ*€AÜ
×
Ñ
à”x—‘°;ÀvÔNÐOØ”I×2Ñ2Ó4Ð5ð	
ó€Cð ‡G�GˆAˆq„MØ�—‘˜1˜a“Ò Ð Ñ r2   c                 ó$  — d}d}t        j                  d¬«      \  }}t        j                  d¬«      \  }}|j                  | d¬«      }|j                  | d¬«      }t        j                  t        j                  ||d¬	«      t        j                  |d
¬«      «      }t        j                  ||¬«      }|j                  |«      }|j                  |«      }	t        ||	«       |j                  |«      }|j                  |«      }	t        ||	«       y )Nr   r]   r   r^   r   Fr   r9   )r=   Ú	algorithmr;   Úprecomputed©r=   Úmetric)r=   Úneighbors_algorithm)r   r   r$   r	   Úmake_pipeliner   ÚKNeighborsTransformerr   rE   rS   r   rb   )
rI   rs   r=   r-   Ú_ÚX2Ú	est_chainÚest_compactÚXt_chainÚ
Xt_compacts
             r0   Ú0test_pipeline_with_nearest_neighbors_transformerr€   ¡   sü   € ð €IØ€Kä×Ñ¨AÔ.�D€A€qÜ×Ñ¨QÔ/�E€Bˆà	�‰� EˆÓ*€AØ	�‰�< eˆÓ	,€Bô ×&Ñ&Ü×'Ñ'Ø#¨y¸zô	
ô 	�‰ K¸ÔFó	€Iô —/‘/Ø°Yô€Kð ×&Ñ& qÓ)€HØ×*Ñ*¨1Ó-€JÜ�H˜jÔ)à×"Ñ" 2Ó&€HØ×&Ñ& rÓ*€JÜ�H˜jÕ)r2   zmetric, p, is_euclidean)Ú	euclideanr   T)Ú	manhattanr   F)Ú	minkowskir   F)rƒ   r   Tc                 ód   — t        j                  t        j                  | dz  |dz  z   «      «      S )Nr   )r    r   Úsum)Úx1Úx2s     r0   ú<lambda>rˆ   È   s$   € œŸ™¤§¡ r¨1¡u¨r°1©u¡}Ó 5Ó6€ r2   r   c                 ó„  — t        j                  d¬«      \  }}|j                  | d¬«      }t        j                  «       j                  |«      }t        j                  ||¬«      j                  |«      }|rt        ||«       y t        j                  t        d¬«      5  t        ||«       d d d «       y # 1 sw Y   y xY w)Nr   r^   Fr   )rv   ÚpzNot equal to tolerance©Úmatch)
r   r   r$   r   rE   rS   r   rO   ÚraisesÚAssertionError)rI   rv   rŠ   Úis_euclideanr-   rz   Ú	referenceÚ	embeddings           r0   Útest_different_metricr’   Á   s—   € ô ×Ñ¨AÔ.�D€A€qØ	�‰� EˆÓ*€Aä—‘Ó!×/Ñ/°Ó2€IÜ—‘ v°Ô3×AÑAÀ!ÓD€IáÜ˜	 9Õ-ä�]‰]œ>Ð1IÔJñ 	2Ü˜I yÔ1÷	2÷ 	2ñ 	2ús   Â B6Â6B?c                  óò   — t        j                  «       } dD ]^  }| j                  |¬«       | j                  t        j
                  j                  dd«      «       | j                  j                  |k(  rŒ^J ‚ y )N)r]   é   é   ©r=   é2   r   )	r   rE   Ú
set_paramsrF   r    r%   r   Únbrs_r=   )Úmodelr=   s     r0   Útest_isomap_clone_bugr›   Û   sa   € ä�O‰OÓ€EØ#ò 6ˆØ×Ñ [ÐÔ1Ø�	‰	”"—)‘)—.‘.  QÓ'Ô(Ø�{‰{×&Ñ&¨+Ó5Ð5Ð5ñ6r2   Úcsr_containerc           
      óø   —  |t        dddd| |¬«      «      }t        j                  d||d¬«      }t        |«      }|j	                  |j                  «       «      }|j	                  |«      }	t        |	|d	d	¬
«       y )Néd   é   r   Úcsr)ÚdensityÚformatr)   r_   r   é   )r?   r4   r5   r=   g-Cëâ6?)ÚrtolrB   )Úsparse_randr   rE   r   rS   rQ   r   )
rI   r4   r5   Úglobal_random_seedrœ   r-   Ú	iso_denseÚ
iso_sparseÚX_trans_denseÚX_trans_sparses
             r0   Útest_sparse_inputr«   ä   s„   € ñ 	ÜØØØØØØ+ô	
ó		€Aô —‘ØØ!ØØô	€Iô �yÓ!€Jà×+Ñ+¨A¯I©I«KÓ8€MØ×-Ñ-¨aÓ0€Nä�N M¸À4ÖHr2   c                 ó˜  — t        j                  dd¬«      \  }}|j                  | d¬«      }d}t        j                  ||d¬«      }t        j                  d |d	¬
«      }|j                  |«       |j                  }t        j                  d |d¬
«      }|j                  |«      }| t        j                  k(  rdnd}t        |||¬«       y )Nr\   r   r^   Fr   r]   r9   )r>   r;   rt   )r=   r>   rv   rƒ   r@   rA   )r   r`   r$   r   rD   r   rE   rF   rG   rS   r    rH   r   )	rI   r-   rf   r>   Úgrl   Úprecomputed_resultÚresultrB   s	            r0   Ú(test_isomap_fit_precomputed_radius_graphr°     s¯   € ô × Ñ  °1Ô5�D€A€qØ	�‰� EˆÓ*€AØ€Fä×(Ñ(¨°6À
ÔK€AÜ�_‰_¨°fÀ]ÔS€FØ
‡J�Jˆq„MØ×*Ñ*Ðä�_‰_¨°fÀ[ÔQ€FØ×!Ñ! !Ó$€FØ¤2§:¡:Ò-‰4°1€DÜÐ&¨°TÖ:r2   c                 óþ   — t        j                  d¬«      }t        j                  ddgddgddgg| ¬«      }|j	                  |«       |j
                  j                  | k(  sJ ‚|j                  j                  | k(  sJ ‚y	)
zRCheck that the fitted attributes are stored accordingly to the
    data type of X.r   r–   r   rŸ   é   é   é   ©r)   N)r   rE   r    r!   rF   Údist_matrix_r)   rG   )rI   rg   r-   s      r0   Ú#test_isomap_fitted_attributes_dtyper·     sr   € ô �/‰/ aÔ
(€Cä
�‰�1�a�&˜1˜a˜& 1 a &Ð)°Ô>€Aà‡G�GˆA„Jà×Ñ×!Ñ! \Ò1Ð1Ð1Ø�>‰>×Ñ <Ò/Ð/Ñ/r2   c                  ó˜  — t        j                  d¬«      } t        j                  ddgddgddggt        j                  ¬«      }| j                  |«       t        j                  d¬«      }t        j                  ddgddgddggt        j                  ¬«      }|j                  |«       t        | j                  |j                  «       y	)
z?Check the equivalence of the results with 32 and 64 bits input.r   r–   r   rŸ   r²   r³   r´   rµ   N)	r   rE   r    r!   rH   rF   Úfloat64r   r¶   )Úiso_32ÚX_32Úiso_64ÚX_64s       r0   Útest_isomap_dtype_equivalencer¾   %  sš   € ä�_‰_¨Ô+€FÜ�8‰8�a˜�V˜a ˜V a¨ VÐ,´B·J±JÔ?€DØ
‡J�JˆtÔä�_‰_¨Ô+€FÜ�8‰8�a˜�V˜a ˜V a¨ VÐ,´B·J±JÔ?€DØ
‡J�JˆtÔä�F×'Ñ'¨×)<Ñ)<Õ=r2   c                  óê   — t        j                  d¬«      \  } }t        j                  dd¬«      }d}t	        j
                  t        |¬«      5  |j                  | «       d d d «       y # 1 sw Y   y xY w)NT)Ú
return_X_yrŸ   g      @rm   z(Both n_neighbors and radius are providedr‹   )r   Úload_digitsr   rE   rO   r�   Ú
ValueErrorrS   )r-   rz   rl   Úmsgs       r0   Ú9test_isomap_raise_error_when_neighbor_and_radius_both_setrÄ   2  s^   € ô ×Ñ¨4Ô0�D€A€qÜ�_‰_¨°3Ô7€FØ
4€CÜ	�‰”z¨Ô	-ñ  Ø×Ñ˜QÔ÷ ÷  ñ  ús   ÁA)Á)A2c                  óê   — t        j                  g d¢«      d d …d f   } t        j                  t        d¬«      5  t        j                  d¬«      j                  | «       d d d «       y # 1 sw Y   y xY w)N©r   r   r   r³   r´   é   únumber of connected componentsr‹   r   r–   )r    r!   rO   ÚwarnsÚUserWarningr   rE   rF   )r-   s    r0   Ú"test_multiple_connected_componentsrË   =  sU   € ä
�‰Ò#Ó$¢Q¨ WÑ-€AÜ	�‰”kÐ)IÔ	Jñ .Ü�‰ AÔ&×*Ñ*¨1Ô-÷.÷ .ñ .ús   º&A)Á)A2c                 ó   — t        j                  g d¢«      d d …d f   j                  | d¬«      }t        |«      }t	        j
                  t        d¬«      5  t        j                  dd¬«      j                  |«       d d d «       t        j                  |d	d
¬«      }t	        j                  t        d¬«      5  t        j                  dd¬«      j                  |«       d d d «       y # 1 sw Y   ŒlxY w# 1 sw Y   y xY w)NrÆ   Fr   rÈ   r‹   r   rt   ru   r   r9   )r=   r;   )r    r!   r$   r   rO   rÉ   rÊ   r   rE   rF   r   rC   r�   ÚRuntimeError)rI   r-   ÚX_distancesÚX_graphs       r0   Ú5test_multiple_connected_components_metric_precomputedrÐ   D  sÖ   € ô 	�‰Ò#Ó$¢Q¨ WÑ-×4Ñ4°\ÈÐ4ÓN€Aô % QÓ'€KÜ	�‰”kÐ)IÔ	Jñ NÜ�‰ A¨mÔ<×@Ñ@ÀÔM÷Nô ×(Ñ(¨¸À
ÔK€GÜ	�‰”|Ð+KÔ	Lñ JÜ�‰ A¨mÔ<×@Ñ@ÀÔI÷Jð J÷Nð Nú÷
Jð Jús   Á'C(Â8'C4Ã(C1Ã4C=c                  óì   — t        dd¬«      \  } }d}t        j                  |¬«      }|j                  | «       |j	                  «       }t        t        |«      D �cg c]  }d|› �‘Œ	 c}|«       yc c}w )z'Check get_feature_names_out for Isomap.r   r²   )r_   Ú
n_featuresr   )r?   rl   N)r   r   rE   rS   Úget_feature_names_outr   r#   )r-   rf   r?   rg   ÚnamesÚis         r0   Útest_get_feature_names_outrÖ   T  sd   € ä 1°Ô3�D€A€qØ€Lä
�/‰/ |Ô
4€CØ×Ñ�aÔØ×%Ñ%Ó'€EÜ¬e°LÓ.AÖB¨˜&  šÒBÀEÕJùÒBs   ÁA1)r7   F)/r   Ú	itertoolsr   Únumpyr    rO   Úscipy.sparser   r¥   Úsklearnr   r   r   r   r	   r
   Úsklearn.datasetsr   Úsklearn.metrics.pairwiser   Úsklearn.utils._testingr   r   r   Úsklearn.utils.fixesr   Úeigen_solversÚpath_methodsr1   ÚmarkÚparametrizeÚinfrM   rZ   rj   rq   r€   r’   r›   r«   r°   r·   r¾   rÄ   rË   rÐ   rÖ   © r2   r0   ú<module>rå      s2  ðÛ Ý ã Û Ý ,ç Q× QÝ 'Ý 7÷ñ õ
 /â+€Ú"€ó	ð ‡�×ÑÐ.°¸dÀBÇFÁF¸^Ð0LÓMØ‡�×Ñ˜¨Ó7Ø‡�×Ñ˜¨Ó5ñ6ó 6ó 8ó Nð6ð@ ‡�×ÑÐ.°¸dÀBÇFÁF¸^Ð0LÓMØ‡�×Ñ˜¨Ó7Ø‡�×Ñ˜¨Ó5ñ+Qó 6ó 8ó Nð+Qð\ ‡�×ÑÐ.°¸KÐ0HÓIñEó JðEð2 ‡�×ÑÐ.°¸LÐ0IÓJñ!ó Kð!ò *ð@ ‡�×ÑØàØØØÙ	6¸¸5ÐAðó	ñ2ó	ð2ò 6ð ‡�×Ñ˜¨Ó7Ø‡�×Ñ˜¨Ó5Ø‡�×Ñ˜¨.Ó9ñIó :ó 6ó 8ðIò<;ò&
0ò
>ò ò.òJó Kr2   