o
    ?Hh                     @   s   d dl mZ d dlZd dlZd dlmZmZ d dlm	Z
 d dlmZ dd Zdd	 Zd
d Zejdg ddd Zdd Zejdddgdd ZdS )    )MockN)assert_allcloseassert_array_almost_equal)_mds)euclidean_distancesc                  C   s   t g dg dg dg dg} t ddgddgd	d
gddgg}tj| |dddd\}}t ddgddgddgddgg}t||dd d S )Nr            r   r      r   r	   r   r      r
   r   r   r   /$ѿsh|?gw/?gT㥛 ?Mb?X9vο皙ɿS㥛?r   r   )initn_componentsmax_itern_initgp=
ףgS㥛gT㥛 ?gʡE?gZd;?gx&gʡEݿgL7A`?r	   )decimal)nparraymdssmacofr   )simZX_X_true r$   _/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/sklearn/manifold/tests/test_mds.pytest_smacof   s   ""r&   c                  C   s$  t g dg dg dg dg} tt t|  W d    n1 s&w   Y  t g dg dg dg} tt t|  W d    n1 sNw   Y  t g dg dg dg dg} t ddgdd	gd
dgg}tt tj| |dd W d    d S 1 sw   Y  d S )N)r   r   	   r
   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   pytestraises
ValueErrorr   r   )r   r    r$   r$   r%   test_smacof_error   s   """r,   c                  C   s@   t g dg dg dg dg} tjdddd}||  d S )	Nr   r   r   r   Fr	   precomputed)metricn_jobsdissimilarity)r   r   r   MDSfit)r   mds_clfr$   r$   r%   test_MDS,   s   "r4   k)g      ?g      ?r   c                 C   sr   t g dg dg dg dg}tj|dddd\}}tj| | dddd\}}t||d	d
 t||d	d
 dS )z>Test that non-metric MDS normalized stress is scale-invariant.r   r   r   r   Fr   r   )r.   r   random_stategh㈵>)rtolN)r   r   r   r   r   )r5   r   X1stress1X2stress2r$   r$   r%   test_normed_stress2   s
   "r<   c                  C   sj   d} t g dg dg dg dg}tjt| d tj|ddd W d	   d	S 1 s.w   Y  d	S )
z^
    Test that a UserWarning is emitted when using normalized stress with
    metric-MDS.
    z"Normalized stress is not supportedr   r   r   r   )matchT)r.   normalized_stressNr(   )msgr   r$   r$   r%   test_normalize_metric_warning>   s
   ""r@   r.   TFc                 C   s   t jd}|dd}t|}ttjd}|d| tj	| d|d}|
| |jd d	 | ks4J tj|| d|d |jd d	 | ksHJ d S )
Nr   r
   r	   )side_effectz$sklearn.manifold._mds._smacof_singleauto)r.   r>   r6   r   r>   )r   randomRandomStaterandnr   r   r   _smacof_singlesetattrr1   fit_transform	call_argsr   )r.   monkeypatchrngr!   distmockestr$   r$   r%   test_normalized_stress_autoI   s   
rO   )unittest.mockr   numpyr   r)   numpy.testingr   r   sklearn.manifoldr   r   sklearn.metricsr   r&   r,   r4   markparametrizer<   r@   rO   r$   r$   r$   r%   <module>   s    
