Ë
    ÷Q(hÏd  ã                   óJ  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZm	Z	m
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mZ d d	lmZmZmZ d d
lmZ d dlmZ  e«       Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$	 	 	 	 	 	 d)d„Z%	 	 	 	 	 	 	 d*d„Z&d+d„Z'd„ Z(d„ Z)ejT                  jW                  d«      ejT                  jY                  de«      d„ «       «       Z-ejT                  jW                  d«      ejT                  jY                  de«      d„ «       «       Z.ejT                  jW                  d«      ejT                  jY                  de«      d„ «       «       Z/d„ Z0ejT                  jY                  d e1d«      «      ejT                  jY                  de«      d„ «       «       Z2ejT                  jW                  d«      ejT                  jY                  de«      d„ «       «       Z3ejT                  jW                  d«      ejT                  jY                  de«      d „ «       «       Z4ejT                  jY                  de«      d!„ «       Z5ejT                  jW                  d«      ejT                  jY                  de«      d"„ «       «       Z6d#„ Z7d$„ Z8ejT                  jY                  d%d&d'g«      d(„ «       Z9y),é    N)Úclone)Ú	load_irisÚ
make_blobsÚmake_classification)ÚLogisticRegressionÚRidge)Úget_auto_step_size)ÚOneVsRestClassifier)ÚLabelEncoder)Úcheck_random_stateÚcompute_class_weight)Úassert_allcloseÚassert_almost_equalÚassert_array_almost_equal)Ú	row_norms)ÚCSR_CONTAINERSc                 ó’   — | |z  }|dkD  rt        j                  | «      | z  S |dk  r| S | t        j                  |«      dz   z  S )Ng      2@g      2Àç      ð?)ÚmathÚexp)ÚpÚyÚzs      úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/linear_model/tests/test_sag.pyÚ	log_dlossr      sQ   € Ø	ˆA‰€Aàˆ4‚xÜ�x‰x˜˜‹|˜q˜bÑ Ð Øˆ5‚yØˆrˆ	Øˆ2”—‘˜!“˜sÑ"Ñ#Ð#ó    c           	      ó†   — t        j                  t        j                  dt        j                  | | z  «      z   «      «      S )Nr   )ÚnpÚmeanÚlogr   ©r   r   s     r   Úlog_lossr"   '   s-   € Ü�7‰7”2—6‘6˜#¤§¡¨ r¨A¡v£Ñ.Ó/Ó0Ð0r   c                 ó   — | |z
  S )N© r!   s     r   Úsquared_dlossr%   ,   s   € Øˆq‰5€Lr   c                 óD   — t        j                  d| |z
  z  | |z
  z  «      S )Nç      à?)r   r   r!   s     r   Úsquared_lossr(   0   s"   € Ü�7‰7�3˜!˜a™%‘= A¨¡EÑ*Ó+Ð+r   c                 ó˜   — | j                  «       } t        j                  || «      } |||«      }||| j                  | «      z  dz  z  }|S )Nç       @)Úravelr   Údot)ÚwÚalphaÚmyXÚmyyÚlossÚpredr   s          r   Úget_pobjr3   5   sH   € Ø	�‰‹	€AÜ�6‰6�#�q‹>€DÙˆT�3‹€AØˆ�—‘�q“Ñ	˜CÑ	Ñ€AØ€Hr   c
           	      óî  — | j                   d   | j                   d   }}
t        j                  | j                   d   «      }t        j                  | j                   d   «      }t        j                  |
|f«      }d}d}t        j                  |
«      }t        j                  j	                  d«      }d}t        «       }|rd}t        |«      D �]"  }t        |
«      D �]  }t        |j                  «       |
z  «      }| |   }|j                  |«       t        j                  ||«      |z   } ||||   «      }|�|||   z  }||z  ||z  z   }|||   z
  }||z  }|||<   |	r|||z  ddt        |«      z  z
  z  z  }|r]|||   z
  }|||<   ||z  }||ddt        |«      z  z
  z  z  }|	r|||z  t        |«      z  |z  |z   z  }n|||z  t        |«      z  |z  z  }|||z  t        |«      z  z  }�Œ �Œ% ||fS )Nr   é   ç        éM   r   ç{®Gáz„?)Úshaper   ÚzerosÚrandomÚRandomStateÚsetÚrangeÚintÚrandÚaddr,   Úlen)ÚXr   Ú	step_sizer.   Ún_iterÚdlossÚsparseÚsample_weightÚfit_interceptÚsagaÚ	n_samplesÚ
n_featuresÚweightsÚsum_gradientÚgradient_memoryÚ	interceptÚintercept_sum_gradientÚintercept_gradient_memoryÚrngÚdecayÚseenÚepochÚkÚidxÚentryr   ÚgradientÚupdateÚgradient_corrections                                r   Úsagr]   =   sA  € ð ŸG™G A™J¨¯©°©
ˆz€Iä�h‰h�q—w‘w˜q‘zÓ"€GÜ—8‘8˜AŸG™G A™JÓ'€LÜ—h‘h 	¨:Ð6Ó7€Oà€IØ ÐÜ "§¡¨Ó 3Ðä
�)‰)×
Ñ
 Ó
