o
    tBh'                     @   s   d dl Zd dlmZmZ d dlmZ d dlm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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dS )"    N)optimizesparse)assert_almost_equal)assert_array_equal)assert_array_almost_equal)make_regression)HuberRegressorLinearRegressionSGDRegressorRidge_huber_loss_and_gradient2      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/html/riverr-enterprise-integrations-main/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_func6      z&test_huber_gradient.<locals>.loss_funcc                 W   r4   )Nr   r   r5   r#   r#   r$   	grad_func9   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_gradient0   s   
 
rG   c               	   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| }	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concatenater   
csr_matrix)r   r    r/   
huber_coefhuber_interceptscaleX_newy_newrC   X_csrhuber_sparser#   r#   r$   test_huber_sample_weightsH   s2   
&&$
rV   c                  C   s`   t  \} }tdd}|| | t| }tdd}||| t|j|j t|j|j d S )Nr   r(   )	r%   r   r+   r   rN   r   r,   r   	outliers_)r   r    r/   rT   rU   r#   r#   r$   test_huber_sparsep   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*   rH   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   scipyr   r   sklearn.utils._testingr   r   r   sklearn.datasetsr   sklearn.linear_modelr   r	   r
   r   sklearn.linear_model._huberr   r%   r0   r3   rG   rV   rY   r_   rj   ro   ry   r|   r#   r#   r#   r$   <module>   s&   
(