
    -i*/              
       :   S SK r S SKJr  S SKrS SKrS SKJr  S SK	J
r
JrJrJrJrJr  S SKJr  S SKJr  S SKJrJrJr  S SKJr  / S	Qr/ S
QrS+S jr\R:                  R=                  SSS\R>                  4/5      \R:                  R=                  S\5      \R:                  R=                  S\5      S 5       5       5       r \R:                  R=                  SSS\R>                  4/5      \R:                  R=                  S\5      \R:                  R=                  S\5      S 5       5       5       r!\R:                  R=                  SSS/5      S 5       r"\R:                  R=                  SSS/5      S 5       r#S r$\R:                  R=                  SSSSSS SS4/5      S  5       r%S! r&\R:                  R=                  S\5      \R:                  R=                  S\5      \R:                  R=                  S"\5      S# 5       5       5       r'S$ r(S% r)S& r*S' r+S( r,S) r-S* r.g),    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           	         [        [        R                  " U5      5      n[        R                  " [        [        [        U5      SS95      5      R                  U SS9nU(       aZ  [        R                  R                  S5      nSUR                  US5      R                  U SS9-  n[        R                  " XF4S5      nU$ )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          U/var/www/html/venv/lib/python3.13/site-packages/sklearn/manifold/tests/test_isomap.pycreate_sample_datar1      s    TYYu%&J
geJ/:;<CCEPUCVAii##A&ciiq)00U0CCNNA:q)H    zn_neighbors, radius)   Neigen_solverpath_methodc                    Sn[        XSS9nUb  [        R                  " XaSS9nO[        R                  " XbSS9n[        R
                  " UUSUUS9nUR                  U5        Ub!  [        R                  " UR                  USS9n	O [        R                  " UR                  USS9n	U [        R                  :X  a  SOS	n
[        XyU
S
9  g )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<FA &&qJG,,QZH
//!C GGAJ**3>>;ZX00NNF
  2::-41D 5r2   c                 *   U [         R                  L a  [        R                  " S5        Sn[	        XSS9nUb$  [
        R                  " XaSS9R                  5       nO#[
        R                  " XbSS9R                  5       n[        R                  " 5       nUR                  SUS-  -  5      n	[        R                  " UUSUUS	9n
U
R                  U5        Ub!  [
        R                  " U
R                  USS9nO [
        R                  " U
R                  USS9nUR                  5       nUR                  SUS-  -  5      n[         R                   R#                  X-
  5      U-  nU [         R                  :X  a  S
OSn[%        XR'                  5       US9  g )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   se    rzz!J	
 E<EA &&qJGOOQ,,QZHPPR++-Htad{+A
//!C GGAJ **3>>;ZX00NNF
 MMOE""4%(?3E 99>>!)4u<2::-41D(*B*B*D4Pr2   )r   N)Ng      ?c                    SnSnSn[         R                  " USS9u  pgUR                  U SS9n[        R                  " XAUS9nUR                  U5      n	[        R                  R                  S5      n
XZR                  " UR                  6 -  nUR                  Xk-   5      n[        R                  " [        R                  " X-
  S	-  5      5      S	U-  :  d   eg )
N   
   g{Gz?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   ;DA	E*A //!6C a E ))


"C))QWW--E]]19%F 77277ENq012Q_DDDr2   )Ng      $@c                 "   [         R                  " SS9u  p4UR                  USS9n[        R                  " S[
        R                  " XS94S[        R                  " 5       4/5      nUR                  X45        SUR                  X45      :  d   eg )	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.DA	E*A


x;NOI2245	
C GGAM1   r2   c                    SnSn[         R                  " SS9u  p4[         R                  " SS9u  pTUR                  U SS9nUR                  U SS9n[        R                  " [
        R                  " X!SS	9[        R                  " US
S95      n[        R                  " X!S9nUR                  U5      nUR                  U5      n	[        X5        UR                  U5      nUR                  U5      n	[        X5        g )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.DAQ/EB	E*A	<e	,B &&''#z	
 	KF	I //K &&q)H**1-JH)""2&H&&r*JH)r2   zmetric, p, is_euclidean)	euclideanr   T)	manhattanr   F)	minkowskir   F)r   r   Tc                 h    [         R                  " [         R                  " U S-  US-  -   5      5      $ )Nr   )r    r   sum)x1x2s     r0   <lambda>r      s"    r1ur1u} 56r2   r   c                    [         R                  " SS9u  pEUR                  U SS9n[        R                  " 5       R                  U5      n[        R                  " XS9R                  U5      nU(       a  [        Xv5        g [        R                  " [        SS9   [        Xv5        S S S 5        g ! , (       d  f       g = f)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.DA	E*A!//2Iv3AA!DI	-]]>1IJI1 KJJs   B//
B=c                      [         R                  " 5       n S H]  nU R                  US9  U R                  [        R
                  R                  SS5      5        U R                  R                  U:X  a  M]   e   g )N)r]         r=   2   r   )	r   rE   
set_paramsrF   r    r%   r   nbrs_r=   )modelr=   s     r0   test_isomap_clone_bugr      s\    OOE#[1		"))..Q'({{&&+555 $r2   csr_containerc                     U" [        SSSSU US95      n[        R                  " SUUSS9n[        U5      nUR	                  UR                  5       5      nUR	                  U5      n	[        XS	S	S
9  g )Nd      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++AIIK8M--a0NN4Hr2   c                 x   [         R                  " SSS9u  pUR                  U SS9nSn[        R                  " XSS9n[
        R                  " S US	S
9nUR                  U5        UR                  n[
        R                  " S USS
9nUR                  U5      nU [        R                  :X  a  SOSn[        XgUS9  g )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5DA	E*AF((
KA__f]SF
JJqM**__f[QF!!!$F2::-41D&T:r2   c                     [         R                  " SS9n[        R                  " SS/SS/SS//U S9nUR	                  U5        UR
                  R                  U :X  d   eUR                  R                  U :X  d   eg	)
zNCheck 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
1a&1a&1a&)>AGGAJ!!\111>><///r2   c                     [         R                  " SS9n [        R                  " SS/SS/SS//[        R                  S9nU R                  U5        [         R                  " SS9n[        R                  " SS/SS/SS//[        R                  S9nUR                  U5        [        U R                  UR                  5        g	)
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88aVaVaV,BJJ?D
JJt__+F88aVaVaV,BJJ?D
JJtF'')<)<=r2   c                      [         R                  " SS9u  p[        R                  " SSS9nSn[        R
                  " [        US9   UR                  U 5        S S S 5        g ! , (       d  f       g = f)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  sS     40DA__37F
4C	z	-Q 
.	-	-s   A""
A0c                      [         R                  " / SQ5      S S 2S 4   n [        R                  " [        SS9   [
        R                  " SS9R                  U 5        S S S 5        g ! , (       d  f       g = f)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   =  sM    
#$QW-A	k)I	JA&**1- 
K	J	Js   $A&&
A4c                    [         R                  " / SQ5      S S 2S 4   R                  U SS9n[        U5      n[        R
                  " [        SS9   [        R                  " SSS9R                  U5        S S S 5        [        R                  " US	S
S9n[        R                  " [        SS9   [        R                  " SSS9R                  U5        S S S 5        g ! , (       d  f       Nk= f! , (       d  f       g = f)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NA %Q'K	k)I	JAm<@@M 
K ((
KG	|+K	LAm<@@I 
M	L 
K	J
 
M	Ls   %C.%C-
C*-
C;c                      [        SSS9u  pSn[        R                  " US9nUR                  U 5        UR	                  5       n[        [        U5       Vs/ s H  nSU 3PM
     snU5        gs  snf )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  sh    13DAL
//|
4Ca%%'EeL.AB.A&.ABEJBs   A.)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 
 /+"	 .dBFF^0LM756 6 8 N6@ .dBFF^0LM75+Q 6 8 N+Q\ .K0HIE JE2 .L0IJ! K! *@ 	65A	2	2 6 75.9I : 6 8I<;&
0
> .J Kr2   