o
    tBh'                     @   s  d dl mZ d dlZd dlZd dlmZmZmZ d dl	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 d dlmZmZ d dlmZ g dZg dZd2ddZe	jdddejfgdd Z e	jdddejfgdd Z!e	jdddgdd Z"e	jdddgdd Z#d d! Z$d"d# Z%d$d% Z&d&d' Z'd(d) Z(d*d+ Z)d,d- Z*d.d/ Z+d0d1 Z,dS )3    )productN)assert_almost_equalassert_array_almost_equalassert_array_equal)datasets)manifold)	neighbors)pipeline)preprocessing)
make_blobs)pairwise_distances)assert_allcloseassert_allclose_dense_sparse)rand)autodensearpack)r   FWD   Fc                 C   s\   t t| }tttt|dd}|r,tj	d}d|
| d }t||fd}|S )N   )repeatr   皙?   )intmathsqrtnparraylistr   rangerandomRandomStaterandnconcatenate)n_pts	add_noise
n_per_sideXrngnoise r+   y/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/manifold/tests/test_isomap.pycreate_sample_data   s   r-   zn_neighbors, radius)   Nc           	   	   C   s   d}t |dd}| d urtj|| dd}ntj||dd}tD ]2}tD ]-}tj| |d||d}|| | d urBtj|j	| dd}n	tj|j	|dd}t
|| q#qd S )Nr   Fr%   r&   distancemoder   n_neighborsradiusn_componentseigen_solverpath_method)r-   r   kneighbors_graphradius_neighbors_grapheigen_solverspath_methodsr   Isomapfit
embedding_r   )	r4   r5   r%   r(   Gr7   r8   clfG_isor+   r+   r,   test_isomap_simple_grid&   s2   
rC   c              	   C   s   d}t |dd}| d urtj|| dd }n
tj||dd }t }|d|d  }tD ]K}t	D ]F}t
j| |d||d}	|	| | d urStj|	j| dd}
n	tj|	j|dd}
|
 }
|d|
d  }tj|| | }t||	  q4q0d S )	Nr   Tr/   r0   r1   g      r   r3   )r-   r   r9   toarrayr:   r
   KernelCentererfit_transformr;   r<   r   r=   r>   r?   r   linalgnormr   reconstruction_error)r4   r5   r%   r(   r@   centererKr7   r8   rA   rB   K_isorI   r+   r+   r,    test_isomap_reconstruction_errorH   s<   
rM   )r   N)Ng      ?c                 C   s   d}d}d}t j|dd\}}tj|| |d}||}tjd}	||	j|j	  }
|
||
 }tt|| d d| k sCJ d S )N   
   g{Gz?r   random_state)r6   r4   r5   r   )r   make_s_curver   r=   rF   r   r!   r"   r#   shape	transformr   mean)r4   r5   	n_samplesr6   noise_scaler(   yisoX_isor)   r*   X_iso2r+   r+   r,   test_transformr   s   
