Ë
    ÷Q(h¿  ã                   ó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          úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/linear_model/tests/test_huber.pyÚmake_regression_with_outliersr$      s†   € Ü
�)‰)×
Ñ
 Ó
"€CäØ¨
ÀÈ$ô�D€A€qô
 �C˜)‘OÓ$€IØ—[‘[  I¨yÓ9€NØ §¡¨A¨q°9¸a¿g¹gÀa¹jÐ2IÓ!JÑJ€A€n’aÐÑØˆaˆ4€Kó    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   € ä(Ó*�D€A€qÜ	Ó	€BØ‡F�Fˆ1ˆa„LÜ 3¨cÔ2€EØ	‡I�Iˆa�„OÜ˜Ÿ™ R§X¡X¨qÔ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;   € Ü(Ó*�D€A€qÜ AÔ&€EØ	‡I�Iˆa�„OØ�=‰=˜EŸN™NÒ*Ð*Ñ*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   ó   € Ü'¨Ð1¨DÒ1°!Ñ4Ð4r%   c                 ó    — t        | g|¢­Ž d   S )Nr   r	   r8   s     r#   Ú	grad_funcz&test_huber_gradient.<locals>.grad_func<   r<   r%   é   r+   éÿÿÿÿç{®Gáz„?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Ü(Ó*�D€A€qØ—K‘K  1 q§w¡w¨q¡zÓ3€Mò5ò5ô �1‹Xò 4ˆàŸ7™7 1™:¨™>¨1¯7©7°1©:¸©>Ð:ò 	4ˆJØ—	‘	˜*Ó%ˆAÜ—F‘F˜1˜R™5“MˆAˆb‰EÜ ×+Ñ+Ø˜9 a¨¨A¨t°S¸-óˆIô   	¨4°Õ3ñ	4ñ4r%   Ú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  € ô )Ó*�D€A€qÜÓ€EØ	‡I�Iˆa�„OØ—‘€JØ×&Ñ&€Oô ”—‘œŸ™˜uŸ{™{Ó+Ó,¬b¯g©g´b·f±f¸U×=MÑ=MÓ6NÓ.OÓP€Eà	‡I�Iˆa�¤"§'¡'¨!¯'©'°!©*Ó"5€IÔ6Ü˜eŸk™k¨EÑ1°:ÀÑ3EÔFÜ˜e×.Ñ.°Ñ6¸È%Ñ8OÔPä(°1ÀÔD�D€A€qÜ�I‰I�qœ"Ÿ)™) Q q¡T¨1¨Q©4°°1±Ð$6Ó7Ð8Ó9€EÜ�N‰N˜A  !¡˜v¨¨!© v°°!±¨vÐ6Ó7€EØ	‡I�Iˆe�UÔØ—‘€JØ×&Ñ&€OÜ—G‘G˜AŸG™G A™JÓ'€MØ€M�!ÑØ€M�!ÑØ	‡I�Iˆa� -€IÔ0ä˜eŸk™k¨EÑ1°:ÀÑ3EÔFÜ˜e×.Ñ.°Ñ6¸È%Ñ8OÔPñ ˜!Ó€EÜ!Ó#€LØ×Ñ�U˜A¨]ÐÔ;Ü˜l×0Ñ0°5Ñ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   € ä(Ó*�D€A€qÜ Ô%€EØ	‡I�Iˆa�„Oá˜!Ó€EÜ!¨Ô,€LØ×Ñ�U˜AÔÜ˜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˜   € ä(Ó*�D€A€qÜ¨°cÔ:€EØ	‡I�Iˆa�„OØŸ™ÐÜ�v‰vÐ'Ô(Ð(Ð(à	‡I�Iˆa��q‘ÔØŸ™ÐÜÐ(Ð*;Ô<à	‡I�Iˆc�A‰g�s˜Q‘wÔØŸ™ÐÜÐ(Ð*;Õ<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À!ÔD�D€A€qô ¨°cÀ4ÔH€EØ	‡I�Iˆa�„OØ�%—,‘,Ñ€GØ�%—,‘,Ñ€GØ	‡I�Iˆg�wÔÜ˜Ÿ™ c¨1Ô-äØØØØØØØØô	€Fð ‡J�Jˆw˜Ô Ü˜eŸk™k¨6¯<©<¸Õ;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   € Ü(Ó*�D€A€qÜ c°EÀdÐPTÔU€Jà‡N�N�1�aÔØ ×&Ñ&×+Ñ+Ó-€OØ‡N�N�1�aÔô ˜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  € ä(Ó*�D€A€qÜ Ô&€EØ	‡I�Iˆa�„OÜ—&‘&˜˜EŸK™KÓ(¨5×+;Ñ+;Ñ;¸aÑ?€KÜ�6‰6�+Ó §¡°·±Ñ!=Ñ=€DØ—+‘+˜a ™g q¨¡wÓ/€KØŸ+™+ a¨¨¡h°°4°%±Ó9Ðô
 ˜Ô€EØ	‡I�Iˆa�„OØ—+‘+˜a ™g q¨¡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   € ä S°Q¸cÐPQÔR�D€A€qØ�‰U€FÜÓ×Ñ˜ Õ#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Ý @÷ñ õ
 /óò<ò+ò4ð0 ‡�×Ñ˜¨.Ó9ñ%Nó :ð%NðP ‡�×Ñ˜¨.Ó9ñ	@ó :ð	@ò=ò"<ò8#ò5ó.$r%   