§
    rŠtj\"  ã                   ó.  — d dl Z d dlZd dl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 d dlmZmZ d dlmZmZ d	„ Zej                             d
 e¦   «         ¦  «        d„ ¦   «         Zej                             dg d¢¦  «        d„ ¦   «         Zd„ ZdS )é    N)Úfmin_ncg)Úconfig_context)ÚConvergenceWarning)Úmove_toÚ)yield_namespace_device_dtype_combinations)ÚBunch)Ú_array_api_for_testsÚassert_allclose)Ú_check_optimize_resultÚ
_newton_cgc                 óÄ  ‡‡— t           j                             | ¦  «        }|                     d¬¦  «        Št          j        d¦  «        }ˆfd„}ˆfd„Šˆfd„}ˆˆfd„}t          j        t          j        t          ||‰|d¬	¦  «        d
         ¦  «        dk    ¦  «        sJ ‚t          t          ||‰|d¬	¦  «        d
         t          ||‰|¬¦  «        d¬¦  «         d S )N)é
   r   )Úsizer   c                 ó^   •— ‰                      | ¦  «        }d|                      |¦  «        z  S ©Nç      à?)Údot)ÚxÚAxÚAs     €ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/utils/tests/test_optimize.pyÚfuncztest_newton_cg.<locals>.func   s'   ø€ Ø�UŠU�1‰XŒXˆØ�b—X’X˜b‘\”\Ñ!Ð!ó    c                 ó^   •— ‰j                              ‰                     | ¦  «        ¦  «        S ©N©ÚTr   ©r   r   s    €r   Úgradztest_newton_cg.<locals>.grad   s!   ø€ ØŒs�wŠw�q—u’u˜Q‘x”xÑ Ô Ð r   c                 ó¨   •— |                      ‰j                              ‰                      |                      ¦   «         ¦  «        ¦  «        ¦  «        S r   )r   r   Úall©r   Úpr   s     €r   Úhessztest_newton_cg.<locals>.hess   s5   ø€ Ø�uŠu�Q”S—W’W˜QŸUšU 1§5¢5¡7¤7™^œ^Ñ,Ô,Ñ-Ô-Ð-r   c                 ó$   •—  ‰| ¦  «        ˆfd„fS )Nc                 ó^   •— ‰j                              ‰                     | ¦  «        ¦  «        S r   r   r   s    €r   ú<lambda>z3test_newton_cg.<locals>.grad_hess.<locals>.<lambda>!   s   ø€  !¤#§'¢'¨!¯%ª%°©(¬(Ñ"3Ô"3€ r   © )r   r   r   s    €€r   Ú	grad_hessz!test_newton_cg.<locals>.grad_hess    s    ø€ Øˆt�A‰wŒwÐ3Ð3Ð3Ð3Ð3Ð3r   ç»½×Ùß|Û=©Útolr   gH¯¼šò×z>)ÚfÚx0ÚfprimeÚfhess_pgñhãˆµøä>©Úatol)
ÚnpÚrandomÚRandomStateÚnormalÚonesr!   Úabsr   r
   r   )Úglobal_random_seedÚrngr.   r   r$   r)   r   r   s         @@r   Útest_newton_cgr;      s8  øø€ õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ�
