o
    \i                     @   s   d dl Zd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZmZmZ d dlmZ d!d
dZdd Zdd Zdd Zejdedd Zejdedd Zdd Zdd Zdd Zdd Zdd  Z dS )"    N)optimize)make_regression)HuberRegressorLinearRegressionRidgeSGDRegressor_huber_loss_and_gradient)assert_almost_equalassert_array_almost_equalassert_array_equal)CSR_CONTAINERS2      c                 C   sj   t jd}t| |ddd\}}td|  }|d| |}d|dd||jd f ||d d f< ||fS )Nr   g?)	n_samples
n_featuresrandom_statenoise皙?       @   )nprandomRandomStater   intrandintnormalshape)r   r   rngXy	num_noiserandom_samples r#   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/linear_model/tests/test_huber.pymake_regression_with_outliers   s   
(r%   c                  C   sX   t  \} }t }|| | tddd}|| | t|j|jd t|j|jd d S )Ng     @@        )epsilonalpha      )r%   r   fitr   r
   coef_
intercept_)r   r    lrhuberr#   r#   r$   %test_huber_equals_lr_for_high_epsilon!   s   
r0   c                  C   s4   t  \} }tdd}|| | |j|jksJ d S )Nr   )max_iter)r%   r   r+   n_iter_r1   )r   r    r/   r#   r#   r$   test_huber_max_iter,   s   

r3   c            
      C   s   t jd} t \}}| dd|jd }dd }dd }tdD ]3}|jd d |jd d	 fD ]"}| |}t |d
 |d
< t	
|||||dd|}	t|	dd q1q!d S )Nr   r)   r   c                 W      t | g|R  d S )Nr   r   xargsr#   r#   r$   	loss_func9      z&test_huber_gradient.<locals>.loss_funcc                 W   r4   )Nr   r   r5   r#   r#   r$   	grad_func<   r9   z&test_huber_gradient.<locals>.grad_func   r*   {Gz?r   gư>   )r   r   r   r%   r   r   rangerandnabsr   
check_gradr
   )
r   r   r    sample_weightr8   r:   _r   w	grad_samer#   r#   r$   test_huber_gradient3   s   
 
rG   csr_containerc              	   C   s  t  \}}t }||| |j}|j}ttt|jtt|j}|j||t	|j
d d t|j| ||  t|j| ||  t ddd\}}t|t|d |d |d ff}t||d g|d g|d gf}||| |j}|j}t	|j
d }	d|	d< d|	d< |j|||	d t|j| ||  t|j| ||  | |}
t }|j|
||	d t|j| ||  d S )	Nr   )rC   r;   r   r   r   r   r)   r*   )r%   r   r+   r,   r-   maxr   meanrA   onesr   r   vstackconcatenate)rH   r   r    r/   
huber_coefhuber_interceptscaleX_newy_newrC   X_csrhuber_sparser#   r#   r$   test_huber_sample_weightsK   s2   
&&$rV   c                 C   s^   t  \}}tdd}||| | |}tdd}||| t|j|j t|j|j d S )Nr   r(   )r%   r   r+   r   r,   r   	outliers_)rH   r   r    r/   rT   rU   r#   r#   r$   test_huber_sparset   s   


rY   c                  C   s~   t  \} }tddd}|| | |j}t|rJ || d|  |j}t|| |d|  d|  |j}t|| d S )NFr&   )fit_interceptr(   r   )r%   r   r+   rX   r   allr   )r   r    r/   n_outliers_mask_1n_outliers_mask_2n_outliers_mask_3r#   r#   r$   test_huber_scaling_invariant   s   

r_   c               
   C   s   t ddd\} }tdddd}|| | | |j }||j }||| t|jdd	 tdd
dddddd d}||| t|j|jd d S )N
   r*   rI   Fr&   g?)rZ   r(   r'         ?r)   r/   Tr   '  )r(   lossshuffler   r1   rZ   r'   tolr   )r%   r   r+   scale_r
   r   r   r,   )r   r    r/   X_scaley_scalesgdregr#   r#   r$   test_huber_and_sgd_same_results   s&   


rj   c                  C   s\   t  \} }tddddd}|| | |j }|| | t|j|d |jdks,J d S )Nra   rb   Tr   )r(   r1   
warm_startre   r   r   )r%   r   r+   r,   copyr   r2   )r   r    
huber_warmhuber_warm_coefr#   r#   r$   test_huber_warm_start   s   

ro   c            
      C   s   t  \} }tdd}|| | t| |j|j | }t||j|j	 k }|
| | || }|
| |  ||  }tdd}|| | |
| | || }|
| |  ||  }	||ksdJ |	|ksjJ d S )Nr=   rW   )r%   r   r+   r   dotr,   r-   rA   r'   rf   scorer   )
r   r    r/   linear_lossmaskhuber_scorehuber_outlier_scoreridgeridge_scoreridge_outlier_scorer#   r#   r$   test_huber_better_r2_score   s   


ry   c                  C   s.   t ddddd\} }| dk}t || d S )N   r*   g      @r   )r   r   r   r   )r   r   r+   )r   r    X_boolr#   r#   r$   test_huber_bool   s   r|   )r   r   )!numpyr   pytestscipyr   sklearn.datasetsr   sklearn.linear_modelr   r   r   r   sklearn.linear_model._huberr	   sklearn.utils._testingr
   r   r   sklearn.utils.fixesr   r%   r0   r3   rG   markparametrizerV   rY   r_   rj   ro   ry   r|   r#   r#   r#   r$   <module>   s*   

(
