§
    rŠtj¿  ã                   ó:  — 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j                             de¦  «        d„ ¦   «         Zej                             de¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Z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_CONTAINERSé2   é   c                 ó"  — t           j                             d¦  «        }t          | |dd¬¦  «        \  }}t	          d| z  ¦  «        }|                     d| |¦  «        }d|                     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/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/linear_model/tests/test_huber.pyÚmake_regression_with_outliersr&      sœ   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CåØ¨
ÀÈ$ðñ ô �D€A€qõ
 �C˜)‘OÑ$Ô$€IØ—[’[  I¨yÑ9Ô9€NØ §¢¨A¨q°9¸a¼gÀa¼jÐ2IÑ!JÔ!JÑJ€A€n�a�a�aÐÑØˆaˆ4€Kó    c                  ó*  — t          ¦   «         \  } }t          ¦   «         }|                     | |¦  «         t          dd¬¦  «        }|                     | |¦  «         t	          |j        |j        d¦  «         t	          |j        |j        d¦  «         d S )Ng     @�@ç        )ÚepsilonÚalphaé   é   )r&   r   Úfitr   r   Úcoef_Ú
intercept_)r!   r"   ÚlrÚhubers       r%   Ú%test_huber_equals_lr_for_high_epsilonr3   !   sƒ   € å(Ñ*Ô*�D€A€qÝ	Ñ	Ô	€BØ‡F‚Fˆ1ˆa�L„L€LÝ 3¨cÐ2Ñ2Ô2€EØ	‡I‚Iˆa��O„O€OÝ˜œ R¤X¨qÑ1Ô1Ð1Ý˜Ô(¨"¬-¸Ñ;Ô;Ð;Ð;Ð;r'   c                  ó˜   — t          ¦   «         \  } }t          d¬¦  «        }|                     | |¦  «         |j        |j        k    sJ ‚d S )Nr   )Úmax_iter)r&   r   r.   Ún_iter_r5   )r!   r"   r2   s      r%   Útest_huber_max_iterr7   ,   sM   € Ý(Ñ*Ô*�D€A€qÝ AÐ&Ñ&Ô&€EØ	‡I‚Iˆa��O„O€OØŒ=˜EœNÒ*Ð*Ð*Ð*Ð*Ð*r'   c                  óÜ  — t           j                             d¦  «        } t          ¦   «         \  }}|                      dd|j        d         ¦  «        }d„ }d„ }t          d¦  «        D ]ƒ}|j        d         dz   |j        d         dz   fD ]`}|                      |¦  «        }t          j        |d         ¦  «        |d<   t          j
        |||||d	d
|¦  «        }	t          |	dd¦  «         ŒaŒ„d S )Nr   r,   r   c                 ó(   — t          | g|¢R Ž d         S )Nr   r	   ©ÚxÚargss     r%   Ú	loss_funcz&test_huber_gradient.<locals>.loss_func9   ó   € Ý'¨Ð1¨DÐ1Ð1Ð1°!Ô4Ð4r'   c                 ó(   — t          | g|¢R Ž d         S )Nr   r	   r:   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_gradientrM   3   s  € å
Œ)×
Ò
 Ñ
"Ô
"€CÝ(Ñ*Ô*�D€A€qØ—K’K  1 q¤w¨q¤zÑ3Ô3€Mð5ð 5ð 5ð5ð 5ð 5õ �1‰XŒXð 4ð 4ˆàœ7 1œ:¨™>¨1¬7°1¬:¸©>Ð:ð 	4ð 	4ˆJØ—	’	˜*Ñ%Ô%ˆAÝ”F˜1˜Rœ5‘M”MˆAˆb‰EÝ Ô+Ø˜9 a¨¨A¨t°S¸-ñô ˆIõ   	¨4°Ñ3Ô3Ð3Ð3ð	4ð4ð 4r'   Úcsr_containerc           	      óð  — t          ¦   «         \  }}t          ¦   «         }|                     ||¦  «         |j        }|j        }t          t          j        t          j        |j        ¦  «        ¦  «        t          j        t          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        }t          j	        |j
        d         ¦  «        }	d|	d<   d|	d<   |                     |||	¬¦  «         t          |j        |z  ||z  ¦  «         t          |j        |z  ||z  ¦  «          | |¦  «        }
t          ¦   «         }|                     |
||	¬¦  «         t          |j        |z  ||z  ¦  «         d S )	Nr   )rI   rA   r   ©r   r   r   r,   r-   )r&   r   r.   r/   r0   Úmaxr   ÚmeanrG   Úonesr   r   ÚvstackÚconcatenate)rN   r!   r"   r2   Ú
huber_coefÚhuber_interceptÚscaleÚX_newÚy_newrI   ÚX_csrÚhuber_sparses               r%   Útest_huber_sample_weightsr]   K   sE  € õ )Ñ*Ô*�D€A€qÝÑÔ€EØ	‡I‚Iˆa��O„O€OØ”€JØÔ&€Oõ •”�œ˜uœ{Ñ+Ô+Ñ,Ô,­b¬gµb´f¸UÔ=MÑ6NÔ6NÑ.OÔ.OÑPÔP€Eà	‡I‚Iˆa�¥"¤'¨!¬'°!¬*Ñ"5Ô"5€IÑ6Ô6Ð6Ý˜eœk¨EÑ1°:ÀÑ3EÑFÔFÐFÝ˜eÔ.°Ñ6¸È%Ñ8OÑPÔPÐPå(°1ÀÐDÑDÔD�D€A€qÝŒI�q�"œ) Q q¤T¨1¨Q¬4°°1´Ð$6Ñ7Ô7Ð8Ñ9Ô9€EÝŒN˜A  !¤˜v¨¨!¬ v°°!´¨vÐ6Ñ7Ô7€EØ	‡I‚Iˆe�UÑÔÐØ”€JØÔ&€OÝ”G˜AœG AœJÑ'Ô'€MØ€M�!ÑØ€M�!ÑØ	‡I‚Iˆa� -€IÑ0Ô0Ð0å˜eœk¨EÑ1°:ÀÑ3EÑFÔFÐFÝ˜eÔ.°Ñ6¸È%Ñ8OÑPÔPÐPð ˆM˜!ÑÔ€EÝ!Ñ#Ô#€LØ×Ò�U˜A¨]ÐÑ;Ô;Ð;Ý˜lÔ0°5Ñ8¸*ÀuÑ:LÑMÔMÐMÐMÐMr'   c                 ó>  — t          ¦   «         \  }}t          d¬¦  «        }|                     ||¦  «          | |¦  «        }t          d¬¦  «        }|                     ||¦  «         t          |j        |j        ¦  «         t          |j        |j        ¦  «         d S )Nr   ©r+   )r&   r   r.   r   r/   r   Ú	outliers_)rN   r!   r"   r2   r[   r\   s         r%   Útest_huber_sparsera   t   s—   € å(Ñ*Ô*�D€A€qÝ Ð%Ñ%Ô%€EØ	‡I‚Iˆa��O„O€OàˆM˜!ÑÔ€EÝ!¨Ð,Ñ,Ô,€LØ×Ò�U˜AÑÔÐÝ˜lÔ0°%´+Ñ>Ô>Ð>Ý�u”¨Ô(>Ñ?Ô?Ð?Ð?Ð?r'   c                  óv  — t          ¦   «         \  } }t          dd¬¦  «        }|                     | |¦  «         |j        }t	          j        |¦  «        rJ ‚|                     | d|z  ¦  «         |j        }t          ||¦  «         |                     d| z  d|z  ¦  «         |j        }t          ||¦  «         d S )NFr)   )Úfit_interceptr+   r   )r&   r   r.   r`   r   Úallr   )r!   r"   r2   Ún_outliers_mask_1Ún_outliers_mask_2Ún_outliers_mask_3s         r%   Útest_huber_scaling_invariantrh   �   sÁ   € å(Ñ*Ô*�D€A€qÝ¨°cÐ:Ñ:Ô:€EØ	‡I‚Iˆa��O„O€OØœÐÝŒvÐ'Ñ(Ô(Ð(Ð(Ð(à	‡I‚Iˆa��q‘ÑÔÐØœÐÝÐ(Ð*;Ñ<Ô<Ð<à	‡I‚Iˆc�A‰g�s˜Q‘wÑÔÐØœÐÝÐ(Ð*;Ñ<Ô<Ð<Ð<Ð<r'   c            
      óŽ  — t          dd¬¦  «        \  } }t          ddd¬¦  «        }|                     | |¦  «         | |j        z  }||j        z  }|                     ||¦  «         t	          |j        dd	¦  «         t          dd
