
     h.              
       (   d dl mZ d dlZd dlZd dl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 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                            dddej        fg          ej                            de          ej                            de          d                                     Zej                            dddej        fg          ej                            de          ej                            de          d                                     Zej                            dddg          d             Z ej                            dddg          d             Z!d Z"ej                            dddd d!d" d#dfg          d$             Z#d% Z$ej                            de          ej                            de          d&                         Z%d' Z&d( Z'd) Z(d* Z)d+ Z*d, Z+d- Z,dS )/    )productN)datasetsclone)manifold)	neighbors)pipeline)preprocessing)
make_blobs)pairwise_distances)assert_allcloseassert_allclose_dense_sparseassert_array_equal)rand)autodensearpack)r   FWD   Fc           	         t          t          j        |                    }t          j        t          t          t          |          d                                                  | d          }|rdt          j	        
                    d          }d|                    |d                              | 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/html/Sam_Eipo/venv/lib/python3.11/site-packages/sklearn/manifold/tests/test_isomap.pycreate_sample_datar1      s    TYu%%&&J
geJ//:::;;<<CCEPUCVVA *i##A&&ciiq))00U0CCCNAu:q))H    zn_neighbors, radius)   Neigen_solverpath_methodc                    d}t          | |d          }|t          j        ||d          }nt          j        ||d          }t	          j        ||d||          }|                    |           |t          j        |j        |d          }	nt          j        |j        |d          }	| t          j	        k    rdnd	}
t          ||	|

           d S )Nr   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_isorA   s              r0   test_isomap_simple_gridrL   $   s     E<uFFFA &q+JGGG,QZHHH
/!  C GGAJJJ*3>;ZXXX0NF
 
 
  2:--441D E555555r2   c                 b   | t           j        u rt          j        d           d}t	          | |d          }|*t          j        ||d                                          }n)t          j        ||d                                          }t          j
                    }|                    d|dz  z            }	t          j        ||d||	          }
|
                    |           |t          j        |
j        |d          }nt          j        |
j        |d          }|                                }|                    d|dz  z            }t           j                            |	|z
            |z  }| t           j        k    rd
nd}t%          ||
                                |           d S )NzwSkipping test due to numerical instabilities on float32 datafrom KernelCenterer used in the reconstruction_error methodr   Tr7   r8   r9   g      r   r;   r?   r   r@   )r    rG   pytestskipr1   r   rB   toarrayrC   r	   KernelCentererfit_transformr   rD   rE   rF   linalgnormr   reconstruction_error)rH   r<   r=   r4   r5   r*   r-   rI   centererKrJ   rK   K_isorU   rA   s                  r0    test_isomap_reconstruction_errorrY   G   s    rz!!J	
 	
 	
 E<uEEEA &q+JGGGOOQQ,QZHHHPPRR+--Htad{++A
/!  C GGAJJJ *3>;ZXXX0NF
 
 
 MMOOE""4%(?33E 9>>!e)44u<2:--441D(#*B*B*D*D4PPPPPPr2   )r   N)Ng      ?c                    d}d}d}t          j        |d          \  }}|                    | d          }t          j        |||          }|                    |          }	t          j                            d          }
| |
j	        |j
         z  }|                    ||z             }t          j        t          j        |	|z
  d	z                      d	|z  k     sJ d S )
N   
   g{Gz?r   random_stateFr   )r>   r<   r=   r   )r   make_s_curver$   r   rD   rR   r    r%   r&   r'   shape	transformr   mean)rH   r<   r=   	n_samplesr>   noise_scaler-   yisoX_isor.   r/   X_iso2s                r0   test_transformri   x   s    ILK  ;;;DAq	E**A /!{6  C a  E )


"
"C)#)QW--E]]1u9%%F 727EFNq01122Q_DDDDDDr2   )Ng      $@c                 F   t          j        d          \  }}|                    |d          }t          j        dt          j        | |          fdt          j                    fg          }|	                    ||           d|
                    ||          k     sJ d S )	Nr   r]   Fr   isomapr<   r=   rJ   g?)r   r
   r$   r   Pipeliner   rD   r   KNeighborsClassifierrE   score)r<   r=   rH   r-   re   rJ   s         r0   test_pipelinerp      s    
 A...DAq	E**A

