o
    \i'                  	   @   s|  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d Zd:ddZdd Zdd Zdd Z dd Z!dd Z"dd Z#dd Z$dd Z%d d! Z&d"d# Z'ej()d$d%d&ie*e+d'fd%d(ie*e+d)fgd*d+ Z,d,d- Z-d.d/ Z.d0d1 Z/d2d3 Z0d4d5 Z1d6d7 Z2d8d9 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                  c   sf    t j} t j}ttjd}|t _|t _d V  |  | t _|t _W d    d S 1 s,w   Y  d S )Nw)sysstdoutstderropenosdevnullflush)
old_stdout
old_stderrr    r   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/linear_model/tests/test_theil_sen.pyno_stdout_stderr!   s   "r   Tc                 C   s  t jd}d}| rd}d}nd}d}|j|d}d|j|d }|| | | }| rLd\|d	< |d	< d
\|d< |d< d\|d< |d< d\|d< |d< n(d\|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yr   r   r   gen_toy_problem_1d.   s*   r=   c            	      C   s   t jd} d}| j|dfd}t ddg}d}d| j|d }t ||| | }|d	 }| jd||d}d
| j|d ||< ||||fS )Nr   r!   r,   r"         @      $@      ?r    
   r   r1   r2   r3   r4   arraydotrandint	r7   r9   Xr   r8   r;   r<   
n_outliersixr   r   r   gen_toy_problem_2dJ      rJ   c            	      C   s   t jd} d}| j|dfd}t g d}d}d| j|d }t ||| | }|d }| jd||d}d	| j|d ||< ||||fS )
Nr   i'  r%   r"   )r>   r?   g      E@g      @r@   r    rA   r   rB   rF   r   r   r   gen_toy_problem_4dZ   rK   rL   c                  C   s   t g ddd} d}t| |}t|| d}t| |}t|| t|| d}t| |}t|| t|| t g ddd} | d }t| |}t|| d S )Nr@   r   r      r*   r   r)   r   r   )r1   rC   reshaper   r   r   r   )rG   mediannew_yr<   r   r   r   test_modweiszfeld_step_1dj   s    








rR   c                  C   s   t g ddd} t ddg}t| |}t|t ddg t| |}t|t ddg t d	d
g}t| |}t|| d S )N        rT   r@   r@   rT   r@   rN   r,         ?gUUUUUU?gUUUUUU?g=^?gP	u?gI?gj\jJ<?)r1   rC   rO   r   r   )rG   r<   rQ   r   r   r   test_modweiszfeld_step_2d   s   


rV   c                  C   sr   t g ddd} d}t| \}}t|| t jd}|jddd} t | 	 }t| \}}t
|| d S )	NrM   rN   r*   r   r   r!   )i  r*   r"   )r1   rC   rO   r   r   r2   r3   rE   rP   ravelr   )rG   true_median_rP   r7   r   r   r   test_spatial_median_1d   s   
rZ   c                     s   t g ddd t ddd\} } fdd}t||d	d
}t|| d}tjt|d t ddd W d    d S 1 sBw   Y  d S )NrS   rN   r,   r!   ư>)max_itertolc                    s"   t  fddD }t |S )Nc                    s   g | ]}t |  qS r   r   ).0r:   r<   r   r   
<listcomp>   s    z=test_spatial_median_2d.<locals>.cost_func.<locals>.<listcomp>)r1   rC   sum)r<   distsrG   r_   r   	cost_func   s   
z)test_spatial_median_2d.<locals>.cost_funcF)dispz:Maximum number of iterations 30 reached in spatial median.match   rT   )	r1   rC   rO   r   r   r   pytestwarnsr	   )rY   rP   rd   fermat_weberwarning_messager   rc   r   test_spatial_median_2d   s   
"rm   c                  C   sf   t  \} }}}t | |}t|j| dksJ tdd| |}t|j|d t|j|d d S )Ng?r   )r7   r*   )	r=   r
   fitr1   abscoef_r   r   
intercept_rG   r<   r   r8   lstq	theil_senr   r   r   test_theil_sen_1d   s   ru   c                  C   s   t dd\} }}}tdd| |}t|j| | dks J tddd| |}t|j|| d t|j	d |
| | d S )	NF)r6   fit_interceptrU   r   rw   r7   r*   rT   )r=   r
   rn   r1   ro   rp   r   r   r   rq   scorerr   r   r   r   test_theil_sen_1d_no_intercept   s   rz   c                  C   sf   t  \} }}}t | |}t|j| dksJ tddd| |}t|j|d t|j|d d S )Nr@   g     @@r   max_subpopulationr7   r*   rJ   r
   rn   r   rp   r   r   rq   rr   r   r   r   test_theil_sen_2d   s   r~   c                  C   s2   t dd} t| d dtd  dk sJ d S )Ng    _Br,   r*   r[   )r   r1   ro   sqrt)bpr   r   r   test_calc_breakdown_point   s   
(r   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                 C   sd   t  \}}}}tdi | ddi}tj||d ||| W d    d S 1 s+w   Y  d S )Nr7   r   rf   r   )r=   r   ri   raisesrn   )paramExceptionClsrg   rG   r<   r   r8   rt   r   r   r   !test_checksubparams_invalid_input   s
   "r   c                  C   sx   t jd} d\}}| j||fd}| j|d}tddd}tt ||| W d    d S 1 s5w   Y  d S )Nr   rA      r"   	   r   r7   )	r1   r2   r3   r4   r   ri   r   
ValueErrorrn   )r7   r9   
n_featuresrG   r<   rt   r   r   r   >test_checksubparams_n_subsamples_if_less_samples_than_features   s   "r   c                  C   sB   t  \} }}}tddd| |}t|j|d t|j|d d S )N   r   r{   r*   )rL   r   rn   r   rp   rq   )rG   r<   r   r8   rt   r   r   r   test_subpopulation   s   r   c                  C   sJ   t  \} }}}t| jd dd| |}t | |}t|j|jd d S )Nr   r   r   )rL   r   shapern   r
   r   rp   )rG   r<   r   r8   rt   rs   r   r   r   test_subsamples   s   r   c                  C   sd   t  \} }}}t  tddd| | tdddd| | W d    d S 1 s+w   Y  d S )NTr   )verboser7   rA   )r   r|   r7   )r=   r   r   rn   )rG   r<   r   r8   r   r   r   test_verbosity  s
   "r   c                  C   sh   t  \} }}}t | |}t|j| dksJ tdddd| |}t|j|d t|j|d d S )Nr@   r,   r   g     @@)n_jobsr7   r|   r*   r}   rr   r   r   r   test_theil_sen_parallel  s   r   c                  C   s   t jd} d\}}| j||fd}| j|d}tddd||}tdd||}t|j|jd tddd||}|	|}t||d d S )	Nr   r   r"   Frx   rv      T)
r1   r2   r3   r4   r   rn   r
   r   rp   predict)r7   r9   r   rG   r<   rt   rs   y_predr   r   r   test_less_samples_than_features  s   
r   c                  C   sZ   t  \} }}}tddd}tjtdd || | W d    d S 1 s&w   Y  d S )NTr   )copy_Xr7   z`copy_X` was deprecatedrf   )r=   r   ri   rj   FutureWarningrn   )rG   r<   rY   rt   r   r   r   test_copy_X_deprecated+  s
   "r   )T)4__doc__r   rer   
contextlibr   numpyr1   ri   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=   rJ   rL   rR   rV   rZ   rm   ru   rz   r~   r   markparametrizer   escaper   r   r   r   r   r   r   r   r   r   r   r   <module>   s^    