(r\   )Ng      $@c                 C   sX   t jdd\}}tdtj| |dfdt fg}||| d|	||k s*J d S )Nr   rP   isomapr4   r5   rA   g?)
r   r   r	   Pipeliner   r=   r   KNeighborsClassifierr>   score)r4   r5   r(   rX   rA   r+   r+   r,   test_pipeline   s   
rb   c            	      C   s   d} d}t jdd\}}t jdd\}}ttj|| ddtj|dd	}tj|| d
}||}||}t	|| |
|}|
|}t	|| d S )Nr   rO   r   rP   r   r0   )r4   	algorithmr2   precomputedr4   metric)r4   neighbors_algorithm)r   r   r	   make_pipeliner   KNeighborsTransformerr   r=   rF   r   rT   )	rc   r4   r(   _X2	est_chainest_compactXt_chain
Xt_compactr+   r+   r,   0test_pipeline_with_nearest_neighbors_transformer   s&   




rp   c            	   	   C   s   dd } dddd| ddfg}t jd	d
\}}t |}|D ]3\}}}tj||d|}|r6t|| qtjtdd t|| W d    n1 sMw   Y  qd S )Nc                 S   s   t t | d |d  S )Nr   )r   r   sum)x1x2r+   r+   r,   custom_metric   s   z,test_different_metric.<locals>.custom_metric)	euclideanr   T)	manhattanr   F)	minkowskir   F)rw   r   Tr   Fr   rP   )rf   pznot almost equalmatch)	r   r   r   r=   rF   r   pytestraisesAssertionError)	rt   metricsr(   rj   	referencerf   rx   is_euclidean	embeddingr+   r+   r,   test_different_metric   s$   r   c                  C   sF   t  } dD ]}| j|d | tjdd | jj|ks J qd S )N)rO         r4   2   r   )	r   r=   
set_paramsr>   r   r!   r   nbrs_r4   )modelr4   r+   r+   r,   test_isomap_clone_bug   s   r   c                  C   sD   t ddddd} tD ]}tD ]}tjd||dd}||  qq
d S )	Nd      r   csr)densityformatr      )r6   r7   r8   r4   )sparse_randr;   r<   r   r=   r>   )r(   r7   r8   rA   r+   r+   r,   test_sparse_input   s   r   c                  C   sn   t jddd\} }d}tj| |dd}tjd |dd}|| |j}tjd |d	d}|| }t	|| d S )
NrN   r   rP   rO   r0   )r5   r2   rd   )r4   r5   rf   rw   )
r   rR   r   r:   r   r=   r>   r?   rF   r   )r(   rX   r5   gr]   precomputed_resultresultr+   r+   r,   (test_isomap_fit_precomputed_radius_graph   s   

r   c                  C   s`   t jdd\} }tjddd}d}tjt|d ||  W d    d S 1 s)w   Y  d S )NT)
return_X_yr   g      @r^   z(Both n_neighbors and radius are providedry   )r   load_digitsr   r=   r{   r|   
ValueErrorrF   )r(   rj   r]   msgr+   r+   r,   9test_isomap_raise_error_when_neighbor_and_radius_both_set   s   "r   c                  C   s`   t g dd d d f } tjtdd tjdd|  W d    d S 1 s)w   Y  d S )Nr   r   r            number of connected componentsry   r   r   )r   r   r{   warnsUserWarningr   r=   r>   )r(   r+   r+   r,   "test_multiple_connected_components  s   "r   c                  C   s   t g dd d d f } t| }tjtdd tjddd| W d    n1 s-w   Y  t	j
| ddd	}tjtdd tjddd| W d    d S 1 sWw   Y  d S )
Nr   r   ry   r   rd   re   r   r0   )r4   r2   )r   r   r   r{   r   r   r   r=   r>   r   r9   r|   RuntimeError)r(   X_distancesX_graphr+   r+   r,   5test_multiple_connected_components_metric_precomputed  s   "r   c                  C   sN   t ddd\} }d}tj|d}||  | }tdd t|D | dS )	z'Check get_feature_names_out for Isomap.r      )rQ   
n_featuresr   )r6   c                 S   s   g | ]}d | qS )r]   r+   ).0ir+   r+   r,   
<listcomp>%  s    z.test_get_feature_names_out.<locals>.<listcomp>N)r   r   r=   rF   get_feature_names_outr   r    )r(   rX   r6   rY   namesr+   r+   r,   test_get_feature_names_out  s   
r   )r   F)-	itertoolsr   numpyr   r   numpy.testingr   r   r   r{   sklearnr   r   r   r	   r
   sklearn.datasetsr   sklearn.metrics.pairwiser   sklearn.utils._testingr   r   scipy.sparser   r   r;   r<   r-   markparametrizeinfrC   rM   r\   rb   rp   r   r   r   r   r   r   r   r   r+   r+   r+   r,   <module>   sD    

!
)

	