§
    rŠtje  ã                   ó˜  — 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j*         +                    d¦  «        ej*         ,                    de¦  «        d„ ¦   «         ¦   «         Z-ej*         +                    d¦  «        ej*         ,                    de¦  «        d„ ¦   «         ¦   «         Z.ej*         +                    d¦  «        ej*         ,                    de¦  «        d„ ¦   «         ¦   «         Z/d„ Z0ej*         ,                    d e1d ¦  «        ¦  «        ej*         ,                    de¦  «        d!„ ¦   «         ¦   «         Z2ej*         +                    d¦  «        ej*         ,                    de¦  «        d"„ ¦   «         ¦   «         Z3ej*         +                    d¦  «        ej*         ,                    de¦  «        d#„ ¦   «         ¦   «         Z4ej*         ,                    de¦  «        d$„ ¦   «         Z5ej*         +                    d¦  «        ej*         ,                    de¦  «        d%„ ¦   «         ¦   «         Z6d&„ Z7d'„ Z8ej*         ,                    d(d)d*g¦  «        d+„ ¦   «         Z9dS )/é    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k    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/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/linear_model/tests/test_sag.pyÚ	log_dlossr      sU   € Ø	ˆA‰€Aàˆ4‚x€xÝŒx˜˜‰|Œ|˜q˜bÑ Ð Øˆ5‚y€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•2”6˜#¥¤¨ r¨A¡v¡¤Ñ.Ñ/Ô/Ñ0Ô0Ð0r   c                 ó   — | |z
  S )N© r!   s     r   Úsquared_dlossr%   ,   s   € Øˆq‰5€Lr   c                 óB   — t          j        d| |z
  z  | |z
  z  ¦  «        S )Nç      à?)r   r   r!   s     r   Úsquared_lossr(   0   s#   € ÝŒ7�3˜!˜a™%‘= A¨¡EÑ*Ñ+Ô+Ð+r   c                 ó¬   — |                       ¦   «         } t          j        || ¦  «        } |||¦  «        }|||                      | ¦  «        z  dz  z  }|S )Nç       @)Úravelr   Údot)ÚwÚalphaÚmyXÚmyyÚlossÚpredr   s          r   Úget_pobjr3   5   sP   € Ø	�Š‰	Œ	€AÝŒ6�#�q‰>Œ>€DØˆˆT�3‰Œ€AØˆ�—’�q‘”Ñ	˜CÑ	Ñ€AØ€Hr   é   FTc
           	      óH  — | j         d         | j         d         }}
t          j        | j         d         ¦  «        }t          j        | j         d         ¦  «        }t          j        |
|f¦  «        }d}d}t          j        |
¦  «        }t          j                             d¦  «        }d}t          ¦   «         }|rd}t          |¦  «        D �]U}t          |
¦  «        D �]A}t          |                     ¦   «         |
z  ¦  «        }| |         }| 	                    |¦  «         t          j
        ||¦  «        |z   } ||||         ¦  «        }|�|||         z  }||z  ||z  z   }|||         z
  }||z  }|||<   |	r|||z  ddt          |¦  «        z  z
  z  z  }|rl|||         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  }�ŒC�ŒW||fS )Nr   r4   ç        é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]   =   s~  € ð œG AœJ¨¬°¬
ˆz€IåŒh�q”w˜q”zÑ"Ô"€GÝ”8˜AœG AœJÑ'Ô'€LÝ”h 	¨:Ð6Ñ7Ô7€Oà€IØ ÐÝ "¤¨Ñ 3Ô 3Ðå
Œ)×
Ò
 Ñ
