
    *YHh                        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 Zd Zd	 Zej&                  j)                  d
ddg      d        Zd Zd Zej&                  j1                  d      ej&                  j)                  dg d      d               Zej&                  j1                  d      ej&                  j)                  d
ddg      d               Zd Zej&                  j1                  d      ej&                  j)                  dddg      d               Zej&                  j1                  d      ej&                  j)                  d
ddg      d               Zd Zy)    )MockN)assert_allcloseassert_array_almost_equalassert_equal)load_digits)_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      \  }}t        j                  ddgddgddgddgg      }t	        ||d       y )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_trues        X/var/www/html/planif/env/lib/python3.12/site-packages/sklearn/manifold/tests/test_mds.pytest_smacofr+      s     ((L,lK
LC
66"UENUFOfe_UVA::cAaHDAqXX
&	E5>E6?VUOLF a3    c            	         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ddd      \  }}||kD  sJ y )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stress2s        r*   &test_nonmetric_lower_normalized_stressr4      s     ((L,lK
LC
66"UENUFOfe_UVA!!d1PTJAw JAw Wr,   c                     t        d      \  } }t        j                  j                  d      }|j	                  t        |       dd      }| |   } t        j                  dd	ddd
      j                  |       }|j                  }t        j                  dd	ddd
      j                  |       }|j                  }||kD  sJ y )NT)
return_X_y*   )seed   F)sizereplacer   r   )r   r   r   r0   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_iters          r*   test_nonmetric_mds_optimizationrI   .   s     $'DAq
))

R

(CCFe<J	*Agg 
c!f  "//gg 
c!f  "//!4444r,   r0   TFc                     t        j                  ddgddgddgddgg      }t        j                  dddd| d	      j	                  |      }|j
                  }t        |d
d       y )Nr   r   r   r   r   gV瞯<r.   r7   )r   r   epsr   r0   r<   r   gư>)atol)r!   r"   r#   rA   rB   rC   r   )r0   r'   rF   stresss       r*   test_mds_recovers_true_datarN   K   sn    
1a&1a&1a&1a&12Agg 
c!f  __FFAD)r,   c                     t        j                  g dg dg dg dg      } t        j                  t              5  t        j                  | d       d d d        t        j                  g dg dg dg      } t        j                  t              5  t        j                  | d       d d d        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        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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&   s     r*   test_smacof_errorrT   Z   s    
((L,lK
LC	z	" "

3q!" ((L,=
>C	z	" "

3q!" ((L,lK
LC
66"UFOfe_EFA	z	" *

3Qq)* *" "" "* *s#   D,D8
E,D58EEc                      t        j                  g dg dg dg dg      } t        j                  dddd      }|j	                  |        y )	Nr   r   r   r   Fr   precomputed)r0   n_jobsr   dissimilarity)r!   r"   r#   rA   rB   )r%   mds_clfs     r*   test_MDSrZ   o   sA    
((L,lK
LCgg#	G KKr,   zignore::FutureWarningk)g      ?g      ?r   c                     t        j                  g dg dg dg dg      }t        j                  |ddd      \  }}t        j                  | |z  ddd      \  }}t	        ||d	
       t	        ||d	
       y)z>Test that non-metric MDS normalized stress is scale-invariant.r   r   r   r   Fr   r   )r0   r   r<   gh㈵>)rtolN)r!   r"   r#   r$   r   )r[   r%   X1r2   X2r3   s         r*   test_normed_stressr`   {   sg     ((L,lK
LC**SKKB**QWUQQOKBGW40B&r,   c                    t         j                  j                  d      }|j                  dd      }t	        |      }t        t        j                        }|j                  d|       t        j                  | d|      }|j                  |       |j                  d   d	   | k7  sJ t        j                  || d|       |j                  d   d	   | k7  sJ y )
Nr   r   r   )side_effectz$sklearn.manifold._mds._smacof_singleauto)r0   r/   r<   r   r/   )r!   r=   RandomStaterandnr	   r   r#   _smacof_singlesetattrrA   fit_transform	call_argsr$   )r0   monkeypatchrD   r'   distmockests          r*   test_normalized_stress_autorn      s     ))


"C		!QAq!DC../D>E
''6
LCa>>!01V;;;JJtFf3O>>!01V;;;r,   c                      t        j                  g dg dg dg      } t        j                  ddgddgdd	gg      }t        j                  | |d
d       y )N)        LXz?LXz?)rq   rp         <)rr   rs   rp   gE/?g8$g?g"?grY؀-?g;
-?gd%?Fr   )r   r0   r   r1   )disr   s     r*   test_isotonic_outofboundsru      sd     ((8;<	
C 88 "45!34!34	
D JJseA6r,   r/   c                    t        j                  ddgddgddgddgg      }t        |      }t        j                  dd|       j                  |      }|j                  }|j                  }t        |      }|j                         |j                         z
  dz  j                         dz  }| r:t        j                  ||j                         dz  j                         dz  z        }t        ||       y )Nr   r   r   r   r   r7   )r   r<   r/   )r!   r"   r	   r#   rA   rB   
embedding_rC   ravelsumsqrtr   )r/   r'   DrF   r&   rM   D_mdsstress_Zs           r*   test_returned_stressr~      s    
 	1a&1a&1a&1a&12AAAgg+ 
c!f	  	A__F"E*q0557!;H778(:'?'?'AA'EFGFH%r,   c                    t        j                  ddgddgddgddgg      }t        j                  dd|       }|j	                  |dz         |j
                  }|j	                  |dz         |j
                  }t        ||       y )	Nr   r   r   r   r   r7   )r   r<   r0   d   )r!   r"   r#   rA   rB   n_iter_r   )r0   r'   rF   n_iter1n_iter2s        r*   )test_convergence_does_not_depend_on_scaler      s    
 	1a&1a&1a&1a&12AggG KKCooGKKCooG'"r,   c                     t        j                  ddgddgddgddgg      } t        j                  g dg dg dg dg      }t        j                  t              5  t        j                  |       d d d        t        j                  t              5  t        j                         j                  |        d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)	Nr   r   r   r   r   r   r   r   )	r!   r"   rQ   warnsFutureWarningr#   r$   rA   rB   )r'   r%   s     r*   test_future_warning_n_initr      s    
1a&1a&1a&1a&12A
((L,lK
LC	m	$ 

3 
m	$ 	a   s   C $C C	C)unittest.mockr   numpyr!   rQ   numpy.testingr   r   r   sklearn.datasetsr   sklearn.manifoldr   r#   sklearn.metricsr	   r+   r4   rI   markparametrizerN   rT   rZ   filterwarningsr`   rn   ru   r~   r   r    r,   r*   <module>r      sj      R R ( ( /	4,5: D%=1* 2*** 34m,' - 5' 34D%=1< 2 5< 7* 34,tUm<& = 5&2 34D%=1# 2 5#*r,   