
    /iih&                        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
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                            dddg          d             Zd Zej        j        d             Zej                            d          ej                            dg d          d                         Zej                            d          ej                            dddg          d                         Zd Zej                            d          ej                            dddg          d                         Zej                            d          ej                            dddg          d                         Z d Z!d Z"ej                            d          d             Z#dS )    )MockN)assert_allcloseassert_array_almost_equalassert_equal)load_digits	load_iris)ClassicalMDS)_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           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_trues        e/var/www/html/bet.cuttalo.com/ml/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:cAaHHHDAqX
&	E5>E6?VUOL F a333333    c            	         t          d          \  } }t          |           }t          j                            d           t          j                            | j        d         df          }t          j        ||dddd	          \  }}t          j        ||ddddd
          \  }}||k    sJ t          j	        |dz  d|dz  z   z            }||k    sJ d S )NT
return_X_y*   r   r   )size  r   )r   r   r   r   normalized_stressF)r   r   r   r   r3   metric)
r   r   r!   randomseednormalshaper#   r$   sqrt)r'   r(   r%   r&   stress1stress2stress1_rescaleds          r*   &test_nonmetric_lower_normalized_stressr=      s    %%%DAq
a
 
 CINN2
	qwqz1o..A!!d1PT  JAw   JAw W wwzQ!^<==g%%%%%%r,   c                     t          d          \  } }t          j                            d          }|                    t          |           dd          }| |         } t          j        dd	ddd