#Ô
#€CØ€EÝ‰5Œ5€Dð ð Øˆå�v‘”ð <ñ <ˆÝ�yÑ!Ô!ð 	<ñ 	<ˆAÝ�c—h’h‘j”j 9Ñ,Ñ-Ô-ˆCà�c”FˆEØ�HŠH�S‰MŒMˆMÝ”�u˜gÑ&Ô&¨Ñ2ˆAØ�u˜Q  #¤Ñ'Ô'ˆHØÐ(Ø˜M¨#Ô.Ñ.�Ø˜XÑ%¨°©Ñ7ˆFØ"(¨?¸3Ô+?Ñ"?ÐØÐ/Ñ/ˆLØ#)ˆO˜CÑ Øð SØÐ.°Ñ:¸aÀ#ÍÈDÉ	Ì	Á/Ñ>QÑRÑR�àð 
XØ&.Ð1JÈ3Ô1OÑ&OÐ#Ø19Ð)¨#Ñ.Ø&Ð*=Ñ=Ð&Ø# y°C¸#ÅÀDÁ	Ä	¹/Ñ4IÑ'JÑJÐ#Øð XØØ!Ð$:Ñ:½SÀ¹Y¼YÑFÈÑNØ+ñ",ñ ,�I�Ið  Ð-CÑ!CÅcÈ$ÁiÄiÑ!OÐRWÑ!WÑW�Ià�y <Ñ/µ#°d±)´)Ñ;Ñ;ˆG‰Gñ9	<ð< �IÐÐr   c                 ó6  — ||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	          |                     ¦   «         |z  ¦  «        }| |         }| 	                    |¦  «         |dk    rzt          |¦  «        D ]j}||         dk    r#||xx         ||dz
           ||         z  z  cc<   n4||xx         ||dz
           |||         dz
           z
  ||         z  z  cc<   |||<   Œk|t          j
        ||¦  «        z  |z   } ||||         ¦  «        }|�|||         z  }||z  } | ||         |z  z
  }!||!z  }|	rDt          |¦  «        D ]4}||xx         |!|         |z  ddt          |¦  «        z  z
  z  |z  z  cc<   Œ5|rg|||         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    r‰|dk     rƒt          |¦  «        D ]g}||         dk    r ||xx         ||         ||         z  z  cc<   n1||xx         ||         |||         dz
           z
  ||         z  z  cc<   |dz   ||<   Œhd||<   ||z  }d}|dz  }�Œ®�ŒÂt          |¦  «        D ]e}||         dk    r#||xx         ||dz
           ||         z  z  cc<   Œ1||xx         ||dz
           |||         dz
           z
  ||         z  z  cc<   Œf||z  }||fS )	Nr   z:Sparse sag does not handle the case step_size * alpha == 1r   r4   ©Ú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 AœJ¨¬°¬
ˆz€IåŒh�zÑ"Ô"€GÝ”8˜JÑ'Ô'€LÝ”8˜J­cÐ2Ñ2Ô2€LÝ”h˜yÑ)Ô)€OÝ
˜\Ñ
*Ô
*€CØ€IØ ÐØ€FØ€EÝ‰5Œ5€DåŒH�V˜iÑ'Ñ(Ô(€Eð ð Øˆà€GÝ�v‘”ð Cñ CˆÝ�yÑ!Ô!ð B	ñ B	ˆAå�c—h’h‘j”j 9Ñ,Ñ-Ô-ˆCØ�c”FˆEØ�HŠH�S‰MŒMˆMà˜!Š|ˆ|Ý˜zÑ*Ô*ð .ð .�AØ# A”¨!Ò+Ð+Ø ˜
˜
œ
 e¨G°a©KÔ&8¸<È¼?Ñ&JÑJ˜
˜
™
˜
à ˜
˜
œ
Ø! '¨A¡+Ô.°°|ÀA´ÈÑ7JÔ1KÑKØ(¨œOñ',ñ ,˜
˜
™
ð '.�L ‘O�Oà�"œ& ¨Ñ0Ô0Ñ0°IÑ=ˆAØ�u˜Q  #¤Ñ'Ô'ˆHàÐ(Ø˜M¨#Ô.Ñ.�à˜XÑ%ˆFØ"(¨O¸CÔ,@À5Ñ,HÑ"IÐØÐ/Ñ/ˆLØð Ý˜zÑ*Ô*ð ð �AØ˜A�J�J”JØ+¨AÔ.Ø#ñ$à˜s¥S¨¡Y¤Y™Ñ.ñ0ð !ñ!ñ�J�J‘J�Jð ð 	XØ&.°ÀÔ1EÑ&EÐ#Ø&Ð*=Ñ=Ð&Ø# y°C¸#ÅÀDÁ	Ä	¹/Ñ4IÑ'JÑJÐ#Øð XØØ!Ð$:Ñ:½SÀ¹Y¼YÑFÈÑNØ+ñ",ñ ,�I�Ið  Ð-CÑ!CÅcÈ$ÁiÄiÑ!OÐRWÑ!WÑW�Ià#+ˆO˜CÑ à�c˜E IÑ-Ñ-Ñ-ˆFØ˜!Š|ˆ|Ø$¨µ°T±´Ñ(:Ñ;��a‘�à!& w°¡{Ô!3°iÀ6ÍCÐPTÉIÌIÑCUÑ6VÑ!V��g‘à˜!Š|ˆ| ¨¢ Ý˜zÑ*Ô*ð 2ð 2�AØ# A”¨!Ò+Ð+Ø ˜
˜
œ
 e¨G¤n°|ÀA´Ñ&FÑF˜
