
    -i                     2   S SK rS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
Jr  S SKJr  S SKJrJrJr  S SKJr  SS jrS	 rS
 rS r\R0                  R3                  S\5      S 5       r\R0                  R3                  S\5      S 5       rS rS rS rS rS r g)    N)optimize)make_regression)HuberRegressorLinearRegressionRidgeSGDRegressor_huber_loss_and_gradient)assert_almost_equalassert_array_almost_equalassert_array_equal)CSR_CONTAINERSc                     [         R                  R                  S5      n[        XSSS9u  p4[	        SU -  5      nUR                  SX5      nSUR                  SSXSR                  S   45      -  X6S S 24'   X44$ )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          X/var/www/html/venv/lib/python3.13/site-packages/sklearn/linear_model/tests/test_huber.pymake_regression_with_outliersr$      sz    
))


"C$DA
 C)O$I[[I9NAq9ggaj2I!JJAa4K    c                     [        5       u  p[        5       nUR                  X5        [        SSS9nUR                  X5        [	        UR
                  UR
                  S5        [	        UR                  UR                  S5        g )Ng     @@        )epsilonalpha      )r$   r   fitr   r   coef_
intercept_)r   r    lrhubers       r#   %test_huber_equals_lr_for_high_epsilonr1   !   s`    (*DA		BFF1L3c2E	IIaORXXq1(("--;r%   c                      [        5       u  p[        SS9nUR                  X5        UR                  UR                  :X  d   eg )Nr   )max_iter)r$   r   r,   n_iter_r3   )r   r    r0   s      r#   test_huber_max_iterr5   ,   s7    (*DAA&E	IIaO==ENN***r%   c                     [         R                  R                  S5      n [        5       u  pU R	                  SSUR
                  S   5      nS nS n[        S5       H  nUR
                  S   S-   UR
                  S   S-   4 HX  nU R                  U5      n[         R                  " US   5      US'   [        R                  " XEXUS	S
U5      n	[        U	SS5        MZ     M     g )Nr   r*   r   c                      [        U /UQ76 S   $ )Nr   r	   xargss     r#   	loss_func&test_huber_gradient.<locals>.loss_func9       '1D1!44r%   c                      [        U /UQ76 S   $ )Nr   r	   r8   s     r#   	grad_func&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_gradientrM   3   s    
))


"C(*DAKK1qwwqz3M55 1X771:>1771:>:J		*%AFF1R5MAbE ++aAtS-I  	43 ; r%   csr_containerc           	         [        5       u  p[        5       nUR                  X5        UR                  nUR                  n[        [        R                  " [        R                  " UR                  5      5      [        R                  " [        R                  " UR                  5      5      5      nUR                  X[        R                  " UR                  S   5      S9  [        UR                  U-  XF-  5        [        UR                  U-  XV-  5        [        SSS9u  p[        R                  " U[        R                  " US   US   US   45      45      n[        R                  " X"S   /US   /US   /45      nUR                  Xx5        UR                  nUR                  n[        R                  " UR                  S   5      n	SU	S'   SU	S'   UR                  XU	S9  [        UR                  U-  XF-  5        [        UR                  U-  XV-  5        U " U5      n
[        5       nUR                  XU	S9  [        UR                  U-  XF-  5        g )	Nr   )rI   rA      r   r   r   r*   r+   )r$   r   r,   r-   r.   maxr   meanrG   onesr   r   vstackconcatenate)rN   r   r    r0   
huber_coefhuber_interceptscaleX_newy_newrI   X_csrhuber_sparses               r#   test_huber_sample_weightsr^   K   s    )*DAE	IIaOJ&&O u{{+,bggbffU=M=M6N.OPE	IIa"''!''!*"5I6ekkE1:3EFe..68OP(1DDAIIq"))QqT1Q41$6789ENNA!v!v!v67E	IIeJ&&OGGAGGAJ'MM!M!	IIa-I0ekkE1:3EFe..68OP !E!#LU];l0058*:LMr%   c                    [        5       u  p[        SS9nUR                  X5        U " U5      n[        SS9nUR                  XB5        [        UR                  UR                  5        [        UR                  UR                  5        g )Nr   r)   )r$   r   r,   r   r-   r   	outliers_)rN   r   r    r0   r\   r]   s         r#   test_huber_sparserb   t   sk    (*DA%E	IIaO!E!,LUl00%++>u(>(>?r%   c                  Z   [        5       u  p[        SSS9nUR                  X5        UR                  n[        R
                  " U5      (       a   eUR                  U SU-  5        UR                  n[        XC5        UR                  SU -  SU-  5        UR                  n[        XS5        g )NFr'   )fit_interceptr)   r   )r$   r   r,   ra   r   allr   )r   r    r0   n_outliers_mask_1n_outliers_mask_2n_outliers_mask_3s         r#   test_huber_scaling_invariantri      s    (*DAc:E	IIaOvv'((((	IIaq(<	IIcAgsQw(<r%   c                  `   [        SSS9u  p[        SSSS9nUR                  X5        XR                  -  nXR                  -  nUR                  X45        [	        UR                  SS	5        [        SS
SSSSSS S9nUR                  X45        [        UR                  UR                  S5        g )N
   r+   rQ   Fr'   g?)rd   r)   r(         ?r*   r0   Tr   '  )r)   lossshuffler   r3   rd   r(   tolr   )r$   r   r,   scale_r   r   r   r-   )r   r    r0   X_scaley_scalesgdregs         r#   test_huber_and_sgd_same_resultsru      s     )2!DDA c4HE	IIaO,,G,,G	IIgc1-	F JJw ekk6<<;r%   c                      [        5       u  p[        SSSSS9nUR                  X5        UR                  R	                  5       nUR                  X5        [        UR                  US5        UR                  S:X  d   eg )Nrl   rm   Tr   )r)   r3   
warm_startrp   r   r   )r$   r   r,   r-   copyr   r4   )r   r    
huber_warmhuber_warm_coefs       r#   test_huber_warm_startr{      sq    (*DAcEdPTUJNN1 &&++-ONN1 j..C"""r%   c                     [        5       u  p[        SS9nUR                  X5        [        R                  " XR
                  5      UR                  -   U-
  n[        R                  " U5      UR                  UR                  -  :  nUR                  X   X   5      nUR                  X)    X)    5      n[        SS9nUR                  X5        UR                  X   X   5      nUR                  X)    X)    5      n	XX:  d   eX:  d   eg )NrC   r`   )r$   r   r,   r   dotr-   r.   rG   r(   rq   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    (*DA&E	IIaO&&KK(5+;+;;a?K66+!==D++agqw/K++ah%9
 E	IIaO++agqw/K++ah%9$$$ 444r%   c                  \    [        SSSSS9u  pU S:  n[        5       R                  X!5        g )N   r+   g      @r   )r   r   r   r   )r   r   r,   )r   r    X_bools      r#   test_huber_boolr      s/    SQcPQRDAUF#r%   )2   rP   )!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   rM   markparametrizer^   rb   ri   ru   r{   r   r    r%   r#   <module>r      s       , V V @ 
 /<+40 .9%N :%NP .9	@ :	@="<8#5.$r%   