dddddd ¬¦  «        }|                     ||¦  «         t          |j        |j        d¦  «         d S )Né
   r-   rP   Fr)   gš™™™™™õ?)rc   r+   r*   ç      ð?r,   r2   Tr   é'  )r+   ÚlossÚshuffler   r5   rc   r*   Útolr   )r&   r   r.   Úscale_r   r   r   r/   )r!   r"   r2   ÚX_scaleÚy_scaleÚsgdregs         r%   Útest_huber_and_sgd_same_resultsrt   ’   sß   € õ )°2À!ÐDÑDÔD�D€A€qõ ¨°cÀ4ÐHÑHÔH€EØ	‡I‚Iˆa��O„O€OØ�%”,Ñ€GØ�%”,Ñ€GØ	‡I‚Iˆg�wÑÔÐÝ˜œ c¨1Ñ-Ô-Ð-åØØØØØØØØð	ñ 	ô 	€Fð ‡J‚Jˆw˜Ñ Ô Ð Ý˜eœk¨6¬<¸Ñ;Ô;Ð;Ð;Ð;r'   c                  ó  — t          ¦   «         \  } }t          dddd¬¦  «        }|                     | |¦  «         |j                             ¦   «         }|                     | |¦  «         t          |j        |d¦  «         |j        dk    sJ ‚d S )Nrk   rl   Tr   )r+   r5   Ú
