U
    3dt                     @   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lmZ d	d
gZdd Zdd Ze	jdddddge	jdedd Zdd Zdd Zdd Zdd ZdS )    )productN)assert_allcloseassert_array_equal)linalg)	neighborsmanifold)
make_blobs)barycenter_kneighbors_graph)ignore_warningsZdensearpackc                 C   s   t jddgddgddgg| d}t|d}t jdddgdddgdddgg| d}|j| ks^tt| | t|d}tt j| ddt d	 t 	| |}t
|| |jd  dk std S )
Nr      g)\(?g      ?   )dtypeg        )Zaxis   )nparrayr	   r   AssertionErrorr   toarraysumonesdotr   normshape)global_dtypeXgraphZexpected_graphpred r   N/tmp/pip-unpacked-wheel-zrfo1fqw/sklearn/manifold/tests/test_locally_linear.py test_barycenter_kneighbors_graph   s     
 
r   c                 C   sL  t jd}t tttddd}|d|j|jd  }|j	| dd}d}t
jd||d	}d
}t||j }tt ||| d}||k sttD ]j}|j|d || |jjd |ksttt ||j|j dd }||k stt|j|d
d q|j|j j	| ddd }	|||	 }
t|
|j |k sHtd S )N*      r   repeat绽|=sizeFcopy)n_neighborsn_componentsrandom_stateg?froeigen_solverr   )Zatold   )r   randomRandomStater   listr   rangeuniformr   astyper   LocallyLinearEmbeddingr	   r)   r   r   r   r   r   eigen_solvers
set_paramsfit
embedding_r   reconstruction_error_ZrandnZ	transform)r   rngr   r*   clftolNreconstruction_errorsolverZnoiseZX_reembeddedr   r   r   test_lle_simple_grid,   s2      
rB   methodstandardhessianmodifiedltsarA   c                 C   sT  t jd}t ttt ddd}t j||d d df d d f }|d|j|j	d  }|j
| dd}d}tjd	||dd
}|dkrdnd}t||j }tt ||| }	|	|k st|j|d || |jj	d |ksttt ||j|j dd }	d||f }
|	|k s.t|
t |j|	 ||	 k sPt|
d S )Nr      r   r"   r$   r%   Fr'      )r)   r*   rC   r+   rD   g      ?r   r-   r   r,   zsolver: %s, method: %s)r   r0   r1   r   r2   r   ZarangeZc_r4   r   r5   r   r6   r	   r)   r   r   r   r   r   r8   r9   r:   absr;   )r   rC   rA   r<   r   r*   r=   r>   r?   r@   detailsr   r   r   test_lle_manifoldT   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+   filterr=   g?)sklearnrM   rN   r   ZPipeliner   r6   r   ZKNeighborsClassifierr9   Zscorer   )rM   rN   r   yr=   r   r   r   test_pipelinev   s    
rR   c               	   C   s@   t d} t}tt |tj| ddddd W 5 Q R X d S )N)
   r   r   r   rD   r   )r)   r*   rC   r.   )r   r   r
   pytestZraises
ValueErrorr   Zlocally_linear_embedding)Mfr   r   r   test_singular_matrix   s    
rX   c                  C   sB   t jd} | jdddd}dD ]}tj|dd}|| q d S )Nr   r/   )   r   r%   )rD   rE   rF   rG   rS   )rC   r)   )r   r0   r1   randintr   r6   r9   )Zrandr   rC   r=   r   r   r   test_integer_input   s
    r[   c                  C   sN   t ddd\} }d}tj|d}||  | }tdd t|D | dS )	z7Check get_feature_names_out for LocallyLinearEmbedding.r      )r+   Z
n_featuresr   )r*   c                 S   s   g | ]}d | qS )Zlocallylinearembeddingr   ).0ir   r   r   
<listcomp>   s     z.test_get_feature_names_out.<locals>.<listcomp>N)r   r   r6   r9   Zget_feature_names_outr   r3   )r   rQ   r*   Zisonamesr   r   r   test_get_feature_names_out   s    
 ra   )	itertoolsr   Znumpyr   Zsklearn.utils._testingr   r   Zscipyr   rT   rP   r   r   Zsklearn.datasetsr   Z sklearn.manifold._locally_linearr	   r
   r7   r   rB   markZparametrizerL   rR   rX   r[   ra   r   r   r   r   <module>   s$   ( 	