d                              |           }|j	        }t          j        dd	ddd
d                              |           }|j	        }||k    sJ d S )NTr.   r0   )r6      F)r1   replacer   r   r5   )r   r   r   
metric_mdsr   random_stater   )
r   r!   r5   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_optimizationrN   ;   s     $'''DAq
)

R

(
(CCFFe<<J	*Ag   
c!ff  "/g   
c!ff  "/!4444444r,   rA   TFc           	          t          j        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 S )Nr   r   r   r   r   gV瞯<r2   r5   r0   )r   r   epsr   rA   r   rB   r   gư>)atol)r!   r"   r#   rF   rG   rH   r   )rA   r'   rK   stresss       r*   test_mds_recovers_true_datarS   Z   s    
1a&1a&1a&1a&122Ag   
c!ff  _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            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 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"   pytestraises
ValueErrorr#   r$   )r%   r&   s     r*   test_smacof_errorrY   j   s   
(LLL,,,lllK
L
LC	z	"	" " "
3q!!!!" " " " " " " " " " " " " " " (LLL,,,=
>
>C	z	"	" " "
3q!!!!" " " " " " " " " " " " " " " (LLL,,,lllK
L
LC
66"UFOfe_EFFA	z	"	" * *
3Qq))))* * * * * * * * * * * * * * * * * *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	          }|                    |            d S )
Nr   r   r   r   Fr   precomputedr5   )rA   n_jobsr   r4   r   )r!   r"   r#   rF   rG   )r%   mds_clfs     r*   test_MDSr^      si    
(LLL,,,lllK
L
LCg  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	
           dS )z>Test that non-metric MDS normalized stress is scale-invariant.r   r   r   r   Fr   r   )r4   r   rB   gh㈵>)rtolN)r!   r"   r#   r$   r   )r_   r%   X1r:   X2r;   s         r*   test_normed_stressrd      s     (LLL,,,lllK
L
LC*SKKKKB*QWUQQOOOKBGW40000B&&&&&&r,   r4   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_singleauto)r4   r3   rB   r   r3   )r!   r5   RandomStaterandnr   r   r#   _smacof_singlesetattrrF   fit_transform	call_argsr$   )r4   monkeypatchrI   r'   distmockests          r*   test_normalized_stress_autorr      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,   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           d S )N)        LXz?LXz?)ru   rt         <)rv   rw   rt   gE/?g8$g?g"?grY؀-?g;
-?gd%?Fr   )r   r4   r   )r!   r"   r#   r$   )disr   s     r*   test_isotonic_outofboundsry      s     (888;;;<<<	
 C 8 "45!34!34	
 D JseA666666r,   r3   c                    t          j        ddgddgddgddgg          }t          |          }t          j        dd|                               |          }|j        }|j        }t          |          }|                                |                                z
  dz  	                                dz  }| rAt          j
        ||                                dz  	                                dz  z            }t          ||           d S )Nr   r   r   r   r   r0   )r   rB   r3   )r!   r"   r   r#   rF   rG   
embedding_rH   ravelsumr9   r   )r3   r'   DrK   r&   rR   D_mdsstress_Zs           r*   test_returned_stressr      s   
 	1a&1a&1a&1a&122AAAg+   
c!ff	  	A_F""E*q05577!;H H78(:'?'?'A'AA'EFGGFH%%%%%r,   c                    t          j        ddgddgddgddgg          }t          j        dd|           }|                    |dz             |j        }|                    |dz             |j        }t          ||           d S )	Nr   r   r   r   r   r0   )r   rB   rA   d   )r!   r"   r#   rF   rG   n_iter_r   )rA   r'   rK   n_iter1n_iter2s        r*   )test_convergence_does_not_depend_on_scaler      s    
 	1a&1a&1a&1a&122Ag  G KKCoGKKCoG'"""""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            n# 1 swxY w Y   t          j        t                    5  t          j        d	
                              |            d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r   r   r   r5   r   )	r!   r"   rV   warnsFutureWarningr#   r$   rF   rG   r'   r%   s     r*   test_future_warning_n_initr      s[   
1a&1a&1a&1a&122A
(LLL,,,lllK
L
LC	m	$	$  
3               
m	$	$ & &X""1%%%& & & & & & & & & & & & & & & & & &s$   A;;A?A?)CCC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          d	
          5  t          j        ddd                              |           d d d            n# 1 swxY w Y   t          j        t          d
          5  t          j        ddd                              |            d d d            n# 1 swxY w Y   t          j        t          d
          5  t          j        ddd                              |            d d d            n# 1 swxY w Y   t          j        t          d
          5  t          j        dd                              |            d d d            n# 1 swxY w Y   t          j        t          d
          5  t          j        dd                              |            d d d            n# 1 swxY w Y   t          j        t          d
          5  t          j        dddd                              |            d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r   r   r   z`dissimilarity` parameter is)matchr[   r5   )dissimilarityr   r   zUse metric_mdsT)r4   r   r   FzThe default value of `init`	euclidean)r4   r   zThe default value of `n_init`)r4   r   zprovided both `dissimilarity`cosine)r4   r   r   r   )
r!   r"   rV   r   r   r#   rF   rG   rW   rX   r   s     r*   #test_future_warning_init_and_metricr     s   
1a&1a&1a&1a&122A
(LLL,,,lllK
L
LC 
m+I	J	J	J O Om(1EEEII#NNNO O O O O O O O O O O O O O O 
m+;	<	<	< = =t(155599!<<<= = = = = = = = = = = = = = = 
m+;	<	<	< > >u8A666::1===> > > > > > > > > > > > > > > 
m+H	I	I	I 5 5{1---11!4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5
 
m+J	K	K	K : :{22266q999: : : : : : : : : : : : : : : 
z)H	I	I	I  ;Xa	
 	
 	

#a&&&                 sl   +BBB9+C00C47C4+EEE3*F))F-0F-*HH	H	+,I$$I(+I(c                  >   t          d          \  } }t                      }|                    |           }t          j        d          }|                    |           }t          j        d          }|                    | |          }t          ||           d S )NTr.   classical_mdsr   r5   )r   r	   rl   r#   rF   r   )r'   r(   cmdsZ_classicalmds1Z1mds2Z2s           r*   test_classical_mds_init_to_mdsr   $  s    %%%DAq>>D$$Q''K7(((D			A		B7!!!D			AK		0	0BBr,   )$unittest.mockr   numpyr!   rV   numpy.testingr   r   r   sklearn.datasetsr   r   sklearn.manifoldr	   r
   r#   sklearn.metricsr   r+   r=   rN   markparametrizerS   rY   thread_unsafer^   filterwarningsrd   rr   ry   r   r   r   r   r    r,   r*   <module>r      s              R R R R R R R R R R 3 3 3 3 3 3 3 3 ) ) ) ) ) ) ( ( ( ( ( ( / / / / / /	4 	4 	4& & &D5 5 5> e}55* * 65** * *. 	 	 	 344mmm,,' ' -, 54' 344D%=11< < 21 54< 7 7 7* 344,tUm<<& & =< 54&2 344e}55# # 65 54#*& & &  B 344  54  r,   