
     h                     F   d dl mZ d dlZd dlmZmZ d dlZd dlm	Z
 d dlmZ d Zd Zd Zej                            d	g d
          d             Zd Zej                            dddg          d             Zej                            dddg          d             ZdS )    )MockN)assert_array_almost_equalassert_allclose)_mds)euclidean_distancesc                  $   t          j        g dg dg dg dg          } t          j        ddgddgd	d
gddgg          }t          j        | |dddd          \  }}t          j        ddgddgddgddgg          }t	          ||d           d S )Nr            r
   r      r   r   r   r      r   r   r   r   /$ѿsh|?gw/?gT㥛 ?Mb?X9vο皙ɿS㥛?r   r   auto)initn_componentsmax_itern_initnormalized_stressgp=
ףgS㥛gT㥛 ?gʡE?gZd;?gx&gʡEݿgL7A`?r   )decimal)nparraymdssmacofr   )simZX_X_trues        [/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/sklearn/manifold/tests/test_mds.pytest_smacofr)   
   s     (LLL,,,lllK
L
LC
66"UENUFOfe_UVVA:!!aV  DAq X
&	E5>E6?VUOL F a333333    c                     t          j        g dg dg dg dg          } t          j        t                    5  t          j        | d           d d d            n# 1 swxY w Y   t          j        g dg dg dg          } t          j        t                    5  t          j        | d           d d d            n# 1 swxY w Y   t          j        g dg dg dg dg          } t          j        dd	gd
dgddgg          }t          j        t                    5  t          j        | |dd           d d d            d S # 1 swxY w Y   d S )N)r   r
   	   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$   s     r(   test_smacof_errorr1      s0   
(LLL,,,lllK
L
LC	z	"	" 2 2
3&11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 (LLL,,,=
>
>C	z	"	" 2 2
3&11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 (LLL,,,lllK
L
LC
66"UFOfe_EFFA	z	"	" D D
3QqFCCCCD D D D D D D D D D D D D D D D D Ds5   AA!$A!CCC"EEEc                      t          j        g dg dg dg dg          } t          j        dddd	          }|                    |            d S )
Nr	   r   r   r   Fr   precomputedr   )metricn_jobsdissimilarityr   )r   r    r!   MDSfit)r#   mds_clfs     r(   test_MDSr:   -   sc    
(LLL,,,lllK
L
LCgQmv  G KKr*   k)g      ?g      ?r   c                    t          j        g dg dg dg dg          }t          j        |dddd	          \  }}t          j        | |z  dddd	          \  }}t	          ||d
           t	          ||d
           dS )z>Test that non-metric MDS normalized stress is scale-invariant.r	   r   r   r   Fr   r
   r   )r4   r   r   random_stategh㈵>)rtolN)r   r    r!   r"   r   )r;   r#   X1stress1X2stress2s         r(   test_normed_stressrC   5   s     (LLL,,,lllK
L
LC*EVaa  KB *	C!RS  KB GW40000B&&&&&&r*   c                      d} t          j        g dg dg dg dg          }t          j        t          |           5  t          j        |dd           d	d	d	           d	S # 1 swxY 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)r4   r   Nr-   )msgr#   s     r(   test_normalize_metric_warningrH   E   s    
 /C
(LLL,,,lllK
L
LC	z	-	-	- = =
3tt<<<<= = = = = = = = = = = = = = = = = =s   A##A'*A'r4   TFc                    d}t          j        g dg dg dg dg          }t          j        |           }t	          j        t          |          5  t          j        ||            d d d            n# 1 swxY w Y   t	          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nz4The default value of `normalized_stress` will changer	   r   r   r   )r4   rE   )	r   r    r!   r7   r.   warnsFutureWarningr"   r8   )r4   rG   r#   ests       r(   %test_normalized_stress_default_changerM   P   sH   
@C
(LLL,,,lllK
L
LC
'
 
 
 C	m3	/	/	/ ' '
3v&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	m3	/	/	/                   s$   A66A:=A:B??CCc                    t           j                            d          }|                    dd          }t	          |          }t          t          j                  }|                    d|           t          j	        | d|          }|
                    |           |j        d         d	         | k    sJ t          j        || d|           |j        d         d	         | k    sJ d S )
Nr   r   r   )side_effectz$sklearn.manifold._mds._smacof_singler   )r4   r   r=   r   r   )r   randomRandomStaterandnr   r   r!   _smacof_singlesetattrr7   fit_transform	call_argsr"   )r4   monkeypatchrngr%   distmockrL   s          r(   test_normalized_stress_autor[   [   s    
)


"
"C		!QAq!!DC.///D>EEE
'6
L
L
LCa>!01V;;;;JtFf3OOOO>!01V;;;;;;r*   )unittest.mockr   numpyr   numpy.testingr   r   r.   sklearn.manifoldr   r!   sklearn.metricsr   r)   r1   r:   markparametrizerC   rH   rM   r[    r*   r(   <module>rd      sG             D D D D D D D D  ( ( ( ( ( ( / / / / / /4 4 4D D D*   mmm,,' ' -,'= = = D%=11  21 D%=11< < 21< < <r*   