o
    \i                     @   sB  d dl mZ d dlZd dlZd dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZ dd Zd	d
 Zdd Zejdddgdd Zdd Zdd Zejdejdg ddd Zejdejdddgdd Zdd Zejdejdddgd d! Zejdejdddgd"d# Zd$d% ZdS )&    )MockN)assert_allcloseassert_array_almost_equalassert_equal)load_digits)_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|?w/?T㥛 ?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(   /var/www/www-root/data/www/176.119.141.140/sports-predictor/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 ddgddgd	d
gddgg}tj| |ddddd\}}tj| |dddddd\}}||ksCJ d S )Nr	   r   r   r   r   r   r   r   r   r   r   r   r     r   T)r   r   r   r   normalized_stressF)r   r   r   r   r,   metricr   r    r!   r"   )r#   r$   r&   stress1stress2r(   r(   r)   &test_nonmetric_lower_normalized_stress   s   ""

	r1   c                  C   s   t dd\} }tjjdd}|jt| ddd}| | } tjdd	dddd
| }|j	}tjdd	dddd
| }|j	}||ksBJ d S )NT)
return_X_y*   )seed   F)sizereplacer   r   )r   r   r   r-   random_stater   )
r   r   randomdefault_rngchoicelenr!   MDSfitstress_)r%   r&   rng
ind_subsetmds_eststress_after_2_iterstress_after_3_iterr(   r(   r)   test_nonmetric_mds_optimization.   s2   rE   r-   TFc                 C   sV   t ddgddgddgddgg}tjdddd| dd	|}|j}t|d
dd d S )Nr   r   r
   r   r   gV瞯<r+   r3   )r   r   epsr   r-   r8   r   gư>)atol)r   r    r!   r=   r>   r?   r   )r-   r%   rB   stressr(   r(   r)   test_mds_recovers_true_dataK   s   "rI   c                  C   s,  t g dg dg dg dg} tt tj| dd W d    n1 s(w   Y  t g dg dg dg} tt tj| dd W d    n1 sRw   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   r    pytestraises
ValueErrorr!   r"   )r#   r$   r(   r(   r)   test_smacof_errorZ   s   """rN   c                  C   sB   t g dg dg dg dg} tjddddd}||  d S )	Nr	   r   r   r   Fr   precomputed)r-   n_jobsr   dissimilarity)r   r    r!   r=   r>   )r#   mds_clfr(   r(   r)   test_MDSo   s   "rS   zignore::FutureWarning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   r8   gh㈵>)rtolN)r   r    r!   r"   r   )rT   r#   X1r/   X2r0   r(   r(   r)   test_normed_stress{   s
   "rX   c                 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,   r8   r   r,   )r   r9   RandomStaterandnr   r   r!   _smacof_singlesetattrr=   fit_transform	call_argsr"   )r-   monkeypatchr@   r%   distmockestr(   r(   r)   test_normalized_stress_auto   s   
re   c                  C   sN   t g dg dg dg} t ddgddgdd	gg}tj| |d
dd d S )N)        LXz?LXz?)rg   rf         <)rh   ri   rf   gE/?g8$g?g"?grY؀-?g;
-?gd%?Fr   )r   r-   r   r.   )disr   r(   r(   r)   test_isotonic_outofbounds   s   rk   r,   c                 C   s   t ddgddgddgddgg}t|}tjdd| d|}|j}|j}t|}| |  d 	 d }| rIt 
|| d 	 d  }t|| d S )Nr   r   r
   r   r   r3   )r   r8   r,   )r   r    r   r!   r=   r>   
embedding_r?   ravelsumsqrtr   )r,   r%   DrB   r$   rH   D_mdsstress_Zr(   r(   r)   test_returned_stress   s    "rs   c                 C   sh   t ddgddgddgddgg}tjdd| d}||d  |j}||d  |j}t|| d S )	Nr   r   r
   r   r   r3   )r   r8   r-   d   )r   r    r!   r=   r>   n_iter_r   )r-   r%   rB   n_iter1n_iter2r(   r(   r)   )test_convergence_does_not_depend_on_scale   s   "rx   c                  C   s   t ddgddgddgddgg} t g dg dg dg dg}tt t| W d    n1 s7w   Y  tt t |  W d    d S 1 sTw   Y  d S )	Nr   r   r
   r   r	   r   r   r   )	r   r    rK   warnsFutureWarningr!   r"   r=   r>   )r%   r#   r(   r(   r)   test_future_warning_n_init   s   """r{   )unittest.mockr   numpyr   rK   numpy.testingr   r   r   sklearn.datasetsr   sklearn.manifoldr   r!   sklearn.metricsr   r*   r1   rE   markparametrizerI   rN   rS   filterwarningsrX   re   rk   rs   rx   r{   r(   r(   r(   r)   <module>   s8    




