
    -i'              	          S r SSKrSSKrSSKrSSKJr  SSKrSSKrSSK	J
r
JrJr  SSKJr  SSKJr  SSKJr  SSKJrJr  SS	KJrJrJr  SS
KJr  \S 5       rS%S jrS rS rS r S r!S r"S r#S r$S r%S r&S r'\RP                  RS                  SSS0\*\RV                  " S5      4SS0\*\RV                  " S5      4/5      S 5       r,S r-S r.S  r/S! r0S" r1S# r2S$ r3g)&z?
Testing for Theil-Sen module (sklearn.linear_model.theil_sen)
    N)contextmanager)assert_array_almost_equalassert_array_equalassert_array_less)norm)	fmin_bfgs)ConvergenceWarning)LinearRegressionTheilSenRegressor)_breakdown_point_modified_weiszfeld_step_spatial_median)assert_almost_equalc               #   4  #    [         R                  n [         R                  n[        [        R
                  S5       nU[         l        U[         l        S v   UR                  5         U [         l        U[         l        S S S 5        g ! , (       d  f       g = f7f)Nw)sysstdoutstderropenosdevnullflush)
old_stdout
old_stderrr   s      \/var/www/html/venv/lib/python3.13/site-packages/sklearn/linear_model/tests/test_theil_sen.pyno_stdout_stderrr   !   sZ     JJ	bjj#	'



 
		s   ;BAB>	B
BBc                    [         R                  R                  S5      nSnU (       a  SnSnOSnSnUR                  US9nSUR                  US9-  nX%-  U-   U-   nU (       a-  Su  US	'   US	'   S
u  US'   US'   Su  US'   US'   Su  US'   US'   O7Su  US	'   US	'   S
u  US'   US'   Su  US'   US'   Su  US'   US'   Su  US'   US'   US S 2[         R                  4   XrU4$ )Nr         @       @2   皙?d   size)   *   )g         +   )      @   !   )g @   1   5   <   )g?iH   )nprandomRandomStatenormalnewaxis)	interceptrandom_stater   c	n_samplesxnoiseys           r   gen_toy_problem_1dr>   .   s#   99((+LA		+A,%%9%55E		EA"qu "qu"qu"qu"qu "qu"qu"qu "quQ

]Q1$$    c                  P   [         R                  R                  S5      n SnU R                  US4S9n[         R                  " SS/5      nSnSU R                  US9-  n[         R
                  " X#5      U-   U-   nUS	-  nU R                  SXS9nS
U R                  US9-  Xh'   X&X44$ )Nr   r"   r-   r#         @      $@      ?r!   
   r    r2   r3   r4   r5   arraydotrandint	r8   r:   Xr   r9   r<   r=   
n_outliersixs	            r   gen_toy_problem_2drM   J   s    99((+LI)Q0A
#tAA,%%9%55E
qq5 AbJ			a		<B$$*$55AE:r?   c                  P   [         R                  R                  S5      n SnU R                  US4S9n[         R                  " / SQ5      nSnSU R                  US9-  n[         R
                  " X#5      U-   U-   nUS-  nU R                  SXS9nS	U R                  US9-  Xh'   X&X44$ )
Nr   i'  r&   r#   )rA   rB   g      E@g      @rC   r!   rD   r    rE   rI   s	            r   gen_toy_problem_4drO   Z   s    99((+LI)Q0A
'(AA,%%9%55E
qq5 AbJ			a		<B$$*$55AE:r?   c                     [         R                  " / SQ5      R                  SS5      n Sn[        X5      n[	        X!5        Sn[        X5      n[        X5        [        X#5        Sn[        X5      n[        X5        [        X#5        [         R                  " / SQ5      R                  SS5      n U S   n[        X5      n[        X25        g )NrC   r   r      r+   r   r*   r   r   )r2   rF   reshaper   r   r   r   )rJ   mediannew_yr=   s       r   test_modweiszfeld_step_1drV   j   s    
!))!Q/AF$Q/Ee,A$Q*Ef$eA$Q*Ef$e
!))!Q/A	!A$Q*Eq r?   c                     [         R                  " / SQ5      R                  SS5      n [         R                  " SS/5      n[        X5      n[	        U[         R                  " SS/5      5        [        X5      n[	        U[         R                  " SS/5      5        [         R                  " S	S
/5      n[        X5      n[	        X!5        g )N        rY   rC   rC   rY   rC   rR   r-         ?gUUUUUU?gUUUUUU?g=^?gP	u?gI?gj\jJ<?)r2   rF   rS   r   r   )rJ   r=   rU   s      r   test_modweiszfeld_step_2dr[      s    
/088A>A
#sA$Q*EeRXXuen%=>$Q.EeRXXy).D%EF
*j)*A$Q*Ee'r?   c                  ^   [         R                  " / SQ5      R                  SS5      n Sn[        U 5      u  p#[	        X15        [         R
                  R                  S5      nUR                  SSS9n [         R                  " U R                  5       5      n[        U 5      u  p#[        X15        g )	NrQ   rR   r+   r   r   r"   )i  r+   r#   )r2   rF   rS   r   r   r3   r4   rH   rT   ravelr   )rJ   true_median_rT   r8   s        r   test_spatial_median_1dr`      s    
!))!Q/AK"IAf299((+LSy1A))AGGI&K"IAv+r?   c                  &  ^ [         R                  " / SQ5      R                  SS5      m[        TSSS9u  pU4S jn[	        X!SS	9n[        X5        S
n[        R                  " [        US9   [        TSSS9  S S S 5        g ! , (       d  f       g = f)NrX   rR   r-   r"   ư>)max_itertolc           	         > [         R                  " T Vs/ s H  n[        X-
  5      PM     sn5      n[         R                  " U5      $ s  snf )N)r2   rF   r   sum)r=   r;   distsrJ   s      r   	cost_func)test_spatial_median_2d.<locals>.cost_func   s9    q1q!$qu+q12vve} 2s   A
F)dispz:Maximum number of iterations 30 reached in spatial median.match   rY   )	r2   rF   rS   r   r   r   pytestwarnsr	   )r_   rT   rh   fermat_weberwarning_messagerJ   s        @r   test_spatial_median_2drr      sw    
/088A>ACV<IA
 YU;Lf3RO	(	@BC0 
A	@	@s   -B
Bc                  .   [        5       u  pp#[        5       R                  X5      n[        R                  " UR
                  U-
  5      S:  d   e[        SS9R                  X5      n[        UR
                  US5        [        UR                  US5        g )Ng?r   )r8   r+   )	r>   r
   fitr2   abscoef_r   r   
intercept_rJ   r=   r   r9   lstq	theil_sens         r   test_theil_sen_1dr{      sw    #%JA!!!!'D66$**q.!C'''!q155a;Iiooq!4i22Aq9r?   c                  V   [        SS9u  pp#[        SS9R                  X5      n[        R                  " UR
                  U-
  U-
  5      S:  d   e[        SSS9R                  X5      n[        UR
                  X#-   S5        [        UR                  S5        UR                  X5        g )	NF)r7   fit_interceptrZ   r   r~   r8   r+   rY   )r>   r
   rt   r2   ru   rv   r   r   r   rw   scorerx   s         r   test_theil_sen_1d_no_interceptr      s    #e4JA!%044Q:D66$**q.1$%+++!AFJJ1PIiooqua8	,,c2 OOAr?   c                     [        5       u  pp#[        5       R                  X5      n[        UR                  U-
  5      S:  d   e[        SSS9R                  X5      n[        UR                  US5        [        UR                  US5        g )NrC   g     @@r   max_subpopulationr8   r+   rM   r
   rt   r   rv   r   r   rw   rx   s         r   test_theil_sen_2dr      su    #%JA!!!!'D

Q#%%%!CaHLLQRIiooq!4i22Aq9r?   c                      [        SS5      n [        R                  " U S-
  S[        R                  " S5      -  -   5      S:  d   eg )Ng    _Br-   r+   rb   )r   r2   ru   sqrt)bps    r   test_calc_breakdown_pointr      s;    	$	"B66"q&1
++,v555r?   zparam, ExceptionCls, matchn_subsamplesr+   z;Invalid parameter since n_features+1 > n_subsamples (2 > 1)e   z;Invalid parameter since n_subsamples > n_samples (101 > 50)c                     [        5       u  p4pV[        S0 U DSS0D6n[        R                  " XS9   UR	                  X45        S S S 5        g ! , (       d  f       g = f)Nr8   r   rk    )r>   r   rn   raisesrt   )paramExceptionClsrl   rJ   r=   r   r9   rz   s           r   !test_checksubparams_invalid_inputr      sF      $%JA!!:E::I	|	1a 
2	1	1s   A
Ac                  &   [         R                  R                  S5      n Su  pU R                  X4S9nU R                  US9n[	        SSS9n[
        R                  " [        5         UR                  X45        S S S 5        g ! , (       d  f       g = f)Nr   rD      r#   	   r   r8   )	r2   r3   r4   r5   r   rn   r   
ValueErrorrt   )r8   r:   
n_featuresrJ   r=   rz   s         r   >test_checksubparams_n_subsamples_if_less_samples_than_featuresr      sw    99((+L"I)!89A+A!qqAI	z	"a 
#	"	"s   'B
Bc                      [        5       u  pp#[        SSS9R                  X5      n[        UR                  US5        [        UR
                  US5        g )N   r   r   r+   )rO   r   rt   r   rv   rw   )rJ   r=   r   r9   rz   s        r   test_subpopulationr      sG    #%JA!!CaHLLQRIiooq!4i22Aq9r?   c                      [        5       u  pp#[        U R                  S   SS9R                  X5      n[	        5       R                  X5      n[        UR                  UR                  S5        g )Nr   r   r   )rO   r   shapert   r
   r   rv   )rJ   r=   r   r9   rz   ry   s         r   test_subsamplesr      sT    #%JA!!qwwqzJNNqTI!!!'Diootzz1=r?   c                      [        5       u  pp#[        5          [        SSS9R                  X5        [        SSSS9R                  X5        S S S 5        g ! , (       d  f       g = f)NTr   )verboser8   rD   )r   r   r8   )r>   r   r   rt   )rJ   r=   r   r9   s       r   test_verbosityr     sM    #%JA!		$Q7;;AA$"1MQQRSW 
		s   4A
A#c                     [        5       u  pp#[        5       R                  X5      n[        UR                  U-
  5      S:  d   e[        SSSS9R                  X5      n[        UR                  US5        [        UR                  US5        g )NrC   r-   r   g     @@)n_jobsr8   r   r+   r   rx   s         r   test_theil_sen_parallelr     s|    #%JA!!!!'D

Q#%%%!cRVV	I iooq!4i22Aq9r?   c                     [         R                  R                  S5      n Su  pU R                  X4S9nU R                  US9n[	        SSS9R                  X45      n[        SS9R                  X45      n[        UR                  UR                  S5        [	        SSS9R                  X45      nUR                  U5      n[        XtS5        g )	Nr   r   r#   Fr   r}      T)
r2   r3   r4   r5   r   rt   r
   r   rv   predict)r8   r:   r   rJ   r=   rz   ry   y_preds           r   test_less_samples_than_featuresr     s    99((+L"I)!89A+A!AFJJ1PI%044Q:Diootzz2> "1EII!OIq!Ff,r?   c                      [        5       u  p  n[        SSS9n[        R                  " [        SS9   UR                  X5        S S S 5        g ! , (       d  f       g = f)NTr   )copy_Xr8   z`copy_X` was deprecatedrk   )r>   r   rn   ro   FutureWarningrt   )rJ   r=   r_   rz   s       r   test_copy_X_deprecatedr   +  sD    #%JA!Q!A>I	m+D	Ea 
F	E	Es   A
A)T)4__doc__r   rer   
contextlibr   numpyr2   rn   numpy.testingr   r   r   scipy.linalgr   scipy.optimizer   sklearn.exceptionsr	   sklearn.linear_modelr
   r   sklearn.linear_model._theil_senr   r   r   sklearn.utils._testingr   r   r>   rM   rO   rV   r[   r`   rr   r{   r   r   r   markparametrizer   escaper   r   r   r   r   r   r   r   r   r?   r   <module>r      s   
 	 
 %   
  $ 1 D 
 7 	  	 %8  !.(
,1"::6
   QIIST	
 S!IIST	
:>X
:-"r?   