Š
˜ˆ
Ñ!Ô!€AÝ	Œ�‰Œ€Bð"ð "ð "ð "ð "ð!ð !ð !ð !ð !ð.ð .ð .ð .ð .ð4ð 4ð 4ð 4ð 4ð 4õ
 Œ6•"”&� I¨t°T¸2À5ÐIÑIÔIÈ!ÔLÑMÔMÐQUÒUÑVÔVÐVÐVÐVÝÝ�9˜d D¨"°$Ð7Ñ7Ô7¸Ô:Ý�4˜B t°TÐ:Ñ:Ô:Øðñ ô ð ð ð r   z(array_namespace, device_name, dtype_namec                 ó¬  ‡	‡
‡‡— t          | |¦  «        \  }}|                     t          j        ddgddgg¦  «                             |¦  «        |¬¦  «        Š	|                     t          j        d¦  «                             |¦  «        |¬¦  «        Š|                     t          j        d¦  «                             |¦  «        |¬¦  «        }ˆ	ˆfd„}ˆ	ˆfd„Š
ˆ	fd„Šˆ
ˆfd	„}t          d
¬¦  «        5  t          ||‰
|d¬¦  «        }ddd¦  «         n# 1 swxY w Y   t          t          |d         t          d¬¦  «        ddgd¬¦  «         dS )z/Test that newton_cg works with Array API input.é   éÿÿÿÿé   )Údeviceé   c                 ó,   •— d‰‰| z  z
  z  ‰‰| z  z
  z  S r   r(   ©r   r   Úys    €€r   r   z1test_newton_cg_array_api_compliance.<locals>.func8   s#   ø€ Ø�a˜!˜a™%‘iÑ  A¨¨A©¡IÑ.Ð.r   c                 ó$   •— ‰j         ‰| z  ‰z
  z  S r   ©r   rC   s    €€r   r   z1test_newton_cg_array_api_compliance.<locals>.grad;   s   ø€ ØŒs�a˜!‘e˜a‘iÑ Ð r   c                 ó   •— ‰j         ‰|z  z  S r   rF   r"   s     €r   r$   z1test_newton_cg_array_api_compliance.<locals>.hess>   s   ø€ ØŒs�a˜!‘e‰}Ðr   c                 ó(   •‡ —  ‰‰ ¦  «        ˆˆ fd„fS )Nc                 ó   •—  ‰‰| ¦  «        S r   r(   )r#   r$   r   s    €€r   r'   zHtest_newton_cg_array_api_compliance.<locals>.grad_hess.<locals>.<lambda>B   s   ø€  $ $ q¨!¡*¤*€ r   r(   )r   r   r$   s   `€€r   r)   z6test_newton_cg_array_api_compliance.<locals>.grad_hessA   s$   øø€ Øˆt�A‰wŒwÐ,Ð,Ð,Ð,Ð,Ð,Ð,r   T)Úarray_api_dispatchr*   r+   Nr   Úcpu)Úxpr@   r   g      ø?r1   )r	   Úasarrayr3   ÚarrayÚastypeÚaranger7   r   r   r
   r   )Úarray_namespaceÚdevice_nameÚ
dtype_namerL   r@   r.   r   r)   Úresr   r   r$   rD   s            @@@@r   Ú#test_newton_cg_array_api_compliancerU   -   sá  øøøø€ õ & o°{ÑCÔC�J€BˆØ
�
Š
•2”8˜a ˜W r¨1 gÐ.Ñ/Ô/×6Ò6°zÑBÔBÈ6ˆ
ÑRÔR€AØ
�
Š
•2”9˜Q‘<”<×&Ò& zÑ2Ô2¸6ˆ
ÑBÔB€AØ	�Š•B”G˜A‘J”J×%Ò% jÑ1Ô1¸&ˆÑ	AÔ	A€Bð/ð /ð /ð /ð /ð /ð!ð !ð !ð !ð !ð !ðð ð ð ð ð-ð -ð -ð -ð -ð -õ 
¨4Ð	0Ñ	0Ô	0ð ?ð ?Ý˜ D¨$°¸Ð>Ñ>Ô>ˆð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?õ Ý��A”�2 eÐ,Ñ,Ô,Ø	�ˆØðñ ô ð ð ð s   Ã9DÄDÄ!DÚverbose)r   r?   rA   c           
      óp  ‡‡— t          j        d¦  «        Št          j        ddgt          ¬¦  «        Št	          ˆˆfd„ˆˆfd„ˆˆfd„t          j        ‰j        d         ¦  «        |¬¦  «         |                      ¦   «         }|dk    r|j        d	k    sJ ‚ng d
