B
     Ž0dß  ã               @   sè   d dl mZ d dlZd dl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dgZdddg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d d!„ Zd"d#„ ZdS )$é    )ÚproductN)Úassert_almost_equalÚassert_array_almost_equal)Údatasets)Úmanifold)Ú	neighbors)Úpipeline)Úpreprocessing)Úpairwise_distances)ÚrandÚautoZdenseZarpackZFWÚDc        	      C   sž   d} | d }|d }t  ttt| ƒddƒ¡}tj||dd ¡ }xVtD ]N}xHt	D ]@}t
j|d||d}| |¡ tj|j|dd ¡ }t||ƒ qRW qHW d S )Né   é   é   )ÚrepeatÚdistance)Úmode)Ún_neighborsÚn_componentsÚeigen_solverÚpath_method)ÚnpÚarrayÚlistr   Úranger   Úkneighbors_graphÚtoarrayÚeigen_solversÚpath_methodsr   ÚIsomapÚfitÚ
embedding_r   )	Ú
N_per_sideÚNptsr   ÚXÚGr   r   ÚclfÚG_iso© r)   úT/var/www/html/venv/lib/python3.7/site-packages/sklearn/manifold/tests/test_isomap.pyÚtest_isomap_simple_grid   s     


r+   c              C   s  d} | d }|d }t  ttt| ƒddƒ¡}t j d¡}d| |d¡ }t  ||fd¡}t	j
||dd ¡ }t ¡ }| d	|d  ¡}x€tD ]x}	xrtD ]j}
tj|d|	|
d
}| |¡ t	j
|j|dd ¡ }| d	|d  ¡}t j || ¡| }t|| ¡ ƒ q˜W qŽW d S )Nr   r   r   )r   r   gš™™™™™¹?r   )r   g      à¿)r   r   r   r   )r   r   r   r   r   ÚrandomÚRandomStateÚrandnZconcatenater   r   r   r	   ZKernelCentererÚfit_transformr   r   r   r    r!   r"   ZlinalgZnormr   Úreconstruction_error)r#   r$   r   r%   ÚrngÚnoiser&   ZcentererÚKr   r   r'   r(   ZK_isor0   r)   r)   r*   Ú test_isomap_reconstruction_error/   s.    


r4   c        
      C   s†   d} d}d}t j| dd\}}tj|d}| |¡}tj d¡}||j|j	Ž  }| 
|| ¡}	t t ||	 d ¡¡d| k s‚t‚d S )NéÈ   é
   g{®Gáz„?r   )Úrandom_state)r   r   )r   Zmake_s_curver   r    r/   r   r,   r-   r.   ÚshapeÚ	transformÚsqrtZmeanÚAssertionError)
Z	n_samplesr   Znoise_scaler%   ÚyZisoZX_isor1   r2   ZX_iso2r)   r)   r*   Útest_transformY   s    
r=   c              C   sR   t jdd\} }t dt ¡ fdt ¡ fg¡}| | |¡ d| 	| |¡k sNt
‚d S )Nr   )r7   Zisomapr'   gÍÌÌÌÌÌì?)r   Ú
make_blobsr   ZPipeliner   r    r   ZKNeighborsClassifierr!   Zscorer;   )r%   r<   r'   r)   r)   r*   Útest_pipelinen   s
    r?   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   r6   r   )r7   r   r   )r   Ú	algorithmr   Úprecomputed)r   Úmetric)r   Zneighbors_algorithm)r   r>   r   Zmake_pipeliner   ZKNeighborsTransformerr   r    r/   r   r9   )	r@   r   r%   Ú_ZX2Z	est_chainZest_compactZXt_chainZ
Xt_compactr)   r)   r*   Ú0test_pipeline_with_nearest_neighbors_transformerz   s     






rD   c        	   
   C   sš   dd„ } dddd| ddfg}t jd	d
\}}t ¡  |¡}xZ|D ]R\}}}tj||d |¡}|rnt||ƒ q@tjtdd t||ƒ W d Q R X q@W d S )Nc             S   s   t  t  | d |d  ¡¡S )Nr   )r   r:   Úsum)Úx1Zx2r)   r)   r*   Úcustom_metric™   s    z,test_different_metric.<locals>.custom_metric)Z	euclideanr   T)Z	manhattanr   F)Ú	minkowskir   F)rH   r   Tr   Fr   )r7   )rB   Úpznot almost equal)Úmatch)	r   r>   r   r    r/   r   ÚpytestÚraisesr;   )	rG   Zmetricsr%   rC   Ú	referencerB   rI   Zis_euclideanZ	embeddingr)   r)   r*   Útest_different_metric—   s    rN   c              C   sJ   t  ¡ } x<dD ]4}| j|d |  tj dd¡¡ | jj|kst	‚qW d S )N)r6   é   é   )r   é2   r   )
r   r    Z
set_paramsr!   r   r,   r   Znbrs_r   r;   )Úmodelr   r)   r)   r*   Útest_isomap_clone_bug²   s
    
rS   c              C   sL   t ddddd} x6tD ].}x(tD ] }tjd||dd}| | ¡ q W qW d S )	Néd   é   gš™™™™™¹?Zcsr)ZdensityÚformatr   é   )r   r   r   r   )Úsparse_randr   r   r   r    r!   )r%   r   r   r'   r)   r)   r*   Útest_sparse_input»   s    

rY   c           	   C   sR   t  ddddddg¡d d …d f } tjtdd tjdd	 | ¡ W d Q R X d S )
Nr   r   r   r   é   é   znumber of connected components)rJ   )r   )r   r   rK   ÚwarnsÚUserWarningr   r    r!   )r%   r)   r)   r*   Ú"test_multiple_connected_componentsÊ   s    "r^   c           	   C   sš   t  ddddddg¡d d …d f } t| ƒ}tjtdd tjdd	d
 |¡ W d Q R X t	j
| ddd}tjtdd tjdd	d
 |¡ W d Q R X d S )Nr   r   r   r   rZ   r[   znumber of connected components)rJ   rA   )r   rB   r   )r   r   )r   r   r
   rK   r\   r]   r   r    r!   r   r   rL   ÚRuntimeError)r%   ZX_distancesZX_graphr)   r)   r*   Ú5test_multiple_connected_components_metric_precomputedÑ   s    "r`   )Ú	itertoolsr   Únumpyr   Znumpy.testingr   r   rK   Zsklearnr   r   r   r   r	   Zsklearn.metrics.pairwiser
   Zscipy.sparser   rX   r   r   r+   r4   r=   r?   rD   rN   rS   rY   r^   r`   r)   r)   r)   r*   Ú<module>   s,   

*	