#€CØ€EÜ‹5€Dñ Øˆä�v“ó <ˆÜ�yÓ!ó 	<ˆAÜ�c—h‘h“j 9Ñ,Ó-ˆCà�c‘FˆEØ�H‰H�SŒMÜ—‘�u˜gÓ&¨Ñ2ˆAÙ˜Q  #¡Ó'ˆHØÐ(Ø˜M¨#Ñ.Ñ.�Ø˜XÑ%¨°©Ñ7ˆFØ"(¨?¸3Ñ+?Ñ"?ÐØÐ/Ñ/ˆLØ#)ˆO˜CÑ ÙØÐ.°Ñ:¸aÀ#ÌÈDË	Á/Ñ>QÑRÑR�áØ&.Ð1JÈ3Ñ1OÑ&OÐ#Ø19Ð)¨#Ñ.Ø&Ð*=Ñ=Ð&Ø# y°C¸#ÄÀDÃ	¹/Ñ4IÑ'JÑJÐ#ÙØØ!Ð$:Ñ:¼SÀ»YÑFÈÑNØ+ñ",ñ ,‘Ið  Ð-CÑ!CÄcÈ$ÃiÑ!OÐRWÑ!WÑW�Ià�y <Ñ/´#°d³)Ñ;Ñ;ŠGò9	<ð<ð> �IÐÐr   c                 óè  — ||z  dk(  rt        d«      ‚| j                  d   | j                  d   }}t        j                  |«      }t        j                  |«      }t        j                  |t        ¬«      }t        j                  |«      }t        |
«      }d}d}d}d}t        «       }t        j                  ||z  «      }|rd}d}t        |«      D �]>  }t        |«      D �],  }t	        |j                  «       |z  «      }| |   }|j                  |«       |dk\  r\t        |«      D ]N  }||   dk(  r||xx   ||dz
     ||   z  z  cc<   n%||xx   ||dz
     |||   dz
     z
  ||   z  z  cc<   |||<   ŒP |t        j                  ||«      z  |z   } ||||   «      }|�|||   z  }||z  } | ||   |z  z
  }!||!z  }|	r8t        |«      D ]*  }||xx   |!|   |z  ddt        |«      z  z
  z  |z  z  cc<   Œ, |rX|||   z
  }!||!z  }|!|ddt        |«      z  z
  z  z  }!|	r|||z  t        |«      z  |z  |!z   z  }n|||z  t        |«      z  |z  z  }|||<   |d||z  z
  z  }|dk(  r||t        |«      z  z  |d<   n||dz
     ||t        |«      z  z  z   ||<   |dk\  rj|dk  ret        |«      D ]K  }||   dk(  r||xx   ||   ||   z  z  cc<   n"||xx   ||   |||   dz
     z
  ||   z  z  cc<   |dz   ||<   ŒM d||<   ||z  }d}|dz  }�Œ/ �ŒA t        |«      D ]I  }||   dk(  r||xx   ||dz
     ||   z  z  cc<   Œ%||xx   ||dz
     |||   dz
     z
  ||   z  z  cc<   ŒK ||z  }||fS )	Nr   z:Sparse sag does not handle the case step_size * alpha == 1r   r5   ©Údtyper6   r8   g•Ö&è.>)ÚZeroDivisionErrorr9   r   r:   r?   r   r=   r>   r@   rA   r,   rB   )"rC   r   rD   r.   rE   rF   rH   rG   rI   rJ   Úrandom_staterK   rL   rM   rN   Úlast_updatedrO   rS   rP   rQ   ÚwscalerT   rU   Úc_sumÚcounterrV   rW   rX   rY   Újr   rZ   r[   r\   s"                                     r   Ú
sag_sparserh   }   s‹  € ð �5Ñ˜CÒÜØHó
ð 	
ð ŸG™G A™J¨¯©°©
ˆz€Iä�h‰h�zÓ"€GÜ—8‘8˜JÓ'€LÜ—8‘8˜J¬cÔ2€LÜ—h‘h˜yÓ)€OÜ
˜\Ó
*€CØ€IØ ÐØ€FØ€EÜ‹5€Dä�H‰H�V˜iÑ'Ó(€Eñ Øˆà€GÜ�v“ó CˆÜ�yÓ!ó B	ˆAä�c—h‘h“j 9Ñ,Ó-ˆCØ�c‘FˆEØ�H‰H�SŒMà˜!Š|Ü˜zÓ*ò .�AØ# A‘¨!Ò+Ø ›
 e¨G°a©KÑ&8¸<È¹?Ñ&JÑJœ