˜
™
˜
à ˜
˜
œ
Ø! 'œN¨U°<À´?ÀQÑ3FÔ-GÑGØ(¨œOñ',ñ ,˜
˜
™
ð '.°¡k�L ‘O�OØ!"��g‘Ø˜6Ñ!�Ø�à�q‰LˆG‰GñEB	õH �:ÑÔð  ð  ˆØ˜Œ?˜aÒÐØ�AˆJˆJŒJ˜% ¨!¡Ô,¨|¸A¬Ñ>Ñ>ˆJˆJ‰JˆJà�AˆJˆJŒJØ�g ‘kÔ" U¨<¸¬?¸QÑ+>Ô%?Ñ?Ø˜Q”ñ ñ  ˆJˆJ‰JˆJð ˆvÑ€GØ�IÐÐr   c                 óÜ   — |r7dt          j        t          j        | | z  d¬¦  «        ¦  «        |z   d|z  z   z  S dt          j        t          j        | | z  d¬¦  «        ¦  «        |z   |z   z  S )Nç      @r4   )Úaxisr   )r   ÚmaxÚsum)rC   r.   rI   Úclassifications       r   Úget_step_sizero   ò   ss   € Øð MØ•b”f�RœV A¨¡E°Ð2Ñ2Ô2Ñ3Ô3°mÑCÀcÈEÁkÑQÑRÐRà•b”f�RœV A¨¡E°Ð2Ñ2Ô2Ñ3Ô3°mÑCÀeÑKÑLÐLr   c                  óâ  — d} t          | ddd¬¦  «        \  }}d}d}t          |||¦  «        }dD �]=}|d	k    rd
}nd}t          ||dd|z  | z  |d¬¦  «        }|                     ||¦  «         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¬¦  «         �Œ?d S )Né   é   r   çš™™™™™¹?©rK   Úcentersrb   Úcluster_stdgš™™™™™ñ?T)r]   rJ   r]   éP   é,  ç•dyáý¥=r   é
   ©ÚsolverrI   ÚtolÚCÚmax_iterrb   r4   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‹   ù   sÏ  € Ø€IÝ 	°1À1ÐRUÐVÑVÔV�D€A€qà€EØ€MÝ˜a ¨Ñ6Ô6€IØ!ð ,Iñ ,IˆØ�UŠ?ˆ?ØˆFˆFð ˆFÝ ØØ'ØØ�E‰k˜IÑ%ØØð
ñ 
ô 
ˆð 	�Š��1‰Œˆå'ØØ�‰E�A‰IØØØÝØ'Ø˜6Ò!ð	
ñ 	
ô 	
Ñˆ�õ  #ØØ�‰E�A‰IØØØÝØ'Ø˜6Ò!ð	 
ñ 	 
ô 	 
Ñˆ�*õ ”- Ñ(Ô(ˆÝ”M )Ñ,Ô,ˆ	Ý”= Ñ*Ô*ˆÝ”] :Ñ.Ô.ˆ
å! '¨3¬9¸aÐ@Ñ@Ô@Ð@Ý! )¨S¬^ÀQÐGÑGÔGÐGÝ! (¨C¬I¸qÐAÑAÔAÐAÝ! *¨c¬nÀaÐHÑHÔHÐHÑHðY,Ið ,Ir   c            	      ó~  — d} d}t           j                             d¦  «        }|                     | |f¬¦  «        }|                     |¬¦  «        }|                     |¦  «        }d}d}d}t          |||d¬¦  «        }	t          |d	d
|| z  |¬¦  «        }
|
                     ||¦  «         t          |||	||t          |¬¦  «        \  }}t          |||	||t          |¬¦  «        \  }}t          ||
j        ¦  «         t          ||
j        ¦  «         t          ||
j        ¦  «         t          ||
j        ¦  «         d S )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—   /  si  € Ø€IØ€Jå
Œ)×
Ò
 Ñ
