
    sg'              	          d Z ddlZddlZddlZ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lmZmZ dd	lmZmZmZ dd
lmZ ed        Zd%dZd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'ejP                  jS                  dddie* ejV                  d      fddie* ejV                  d      fg      d        Z,d Z-d Z.d  Z/d! Z0d" Z1d# Z2d$ Z3y)&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               #   *  K   t         j                  } t         j                  }t        t        j
                  d      5 }|t         _        |t         _        d  |j                          | t         _        |t         _        d d d        y # 1 sw Y   y xY ww)Nw)sysstdoutstderropenosdevnullflush)
old_stdout
old_stderrr   s      \/var/www/html/venv/lib/python3.12/site-packages/sklearn/linear_model/tests/test_theil_sen.pyno_stdout_stderrr   !   sd     JJ	bjj#	  '



     s   ;BAB>	BBBc                    t         j                  j                  d      }d}| rd}d}nd}d}|j                  |      }d|j                  |      z  }||z  |z   |z   }| r-d\  |d	<   |d	<   d
\  |d<   |d<   d\  |d<   |d<   d\  |d<   |d<   n7d\  |d	<   |d	<   d
\  |d<   |d<   d\  |d<   |d<   d\  |d<   |d<   d\  |d<   |d<   |d d t         j                  f   |||fS )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	A	EA"qu "qu"qu"qu"qu "qu"qu"qu "quQ

]Q1$$    c                  n   t         j                  j                  d      } d}| j                  |df      }t        j                  ddg      }d}d| j                  |      z  }t        j
                  ||      |z   |z   }|d	z  }| j                  d||      }d
| j                  |      z  ||<   ||||fS )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5AbEaA:r?   c                  n   t         j                  j                  d      } d}| j                  |df      }t        j                  g d      }d}d| j                  |      z  }t        j
                  ||      |z   |z   }|dz  }| j                  d||      }d	| j                  |      z  ||<   ||||fS )
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5AbEaA:r?   c                     t        j                  g d      j                  dd      } d}t        | |      }t	        ||       d}t        | |      }t        ||       t        ||       d}t        | |      }t        ||       t        ||       t        j                  g d      j                  dd      } | d   }t        | |      }t        ||       y )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eV,A$Q*Efe$eQA$Q*Efe$eQ
!))!Q/A	!A$Q*Eq% r?   c                     t        j                  g d      j                  dd      } t        j                  ddg      }t        | |      }t	        |t        j                  ddg             t        | |      }t	        |t        j                  ddg             t        j                  d	d
g      }t        | |      }t	        ||       y )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eQ'r?   c                  h   t        j                  g d      j                  dd      } d}t        |       \  }}t	        ||       t         j
                  j                  d      }|j                  dd      } t        j                  | j                               }t        |       \  }}t        ||       y )	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"IAvfk299((+LSy1A))AGGI&K"IAvv{+r?   c                  4   t        j                  g d      j                  dd      t        dd      \  } }fd}t	        ||d	      }t        ||       d
}t        j                  t        |      5  t        dd       d d d        y # 1 sw Y   y xY w)NrX   rR   r-   r"   ư>)max_itertolc           	          t        j                  D cg c]  }t        || z
         c}      }t        j                  |      S c c}w )N)r2   rF   r   sum)r=   r;   distsrJ   s      r   	cost_funcz)test_spatial_median_2d.<locals>.cost_func   s7    q1!$q1u+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_2drq      s    
/088A>ACV<IAv
 YU;Lfl3RO	(	@ 1BC01 1 1s   6BBc                  8   t               \  } }}}t               j                  | |      }t        j                  |j
                  |z
        dkD  sJ t        d      j                  | |      }t        |j
                  |d       t        |j                  |d       y )Ng?r   )r8   r+   )	r>   r
   fitr2   abscoef_r   r   
intercept_rJ   r=   r   r9   lstq	theil_sens         r   test_theil_sen_1drz      s    #%JAq!Q!!!Q'D66$**q.!C'''!q155a;Iiooq!4i22Aq9r?   c                  p   t        d      \  } }}}t        d      j                  | |      }t        j                  |j
                  |z
  |z
        dkD  sJ t        dd      j                  | |      }t        |j
                  ||z   d       t        |j                  d       |j                  | |       y )	NF)r7   fit_interceptrZ   r   r}   r8   r+   rY   )r>   r
   rs   r2   rt   ru   r   r   r   rv   scorerw   s         r   test_theil_sen_1d_no_interceptr      s    #e4JAq!Q%044Q:D66$**q.1$%+++!AFJJ1aPIiooq1ua8	,,c2 OOAqr?   c                  &   t               \  } }}}t               j                  | |      }t        |j                  |z
        dkD  sJ t        dd      j                  | |      }t        |j                  |d       t        |j                  |d       y )NrC   g     @@r   max_subpopulationr8   r+   rM   r
   rs   r   ru   r   r   rv   rw   s         r   test_theil_sen_2dr      s~    #%JAq!Q!!!Q'D