à ›
Ø! '¨A¡+Ñ.°°|ÀA±ÈÑ7JÑ1KÑKØ(¨™Oñ',ñ ,›
ð '.�L ’Oð.ð œ"Ÿ&™& ¨Ó0Ñ0°IÑ=ˆAÙ˜Q  #¡Ó'ˆHàÐ(Ø˜M¨#Ñ.Ñ.�à˜XÑ%ˆFØ"(¨O¸CÑ,@À5Ñ,HÑ"IÐØÐ/Ñ/ˆLÙÜ˜zÓ*ò �AØ˜A“JØ+¨AÑ.Ø#ñ$à˜s¤S¨£Y™Ñ.ñ0ð !ñ!ñ”Jðñ Ø&.°ÀÑ1EÑ&EÐ#Ø&Ð*=Ñ=Ð&Ø# y°C¸#ÄÀDÃ	¹/Ñ4IÑ'JÑJÐ#ÙØØ!Ð$:Ñ:¼SÀ»YÑFÈÑNØ+ñ",ñ ,‘Ið  Ð-CÑ!CÄcÈ$ÃiÑ!OÐRWÑ!WÑW�Ià#+ˆO˜CÑ à�c˜E IÑ-Ñ-Ñ-ˆFØ˜!Š|Ø$¨´°T³Ñ(:Ñ;��a’à!& w°¡{Ñ!3°iÀ6ÌCÐPTËIÑCUÑ6VÑ!V��g‘à˜!Š| ¨¢Ü˜zÓ*ò 2�AØ# A‘¨!Ò+Ø ›
 e¨G¡n°|ÀA±Ñ&FÑFœ
à ›
Ø! '™N¨U°<À±?ÀQÑ3FÑ-GÑGØ(¨™Oñ',ñ ,›
ð '.°¡k�L ’Oð2ð "#��g‘Ø˜6Ñ!�Ø�à�q‰LŠGòEB	ðCôJ �:Óò  ˆØ˜‰?˜aÒØ�A‹J˜% ¨!¡Ñ,¨|¸A©Ñ>Ñ>ŒJà�A‹JØ�g ‘kÑ" U¨<¸©?¸QÑ+>Ñ%?Ñ?Ø˜Q‘ñ ñ  ŒJð	 ð ˆvÑ€GØ�IÐÐr   c                 óä   — |r9dt        j                  t        j                  | | z  d¬«      «      |z   d|z  z   z  S dt        j                  t        j                  | | z  d¬«      «      |z   |z   z  S )Nç      @r5   )Úaxisr   )r   ÚmaxÚsum)rC   r.   rI   Úclassifications       r   Úget_step_sizero   ò   sc   € ÙØ”b—f‘fœRŸV™V A¨¡E°Ô2Ó3°mÑCÀcÈEÁkÑQÑRÐRà”b—f‘fœRŸV™V A¨¡E°Ô2Ó3°mÑCÀeÑKÑLÐLr   c                  óº  — d} t        | ddd¬«      \  }}d}d}t        |||«      }dD �]0  }|d	k(  rd
}nd}t        ||dd|z  | z  |d¬«      }|j                  ||«       t	        |d|z  dz
  |||t
        ||dk(  ¬«      \  }	}
t        |d|z  dz
  |||t
        ||dk(  ¬«      \  }}t        j                  |	«      }	t        j                  |
«      }
t        j                  |«      }t        j                  |«      }t        |	|j                  d¬«       t        |
|j                  d¬«       t        ||j                  d¬«       t        ||j                  d¬«       �Œ3 y )Né   é   r   çš™™™™™¹?©rK   Úcentersrb   Úcluster_stdgš™™™™™ñ?T)r]   rJ   r]   éP   é,  ç•dyáý¥=r   é
   ©ÚsolverrI   ÚtolÚCÚmax_iterrb   r5   rJ   )rE   rF   rI   rJ   é	   ©Údecimal)r   ro   r   Úfitrh   r   r]   r   Ú
atleast_2dÚ
atleast_1dr   Úcoef_Ú
intercept_)rK   rC   r   r.   rI   rD   r|   rE   ÚclfrM   rP   Úweights2Ú
intercept2s                r   Útest_classifier_matchingr‹   ù   sq  € Ø€IÜ 	°1À1ÐRUÔV�D€A€qà€EØ€MÜ˜a ¨Ó6€IØ!ó ,IˆØ�UŠ?Ø‰Fð ˆFÜ ØØ'ØØ�E‰k˜IÑ%ØØô
ˆð 	�‰��1Œä'ØØ�‰E�A‰IØØØÜØ'Ø˜6Ñ!ô	
Ñˆ�ô  #ØØ�‰E�A‰IØØØÜØ'Ø˜6Ñ!ô	 
Ñˆ�*ô —-‘- Ó(ˆÜ—M‘M )Ó,ˆ	Ü—=‘= Ó*ˆÜ—]‘] :Ó.ˆ
ä! '¨3¯9©9¸aÕ@Ü! )¨S¯^©^ÀQÕGÜ! (¨C¯I©I¸qÕAÜ! *¨c¯n©nÀa×HñY,Ir   c            	      ó@  — d} d}t         j                  j                  d«      }|j                  | |f¬«      }|j                  |¬«      }|j	                  |«      }d}d}d}t        |||d¬«      }	t        |d	d
|| z  |¬«      }
|
j                  ||«       t        |||	||t        |¬«      \  }}t        |||	||t        |¬«      \  }}t        ||
j                  «       t        ||
j                  «       t        ||
j                  «       t        ||
j                  «       y )Nrz   é   ©Úsizer   éd   TF©rn   ry   r]   )rI   r}   r|   r.   r   ©rE   rF   rI   )r   r;   r<   Únormalr,   ro   r   rƒ   rh   r%   r]   r   r†   r‡   )rK   rL   rS   rC   Útrue_wr   r.   rE   rI   rD   rˆ   Úweights1Ú
intercept1r‰   rŠ   s                  r   Útest_regressor_matchingr—   /  s"  € Ø€IØ€Jä
�)‰)×
Ñ
 Ó