#Ô
#€CØ�
Š
˜ JÐ/ˆ
Ñ0Ô0€AØ�ZŠZ˜ZˆZÑ(Ô(€FØ	�Šˆf‰Œ€Aà€EØ€FØ€Må˜a ¨ÀeÐLÑLÔL€IÝ
Ø#ØØØ�iÑØðñ ô €Cð ‡G‚GˆAˆq�M„M€Må%Ø	Ø	ØØØÝØ#ðñ ô Ñ€Hˆjõ Ø	Ø	ØØØÝØ#ðñ ô Ñ€Hˆjõ �H˜cœiÑ(Ô(Ð(Ý�J ¤Ñ/Ô/Ð/Ý�H˜cœiÑ(Ô(Ð(Ý�J ¤Ñ/Ô/Ð/Ð/Ð/r   zignore:The max_iter was reachedÚcsr_containerc                 óv  — d}d}d}t          |ddd¬¦  «        \  }}t          dd	d
d|z  |z  |d¬¦  «        }t          |¦  «        }t          d	d
d|z  |z  |d¬¦  «        }|                     ||¦  «         |                      | |¦  «        |¦  «         |                     ||¦  «         t	          |j        |||t          ¦  «        }	t	          |j        |||t          ¦  «        }
t	          |j        |||t          ¦  «        }t          |	|
d¬¦  «         t          |
|d¬¦  «         t          ||	d¬¦  «         dS )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¡   _  sb  € ð €IØ€EØ€HÝ 	°1À1ÐRUÐVÑVÔV�D€A€qåØØØØ
�‰+˜	Ñ
!ØØðñ ô €Dõ �‰;Œ;€DÝØØØ
�‰+˜	Ñ
!ØØðñ ô €Dð 	‡H‚HˆQ��N„N€NØ‡H‚Hˆ]ˆ]˜1ÑÔ˜qÑ!Ô!Ð!Ø‡H‚HˆQ��N„N€Nå�T”Z ¨¨1­hÑ7Ô7€EÝ�T”Z ¨¨1­hÑ7Ô7€EÝ�T”Z ¨¨1­hÑ7Ô7€Eå˜e U°AÐ6Ñ6Ô6Ð6Ý˜e U°AÐ6Ñ6Ô6Ð6Ý˜e U°AÐ6Ñ6Ô6Ð6Ð6Ð6r   c                 ó   — d}d}d}d}d}t           j                             d¦  «        }|                     ||f¬¦  «        }|                     |¬¦  «        }|                     |¦  «        }	t          |dd||d¬	¦  «        }
t          |
¦  «        }t          |d
d||d¬	¦  «        }|
                     ||	¦  «         |                      | |¦  «        |	¦  «         |                     ||	¦  «         t          |
j	        |||	t          ¦  «        }t          |j	        |||	t          ¦  «        }t          |j	        |||	t          ¦  «        }t          ||d¬¦  «         t          ||d¬¦  «         t          ||d¬¦  «         dS )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Ô0€AØ�ZŠZ˜ZˆZÑ(Ô(€FØ	�Šˆf‰Œ€AåØ#ØØØØØðñ ô €Dõ �‰;Œ;€DÝØ#ØØØØØðñ ô €Dð 	‡H‚HˆQ��N„N€NØ‡H‚Hˆ]ˆ]˜1ÑÔ˜qÑ!Ô!Ð!Ø‡H‚HˆQ��N„N€Nå�T”Z ¨¨1­lÑ;Ô;€EÝ�T”Z ¨¨1­lÑ;Ô;€EÝ�T”Z ¨¨1­lÑ;Ô;€Eå˜e U°AÐ6Ñ6Ô6Ð6Ý˜e U°AÐ6Ñ6Ô6Ð6Ý˜e U°AÐ6Ñ6Ô6Ð6Ð6Ð6r   c                 óè  — d}d}d}d}d}d}t           j                             d¦  «        }|                     ||f¬¦  «        }|                     |¬¦  «        }	t          j        ||	¦  «        d	z   }
t          |||d
¬¦  «        }t          ||d||z  ||¬¦  «        }t          |¦  «        }|                     ||
¦  «         |                      | |¦  «        |
¦  «         t          ||
|||t          ||¬¦  «        \  }}t          ||
|||t          d||¬¦	  «	        \  }}t          |j                             ¦   «         |                     ¦   «         d¬¦  «         t          |j        |d¬¦  «         dS )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�   r4   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¯   ³  s¨  € ð €EØ€JØ€IØ€HØ
€CØ€MÝ
Œ)×
Ò
 Ñ