warm_startro   r   r   )r&   r   r.   r/   Úcopyr   r6   )r!   r"   Ú
huber_warmÚhuber_warm_coefs       r%   Útest_huber_warm_startrz   ®   s•   € Ý(Ñ*Ô*�D€A€qÝ c°EÀdÐPTÐUÑUÔU€Jà‡N‚N�1�aÑÔÐØ Ô&×+Ò+Ñ-Ô-€OØ‡N‚N�1�aÑÔÐõ ˜jÔ.°ÀÑCÔCÐCàÔ Ò"Ð"Ð"Ð"Ð"Ð"r'   c                  óŒ  — t          ¦   «         \  } }t          d¬¦  «        }|                     | |¦  «         t          j        | |j        ¦  «        |j        z   |z
  }t          j        |¦  «        |j        |j	        z  k     }| 
                    | |         ||         ¦  «        }| 
                    | |          ||          ¦  «        }t          d¬¦  «        }|                     | |¦  «         | 
                    | |         ||         ¦  «        }| 
                    | |          ||          ¦  «        }	||k    sJ ‚|	|k    sJ ‚d S )NrC   r_   )r&   r   r.   r   Údotr/   r0   rG   r*   rp   Úscorer   )
r!   r"   r2   Úlinear_lossÚmaskÚhuber_scoreÚhuber_outlier_scoreÚridgeÚridge_scoreÚridge_outlier_scores
             r%   Útest_huber_better_r2_scorer…   ½   s3  € å(Ñ*Ô*�D€A€qÝ Ð&Ñ&Ô&€EØ	‡I‚Iˆa��O„O€OÝ”&˜˜EœKÑ(Ô(¨5Ô+;Ñ;¸aÑ?€KÝŒ6�+ÑÔ ¤°´Ñ!=Ò=€DØ—+’+˜a œg q¨¤wÑ/Ô/€KØŸ+š+ a¨¨¤h°°4°%´Ñ9Ô9Ðõ
 ˜ÐÑÔ€EØ	‡I‚Iˆa��O„O€OØ—+’+˜a œg q¨¤wÑ/Ô/€KØŸ+š+ a¨¨¤h°°4°%´Ñ9Ô9ÐØ˜Ò$Ð$Ð$Ð$ð Ð!4Ò4Ð4Ð4Ð4Ð4Ð4r'   c                  ó‚   — t          dddd¬¦  «        \  } }| dk    }t          ¦   «                              ||¦  «         d S )NéÈ   r-   g      @r   )r   r   r   r   )r   r   r.   )r!   r"   ÚX_bools      r%   Útest_huber_boolr‰   Ô   sH   € å S°Q¸cÐPQÐRÑRÔR�D€A€qØ�ŠU€FÝÑÔ×Ò˜ Ñ#Ô#Ð#Ð#Ð#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&   r3   r7   rM   ÚmarkÚparametrizer]   ra   rh   rt   rz   r…   r‰   © r'   r%   ú<module>r•      sµ  ðð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ @Ð @Ð @Ð @Ð @Ð @ðð ð ð ð ð ð ð ð ð ð
 /Ð .Ð .Ð .Ð .Ð .ðð ð ð ð<ð <ð <ð+ð +ð +ð4ð 4ð 4ð0 „×Ò˜¨.Ñ9Ô9ð%Nð %Nñ :Ô9ð%NðP „×Ò˜¨.Ñ9Ô9ð	@ð 	@ñ :Ô9ð	@ð=ð =ð =ð"<ð <ð <ð8#ð #ð #ð5ð 5ð 5ð.$ð $ð $ð $ð $r'   