#€CØ�
‰
˜ JÐ/ˆ
Ó0€AØ�Z‰Z˜ZˆZÓ(€FØ	�‰ˆf‹€Aà€EØ€FØ€Mä˜a ¨ÀeÔL€IÜ
Ø#ØØØ�iÑØô€Cð ‡G�GˆAˆq„Mä%Ø	Ø	ØØØÜØ#ôÑ€Hˆjô Ø	Ø	ØØØÜØ#ôÑ€Hˆjô �H˜cŸi™iÔ(Ü�J §¡Ô/Ü�H˜cŸi™iÔ(Ü�J §¡Õ/r   zignore:The max_iter was reachedÚcsr_containerc                 ó  — d}d}d}t        |ddd¬«      \  }}t        dd	d
d|z  |z  |d¬«      }t        |«      }t        d	d
d|z  |z  |d¬«      }|j                  ||«       |j                   | |«      |«       |j                  ||«       t	        |j
                  |||t        «      }	t	        |j
                  |||t        «      }
t	        |j
                  |||t        «      }t        |	|
d¬«       t        |
|d¬«       t        ||	d¬«       y)z%tests if the sag pobj matches log regr�   r   rq   rr   r   rs   rt   r]   FgH¯¼šò×z>rz   r{   )rI   r}   r~   r   rb   é   r�   N)r   r   r   rƒ   r3   r†   r"   r   )r˜   rK   r.   r   rC   r   Úclf1Úclf2Úclf3Úpobj1Úpobj2Úpobj3s               r   Ú)test_sag_pobj_matches_logistic_regressionr¡   _  s  € ð €IØ€EØ€HÜ 	°1À1ÐRUÔV�D€A€qäØØØØ
�‰+˜	Ñ
!ØØô€Dô �‹;€DÜØØØ
�‰+˜	Ñ
!ØØô€Dð 	‡H�HˆQ�„NØ‡H�H‰]˜1Ó˜qÔ!Ø‡H�HˆQ�„Nä�T—Z‘Z ¨¨1¬hÓ7€EÜ�T—Z‘Z ¨¨1¬hÓ7€EÜ�T—Z‘Z ¨¨1¬hÓ7€Eä˜e U°AÕ6Ü˜e U°AÕ6Ü˜e U°AÖ6r   c                 ó˜  — d}d}d}d}d}t         j                  j                  d«      }|j                  ||f¬«      }|j                  |¬«      }|j	                  |«      }	t        |dd||d¬	«      }
t        |
«      }t        |d
d||d¬	«      }|
j                  ||	«       |j                   | |«      |	«       |j                  ||	«       t        |
j                  |||	t        «      }t        |j                  |||	t        «      }t        |j                  |||	t        «      }t        ||d¬«       t        ||d¬«       t        ||d¬«       y)z'tests if the sag pobj matches ridge regr�   rz   r   FrŽ   ry   r]   é*   ©rI   r}   r|   r.   r   rb   çñhãˆµøä>Úlsqrrš   r�   N)r   r;   r<   r“   r,   r   r   rƒ   r3   r†   r(   r   )r˜   rK   rL   r.   rE   rI   rS   rC   r”   r   r›   rœ   r�   rž   rŸ   r    s                   r   Ú&test_sag_pobj_matches_ridge_regressionr§   †  s;  € ð €IØ€JØ€EØ€FØ€MÜ
�)‰)×
Ñ
 Ó
#€CØ�
‰
˜ JÐ/ˆ
Ó0€AØ�Z‰Z˜ZˆZÓ(€FØ	�‰ˆf‹€AäØ#ØØØØØô€Dô �‹;€DÜØ#ØØØØØô€Dð 	‡H�HˆQ�„NØ‡H�H‰]˜1Ó˜qÔ!Ø‡H�HˆQ�„Nä�T—Z‘Z ¨¨1¬lÓ;€EÜ�T—Z‘Z ¨¨1¬lÓ;€EÜ�T—Z‘Z ¨¨1¬lÓ;€Eä˜e U°AÕ6Ü˜e U°AÕ6Ü˜e U°AÖ6r   c                 óŠ  — d}d}d}d}d}d}t         j                  j                  d«      }|j                  ||f¬«      }|j                  |¬«      }	t        j                  ||	«      d	z   }
t        |||d
¬«      }t        ||d||z  ||¬«      }t        |«      }|j                  ||
«       |j                   | |«      |
«       t        ||
|||t        ||¬«      \  }}t        ||
|||t        d||¬«	      \  }}t        |j                  j                  «       |j                  «       d¬«       t        |j                  |d¬«       y)z0tests if the sag regressor is computed correctlyrs   rz   é(   r�   g�íµ ÷Æ°>Tr   rŽ   r*   Fr‘   r]   r¤   )rE   rF   rI   rb   )rE   rF   rG   rI   rb   é   r�   r5   N)r   r;   r<   r“   r,   ro   r   r   rƒ   rh   r%   r   r†   r+   r   r‡   )r˜   r.   rL   rK   r   r}   rI   rS   rC   r-   r   rD   r›   rœ   Ú
spweights1Úspintercept1Ú
spweights2Úspintercept2s                     r   Ú%test_sag_regressor_computed_correctlyr¯   ³  sR  € ð €EØ€JØ€IØ€HØ
€CØ€MÜ
�)‰)×
Ñ
 Ó