"Ô
"€CØ�
Š
˜ JÐ/ˆ
Ñ0Ô0€AØ�
Š
˜
ˆ
Ñ#Ô#€AÝ
Œˆq�!‰Œ�sÑ€AÝ˜a ¨ÀeÐLÑLÔL€IåØ#ØØØ�iÑØØðñ ô €Dõ �‰;Œ;€Dà‡H‚HˆQ��N„N€NØ‡H‚Hˆ]ˆ]˜1ÑÔ˜qÑ!Ô!Ð!å)Ø	Ø	ØØØÝØ#Øð	 ñ 	 ô 	 Ñ€J�õ  *Ø	Ø	ØØØÝØØ#Øð
 ñ 
 ô 
 Ñ€J�õ ˜dœj×.Ò.Ñ0Ô0°*×2BÒ2BÑ2DÔ2DÈaÐPÑPÔPÐPÝ˜œ¨¸qÐAÑAÔAÐAÐAÐAr   c            
      óx  — t          j        g d¢g d¢g d¢gt           j        ¬¦  «        } d}d}d}t          | d¬	¦  «                             ¦   «         }| j        d
         }t          ||d¬¦  «         dD ]ý}dD ]ø}|rs||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  }n3d||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 ¦  «         d S # 1 swxY w Y   d S )N)r4   rr   rª   )rr   rª   rš   )rr   rª   rr   r_   g333333ó?Fé   T)Úsquaredr   rš   r�   )TFrj   rr   r4   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˜Y˜Y¨	¨	¨	Ð2½"¼*ÐEÑEÔE€AØ€EØ€Mà €OÝ  ¨DÐ1Ñ1Ô1×5Ò5Ñ7Ô7ÐØ”˜”
€IÝ˜Ð)9À1ÐEÑEÔEÐEàð !Jð !JˆØ*ð  	Jð  	JˆMØð Ø'¨%Ñ/µ#°mÑ2DÔ2DÑD�Ø(¨3°©;Ñ6½¸]Ñ9KÔ9KÑKÈsÑR�Ý˜a )™m¨eÑ3°UÑ;Ô;�Ý˜a )™m¨eÑ3°UÑ;Ô;�Ø ! Q¨¡Y°Ñ%8Ñ 9�Ø ! Q¨¡Y°Ñ%8Ñ 9��à # ¸Ñ'>ÅÀ]ÑASÔASÑ'SÑ T�Ø #Ø# c¨E¡kÑ1µC¸Ñ4FÔ4FÑFñ!�õ 0Ø ØØØØ#Øðñ ô ˆNõ 0Ø ØØØØ#Øðñ ô ˆNõ   ¨~ÀqÐIÑIÔIÐIÝ ¨~ÀqÐIÑIÔIÐIÐIðA 	JðD G€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð Lð LÝÐ+¨U°G¸]ÑKÔKÐKðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lð Lð Ls   ÆF/Æ/F3Æ6F3Úseedrª   c                 ó¼  — d\  }}d}d}d}d}t           j                             | ¦  «        }t          j        |||¦  «                             |d¦  «        }	d|	                     ¦   «         z  }
t          |d|||z  |¬	¦  «        }t          |¦  «        }|                     |	|
¦  «         |                      ||	¦  «        |
¦  «         | 	                    |	|
¦  «        }| 	                    |	|
¦  «        }|d
k    sJ ‚|d
k    sJ ‚d|	                     ¦   «         z  | 
                    |d¦  «                             ¦   «         z   }