x;vNNNOI2445	
 C GGAqMMM1a      r2   c                 Z   d}d}t          j        d          \  }}t          j        d          \  }}|                    | d          }|                    | d          }t          j        t          j        ||d	          t          j        |d
                    }t          j        ||          }|	                    |          }|	                    |          }	t          ||	           |                    |          }|                    |          }	t          ||	           d S )Nr   r\   r   r]   r   Fr   r8   )r<   	algorithmr:   precomputedr<   metric)r<   neighbors_algorithm)r   r
   r$   r   make_pipeliner   KNeighborsTransformerr   rD   rR   r   ra   )
rH   rr   r<   r-   _X2	est_chainest_compactXt_chain
Xt_compacts
             r0   0test_pipeline_with_nearest_neighbors_transformerr      s;    IKA...DAqQ///EB	E**A	<e	,	,B &'#yz	
 	
 	
 	KFFF	 I /Y  K &&q))H**1--JHj)))""2&&H&&r**JHj)))))r2   zmetric, p, is_euclidean)	euclideanr   T)	manhattanr   F)	minkowskir   F)r   r   Tc                 `    t          j        t          j        | dz  |dz  z                       S )Nr   )r    r   sum)x1x2s     r0   <lambda>r      s&    r1ur1u} 5 566 r2   r   c                    t          j        d          \  }}|                    | d          }t          j                                        |          }t          j        ||                              |          }|rt          ||           d S t          j        t          d          5  t          ||           d d d            d S # 1 swxY w Y   d S )Nr   r]   Fr   )ru   pzNot equal to tolerancematch)
r   r
   r$   r   rD   rR   r   rN   raisesAssertionError)rH   ru   r   is_euclideanr-   ry   	reference	embeddings           r0   test_different_metricr      s    A...DAq	E**A!!//22Iv333AA!DDI 2	9-----]>1IJJJ 	2 	2Iy111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   .CCCc                      t          j                    } dD ]]}|                     |           |                     t          j                            dd                     | j        j        |k    sJ ^d S )N)r\         r<   2   r   )	r   rD   
set_paramsrE   r    r%   r   nbrs_r<   )modelr<   s     r0   test_isomap_clone_bugr      sz    OE# 6 6[111		")..Q''((({&+555556 6r2   c                    t          dddd| |          }t          j        d||d          }t          |          }|                    |                                          }|                    |          }t          ||d	d	
           d S )Nd      r   csr)densityformatr)   r^   r      )r>   r4   r5   r<   g-C6?)rtolrA   )sparse_randr   rD   r   rR   rP   r   )	rH   r4   r5   global_random_seedr-   	iso_dense
iso_sparseX_trans_denseX_trans_sparses	            r0   test_sparse_inputr      s    
 		'	 	 	A !	  I y!!J++AIIKK88M--a00NNM4HHHHHHr2   c                    t          j        dd          \  }}|                    | d          }d}t          j        ||d          }t          j        d |d	
          }|                    |           |j        }t          j        d |d
          }|	                    |          }| t          j        k    rdnd}t          |||           d S )Nr[   r   r]   Fr   r\   r8   )r=   r:   rs   )r<   r=   ru   r   r?   r@   )r   r_   r$   r   rC   r   rD   rE   rF   rR   r    rG   r   )	rH   r-   re   r=   grk   precomputed_resultresultrA   s	            r0   (test_isomap_fit_precomputed_radius_graphr     s      1555DAq	E**AF(6
KKKA_f]SSSF
JJqMMM*_f[QQQF!!!$$F2:--441D&T::::::r2   c                     t          j        d          }t          j        ddgddgddgg|           }|                    |           |j        j        | k    sJ |j        j        | k    sJ d	S )
zRCheck that the fitted attributes are stored accordingly to the
    data type of X.r   r   r   r            r)   N)r   rD   r    r!   rE   dist_matrix_r)   rF   )rH   rf   r-   s      r0   #test_isomap_fitted_attributes_dtyper     s     /a
(
(
(C
1a&1a&1a&)>>>AGGAJJJ!\1111><//////r2   c                     t          j        d          } t          j        ddgddgddggt          j                  }|                     |           t          j        d          }t          j        ddgddgddggt          j                  }|                    |           t          | j        |j                   d	S )
z?Check the equivalence of the results with 32 and 64 bits input.r   r   r   r   r   r   r   r   N)	r   rD   r    r!   rG   rE   float64r   r   )iso_32X_32iso_64X_64s       r0   test_isomap_dtype_equivalencer   "  s    _+++F8aVaVaV,BJ???D
JJt_+++F8aVaVaV,BJ???D
JJtF')<=====r2   c                      t          j        d          \  } }t          j        dd          }d}t	          j        t          |          5  |                    |            d d d            d S # 1 swxY w Y   d S )NT)
return_X_yr   g      @rl   z(Both n_neighbors and radius are providedr   )r   load_digitsr   rD   rN   r   
ValueErrorrR   )r-   ry   rk   msgs       r0   9test_isomap_raise_error_when_neighbor_and_radius_both_setr   /  s     4000DAq_3777F
4C	z	-	-	-    Q                                   s   A//A36A3c                      t          j        g d          d d d f         } t          j        t          d          5  t          j        d                              |            d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r      number of connected componentsr   r   r   )r    r!   rN   warnsUserWarningr   rD   rE   )r-   s    r0   "test_multiple_connected_componentsr   :  s    
###$$QQQW-A	k)I	J	J	J . .A&&&**1---. . . . . . . . . . . . . . . . . .s   )A22A69A6c                 .   t          j        g d          d d d f                             | d          }t          |          }t	          j        t          d          5  t          j        dd          	                    |           d d d            n# 1 swxY w Y   t          j        |d	d
          }t	          j        t          d          5  t          j        dd          	                    |           d d d            d S # 1 swxY w Y   d S )Nr   Fr   r   r   r   rs   rt   r   r8   )r<   r:   )r    r!   r$   r   rN   r   r   r   rD   rE   r   rB   r   RuntimeError)rH   r-   X_distancesX_graphs       r0   5test_multiple_connected_components_metric_precomputedr   A  s    	###$$QQQW-44\4NNA %Q''K	k)I	J	J	J N NAm<<<@@MMMN N N N N N N N N N N N N N N (
KKKG	|+K	L	L	L J JAm<<<@@IIIJ J J J J J J J J J J J J J J J J Js$    *BBB*D

DDc                      t          dd          \  } }d}t          j        |          }|                    |            |                                }t          d t          |          D             |           dS )z'Check get_feature_names_out for Isomap.r   r   )r^   
n_featuresr   )r>   c                     g | ]}d | S )rk    ).0is     r0   
<listcomp>z.test_get_feature_names_out.<locals>.<listcomp>Y  s    BBBBBBr2   N)r
   r   rD   rR   get_feature_names_outr   r#   )r-   re   r>   rf   namess        r0   test_get_feature_names_outr   Q  s    1333DAqL
/|
4
4
4Ca%%''EBBeL.A.ABBBEJJJJJr2   )r   F)-	itertoolsr   numpyr    r   rN   sklearnr   r   r   r   r   r	   sklearn.datasetsr
   sklearn.metrics.pairwiser   sklearn.utils._testingr   r   r   scipy.sparser   r   eigen_solverspath_methodsr1   markparametrizeinfrL   rY   ri   rp   r   r   r   r   r   r   r   r   r   r   r   r   r2   r0   <module>r      s               # # # # # # # #                   ! ! ! ! ! ! ' ' ' ' ' ' 7 7 7 7 7 7         
 - , , , , ,+++"""	 	 	 	 .dBF^0LMM77556 6 65 87 NM6@ .dBF^0LMM7755+Q +Q 65 87 NM+Q\ .K0HIIE E JIE2 .L0IJJ! ! KJ! * * *@ 	6	65A	 	2 2	 	2 6 6 6 7755I I 65 87I4; ; ;&
0 
0 
0
> 
> 
>     . . .J J J K K K K Kr2   