"€CØ�
‰
˜ JÐ/ˆ
Ó0€AØ�
‰
˜
ˆ
Ó#€AÜ
�‰ˆq�!‹�sÑ€AÜ˜a ¨ÀeÔL€IäØ#ØØØ�iÑØØô€Dô �‹;€Dà‡H�HˆQ�„NØ‡H�H‰]˜1Ó˜qÔ!ä)Ø	Ø	ØØØÜØ#Øô	 Ñ€J�ô  *Ø	Ø	ØØØÜØØ#Øô
 Ñ€J�ô ˜dŸj™j×.Ñ.Ó0°*×2BÑ2BÓ2DÈaÕPÜ˜Ÿ™¨¸qÖAr   c            
      ó  — t        j                  g d¢g d¢g d¢gt         j                  ¬«      } d}d}d}t        | d¬	«      j	                  «       }| j
                  d
   }t        ||d¬«       dD ]×  }dD ]Ð  }|rc||z   t        |«      z   }|d|z  z   t        |«      z   dz  }t        d|z  |z  |«      }	t        d|z  |z  |«      }
dd|z  |	z   z  }dd|z  |
z   z  }n+d||z   t        |«      z   z  }d|d|z  z   t        |«      z   z  }t        ||d|||¬«      }t        ||d|||¬«      }t        ||d¬«       t        ||d¬«       ŒÒ ŒÙ d}t        j                  t        |¬«      5  t        ||d|«       d d d «       y # 1 sw Y   y xY w)N)r5   rr   rª   )rr   rª   rš   )rr   rª   rr   r_   g333333ó?Fé   T)Úsquaredr   rš   r�   )TFrj   rr   r5   r   r²   )rK   Úis_sagar    z:Unknown loss function for SAG solver, got wrong instead of©ÚmatchÚwrong)r   ÚarrayÚfloat64r   rl   r9   r   r?   Úminr	   ÚpytestÚraisesÚ
ValueError)rC   r.   rI   Úmax_squared_sumÚmax_squared_sum_rK   rJ   ÚL_sqrÚL_logÚmun_sqrÚmun_logÚstep_size_sqrÚstep_size_logÚstep_size_sqr_Ústep_size_log_Úmsgs                   r   Útest_get_auto_step_sizerÈ   ñ  sÑ  € Ü
�‰’)šYª	Ð2¼"¿*¹*ÔE€AØ€EØ€Mà €OÜ  ¨DÔ1×5Ñ5Ó7ÐØ—‘˜‘
€IÜ˜Ð)9À1ÕEàò !JˆØ*ò  	JˆMÙØ'¨%Ñ/´#°mÓ2DÑD�Ø(¨3°©;Ñ6¼¸]Ó9KÑKÈsÑR�Ü˜a )™m¨eÑ3°UÓ;�Ü˜a )™m¨eÑ3°UÓ;�Ø ! Q¨¡Y°Ñ%8Ñ 9�Ø ! Q¨¡Y°Ñ%8Ñ 9‘à # ¸Ñ'>ÄÀ]ÓASÑ'SÑ T�Ø #Ø# c¨E¡kÑ1´C¸Ó4FÑFñ!�ô 0Ø ØØØØ#ØôˆNô 0Ø ØØØØ#ØôˆNô   ¨~ÀqÕIÜ ¨~ÀqÖIñA 	Jð!JðF G€CÜ	�‰”z¨Ô	-ñ LÜÐ+¨U°G¸]ÔK÷L÷ Lñ Lús   Å&E>Å>FÚseedrª   c                 ó  — d\  }}d}d}d}d}t         j                  j                  | «      }t        j                  |||«      j	                  |d«      }	d|	j                  «       z  }
t        |d|||z  |¬	«      }t        |«      }|j                  |	|
«       |j                   ||	«      |
«       |j                  |	|
«      }|j                  |	|
«      }|d
kD  sJ ‚|d
kD  sJ ‚d|	j                  «       z  |j                  |d«      j                  «       z   }
t        |d|||z  ¬«      }t        |«      }|j                  |	|
«       |j                   ||	«      |
«       |j                  |	|
«      }|j                  |	|
«      }|dkD  sJ ‚|dkD  sJ ‚y)z(tests if the sag regressor performs well)éûÿÿÿr�   rx   gü©ñÒMbP?r�   rs   r5   r'   r]   )r}   r|   r   r.   rb   g\�Âõ(\ï?)r}   r|   r   r.   çÍÌÌÌÌÌÜ?N)r   r;   r<   ÚlinspaceÚreshaper+   r   r   rƒ   ÚscoreÚrandn)rÉ   r˜   ÚxminÚxmaxrK   r}   r   r.   rS   rC   r   r›   rœ   Úscore1Úscore2s                  r   Útest_sag_regressorrÕ   #  s†  € ð �J€Dˆ$Ø€IØ
€CØ€HØ€EÜ
�)‰)×
Ñ
 Ó