t          |d|||z  |¬	¦  «        }t          |¦  «        }|                     |	|
¦  «         |                      ||	¦  «        |
¦  «         | 	                    |	|
¦  «        }| 	                    |	|
¦  «        }|dk    sJ ‚|dk    sJ ‚dS )z(tests if the sag regressor performs well)éûÿÿÿr�   rx   gü©ñÒMbP?r�   rs   r4   r'   r]   )r}   r|   r   r.   rb   g\�Âõ(\ï?çÍÌÌÌÌÌÜ?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Œi‰€AåØØØØ�iÑØðñ ô €Dõ �‰;Œ;€DØ‡H‚HˆQ��N„N€NØ‡H‚Hˆ]ˆ]˜1ÑÔ˜qÑ!Ô!Ð!Ø�ZŠZ˜˜1ÑÔ€FØ�ZŠZ˜˜1ÑÔ€FØ�DŠ=ˆ=ˆ=ˆ=Ø�DŠ=ˆ=ˆ=ˆ=ð 	ˆa�gŠg‰iŒi‰˜#Ÿ)š) I¨qÑ1Ô1×7Ò7Ñ9Ô9Ñ9€AåØØØØ�iÑØðñ ô €Dõ �‰;Œ;€DØ‡H‚HˆQ��N„N€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
         k    <   |
}t          dd|z  |z  ||d|¬¦  «        }t          |¦  «        }|                     ||¦  «         |                      | |¦  «        |¦  «         t          |||||t          |¬¦  «        \  }}t          |||||t          d|¬¦  «        \  }}t          |j                             ¦   «         |                     ¦   «         d¬¦  «         t          |j        |d
¬¦  «         t          |j                             ¦   «         |                     ¦   «         d¬¦  «         t          |j        |d
¬¦  «         dS )z4tests if the binary classifier is computed correctlyrs   é2   r¥   Trr   r   rt   r‘   éÿÿÿÿr4   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à   T  sß  € ð €EØ€IØ€FØ
€CØ€MÝ 	°1À1ÐRUÐVÑVÔV�D€A€qÝ˜a ¨ÀdÐKÑKÔK€IÝŒi˜‰lŒl€GÝŒG�IÑÔ€EØ€Eˆ!ˆw�qŒzŠ/ÑØ€AåØØ
�‰+˜	Ñ
!ØØØØ#ðñ ô €Dõ �‰;Œ;€Dà‡H‚HˆQ��N„N€NØ‡H‚Hˆ]ˆ]˜1ÑÔ˜qÑ!Ô!Ð!å'Ø	Ø	ØØØÝØ#ðñ ô Ñ€Iˆ{õ  *Ø	Ø	ØØØÝØØ#ð	 ñ 	 ô 	 Ñ€J�õ ˜dœj×.Ò.Ñ0Ô0°)·/²/Ñ2CÔ2CÈQÐOÑOÔOÐOÝ˜œ¨¸aÐ@Ñ@Ô@Ð@å˜dœj×.Ò.Ñ0Ô0°*×2BÒ2BÑ2DÔ2DÈaÐPÑPÔPÐPÝ˜œ¨¸qÐAÑAÔAÐAÐAÐAr   c                 ó4  — d}d}d}d}d}t          |ddd¬¦  «        \  }}t          |||d¬	¦  «        }t          j        |¦  «        }	t	          t          d
d|z  |z  ||d|¬¦  «        ¦  «        }
t          |
¦  «        }|
                     ||¦  «         |                      | |¦  «        |¦  «         g }g }g }g }|	D ]°}t          j        |¦  «        }d|||k    <   t          ||||t          ||¬¦  «        \  }}t          ||||t          |d|¬¦  «        \  }}|                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         Œ±t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }t          |	¦  «        D ]É\  }}t          |
