
    Pi&              	          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j(        )                    dddie* ej+        d          fddie* ej+        d          fg          d             Z,d Z-d  Z.d! Z/ej(        j0        d"             Z1d# Z2d$ Z3dS )&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               #   0  K   t           j        } t           j        }t          t          j        d          5 }|t           _        |t           _        d V  |                                 | t           _        |t           _        d d d            d S # 1 swxY w Y   d S )Nw)sysstdoutstderropenosdevnullflush)
old_stdout
old_stderrr   s      }/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sklearn/linear_model/tests/test_theil_sen.pyno_stdout_stderrr   !   s      JJ	bj#		  '



                                   s   A	BBBTc                    t           j                            d          }d}| rd}d}nd}d}|                    |          }d|                    |          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>   9((++LA 			++A,%%9%555E	A	EA 
!"qu "qu"qu"quu"qu "qu"qu"qu "quQQQ
]Q1$$    c                     t           j                            d          } d}|                     |df          }t          j        ddg          }d}d|                     |          z  }t          j        ||          |z   |z   }|d	z  }|                     d||          }d
|                     |          z  ||<   ||||fS )Nr   r#   r.   r$         @      $@      ?r"   
   r!   r3   r4   r5   r6   arraydotrandint	r9   r;   Xr   r:   r=   r>   
n_outliersixs	            r   gen_toy_problem_2drN   J   s    9((++LI)Q00A
#tAA,%%9%555E
q!q5 AbJ			a		<	<B$$*$555AbEaA:r@   c                     t           j                            d          } d}|                     |df          }t          j        g d          }d}d|                     |          z  }t          j        ||          |z   |z   }|dz  }|                     d||          }d	|                     |          z  ||<   ||||fS )
Nr   i'  r'   r$   )rB   rC   g      E@g      @rD   r"   rE   r!   rF   rJ   s	            r   gen_toy_problem_4drP   Z   s    9((++LI)Q00A
'''((AA,%%9%555E
q!q5 AbJ			a		<	<B$$*$555AbEaA:r@   c                  
   t          j        g d                              dd          } d}t          | |          }t	          ||           d}t          | |          }t          ||           t          ||           d}t          | |          }t          ||           t          ||           t          j        g d                              dd          } | d         }t          | |          }t          ||           d S )NrD   r    r      r,   r    r+   r   r   )r3   rG   reshaper   r   r   r   )rK   mediannew_yr>   s       r   test_modweiszfeld_step_1drW   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                              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	          ||           d S )N        rZ   rD   rD   rZ   rD   rS   r.         ?gUUUUUU?gUUUUUU?g=^?gP	u?gI?gj\jJ<?)r3   rG   rT   r   r   )rK   r>   rV   s      r   test_modweiszfeld_step_2dr\      s    
///0088A>>A
#sA$Q**EeRXuen%=%=>>>$Q..EeRXy).D%E%EFFF
*j)**A$Q**EeQ'''''r@   c                     t          j        g d                              dd          } d}t          |           \  }}t	          ||           t           j                            d          }|                    dd          } t          j        | 	                                          }t          |           \  }}t          ||           d S )	NrR   rS   r,   r    r   r#   )i  r,   r$   )r3   rG   rT   r   r   r4   r5   rI   rU   ravelr   )rK   true_median_rU   r9   s        r   test_spatial_median_1dra      s    
!!))!Q//AK""IAvfk2229((++LSy11A)AGGII&&K""IAvv{+++++r@   c                  d   t          j        g d                              dd          t          dd          \  } }fd}t	          ||d	          }t          ||           d
}t          j        t          |          5  t          dd           d d d            d S # 1 swxY w Y   d S )NrY   rS   r.   r#   ư>)max_itertolc                 n     t          j         fdD                       }t          j        |          S )Nc                 4    g | ]}t          |z
            S  r   ).0r<   r>   s     r   