%€CÜ
�‰�D˜$ 	Ó*×2Ñ2°9¸aÓ@€Að 	ˆa�g‰g‹i‰€AäØØØØ�iÑØô€Dô �‹;€DØ‡H�HˆQ�„NØ‡H�H‰]˜1Ó˜qÔ!Ø�Z‰Z˜˜1Ó€FØ�Z‰Z˜˜1Ó€FØ�DŠ=Ðˆ=Ø�DŠ=Ðˆ=ð 	ˆa�g‰g‹i‰˜#Ÿ)™) I¨qÓ1×7Ñ7Ó9Ñ9€Aä�S °ÀÈÑARÔS€DÜ�‹;€DØ‡H�HˆQ�„NØ‡H�H‰]˜1Ó˜qÔ!Ø�Z‰Z˜˜1Ó€FØ�Z‰Z˜˜1Ó€FØ�DŠ=Ðˆ=Ø�DŠ=Ð‰=r   c           
      óö  — d}d}d}d}d}t        |ddd¬«      \  }}t        |||d¬«      }t        j                  |«      }	t        j                  |«      }
d	|
||	d
   k7  <   |
}t        dd|z  |z  ||d|¬«      }t        |«      }|j                  ||«       |j                   | |«      |«       t        |||||t        |¬«      \  }}t        |||||t        d|¬«      \  }}t        |j                  j                  «       |j                  «       d¬«       t        |j                  |d
¬«       t        |j                  j                  «       |j                  «       d¬«       t        |j                  |d
¬«       y)z4tests if the binary classifier is computed correctlyrs   é2   r¥   Trr   r   rt   r‘   éÿÿÿÿr5   r]   r   r7   ©r|   r~   r   r}   rb   rI   r’   )rE   rF   rG   rI   r�   N)r   ro   r   ÚuniqueÚonesr   r   rƒ   rh   r   r   r†   r+   r   r‡   )r˜   r.   rK   rE   r}   rI   rC   r   rD   ÚclassesÚy_tmpr›   rœ   Ú	spweightsÚspinterceptr­   r®   s                    r   Ú&test_sag_classifier_computed_correctlyrà   N  su  € ð €EØ€IØ€FØ
€CØ€MÜ 	°1À1ÐRUÔV�D€A€qÜ˜a ¨ÀdÔK€IÜ�i‰i˜‹l€GÜ�G‰G�IÓ€EØ€Eˆ!ˆw�q‰z‰/ÑØ€AäØØ
�‰+˜	Ñ
!ØØØØ#ô€Dô �‹;€Dà‡H�HˆQ�„NØ‡H�H‰]˜1Ó˜qÔ!ä'Ø	Ø	ØØØÜØ#ôÑ€Iˆ{ô  *Ø	Ø	ØØØÜØØ#ô	 Ñ€J�ô ˜dŸj™j×.Ñ.Ó0°)·/±/Ó2CÈQÕOÜ˜Ÿ™¨¸aÕ@ä˜dŸj™j×.Ñ.Ó0°*×2BÑ2BÓ2DÈaÕPÜ˜Ÿ™¨¸qÖAr   c                 óº  — d}d}d}d}d}t        |ddd¬«      \  }}t        |||d¬	«      }t        j                  |«      }	t	        t        d
d|z  |z  ||d|¬«      «      }
t        |
«      }|
j                  ||«       |j                   | |«      |«       g }g }g }g }|	D ]–  }t        j                  |«      }d|||k7  <   t        ||||t        ||¬«      \  }}t        ||||t        |d|¬«      \  }}|j                  |«       |j                  |«       |j                  |«       |j                  |«       Œ˜ t        j                  |«      }t        j                  |«      }t        j                  |«      }t        j                  |«      }t        |	«      D ]Á  \  }}t        |
j                   |   j"                  j%                  «       ||   d¬«       t        |
j                   |   j&                  ||   d¬«       t        |j                   |   j"                  j%                  «       ||   d¬«       t        |j                   |   j&                  ||   d¬«       ŒÃ y)z8tests if the multiclass classifier is computed correctlyrs   rq   r¥   éF   Trª   r   rt   r‘   r]   r   r7   rÙ   rØ   )rF   rE   rI   )rF   rE   rG   rI   r8   )Úrtolr'   N)r   ro   r   rÚ   r
   r   r   rƒ   rÛ   rh   r   ÚappendÚvstackr·   Ú	enumerater   Úestimators_r†   r+   r‡   )r˜   r.   rK   r}   r   rI   rC   r   rD   rÜ   r›   rœ   Úcoef1r–   Úcoef2rŠ   ÚclÚ	y_encodedr«   r¬   r­   r®   Úis                          r   Ú&test_sag_multiclass_computed_correctlyrí   †  sS  € ð €EØ€IØ