j        |         j                             ¦   «         ||         d¬¦  «         t          |
j        |         j        ||         d¬¦  «         t          |j        |         j                             ¦   «         ||         d¬¦  «         t          |j        |         j        ||         d¬¦  «         ŒÊdS )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í   Œ  sÕ  € ð €EØ€IØ
€CØ€HØ€MÝ 	°1À1ÐRUÐVÑVÔV�D€A€qÝ˜a ¨ÀdÐKÑKÔK€IÝŒi˜‰lŒl€GåÝØØ�E‰k˜IÑ%ØØØØ'ð	
ñ 	
ô 	
ñ	ô 	€Dõ �‰;Œ;€Dà‡H‚HˆQ��N„N€NØ‡H‚Hˆ]ˆ]˜1ÑÔ˜qÑ!Ô!Ð!à€EØ€JØ€EØ€JØð (ð (ˆÝ”G˜IÑ&Ô&ˆ	Øˆ	�!�r’'Ñå#-ØØØØÝØØ'ð$
ñ $
ô $
Ñ ˆ
�Lõ $.ØØØØÝØØØ'ð	$
ñ 	$
ô 	$
Ñ ˆ
�Lð 	�Š�ZÑ Ô Ð Ø×Ò˜,Ñ'Ô'Ð'à�Š�ZÑ Ô Ð Ø×Ò˜,Ñ'Ô'Ð'Ð'åŒI�eÑÔ€EÝ”˜*Ñ%Ô%€JÝŒI�eÑÔ€EÝ”˜*Ñ%Ô%€Jå˜7Ñ#Ô#ð Rð R‰ˆˆ2Ý˜Ô(¨Ô+Ô1×7Ò7Ñ9Ô9¸5À¼8È$ÐOÑOÔOÐOÝ˜Ô(¨Ô+Ô6¸
À1¼ÈDÐQÑQÔQÐQå˜Ô(¨Ô+Ô1×7Ò7Ñ9Ô9¸5À¼8È$ÐOÑOÔOÐOå˜Ô(¨Ô+Ô6¸
À1¼ÈDÐQÑQÔQÐQÐQðRð Rr   c                 ó^  — d}d}d}d}d}t           j                             d¦  «        }|                     ||f¬¦  «        }|                     |¬¦  «        }t          j        ||¦  «        }	t          j        |	¦  «        }	t          dd	|z  |z  ||d
¬¦  «        }
t          |
¦  «        }|
                     ||	¦  «         |                      | |¦  «        |	¦  «         |
 	                    |¦  «        }| 	                    |¦  «        }t          ||	d¬¦  «         t          ||	d¬¦  «         dS )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Ô0€AØ�
Š
˜
ˆ
Ñ#Ô#€AÝ
Œˆq�!‰Œ€AÝ
Œ�‰
Œ
€AÝØØ
�‰+˜	Ñ
!ØØØðñ ô €Dõ �‰;Œ;€Dà‡H‚HˆQ��N„N€NØ‡H‚Hˆ]ˆ]˜1ÑÔ˜qÑ!Ô!Ð!Ø�LŠL˜‰OŒO€EØ�LŠL˜‰OŒO€EÝ˜˜q¨"Ð-Ñ-Ô-Ð-Ý˜˜q¨"Ð-Ñ-Ô-Ð-Ð-Ð-r   c                 ó  — d}d}d}d}d}t          |ddd¬¦  «        \  }}t          |||d¬	¦  «        }t          j        |¦  «        }	t          j        |¦  «        }
d
|
||	d         k    <   |
}dddœ}t          dd|z  |z  ||d||¬¦  «        }t          |¦  «        }|                     ||¦  «         |                      | |¦  «        |¦  «         t          ¦   «         }t          |t          j        |¦  «        |¬¦  «        }|| 
                    |¦  «                 }t          |||||t          ||¬¦  «        \  }}t          |||||t          d||¬¦	  «	        \  }}t          |j                             ¦   «         |                     ¦   «         d¬¦  «         t!          |j        |d¬¦  «         t          |j                             ¦   «         |                     ¦   «         d¬¦  «         t!          |j        |d¬¦  «         dS )z8tests binary classifier with classweights for each classrs   r×   rq   r¥   Trr   rz   rt   r‘   rØ   r4   rÌ   gš™™™™™á?)r4   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û   õ  s2  € ð €EØ€IØ€FØ
€CØ€MÝ 	°1À2ÐSVÐWÑWÔW�D€A€qÝ˜a ¨ÀdÐKÑKÔK€IÝŒi˜‰lŒl€GÝŒG�IÑÔ€EØ€Eˆ!ˆw�qŒzŠ/ÑØ€Aà Ð&Ð&€LÝØØ
�‰+˜	Ñ
!ØØØØ#Ø!ðñ ô €Dõ �‰;Œ;€Dà‡H‚HˆQ��N„N€NØ‡H‚Hˆ]ˆ]˜1ÑÔ˜qÑ!Ô!Ð!å	‰Œ€BÝ(¨½r¼yÈ¹|¼|ÈqÐQÑQÔQ€MØ! "×"2Ò"2°1Ñ"5Ô"5Ô6€MÝ'Ø	Ø	ØØØÝØ#Ø#ð	ñ 	ô 	Ñ€Iˆ{õ  *Ø	Ø	ØØØÝØØ#Ø#ð
 ñ 
 ô 
 Ñ€J�õ ˜dœj×.Ò.Ñ0Ô0°)·/²/Ñ2CÔ2CÈQÐOÑOÔOÐOÝ˜œ¨¸aÐ@Ñ@Ô@Ð@å˜dœj×.Ò.Ñ0Ô0°*×2BÒ2BÑ2DÔ2DÈaÐPÑPÔPÐPÝ˜œ¨¸qÐAÑAÔAÐAÐAÐAr   c                  óÒ   — ddgddgg} ddg}d}t          j        t          |¬¦  «        5  t          d¬¦  «                             | |¦  «         d	d	d	¦  «         d	S # 1 swxY w Y   d	S )