¢}|D ]}||j        v sJ ‚Œ|dk    rg d¢}|D ]}||j        v sJ ‚Œ|dk    �ræt          j        ddgddgg¦  «        dz  Št          j        ddg¦  «        Št          j
        t          t          f¦  «        5  t	          ˆˆfd„ˆˆfd„ˆˆfd„t          j        ddg¦  «        |¬¦  «         ddd¦  «         n# 1 swxY w Y   |                      ¦   «         }g d¢}|D ]}||j        v sJ ‚Œt          j        ddgddgg¦  «        Št          j        ddg¦  «        Št          j
        t          ¦  «        5  t	          ˆˆfd„ˆˆfd„ˆˆfd„‰|d¬¦  «         ddd¦  «         n# 1 swxY w Y   |                      ¦   «         }dg}|D ]}||j        v sJ ‚Œt          j        d¦  «        Št          j        ddg¦  «        Št          j
        t          t          f¦  «        5  t	          ˆˆfd„ˆˆfd„ˆˆfd„t          j        ddg¦  «        |d¬¦  «         ddd¦  «         n# 1 swxY w Y   |                      ¦   «         }d g}|D ]}||j        v sJ ‚Œt          j        g d!¢¦  «        Št          j        g d"¢¦  «        Št          j
        t          ¦  «        5  t	          ˆˆfd#„ˆˆfd$„ˆˆfd%„t          j        ‰¦  «        |dd¬&¦  «         ddd¦  «         n# 1 swxY w Y   |                      ¦   «         }d'g}|D ]}||j        v sJ ‚ŒdS dS )(z0Test the std output of verbose newton_cg solver.rA   r?   )Údtypec                 ó   •— ‰| z  ‰z
  ˆfd„fS )Nc                 ó   •— ‰| z  S r   r(   ©Úzr   s    €r   r'   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>U   s   ø€ °!°a±%€ r   r(   ©r   r   Úbs    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>U   s   ø€ ˜Q ™U Q™Y¨¨¨¨Ð8€ r   c                 ó&   •— d| z  ‰z  | z  ‰| z  z
  S r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>V   s   ø€ �s˜Q‘w ‘{ Q‘¨¨Q©Ñ.€ r   c                 ó   •— ‰| z  ‰z
  S r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>W   s   ø€ �q˜1‘u˜q‘y€ r   r   )r)   r   r   r.   rV   Ú )zNewton-CG iter = 1zCheck Convergencezmax |gradient|zSolver did converge at loss = )z(Inner CG solver iteration 1 stopped withzsum(|residuals|) <= tolzLine Searchztry line search wolfe1z!wolfe1 line search was successfulg      ð?é   gêŒ 9Y>)Fç       @c                 ó   •— ‰| z  ‰z
  ˆfd„fS )Nc                 ó   •— ‰| z  S r   r(   r[   s    €r   r'   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>}   ó   ø€ ¸!¸a¹%€ r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>}   ó   ø€  Q¨¡U¨Q¡Y°°°°Ð$@€ r   c                 ó&   •— d| z  ‰z  | z  ‰| z  z
  S r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>~   ó   ø€ ˜s Q™w¨™{¨Q™°°Q±Ñ6€ r   c                 ó   •— ‰| z  ‰z
  S r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>   ó   ø€ ˜q 1™u q™y€ r   ç       ÀN)z%wolfe1 line search was not successfulz-check loss |improvement| <= eps * |loss_old|:z,check sum(|gradient|) < sum(|gradient_old|):z#last resort: try line search wolfe2g      @c                 ó   •— ‰| z  ‰z
  ˆfd„fS )Nc                 ó   •— ‰| z  S r   r(   r[   s    €r   r'   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>“   rf   r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>“   rg   r   c                 ó&   •— d| z  ‰z  | z  ‰| z  z
  S r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>”   ri   r   c                 ó   •— ‰| z  ‰z
  S r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>•   rk   r   )r)   r   r   r.   rV   Úmaxiterztiny_|p| = eps * ||p||^2c                 ó   •— ‰| z  ‰z
  ˆfd„fS )Nc                 ó   •— ‰ | z  S r   r(   r[   s    €r   r'   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>©   s   ø€ ¸1¸"¸q¹&€ r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>©   s   ø€  Q¨¡U¨Q¡YÐ0@Ð0@Ð0@Ð0@Ð$A€ r   c                 ó&   •— d| z  ‰z  | z  ‰| z  z
  S r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>ª   ri   r   c                 ó   •— ‰| z  ‰z
  S r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>«   rk   r   r=   z9Inner CG solver iteration 0 fell back to steepest descent)gü©ñÒMbP?r?   g     @�@)rl   r?   rc   c                 ó   •— ‰| z  ‰z
  ˆfd„fS )Nc                 ó   •— ‰| z  S r   r(   r[   s    €r   r'   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>»   rf   r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>»   rg   r   c                 ó&   •— d| z  ‰z  | z  ‰| z  z
  S r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>¼   ri   r   c                 ó   •— ‰| z  ‰z
  S r   r(   r]   s    €€r   r'   z*test_newton_cg_verbosity.<locals>.<lambda>½   rk   r   )r)   r   r   r.   rV   rq   Úmaxinnerz*Inner CG solver stopped reaching maxiter=1)r3   ÚeyerN   Úfloatr   ÚzerosÚshapeÚ
readouterrÚoutÚpytestÚwarnsÚRuntimeWarningÚUserWarningr   ÚdiagÚ	ones_like)ÚcapsysrV   ÚcapturedÚmsgÚmr   r^   s        @@r   Útest_newton_cg_verbosityr‹   N   s  øø€ õ 	Œˆq‰	Œ	€AÝ
Œ�!�Q��uÐ%Ñ%Ô%€AåØ8Ð8Ð8Ð8Ð8Ø.Ð.Ð.Ð.Ð.Ø Ð Ð Ð Ð ÝŒ8�A”G˜A”JÑÔØðñ ô ð ð × Ò Ñ"Ô"€Hà�!‚|€|ØŒ|˜rÒ!Ð!Ð!Ð!Ð!ð
ð 
ð 
ˆð ð 	%ð 	%ˆAØ˜œÐ$Ð$Ð$Ð$Ð$à�!‚|€|ð
ð 
ð 
ˆð ð 	%ð 	%ˆAØ˜œÐ$Ð$Ð$Ð$Ð$à�!‚|�|õ ŒH�s˜A�h  A Ð'Ñ(Ô(¨4Ñ/ˆÝŒH�c˜3�ZÑ Ô ˆõ Œ\�>­;Ð7Ñ8Ô8ð 	ð 	ÝØ@Ð@Ð@Ð@Ð@Ø6Ð6Ð6Ð6Ð6Ø(Ð(Ð(Ð(Ð(Ý”8˜T 1˜IÑ&Ô&Øðñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ×$Ò$Ñ&Ô&ˆð
ð 
ð 
ˆð ð 	%ð 	%ˆAØ˜œÐ$Ð$Ð$Ð$Ð$õ ŒH�s˜A�h  I Ð/Ñ0Ô0ˆÝŒH�d˜A�YÑÔˆÝŒ\Õ,Ñ-Ô-ð 	ð 	ÝØ@Ð@Ð@Ð@Ð@Ø6Ð6Ð6Ð6Ð6Ø(Ð(Ð(Ð(Ð(ØØØðñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ×$Ò$Ñ&Ô&ˆà&ð
ˆð ð 	%ð 	%ˆAØ˜œÐ$Ð$Ð$Ð$Ð$õ
 ŒF�1‰IŒIˆÝŒH�d˜A�YÑÔˆÝŒ\�>­;Ð7Ñ8Ô8ð 		ð 		ÝàAÐAÐAÐAÐAØ6Ð6Ð6Ð6Ð6Ø(Ð(Ð(Ð(Ð(Ý”8˜S #˜JÑ'Ô'ØØðñ ô ð ð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð ×$Ò$Ñ&Ô&ˆàGð
ˆð ð 	%ð 	%ˆAØ˜œÐ$Ð$Ð$Ð$Ð$åŒG�N�N�NÑ#Ô#ˆÝŒH�^�^�^Ñ$Ô$ˆÝŒ\Õ,Ñ-Ô-ð 		ð 		ÝØ@Ð@Ð@Ð@Ð@Ø6Ð6Ð6Ð6Ð6Ø(Ð(Ð(Ð(Ð(Ý”< ‘?”?ØØØðñ ô ð ð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð ×$Ò$Ñ&Ô&ˆà8ð
ˆð ð 	%ð 	%ˆAØ˜œÐ$Ð$Ð$Ð$Ð$ði €|ðf	%ð 	%sH   Ä!5E"Å"E&Å)E&Ç"HÈHÈHÊ6K
Ë
KËKÍ5NÎNÎ	Nc                  óz  — t          ¦   «         } d| _        d| _        d| _        t	          j        ¦   «         5  t	          j        d¦  «         t          d| ¦  «         d d d ¦  «         n# 1 swxY w Y   d| _        d| _        t          j	        t          ¦  «        5 }t          d| ¦  «         d d d ¦  «         n# 1 swxY w Y   t          |¦  «        dk    sJ ‚|d         j        j        d         }d|v sJ ‚| j        |v sJ ‚d|vsJ ‚d	|v sJ ‚t          j	        t          ¦  «        5 }t          d| d¬
¦  «         d d d ¦  «         n# 1 swxY w Y   t          |¦  «        dk    sJ ‚|d         j        j        d         }d|v sJ ‚| j        |v sJ ‚d|v sJ ‚d	|v sJ ‚d| _        d| _        d| _        t          j	        t          ¦  «        5 }t          d| d¬
¦  «         d d d ¦  «         n# 1 swxY w Y   t          |¦  «        dk    sJ ‚|d         j        j        d         }d|v sJ ‚| j        |v sJ ‚d|vsJ ‚d	|v sJ ‚d S )Nr?   r   ÚOKÚerrorÚlbfgsz+STOP: TOTAL NO. OF ITERATIONS REACHED LIMITz-lbfgs failed to converge after 1 iteration(s)z!Increase the number of iterationszscale the data)Úmax_iterrA   ÚABNORMALr   z-lbfgs failed to converge after 2 iteration(s))r   ÚnitÚstatusÚmessageÚwarningsÚcatch_warningsÚsimplefilterr   r�   r‚   r   ÚlenÚargs)ÚresultÚrecordÚwarn_msgs      r   Útest_check_optimizer�   Ë   s’  € å‰WŒW€Fð €F„JØ€F„MØ€F„Nå	Ô	 Ñ	"Ô	"ð 0ð 0ÝÔ˜gÑ&Ô&Ð&Ý˜w¨Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð €F„MØB€F„NÝ	ŒÕ(Ñ	)Ô	)ð 0¨VÝ˜w¨Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0õ ˆv‰;Œ;˜!ÒÐÐÐØ�aŒyÔ Ô% aÔ(€HØ:¸hÐFÐFÐFÐFØŒ>˜XÐ%Ð%Ð%Ð%Ø.°hÐ>Ð>Ð>Ð>Ø˜xÐ'Ð'Ð'Ð'õ 
ŒÕ(Ñ	)Ô	)ð <¨VÝ˜w¨¸Ð;Ñ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <õ ˆv‰;Œ;˜!ÒÐÐÐØ�aŒyÔ Ô% aÔ(€HØ:¸hÐFÐFÐFÐFØŒ>˜XÐ%Ð%Ð%Ð%Ø.°(Ð:Ð:Ð:Ð:Ø˜xÐ'Ð'Ð'Ð'ð €F„JØ€F„MØ€F„NÝ	ŒÕ(Ñ	)Ô	)ð =¨VÝ˜w¨¸Ð<Ñ<Ô<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =õ ˆv‰;Œ;˜!ÒÐÐÐØ�aŒyÔ Ô% aÔ(€HØ:¸hÐFÐFÐFÐFØŒ>˜XÐ%Ð%Ð%Ð%Ø.°hÐ>Ð>Ð>Ð>Ø˜xÐ'Ð'Ð'Ð'Ð'Ð'sG   ·%A(Á(A,Á/A,ÂB7Â7B;Â>B;Ä%EÅEÅEÇG&Ç&G*Ç-G*)r•   Únumpyr3   r�   Úscipy.optimizer   Úsklearnr   Úsklearn.exceptionsr   Úsklearn.utils._array_apir   r   Úsklearn.utils._bunchr   Úsklearn.utils._testingr	   r
   Úsklearn.utils.optimizer   r   r;   ÚmarkÚparametrizerU   r‹   r�   r(   r   r   ú<module>r¨      sP  ðØ €€€à Ð Ð Ð Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #à "Ð "Ð "Ð "Ð "Ð "Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ WØ &Ð &Ð &Ð &Ð &Ð &Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eðð ð ð< „×ÒØ.Ø-Ð-Ñ/Ô/ñô ðð ñ	ô ðð: „×Ò˜ I I IÑ.Ô.ðy%ð y%ñ /Ô.ðy%ðx4(ð 4(ð 4(ð 4(ð 4(r   