Q#%%%!CaHLLQPQRIiooq!4i22Aq9r?   c                      t        dd      } t        j                  | dz
  dt        j                  d      z  z         dk  sJ y )Ng    _Br-   r+   rb   )r   r2   rt   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                     t               \  }}}}t        di | ddi}t        j                  ||      5  |j	                  ||       d d d        y # 1 sw Y   y xY w)Nr8   r   rj    )r>   r   rm   raisesrs   )paramExceptionClsrk   rJ   r=   r   r9   ry   s           r   !test_checksubparams_invalid_inputr      sW      $%JAq!Q!:E::I	|5	1 a  s   AAc                  2   t         j                  j                  d      } d\  }}| j                  ||f      }| j                  |      }t	        dd      }t        j                  t              5  |j                  ||       d d d        y # 1 sw Y   y xY w)Nr   rD      r#   	   r   r8   )	r2   r3   r4   r5   r   rm   r   
ValueErrorrs   )r8   r:   
n_featuresrJ   r=   ry   s         r   >test_checksubparams_n_subsamples_if_less_samples_than_featuresr      s    99((+L"Iz)Z!89A+A!qqAI	z	" a  s   1BBc                      t               \  } }}}t        dd      j                  | |      }t        |j                  |d       t        |j
                  |d       y )N   r   r   r+   )rO   r   rs   r   ru   rv   )rJ   r=   r   r9   ry   s        r   test_subpopulationr      sN    #%JAq!Q!CaHLLQPQRIiooq!4i22Aq9r?   c                      t               \  } }}}t        | j                  d   d      j                  | |      }t	               j                  | |      }t        |j                  |j                  d       y )Nr   r   r   )rO   r   shapers   r
   r   ru   )rJ   r=   r   r9   ry   rx   s         r   test_subsamplesr      s]    #%JAq!Q!qwwqzJNNqRSTI!!!Q'Diootzz1=r?   c                      t               \  } }}}t               5  t        dd      j                  | |       t        ddd      j                  | |       d d d        y # 1 sw Y   y xY w)NTr   )verboser8   rD   )r   r   r8   )r>   r   r   rs   )rJ   r=   r   r9   s       r   test_verbosityr     sc    #%JAq!Q		 X$Q7;;AqA$"1MQQRSUVWX X Xs   <AA(c                  (   t               \  } }}}t               j                  | |      }t        |j                  |z
        dkD  sJ t        ddd      j                  | |      }t        |j                  |d       t        |j                  |d       y )NrC   r-   r   g     @@)n_jobsr8   r   r+   r   rw   s         r   test_theil_sen_parallelr     s    #%JAq!Q!!!Q'D

Q#%%%!cRVV	1I iooq!4i22Aq9r?   c                     t         j                  j                  d      } d\  }}| j                  ||f      }| j                  |      }t	        dd      j                  ||      }t        d      j                  ||      }t        |j                  |j                  d       t	        dd      j                  ||      }|j                  |      }t        ||d       y )	Nr   r   r#   Fr~   r|      T)
r2   r3   r4   r5   r   rs   r
   r   ru   predict)r8   r:   r   rJ   r=   ry   rx   y_preds           r   test_less_samples_than_featuresr     s    99((+L"Iz)Z!89A+A!AFJJ1aPI%044Q:Diootzz2> "1EII!QOIq!Ffa,r?   c                      t               \  } }}}t        dd      }t        j                  t        d      5  |j                  | |       d d d        y # 1 sw Y   y xY w)NTr   )copy_Xr8   z`copy_X` was deprecatedrj   )r>   r   rm   rn   FutureWarningrs   )rJ   r=   r_   ry   s       r   test_copy_X_deprecatedr   +  sP    #%JAq!Q!A>I	m+D	E a  s   AA)T)4__doc__r   rer   
contextlibr   numpyr2   rm   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`   rq   rz   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BIIST	
 S!BIIST	
:>X
:-"r?   