z1tests if ValueError is thrown with only one classr4   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ý   4  s¼   € à
ˆQˆ�!�Q�Ð€AØ	
ˆAˆ€Aà
G€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð 3ð 3Ý %Ð(Ñ(Ô(×,Ò,¨Q°Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3ð 3s   ª%AÁ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  |                     | |¦  «         d d d ¦  «         n# 1 swxY w Y   t          |d|¬
¦  «        }t          j        t
          |¬	¦  «        5  |                     | |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r4   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  >  st  € Ø
ˆQˆ�!�Q�Ð€AØ	
ˆBˆ€AØ€MØ€EÝ
Œ)ð	)ñô €Cõ
  U¨c°E©kÈÐWÑWÔW€DÝ	ŒÕ(°Ð	4Ñ	4Ô	4ð ð Ø�Š��A‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ ˜}°UÀ%ÐHÑHÔH€DÝ	ŒÕ(°Ð	4Ñ	4Ô	4ð ð Ø�Š��A‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s$   ÁA8Á8A<Á?A<Â0CÃCÃCr|   r]   rJ   c                 óz  — t           j                             d¦  «        }t          |¬¦  «        \  }}t	          | |d¬¦  «        }|                     ||¦  «         t           j        |j        d d …<   t          j	        t          d¬¦  «        5  |                     ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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  Q  sð   € õ Œ)×
Ò
 Ñ
#Ô
#€CÝ¨CÐ0Ñ0Ô0�D€A€qÝ
 F¸ÈÐ
NÑ
NÔ
N€CØ‡G‚GˆAˆq�M„M€Mõ
 ”6€C„Iˆaˆaˆa�Lå	Œ•zÐ)IÐ	JÑ	JÔ	Jð ð Ø�Š��1‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÂB0Â0B4Â7B4)r4   NFNTF)r4   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Ð GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø .Ð .Ð .Ð .Ð .Ð .Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bðð ð ð ð ð ð ð ð ð ð
 ,Ð +Ð +Ð +Ð +Ð +Ø .Ð .Ð .Ð .Ð .Ð .à€y�{„{€ð$ð $ð $ð1ð 1ð 1ð
ð ð ð,ð ,ð ,ð
ð ð ð Ø
ØØØØ	ð=ð =ð =ð =ðJ Ø
ØØØØ	Øðrð rð rð rðjMð Mð Mð Mð3Ið 3Ið 3Iðl-0ð -0ð -0ð` „×ÒÐ=Ñ>Ô>Ø„×Ò˜¨.Ñ9Ô9ð"7ð "7ñ :Ô9ñ ?Ô>ð"7ðJ „×ÒÐ=Ñ>Ô>Ø„×Ò˜¨.Ñ9Ô9ð(7ð (7ñ :Ô9ñ ?Ô>ð(7ðV „×ÒÐ=Ñ>Ô>Ø„×Ò˜¨.Ñ9Ô9ð3Bð 3Bñ :Ô9ñ ?Ô>ð3Bðx/Lð /Lð /Lðd „×Ò˜   q¡¤Ñ*Ô*Ø„×Ò˜¨.Ñ9Ô9ð,ð ,ñ :Ô9ñ +Ô*ð,ð^ „×ÒÐ=Ñ>Ô>Ø„×Ò˜¨.Ñ9Ô9ð3Bð 3Bñ :Ô9ñ ?Ô>ð3Bðl „×ÒÐ=Ñ>Ô>Ø„×Ò˜¨.Ñ9Ô9ðFRð FRñ :Ô9ñ ?Ô>ðFRðR „×Ò˜¨.Ñ9Ô9ð.ð .ñ :Ô9ð.ð: „×ÒÐ=Ñ>Ô>Ø„×Ò˜¨.Ñ9Ô9ð:Bð :Bñ :Ô9ñ ?Ô>ð:Bðz3ð 3ð 3ðð ð ð& „×Ò˜ E¨6 ?Ñ3Ô3ðð ñ 4Ô3ðð ð r   