€CØ€HØ€MÜ 	°1À1ÐRUÔV�D€A€qÜ˜a ¨ÀdÔK€IÜ�i‰i˜‹l€GäÜØØ�E‰k˜IÑ%ØØØØ'ô	
ó	€Dô �‹;€Dà‡H�HˆQ�„NØ‡H�H‰]˜1Ó˜qÔ!à€EØ€JØ€EØ€JØò (ˆÜ—G‘G˜IÓ&ˆ	Øˆ	�!�r‘'Ñä#-ØØØØÜØØ'ô$
Ñ ˆ
�Lô $.ØØØØÜØØØ'ô	$
Ñ ˆ
�Lð 	�‰�ZÔ Ø×Ñ˜,Ô'à�‰�ZÔ Ø×Ñ˜,Õ'ð7(ô: �I‰I�eÓ€EÜ—‘˜*Ó%€JÜ�I‰I�eÓ€EÜ—‘˜*Ó%€Jä˜7Ó#ò R‰ˆˆ2Ü˜×(Ñ(¨Ñ+×1Ñ1×7Ñ7Ó9¸5À¹8È$ÕOÜ˜×(Ñ(¨Ñ+×6Ñ6¸
À1¹ÈDÕQä˜×(Ñ(¨Ñ+×1Ñ1×7Ñ7Ó9¸5À¹8È$ÕOä˜×(Ñ(¨Ñ+×6Ñ6¸
À1¹ÈDÖQñRr   c                 ó
  — d}d}d}d}d}t         j                  j                  d«      }|j                  ||f¬«      }|j                  |¬«      }t        j                  ||«      }	t        j
                  |	«      }	t        dd	|z  |z  ||d
¬«      }
t        |
«      }|
j                  ||	«       |j                   | |«      |	«       |
j                  |«      }|j                  |«      }t        ||	d¬«       t        ||	d¬«       y)z(tests if classifier results match targetrs   rq   rz   r8   éÈ   r   rŽ   r]   r   r7   )r|   r~   r   r}   rb   é   r�   N)r   r;   r<   r“   r,   Úsignr   r   rƒ   Úpredictr   )r˜   r.   rL   rK   r}   r   rS   rC   r-   r   r›   rœ   Úpred1Úpred2s                 r   Útest_classifier_resultsrõ   Ñ  sñ   € ð €EØ€JØ€IØ
€CØ€HÜ
�)‰)×
Ñ
 Ó
"€CØ�
‰
˜ JÐ/ˆ
Ó0€AØ�
‰
˜
ˆ
Ó#€AÜ
�‰ˆq�!‹€AÜ
�‰�‹
€AÜØØ
�‰+˜	Ñ
!ØØØô€Dô �‹;€Dà‡H�HˆQ�„NØ‡H�H‰]˜1Ó˜qÔ!Ø�L‰L˜‹O€EØ�L‰L˜‹O€EÜ˜˜q¨"Õ-Ü˜˜q¨"Ö-r   c                 ó„  — d}d}d}d}d}t        |ddd¬«      \  }}t        |||d¬	«      }t        j                  |«      }	t        j                  |«      }
d
|
||	d   k7  <   |
}dddœ}t        dd|z  |z  ||d||¬«      }t        |«      }|j                  ||«       |j                   | |«      |«       t        «       }t        |t        j                  |«      |¬«      }||j                  |«         }t        |||||t        ||¬«      \  }}t        |||||t        d||¬«	      \  }}t        |j                  j                  «       |j                  «       d¬«       t!        |j"                  |d¬«       t        |j                  j                  «       |j                  «       d¬«       t!        |j"                  |d¬«       y)z8tests binary classifier with classweights for each classrs   r×   rq   r¥   Trr   rz   rt   r‘   rØ   r5   rÌ   gš™™™™™á?)r5   rØ   r]   r   r7   )r|   r~   r   r}   rb   rI   Úclass_weight)rÜ   r   )rE   rF   rH   rI   )rE   rF   rG   rH   rI   r�   N)r   ro   r   rÚ   rÛ   r   r   rƒ   r   r   Úfit_transformrh   r   r   r†   r+   r   r‡   )r˜   r.   rK   rE   r}   rI   rC   r   rD   rÜ   rÝ   r÷   r›   rœ   ÚleÚclass_weight_rH   rÞ   rß   r­   r®   s                        r   Ú#test_binary_classifier_class_weightrû   ï  sº  € ð €EØ€IØ€FØ
€CØ€MÜ 	°1À2ÐSVÔW�D€A€qÜ˜a ¨ÀdÔK€IÜ�i‰i˜‹l€GÜ�G‰G�IÓ€EØ€Eˆ!ˆw�q‰z‰/ÑØ€Aà Ñ&€LÜØØ
�‰+˜	Ñ
!ØØØØ#Ø!ô€Dô �‹;€Dà‡H�HˆQ�„NØ‡H�H‰]˜1Ó˜qÔ!ä	‹€BÜ(¨¼r¿y¹yÈ»|ÈqÔQ€MØ! "×"2Ñ"2°1Ó"5Ñ6€MÜ'Ø	Ø	ØØØÜØ#Ø#ô	Ñ€Iˆ{ô  *Ø	Ø	ØØØÜØØ#Ø#ô
 Ñ€J�ô ˜dŸj™j×.Ñ.Ó0°)·/±/Ó2CÈQÕOÜ˜Ÿ™¨¸aÕ@ä˜dŸj™j×.Ñ.Ó0°*×2BÑ2BÓ2DÈaÕPÜ˜Ÿ™¨¸qÖAr   c                  ó¸   — ddgddgg} ddg}d}t        j                  t        |¬«      5  t        d¬«      j	                  | |«       d	d	d	«       y	# 1 sw Y   y	xY w)
