
    /ii                         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 d dlmZmZ d Zej                            dg d	          d
             Zd ZdS )    N)fmin_ncg)ConvergenceWarning)Bunch)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 Ng      ?)dot)xAxAs     g/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/sklearn/utils/tests/test_optimize.pyfuncztest_newton_cg.<locals>.func   s'    UU1XXbXXb\\!!    c                 ^    j                                                 |                     S NTr   r   r   s    r   gradztest_newton_cg.<locals>.grad   s!    swwquuQxx   r   c                     |                     j                                                  |                                                               S r   )r   r   all)r   pr   s     r   hessztest_newton_cg.<locals>.hess   s5    uuQSWWQUU15577^^,,---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     tAww333333r   g|=)tolr   gHz>)fx0fprimefhess_pgh㈵>)atol)
nprandomRandomStatenormalonesr   absr   r   r   )global_random_seedrngr&   r   r   r#   r   r   s         @@r   test_newton_cgr2      s8    )

 2
3
3C


!!A	B" " " " "! ! ! ! !. . . . .4 4 4 4 4 4
 6"&ItT25III!LMMQUUVVVVV9dD"$777:4BtT:::     r   verbose)r         c           
      T   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    rt          j        ddgddgg          dz  t          j        ddg          t          j
        t                    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                    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.r5   r4   )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>2   s    !a% r   r"   r   r   bs    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>2   s    QUQY8 r   c                 &    d| z  z  | z  | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>3   s    sQw{QQ. r   c                     | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>4   s    q1uqy r   r   )r#   r   r   r&   r3    )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>Z       !a% r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>Z       QUQY$@ r   c                 &    d| z  z  | z  | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>[       sQw{QQ6 r   c                     | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>\       q1uqy 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>p   rE   r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>p   rF   r   c                 &    d| z  z  | z  | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>q   rH   r   c                     | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>r   rJ   r   )r#   r   r   r&   r3   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UQY0@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>   rH   r   c                     | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>   rJ   r      z9Inner CG solver iteration 0 fell back to steepest descent)gMbP?r4   g     @@)rK   r4   rB   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>   rE   r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>   rF   r   c                 &    d| z  z  | z  | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>   rH   r   c                     | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>   rJ   r   )r#   r   r   r&   r3   rP   maxinnerz*Inner CG solver stopped reaching maxiter=1)r*   eyearrayfloatr   zerosshape
readouterroutpytestwarnsRuntimeWarningr   diag	ones_like)capsysr3   capturedmsgmr   r=   s        @@r   test_newton_cg_verbosityrk   +   s    	q		A
!Qu%%%A88888.....     8AGAJ      ""H!|||r!!!!!
 
 
  	% 	%A$$$$$!||
 
 
  	% 	%A$$$$$!|| HsAhA'((4/Hc3Z   \.)) 	 	@@@@@66666(((((8T1I&&   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $$&&
 
 
  	% 	%A$$$$$ HsAhI/00HdAY\,-- 	 	@@@@@66666(((((   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $$&&&
  	% 	%A$$$$$
 F1IIHdAY\.)) 		 		AAAAA66666(((((8S#J''   		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 $$&&G
  	% 	%A$$$$$GNNN##H^^^$$\,-- 		 		@@@@@66666(((((<??   		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 $$&&8
  	% 	%A$$$$$i |f	% 	%sH   5EE"E"HH	H	:6J<<K K 35M44M8;M8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 )Nr4   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_iterr5   ABNORMALr
   z-lbfgs failed to converge after 2 iteration(s))r   nitstatusmessagewarningscatch_warningssimplefilterr   rb   rc   r   lenargs)resultrecordwarn_msgs      r   test_check_optimizer}      s   WWF FJFMFN		 	"	" 0 0g&&&w///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 FMBFN	(	)	) 0Vw///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 v;;!ay %a(H:hFFFF>X%%%%.h>>>>x'''' 
(	)	) <Vw;;;;< < < < < < < < < < < < < < < v;;!ay %a(H:hFFFF>X%%%%.(::::x'''' FJFMFN	(	)	) =Vw<<<<= = = = = = = = = = = = = = = v;;!ay %a(H:hFFFF>X%%%%.h>>>>x''''''sG   %A((A,/A,B77B;>B;%EEEG&&G*-G*)ru   numpyr*   rb   scipy.optimizer   sklearn.exceptionsr   sklearn.utils._bunchr   sklearn.utils._testingr   sklearn.utils.optimizer   r   r2   markparametrizerk   r}   r"   r   r   <module>r      s          # # # # # # 1 1 1 1 1 1 & & & & & & 2 2 2 2 2 2 E E E E E E E E  < III..y% y% /.y%x4( 4( 4( 4( 4(r   