a
    ;Zèa²  ã                   @   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| ¡ g d¢g d¢g d¢gƒ t| dƒ}tt  | ¡ d¡t  d¡ƒ t  | ¡ | ¡}t 	||  ¡| j
d  dk sœJ ‚d S )	Nr   é   g)\Âõ(ð?ç      ð?é   )ç        r   r   )r   r   r   é   )ÚnpÚarrayr   r   ÚtoarrayÚsumÚonesÚdotr   ÚnormÚshape)ÚXÚAZpred© r   úIlib/python3.9/site-packages/sklearn/manifold/tests/test_locally_linear.pyÚ test_barycenter_kneighbors_graph   s    
ÿ
r   c            
      C   s4  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ˆJ ‚tD ]j}|j|d
 | |¡ |jjd |ksºJ ‚t t  ||j¡|j d	¡d }||k sæJ ‚t|j|dd qŒ| j|jŽ d }| || ¡}	t |	|j ¡|k s0J ‚d S )Né*   é   r   ©Úrepeatç»½×Ùß|Û=©Úsize)Ún_neighborsÚn_componentsÚrandom_stategš™™™™™¹?Úfro©Úeigen_solverr   )Zdecimaléd   )r   ÚrandomÚRandomStater   Úlistr   ÚrangeÚuniformr   r   ÚLocallyLinearEmbeddingr   r$   r   r   r   r   Úeigen_solversÚ
set_paramsÚfitÚ
embedding_r   Úreconstruction_error_ZrandnZ	transform)
Úrngr   r%   ÚclfÚtolÚNÚreconstruction_errorÚsolverZnoiseZX_reembeddedr   r   r   Útest_lle_simple_grid$   s,    ÿ
ÿr<   c            
      C   sX  t j d¡} t  ttt  d¡ddƒ¡}t j||d d …df d d f }|d| j|j	d  }d}dD ]ê}t
jd||dd	}|d
krŠdnd}t||jƒ ¡ }t t  ||¡| ¡}||k sÀJ ‚tD ]Œ}|j|d | |¡ |jj	d |ksòJ ‚t t  ||j¡|j d¡d }d||f }	||k s0J |	ƒ‚t  |j| ¡|| k sÄJ |	ƒ‚qÄqhd S )Nr   é   r   r   r!   r"   ©ÚstandardZhessianZmodifiedZ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   r0   r   r$   r   r   r   r   r1   r2   r3   r4   Úabsr5   )
r6   r   r%   rA   r7   r8   r9   r:   r;   Zdetailsr   r   r   Útest_lle_manifoldJ   s6    "ÿ
ÿÿÿýrC   c                  C   s¢   t j dd¡} tjdd}d}tjt|d | | ¡ W d   ƒ n1 sL0    Y  tjdd}d}tjt|d | | ¡ W d   ƒ n1 s”0    Y  d S )	Nr   r   Úerrorr(   z!unrecognized eigen_solver 'error')Úmatch)rA   zunrecognized method 'error')	r   r+   Úrandr   r0   ÚpytestÚraisesÚ
ValueErrorr3   )r   r7   Úmsgr   r   r   Útest_lle_init_parametersk   s    (rK   c                  C   sf   ddl m} m} |jdd\}}|  dtjddfdt ¡ fg¡}| 	||¡ d| 
||¡k sbJ ‚d S )Nr   )ÚpipelineÚdatasets)r&   Úfilterr7   gÍÌÌÌÌÌì?)ÚsklearnrL   rM   Z
make_blobsZPipeliner   r0   r   ZKNeighborsClassifierr3   Zscore)rL   rM   r   Úyr7   r   r   r   Útest_pipeliney   s    
þÿrQ   c               	   C   sT   t  d¡} t}t t¡( |tj| dddddƒ W d   ƒ n1 sF0    Y  d S )N)é
   r   r   r   r?   r
   )r$   r%   rA   r)   )r   r   r	   rG   rH   rI   r   Zlocally_linear_embedding)ÚMÚfr   r   r   Útest_singular_matrix‹   s    
ûÿrU   c                  C   sB   t j d¡} | jdddd}dD ]}tj|dd}| |¡ q d S )Nr   r*   )é   r   r"   r>   rR   )rA   r$   )r   r+   r,   Zrandintr   r0   r3   )rF   r   rA   r7   r   r   r   Útest_integer_input›   s
    rW   )Ú	itertoolsr   Znumpyr   Znumpy.testingr   r   Zscipyr   rG   rO   r   r   Z sklearn.manifold._locally_linearr   Zsklearn.utils._testingr	   r1   r   r<   rC   rK   rQ   rU   rW   r   r   r   r   Ú<module>   s   &!