z1tests if ValueError is thrown with only one classr5   rr   rª   rš   z;This solver needs samples of at least 2 classes in the datar´   r]   )r|   N)rº   r»   r¼   r   rƒ   )rC   r   rÇ   s      r   Útest_classifier_single_classrý   .  sZ   € à
ˆQˆ�!�Q�Ð€AØ	
ˆAˆ€Aà
G€CÜ	�‰”z¨Ô	-ñ 3Ü %Ô(×,Ñ,¨Q°Ô2÷3÷ 3ñ 3ús   ªAÁAc                  ó”  — ddgddgg} ddg}d}d}t        j                  d«      }t        dd|z  |¬«      }t        j                  t
        |¬	«      5  |j                  | |«       d d d «       t        |d|¬
«      }t        j                  t
        |¬	«      5  |j                  | |«       d d d «       y # 1 sw Y   ŒNxY w# 1 sw Y   y xY w)Nr   r5   rØ   Fr   zQCurrent sag implementation does not handle the case step_size * alpha_scaled == 1r]   )r|   r~   rI   r´   )rI   r|   r.   )ÚreÚescaper   rº   r»   ra   rƒ   r   )rC   r   rI   r.   rÇ   r›   rœ   s          r   Útest_step_size_alpha_errorr  8  sÅ   € Ø
ˆQˆ�!�Q�Ð€AØ	
ˆBˆ€AØ€MØ€EÜ
�)‰)ð	)ó€Cô
  U¨c°E©kÈÔW€DÜ	�‰Ô(°Ô	4ñ Ø�‰��AŒ÷ô ˜}°UÀ%ÔH€DÜ	�‰Ô(°Ô	4ñ Ø�‰��AŒ÷ð ÷	ð ú÷ð ús   ÁB2ÂB>Â2B;Â>Cr|   r]   rJ   c                 ó^  — t         j                  j                  d«      }t        |¬«      \  }}t	        | |d¬«      }|j                  ||«       t         j                  |j                  d d  t        j                  t        d¬«      5  |j                  ||«       d d d «       y # 1 sw Y   y xY w)Nr£   )rb   T)r|   rb   Ú
warm_startzFloating-point under-/overflowr´   )r   r;   r<   r   r   rƒ   Únanr†   rº   r»   r¼   )r|   rS   rC   r   rˆ   s        r   Ú test_sag_classifier_raises_errorr  K  s…   € ô �)‰)×
Ñ
 Ó
#€CÜ¨CÔ0�D€A€qÜ
 F¸ÈÔ
N€CØ‡G�GˆAˆq„Mô
 —6‘6€C‡I�I‰a€Lä	�‰”zÐ)IÔ	Jñ Ø�‰��1Œ÷÷ ñ ús   ÂB#Â#B,)r5   NFNTF)r5   NNFTFr   )T):r   rÿ   Únumpyr   rº   Úsklearn.baser   Úsklearn.datasetsr   r   r   Úsklearn.linear_modelr   r   Úsklearn.linear_model._sagr	   Úsklearn.multiclassr
   Úsklearn.preprocessingr   Úsklearn.utilsr   r   Úsklearn.utils._testingr   r   r   Úsklearn.utils.extmathr   Úsklearn.utils.fixesr   Úirisr   r"   r%   r(   r3   r]   rh   ro   r‹   r—   ÚmarkÚfilterwarningsÚparametrizer¡   r§   r¯   rÈ   r>   rÕ   rà   rí   rõ   rû   rý   r  r  r$   r   r   ú<module>r     sÈ  ðó Û 	ã Û å ß GÑ Gß :Ý 8Ý 2Ý .ß B÷ñ õ
 ,Ý .áƒ{€ò$ò1ò
ò,ò
ð Ø
ØØØØ	ó=ðJ Ø
ØØØØ	ØórójMò3Iòl-0ð` ‡�×ÑÐ=Ó>Ø‡�×Ñ˜¨.Ó9ñ"7ó :ó ?ð"7ðJ ‡�×ÑÐ=Ó>Ø‡�×Ñ˜¨.Ó9ñ(7ó :ó ?ð(7ðV ‡�×ÑÐ=Ó>Ø‡�×Ñ˜¨.Ó9ñ3Bó :ó ?ð3Bòx/Lðd ‡�×Ñ˜¡ q£Ó*Ø‡�×Ñ˜¨.Ó9ñ&ó :ó +ð&ðR ‡�×ÑÐ=Ó>Ø‡�×Ñ˜¨.Ó9ñ3Bó :ó ?ð3Bðl ‡�×ÑÐ=Ó>Ø‡�×Ñ˜¨.Ó9ñFRó :ó ?ðFRðR ‡�×Ñ˜¨.Ó9ñ.ó :ð.ð: ‡�×ÑÐ=Ó>Ø‡�×Ñ˜¨.Ó9ñ:Bó :ó ?ð:Bòz3òð& ‡�×Ñ˜ E¨6 ?Ó3ñó 4ñr   