B
     Ž0d²  ã               @   s¤   d dl mZ d dlZd dlmZmZ d dlmZ d dl	Z	d dl
mZmZ d dlmZ d dlmZ 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S )é    )ÚproductN)Úassert_almost_equalÚassert_array_almost_equal)Úlinalg)Ú	neighborsÚmanifold)Úbarycenter_kneighbors_graph)Úignore_warningsZdenseÚarpackc              C   s¦   t  ddgddgddgg¡} t| dƒ}t| ¡ dddgdddgdddggƒ t| dƒ}tt  | ¡ d¡t  d¡ƒ t  | ¡ | ¡}t 	||  ¡| j
d  dk s¢t‚d S )Nr   é   g)\Âõ(ð?g      ð?é   g        é   )ÚnpÚarrayr   r   ÚtoarrayÚsumÚonesÚdotr   ÚnormÚshapeÚAssertionError)ÚXÚAÚpred© r   ú\/var/www/html/venv/lib/python3.7/site-packages/sklearn/manifold/tests/test_locally_linear.pyÚ test_barycenter_kneighbors_graph   s    
$
r   c        
      C   s8  t j d¡} t  tttdƒddƒ¡}|d| j|jd  }d}t	j
d|| d}d}t||jƒ ¡ }t t  ||¡| d	¡}||k sˆt‚xrtD ]j}|j|d
 | |¡ |jjd |ks¼t‚t t  ||j¡|j d	¡d }||k sèt‚t|j|dd qŽW | j|jŽ d }| || ¡}	t |	|j ¡|k s4t‚d S )Né*   é   r   )Úrepeatg»½×Ùß|Û=)Úsize)Ún_neighborsÚn_componentsÚrandom_stategš™™™™™¹?Úfro)Úeigen_solverr   )Údecimaléd   )r   ÚrandomÚRandomStater   Úlistr   ÚrangeÚuniformr   r   ÚLocallyLinearEmbeddingr   r!   r   r   r   r   r   Úeigen_solversÚ
set_paramsÚfitÚ
embedding_r   Úreconstruction_error_ZrandnZ	transform)
Úrngr   r"   ÚclfÚtolÚNÚreconstruction_errorÚsolverÚnoiseZX_reembeddedr   r   r   Útest_lle_simple_grid$   s(    

 r:   c        
      C   s`  t j d¡} t  ttt  d¡ddƒ¡}t j||d d …df d d f }|d| j|j	d  }d}xödD ]î}t
jd||dd	}|d
krŒdnd}t||jƒ ¡ }t t  ||¡| ¡}||k sÂt‚x”tD ]Œ}|j|d | |¡ |jj	d |ksöt‚t t  ||j¡|j d¡d }d||f }	||k s4t|	ƒ‚t  |j| ¡|| k sÈt|	ƒ‚qÈW qjW d S )Nr   é   r   )r   g»½×Ùß|Û=)r    )ÚstandardÚhessianÚmodifiedÚltsaé   )r!   r"   Úmethodr#   r<   g      ø?r   )r%   r   r$   zsolver: %s, method: %s)r   r(   r)   r   r*   r   ZarangeZc_r,   r   r   r-   r   r!   r   r   r   r   r   r.   r/   r0   r1   Úabsr2   )
r3   r   r"   rA   r4   r5   r6   r7   r8   Údetailsr   r   r   Útest_lle_manifoldJ   s,    "


 rD   c           	   C   sz   t j dd¡} tjdd}d}tjt|d | | ¡ W d Q R X tjdd}d}tjt|d | | ¡ W d Q R X d S )	Nr   r   Úerror)r%   z!unrecognized eigen_solver 'error')Úmatch)rA   zunrecognized method 'error')	r   r(   Úrandr   r-   ÚpytestÚraisesÚ
ValueErrorr0   )r   r4   Úmsgr   r   r   Útest_lle_init_parametersk   s    rL   c              C   sf   ddl m} m} |jdd\}}|  dtjddfdt ¡ fg¡}| 	||¡ d| 
||¡k sbt‚d S )Nr   )ÚpipelineÚdatasets)r#   Úfilterr4   gÍÌÌÌÌÌì?)ÚsklearnrM   rN   Z
make_blobsZPipeliner   r-   r   ZKNeighborsClassifierr0   Zscorer   )rM   rN   r   Úyr4   r   r   r   Útest_pipeliney   s    rR   c           	   C   s@   t  d¡} t}t t¡ |tj| dddddƒ W d Q R X d S )N)é
   r   r   r   r<   r
   )r!   r"   rA   r%   )r   r   r	   rH   rI   rJ   r   Zlocally_linear_embedding)ÚMÚfr   r   r   Útest_singular_matrix‹   s    
rV   c              C   sF   t j d¡} | jdddd}x$dD ]}tj|dd}| |¡ q"W d S )Nr   r'   )é   r   )r    )r<   r=   r>   r?   rS   )rA   r!   )r   r(   r)   Úrandintr   r-   r0   )rG   r   rA   r4   r   r   r   Útest_integer_input›   s
    
rY   )Ú	itertoolsr   Únumpyr   Znumpy.testingr   r   Zscipyr   rH   rP   r   r   Z sklearn.manifold._locally_linearr   Zsklearn.utils._testingr	   r.   r   r:   rD   rL   rR   rV   rY   r   r   r   r   Ú<module>   s   &!