
    {Kg                     0   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Zd	 Zd
 Zd Zej0                  j3                  de      d        Zej0                  j3                  de      d        Zd Zd Zd Zd Zd Z y)    N)optimize)make_regression)HuberRegressorLinearRegressionRidgeSGDRegressor_huber_loss_and_gradient)assert_almost_equalassert_array_almost_equalassert_array_equal)CSR_CONTAINERSc                    t         j                  j                  d      }t        | |dd      \  }}t	        d| z        }|j                  d| |      }d|j                  dd||j                  d   f      z  ||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_sampless          i/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/linear_model/tests/test_huber.pymake_regression_with_outliersr$      s    
))


"C
$DAq
 C)O$I[[Iy9NAq9aggaj2I!JJAnaa4K    c                     t               \  } }t               }|j                  | |       t        dd      }|j                  | |       t	        |j
                  |j
                  d       t	        |j                  |j                  d       y )Ng     @@        )epsilonalpha      )r$   r   fitr   r   coef_
intercept_)r   r    lrhubers       r#   %test_huber_equals_lr_for_high_epsilonr1   !   sf    (*DAq		BFF1aL3c2E	IIaORXXq1(("--;r%   c                      t               \  } }t        d      }|j                  | |       |j                  |j                  k(  sJ y )Nr   )max_iter)r$   r   r,   n_iter_r3   )r   r    r0   s      r#   test_huber_max_iterr5   ,   s;    (*DAqA&E	IIaO==ENN***r%   c                     t         j                  j                  d      } t               \  }}| j	                  dd|j
                  d         }d }d }t        d      D ]  }|j
                  d   dz   |j
                  d   dz   fD ]W  }| j                  |      }t        j                  |d         |d<   t        j                  |||||d	d
|      }	t        |	dd       Y  y )Nr   r*   r   c                      t        | g| d   S )Nr   r	   xargss     r#   	loss_funcz&test_huber_gradient.<locals>.loss_func9       '1D1!44r%   c                      t        | g| d   S )Nr   r	   r8   s     r#   	grad_funcz&test_huber_gradient.<locals>.grad_func<   r<   r%      r+   {Gz?r   gư>   )r   r   r   r$   r   r   rangerandnabsr   
check_gradr   )
r   r   r    sample_weightr;   r>   _r   w	grad_sames
             r#   test_huber_gradientrK   3   s    
))


"C(*DAqKK1qwwqz3M55 1X771:>1771:>:J		*%AFF1R5MAbE ++9aAtS-I  	43 ; r%   csr_containerc           	         t               \  }}t               }|j                  ||       |j                  }|j                  }t        t        j                  t        j                  |j                              t        j                  t        j                  |j                                    }|j                  ||t        j                  |j                  d                t        |j                  |z  ||z         t        |j                  |z  ||z         t        dd      \  }}t        j                  |t        j                  |d   |d   |d   f      f      }t        j                  ||d   g|d   g|d   gf      }|j                  ||       |j                  }|j                  }t        j                  |j                  d         }	d|	d<   d|	d<   |j                  |||	       t        |j                  |z  ||z         t        |j                  |z  ||z          | |      }
t               }|j                  |
||	       t        |j                  |z  ||z         y )	Nr   )rG   r?      r   r   r   r*   r+   )r$   r   r,   r-   r.   maxr   meanrE   onesr   r   vstackconcatenate)rL   r   r    r0   
huber_coefhuber_interceptscaleX_newy_newrG   X_csrhuber_sparses               r#   test_huber_sample_weightsr\   K   s    )*DAqE	IIaOJ&&O u{{+,bggbffU=M=M6N.OPE	IIa"''!''!*"5I6ekkE1:3EFe..6%8OP(1DDAqIIq"))QqT1Q41$6789ENNA!v!v!v67E	IIeUJ&&OGGAGGAJ'MM!M!	IIa-I0ekkE1:3EFe..6%8OP !E!#LUA];l0058*u:LMr%   c                 &   t               \  }}t        d      }|j                  ||        | |      }t        d      }|j                  ||       t        |j                  |j                         t        |j                  |j                         y )Nr   r)   )r$   r   r,   r   r-   r   	outliers_)rL   r   r    r0   rZ   r[   s         r#   test_huber_sparser`   t   sq    (*DAq%E	IIaO!E!,LUAl00%++>u(>(>?r%   c                  \   t               \  } }t        dd      }|j                  | |       |j                  }t	        j
                  |      rJ |j                  | d|z         |j                  }t        ||       |j                  d| z  d|z         |j                  }t        ||       y )NFr'   )fit_interceptr)   r   )r$   r   r,   r_   r   allr   )r   r    r0   n_outliers_mask_1n_outliers_mask_2n_outliers_mask_3s         r#   test_huber_scaling_invariantrg      s    (*DAqc:E	IIaOvv'(((	IIaq(*;<	IIcAgsQw(*;<r%   c            
      ~   t        dd      \  } }t        ddd      }|j                  | |       | |j                  z  }||j                  z  }|j                  ||       t	        |j                  dd	       t        dd
dddddd       }|j                  ||       t        |j                  |j                  d       y )N
   r+   rO   Fr'   g?)rb   r)   r(         ?r*   r0   Tr   '  )r)   lossshuffler   r3   rb   r(   tolr   )r$   r   r,   scale_r   r   r   r-   )r   r    r0   X_scaley_scalesgdregs         r#   test_huber_and_sgd_same_resultsrs      s     )2!DDAq c4HE	IIaO%,,G%,,G	IIgwc1-	F JJw ekk6<<;r%   c                     t               \  } }t        dddd      }|j                  | |       |j                  j	                         }|j                  | |       t        |j                  |d       |j                  dk(  sJ y )Nrj   rk   Tr   )r)   r3   
warm_startrn   r   r   )r$   r   r,   r-   copyr   r4   )r   r    
huber_warmhuber_warm_coefs       r#   test_huber_warm_startry      sw    (*DAqcEdPTUJNN1a &&++-ONN1a j..C"""r%   c                  8   t               \  } }t        d      }|j                  | |       t        j                  | |j
                        |j                  z   |z
  }t        j                  |      |j                  |j                  z  k  }|j                  | |   ||         }|j                  | |    ||          }t        d      }|j                  | |       |j                  | |   ||         }|j                  | |    ||          }	||kD  sJ |	|kD  sJ y )NrA   r^   )r$   r   r,   r   dotr-   r.   rE   r(   ro   scorer   )
r   r    r0   linear_lossmaskhuber_scorehuber_outlier_scoreridgeridge_scoreridge_outlier_scores
             r#   test_huber_better_r2_scorer      s   (*DAq&E	IIaO&&EKK(5+;+;;a?K66+!==D++agqw/K++ah4%9
 E	IIaO++agqw/K++ah4%9$$$ !4444r%   c                  f    t        dddd      \  } }| dkD  }t               j                  ||       y )N   r+   g      @r   )r   r   r   r   )r   r   r,   )r   r    X_bools      r#   test_huber_boolr      s3    SQcPQRDAqUF#r%   )2   rN   )!numpyr   pytestscipyr   sklearn.datasetsr   sklearn.linear_modelr   r   r   r   sklearn.linear_model._huberr
   sklearn.utils._testingr   r   r   sklearn.utils.fixesr   r$   r1   r5   rK   markparametrizer\   r`   rg   rs   ry   r   r    r%   r#   <module>r      s       , V V @ 
 /<+40 .9%N :%NP .9	@ :	@="<8#5.$r%   