
    Ph                         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                   j#                  dg d	      d
        Zd Zy)    N)fmin_ncg)ConvergenceWarning)Bunch)assert_allclose)_check_optimize_result
_newton_cgc                    t         j                  j                  |       }|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       y )N)
   r
   )sizer
   c                 N    j                  |       }d|j                  |      z  S Ng      ?)dot)xAxAs     [/var/www/html/saasai/venv/lib/python3.12/site-packages/sklearn/utils/tests/test_optimize.pyfuncztest_newton_cg.<locals>.func   s#    UU1XbXXb\!!    c                 X    j                   j                  j                  |             S NTr   r   r   s    r   gradztest_newton_cg.<locals>.grad   s    sswwquuQx  r   c                     |j                  j                  j                  j                  | j                                           S r   )r   r   all)r   pr   s     r   hessztest_newton_cg.<locals>.hess   s-    uuQSSWWQUU1557^,--r   c                      |       fdfS )Nc                 X    j                   j                  j                  |             S r   r   r   s    r   <lambda>z3test_newton_cg.<locals>.grad_hess.<locals>.<lambda>   s    !##''!%%("3r    )r   r   r   s    r   	grad_hessz!test_newton_cg.<locals>.grad_hess   s    Aw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      s     ))

 2
3C


!A	B"!.4
 66"&&ItT25I!LMQUUVVV9dD"$7:4BtT:r   verbose)r         c           
      ^   t        j                  d      t        j                  ddgt              t	        fdfdfdt        j
                  j                  d         |       | j                         }|dk(  r|j                  d	k(  sJ g d
}|D ]  }||j                  v rJ  |dk\  rg d}|D ]  }||j                  v r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       | j                         }g d}|D ]  }||j                  v r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       | j                         }dg}|D ]  }||j                  v r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       | j                         }d g}|D ]  }||j                  v r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       | j                         }d'g}|D ]  }||j                  v rJ  yy# 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w)(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8r   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    q1uqyr   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6r   c                     | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>\       q1uqyr          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@$Ar   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   +   sN    	q	A
!Qu%A8. 88AGGAJ   "H!|||r!!!
 A$$$  !|
 A$$$  !| HHsAhA'(4/HHc3Z  \\.)@6(88T1I& * $$&
 A$$$ 
 HHsAhI/0HHdAY\\,-@6( . $$&&
 A$$$  FF1IHHdAY\\.)A6(88S#J' * $$&G
 A$$$  GGN#HH^$\\,-@6(<<? . $$&8
 A$$$ g  *), .-* *)& .-s0   &2M=N
+3N2N#=N
NN #N,c                  Z   t               } d| _        d| _        d| _        t	        j
                         5  t	        j                  d       t        d|        d d d        d| _        d| _        t        j                  t              5 }t        d|        d d d        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        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        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 y # 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   xY w# 1 sw Y   xY w)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}      s3   WF FJFMFN		 	 	"g&w/ 
# FMBFN	(	)Vw/ 
* v;!ay  %%a(H:hFFF>>X%%%.h>>>x''' 
(	)Vw; 
* v;!ay  %%a(H:hFFF>>X%%%.(:::x''' FJFMFN	(	)Vw< 
* v;!ay  %%a(H:hFFF>>X%%%.h>>>x'''W 
#	" 
*	) 
*	) 
*	)s/   "G:HHH!:HHH!H*)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      sO       # 1 & 2 E< I.y% /y%x4(r   