<listcomp>z=test_spatial_median_2d.<locals>.cost_func.<locals>.<listcomp>   s#    111!$q1u++111r@   )r3   rG   sum)r>   distsrK   s   ` r   	cost_funcz)test_spatial_median_2d.<locals>.cost_func   s6    1111q11122ve}}r@   F)dispz:Maximum number of iterations 30 reached in spatial median.match   rZ   )	r3   rG   rT   r   r	   r   pytestwarnsr
   )r`   rU   rm   fermat_weberwarning_messagerK   s        @r   test_spatial_median_2drv      s   
///0088A>>ACV<<<IAv    
 YU;;;Lfl333RO	(	@	@	@ 1 1BC00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   B%%B),B)c                  T   t                      \  } }}}t                                          | |          }t          j        |j        |z
            dk    sJ t          d                              | |          }t          |j        |d           t          |j        |d           d S )Ng?r   )r9   r,   )	r?   r   fitr3   abscoef_r   r   
intercept_rK   r>   r   r:   lstq	theil_sens         r   test_theil_sen_1dr      s    #%%JAq!Q!!!Q''D6$*q.!!C''''!q11155a;;Iioq!444i2Aq99999r@   c                     t          d          \  } }}}t          d                              | |          }t          j        |j        |z
  |z
            dk    sJ t          dd                              | |          }t          |j        ||z   d           t          |j	        d           |
                    | |           d S )	NF)r8   fit_interceptr[   r   r   r9   r,   rZ   )r?   r   rx   r3   ry   rz   r   r   r   r{   scorer|   s         r   test_theil_sen_1d_no_interceptr      s    #e444JAq!Q%00044Q::D6$*q.1$%%++++!AFFFJJ1aPPIioq1ua888	,c222 OOAqr@   c                  L   t                      \  } }}}t                                          | |          }t          |j        |z
            dk    sJ t          dd                              | |          }t          |j        |d           t          |j        |d           d S )NrD   g     @@r   max_subpopulationr9   r,   rN   r   rx   r   rz   r   r   r{   r|   s         r   test_theil_sen_2dr      s    #%%JAq!Q!!!Q''D
Q#%%%%!CaHHHLLQPQRRIioq!444i2Aq99999r@   c                      t          dd          } t          j        | dz
  dt          j        d          z  z             dk     sJ d S )Ng    _Br.   r,   rc   )r   r3   ry   sqrt)bps    r   test_calc_breakdown_pointr      sH    	$	"	"B6"q&1

++,,v555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  |                    ||           d d d            d S # 1 swxY w Y   d S )Nr9   r   ro   rh   )r?   r   rr   raisesrx   )paramExceptionClsrp   rK   r>   r   r:   r~   s           r   !test_checksubparams_invalid_inputr      s      $%%JAq!Q!::E:::::I	|5	1	1	1  a                 s   AA"%A"c                  \   t           j                            d          } d\  }}|                     ||f          }|                     |          }t	          dd          }t          j        t                    5  |                    ||           d d d            d S # 1 swxY w Y   d S )Nr   rE      r$   	   r   r9   )	r3   r4   r5   r6   r   rr   r   
ValueErrorrx   )r9   r;   
n_featuresrK   r>   r~   s         r   >test_checksubparams_n_subsamples_if_less_samples_than_featuresr      s    9((++L"Iz)Z!899A++A!qqAAAI	z	"	"  a                 s   =B!!B%(B%c                      t                      \  } }}}t          dd                              | |          }t          |j        |d           t          |j        |d           d S )N   r   r   r,   )rP   r   rx   r   rz   r{   )rK   r>   r   r:   r~   s        r   test_subpopulationr      sg    #%%JAq!Q!CaHHHLLQPQRRIioq!444i2Aq99999r@   c                     t                      \  } }}}t          | j        d         d                              | |          }t	                                          | |          }t          |j        |j        d           d S )Nr   r   r   )rP   r   shaperx   r   r   rz   )rK   r>   r   r:   r~   r}   s         r   test_subsamplesr      su    #%%JAq!Q!qwqzJJJNNqRSTTI!!!Q''Diotz1=====r@   c                     t                      \  } }}}t                      5  t          dd                              | |           t          ddd                              | |           d d d            d S # 1 swxY w Y   d S )NTr   )verboser9   rE   )r   r   r9   )r?   r   r   rx   )rK   r>   r   r:   s       r   test_verbosityr     s    #%%JAq!Q			 X X$Q777;;AqAAA$"1MMMQQRSUVWWWX X X X X X X X X X X X X X X X X Xs   AA;;A?A?c                  N   t                      \  } }}}t                                          | |          }t          |j        |z
            dk    sJ t          ddd                              | |          }t          |j        |d           t          |j        |d           d S )NrD   r.   r   g     @@)n_jobsr9   r   r,   r   r|   s         r   test_theil_sen_parallelr     s    #%%JAq!Q!!!Q''D
Q#%%%%!cRRRVV	1 I ioq!444i2Aq99999r@   c                     t           j                            d          } d\  }}|                     ||f          }|                     |          }t	          dd                              ||          }t          d                              ||          }t          |j        |j        d           t	          dd                              ||          }|	                    |          }t          ||d           d S )	Nr   r   r$   Fr   r      T)
r3   r4   r5   r6   r   rx   r   r   rz   predict)r9   r;   r   rK   r>   r~   r}   y_preds           r   test_less_samples_than_featuresr     s    9((++L"Iz)Z!899A++A!AFFFJJ1aPPI%00044Q::Diotz2>>> "1EEEII!QOOIq!!Ffa,,,,,r@   )T)4__doc__r   rer   
contextlibr   numpyr3   rr   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?   rN   rP   rW   r\   ra   rv   r   r   r   r   markparametrizer   escaper   r   r   r   thread_unsafer   r   r   rh   r@   r   <module>r      s    
			 				 



 % % % % % %              
       $ $ $ $ $ $ 1 1 1 1 1 1 D D D D D D D D         
 7 6 6 6 6 6 	  	  	 % % % %8      ! ! !.( ( (
, 
, 
,1 1 1": : :  : : :6 6 6
   QBISTT	
 S!BISTT	
     : : :> > > X X X
: 
: 
:- - - - -r@   