
    Pi                     P   d Z ddlZddlZddlZddlZddlZddlmZm	Z	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mZmZmZ dd
lmZ g dZ  edd          \  Z!Z" e            #                    e!dd                   Z$e"dd         Z% edd          \  Z!Z" e            #                    e!dd                   Z&e"dd         Z'e$e%fe&e'fgZ( eddddd          \  Z)Z* ee*          Z*e)e*fgZ+ e	            Z,e,j-        Z.e,j/        Z0d Z1d Z2d Z3ej4        5                    de(          d             Z6ej4        5                    de+          d             Z7ej4        5                    de(          d             Z8ej4        5                    de+          d             Z9d Z:d Z;d  Z<d! Z=d" Z>d# Z?d$ Z@d% ZAd& ZBd' ZCd( ZDd) ZEd* ZFej4        5                    d+e          d,             ZGd- ZHd. ZIej4        5                    d/eeg          d0             ZJd1 ZKd2 ZLej4        5                    d/eeg          d3             ZMd4 ZNej4        O                    d5          d6             ZPd7 ZQd8 ZRd9 ZSej4        5                    d:ejT        ejU        g          ej4        5                    d;eeg          d<                         ZVd= ZWej4        5                    d;eeg          d>             ZXej4        5                    d/eeg          d?             ZYej4        5                    d/eeg          ej4        5                    d@g dA          dB                         ZZej4        5                    d/eeg          dC             Z[dD Z\dE Z]dF Z^dG Z_dS )HzD
Testing for Multi-layer Perceptron module (sklearn.neural_network)
    N)load_digits	load_irismake_multilabel_classificationmake_regression)ConvergenceWarning)PoissonRegressor)roc_auc_score)MLPClassifierMLPRegressor)LabelBinarizerMinMaxScalerscale)assert_allcloseassert_almost_equalassert_array_equalignore_warnings)CSR_CONTAINERS)identitylogistictanhrelu   T)n_class
return_X_y      
   g      4@g      Y@   )	n_samples
n_featuresbiasnoiserandom_statec            
      `   t           d d         } t          d d         }g }t          j        d          }d }|D ]}t	          d|d          }t          t                    5  |                    | |           d d d            n# 1 swxY w Y   |                    t          j	         ||j
        d                    ||j
        d                   g                     t          t          |          dz
            D ]+}||         ||dz            k                                    sJ ,d S )	Nd   r   c                 N    t          j        t          j        |                     S N)npsumabs)xs    y/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sklearn/neural_network/tests/test_mlp.py<lambda>ztest_alpha.<locals>.<lambda>F   s    RVBF1II..     r      )hidden_layer_sizesalphar#   categoryr   )X_digits_binaryy_digits_binaryr(   aranger
   r   r   fitappendarraycoefs_rangelenall)Xyalpha_vectorsalpha_valuesabsolute_sumr1   mlpis           r,   
test_alpharE   ?   s   AAM9Q<<L..L 
 
rQOOO&8999 	 	GGAqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Hll3:a=11<<
13N3NOPP	
 	
 	
 	
 3|$$q()) ? ?a =Q#77<<>>>>>>? ?s   #BB
	B
	c            
      D   t          j        g dg          } t          j        dg          }t          dddddddd          }dgdz  |_        dgdz  |_        d|_        t          j        dd	gd
dgddgg          |j        d<   t          j        dgd	gg          |j        d<   t          j        ddg          |j        d<   t          j        dg          |j        d<   g dz  |_        g dz  |_        d|_        d|_	        d|_
        d|_        dg|j        dz
  z  |_        dg|j        dz
  z  |_        d|_        d|_        t           j        |_        g |_        d|_        d |j        D             |_        d |j        D             |_        |                    | |ddg           t+          |j        d         t          j        ddgddgddgg          d           t+          |j        d         t          j        dgdgg          d           t+          |j        d         t          j        ddg          d           t+          |j        d         t          j        d          d           t+          |                    |           d         dd           d S )N)g333333?皙?gffffff?r   sgd皙?r   r/   r   )solverlearning_rate_initr1   
activationr#   max_iterr0   momentum皙?g333333?      ?      ?r   c                 6    g | ]}t          j        |          S  r(   
zeros_like).0
interceptss     r,   
<listcomp>ztest_fit.<locals>.<listcomp>~   s/       &0j!!  r.   c                 6    g | ]}t          j        |          S rS   rT   )rV   coefss     r,   rX   ztest_fit.<locals>.<listcomp>   s"    GGG5"-..GGGr.   classesgJ+?guX?gડ2?g'?g.NV?gVSbb)decimalgF??g#070?gY,?g~?gZd;O?)r   r/   gS?)r(   r9   r
   r:   intercepts_
n_outputs__coef_grads_intercept_gradsn_features_in_n_iter_learning_rate_	n_layers_out_activation_t_inf
best_loss_loss_curve__no_improvement_count_intercept_velocity_coef_velocitypartial_fitr   predict_probar>   r?   rC   s      r,   test_fitrq   T   s   
///"##A
!A
	 	 	C qCJcAgCOCNHsCj3*sAh?@@CJqMHsecU^,,CJqM3*--COA3%COA1fCO6CC CKC CM cS]Q./CO3#-!"34C$CCFVCNCO !C 47O  C HGCJGGGCOOAq1a&O)))> 
1
5(#i%:Y	<RSTT   
 
1rx'XJ0G'H'HRSTTTT*BHh5H,I,ISTUUUU*BHV,<,<aHHHH ))!,,T2E1EEEEEEr.   c                     dD ]4} d}d}t           j                            d          }|                    ||          dt          j        t          j        |          dz   |           z   }t                                          |          t          D ]}t          |dddd	dd
          t          j                    5  t          j        dt                                         |           d d d            n# 1 swxY w Y   t          j        d j        j        z   D                       }j        d         gj        gz   j        gz   }g g g g                                t-          j        dz
            D ]}                    t          j        j        d         ||dz            f                                         t          j        j        d         ||dz            f                     ||         }	||dz            }
                    t          j        |	|
f                                         t          j        |
                     fd} ||          \  }}t          j        t          j        |                    }t          j        |d          }t          j        |          }d}t-          |          D ]C}|d d |f         |z  } |||z             d          |||z
            d         z
  |dz  z  ||<   Dt9          ||           6d S )N)r   r      r   *   )seedr/   lbfgsh㈵>rO   )rL   r0   rJ   r1   rK   rM   r#   ignorec                 6    g | ]}|                                 S rS   )ravel)rV   ls     r,   rX   z!test_gradient.<locals>.<listcomp>   s     OOOQqwwyyOOOr.   r   c           
      <                         | d           S r'   )_loss_grad_lbfgs)tr>   Yactivations
coef_gradsdeltasintercept_gradsrC   s    r,   loss_grad_funz$test_gradient.<locals>.loss_grad_fun   s,    ++q!T;
O  r.   g       @)r(   randomRandomStaterandmodr6   r   fit_transformACTIVATION_TYPESr
   warningscatch_warningssimplefilterr   r7   hstackr:   r^   shaper0   r_   r8   r;   re   emptyzerossizeeyer   )n_labelsr   r    r#   r?   rL   thetalayer_unitsrD   fan_infan_outr   valuegradnumgradnEepsilondthetar>   r   r   r   r   r   rC   s                      @@@@@@@r,   test_gradientr      s     :/ :/	
y,,",55i44ry++a/:::**1--* 2	/ 2	/J%#%#&  C (**  %h0BCCC1               IOO#*s2NOOOPPE71:,#*@)AAS^DTTKKFJ Oq!!!3=1,-- : :""28QWQZQU9K,L#M#MNNNbh
KA4F'GHHIII$Q%a!e,!!"(FG+<"="=>>>&&rx'8'89999          
 *M%00MUDhrwu~~..Gq!!Aq		AG1XX $ $111a47*!M%&.11!4}}UV^7T7TUV7WWs]$

  ....e2	/:/ :/s   1DD	D	zX,yc           	      ~   | d d         }|d d         }| dd          }|j         d         |j        j        f}t          D ]}}t	          ddddd|          }|                    ||           |                    |          }|                    ||          dk    sJ |j         d         |j        j        f|k    sJ ~d S )	N   r   rv   2   Tr/   )rJ   r0   rM   shuffler#   rL   ffffff?)r   dtypekindr   r
   r7   predictscore)	r>   r?   X_trainy_trainX_testexpected_shape_dtyperL   rC   	y_predicts	            r,   test_lbfgs_classificationr      s    
 gGgGsttWF"LOW]-?@& R R
!!
 
 
 	!!!KK''	yy'**T1111"IO$89=QQQQQQR Rr.   c           
          t           D ]m}t          dddddd|          }|                    | |           |dk    r|                    | |          d	k    sJ Q|                    | |          d
k    sJ nd S )Nrv   r   r   MbP?Tr/   )rJ   r0   rM   tolr   r#   rL   r   rG   g\(\?)r   r   r7   r   )r>   r?   rL   rC   s       r,   test_lbfgs_regressionr     s     ' * *
!!
 
 
 	1##99Q??T))))) 99Q??T)))))* *r.   c           
          d}t           D ]m}t          ddd|dd|          }t          j        t                    5  |                    | |           ||j        k    sJ 	 d d d            n# 1 swxY w Y   nd S )Nr   rv   r   r   Tr/   )rJ   r0   rM   max_funr   r#   rL   )r   r
   pytestwarnsr   r7   rc   r>   r?   r   rL   rC   s        r,    test_lbfgs_classification_maxfunr   &  s     G& * *
!!
 
 
 \,-- 	* 	*GGAqMMMck)))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	** *s   $A,,A0	3A0	c                     d}t           D ]n}t          dddd|dd|          }t          j        t                    5  |                    | |           ||j        k    sJ 	 d d d            n# 1 swxY w Y   od S )	Nr   rv   r   g        r   Tr/   )rJ   r0   r   rM   r   r   r#   rL   )r   r   r   r   r   r7   rc   r   s        r,   test_lbfgs_regression_maxfunr   ;  s     G& * *
!!	
 	
 	
 \,-- 	* 	*GGAqMMMck)))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	** *s   $A--A1	4A1	c            	         ddgddgddgddgg} g d}d	D ]}t          d
d|ddd          }t          t                    5  |                    | |           |j        j        }|                    | |           |j        j        }d d d            n# 1 swxY w Y   |dk    r	||k    sJ |dk    r#|j        t          d|j                  z  |k    sJ d S )Nr   r   r/      rs   )r/   r/   r/   r   )
invscalingconstantrH      g      ?T)rJ   r0   learning_raterM   power_t
warm_startr2   r   r   	   )	r
   r   r   r7   
_optimizerr   rK   powr   )r>   r?   r   rC   prev_etapost_etas         r,   test_learning_rate_warmstartr   Q  s]   
Q!Q!Q"b*AA3 P P '
 
 
 &8999 	4 	4GGAqMMM~3HGGAqMMM~3H		4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 J&&x'''''l**)Cs{,C,CCxOOOO%P Ps   ABB	B	c            	         t          ddd          \  } }t          ddddddd	
          }|                    | |           |                    | |          dk    sJ t          ddddddd	          }t	          d          D ]}|                    | |g d           |                    | |          dk    sJ t          d          }|                    | |                              |            d S )Nr   r   Tr   r#   return_indicatorrv   rw   r   r   rO   )rJ   r0   r1   rM   r#   rL   rK   g
ףp=
?rH   )rJ   r0   rM   r#   rL   r1   rK   r%   )r   r/   r   r   r   r[   ?early_stopping)r   r
   r7   r   r;   rn   r   )r>   r?   rC   rD   s       r,   test_multilabel_classificationr   j  s4    *1t  DAq   C GGAqMMM99Q??T!!!!   C 3ZZ 7 71ooo666699Q??S     t
,
,
,CGGAqMM!r.   c                      t          ddd          \  } }t          ddddd	          }|                    | |           |                    | |          d
k    sJ d S )Nr   rs      )r   	n_targetsr#   rv   r   {Gz?r/   )rJ   r0   rM   r   r#   r   )r   r   r7   r   rp   s      r,   test_multioutput_regressionr     sp    SABGGGDAq
2TU  C GGAqMMM99Q??S      r.   c                     ddgg} dg}t          d          }|                    | |ddg           t          j        t                    5  |                    | |ddg           d d d            d S # 1 swxY w Y   d S )Nr   r   r   rH   rJ   r/   r[   )r
   rn   r   raises
ValueErrorr>   r?   clfs      r,   test_partial_fit_classes_errorr     s    
QA	
A
u
%
%
%COOAq1a&O)))	z	"	" . .1q!f---. . . . . . . . . . . . . . . . . .s   A44A8;A8c            	         t           D ]\  } }t          dddddd          }t          t                    5  |                    | |           d d d            n# 1 swxY w Y   |                    |           }t          dddd	          }t          d          D ],}|                    | |t          j	        |          
           -|                    |           }t          ||           |                    | |          dk    sJ d S )NrH   r%   r/   r   rw   rO   )rJ   rM   r#   r   r1   rK   r2   )rJ   r#   r1   rK   r[   r   )classification_datasetsr
   r   r   r7   r   r;   rn   r(   uniquer   r   )r>   r?   rC   pred1rD   pred2s         r,   test_partial_fit_classificationr     sf    ( & &1"
 
 
 &8999 	 	GGAqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Aq
 
 
 s 	8 	8AOOAq")A,,O7777A5%(((yyA%%%%%)& &s   AA	"A	c                      t          d          } |                     dgdgdggg dg d           |                     d	ggd
g           |                     dgdgdgd	ggg d          dk    sJ d S )Nr   )r#   r/   r   r   )abc)r   r   r   dr[   r   r   )r
   rn   r   )r   s    r,   test_partial_fit_unseen_classesr     s     Q
'
'
'COOaS1#sO___>R>R>ROSSSOOaSEC5!!!99qcA3aS)+?+?+?@@1DDDDDDr.   c            
      h   t           } t          }dD ]}t          ddddd| j        d         |          }t	          j                    5  t	          j        d	t                     |                    | |           d d d            n# 1 swxY w Y   |	                    |           }t          dddd| j        d         |
          }t          d          D ]}|                    | |           |	                    |           }t          ||           |                    | |          }|dk    sJ !d S )N)r   r   rH   r%   r   r/   r   r   )rJ   rM   rL   r#   rK   
batch_sizerN   rx   )rJ   rL   rK   r#   r   rN   g?)X_regy_regr   r   r   r   r   r   r7   r   r;   rn   r   r   )r>   r?   rN   rC   r   rD   r   r   s           r,   test_partial_fit_regressionr     s    	AA  #wqz
 
 
 $&& 	 	!(,>???GGAqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 A#wqz
 
 
 s 	" 	"AOOAq!!!!Au%%%		!Qt|||||9 s   1BB		B		c                     ddgddgg} ddg}t          j        t                    5  t          d                              | |dg           d d d            n# 1 swxY w Y   t          t          d	          d
          rJ d S )Nr   r   r/   r   r   rH   r   r[   rv   rn   )r   r   r   r
   rn   hasattr)r>   r?   s     r,   test_partial_fit_errorsr     s    
Q!QA	
AA 
z	"	" C CU###//1qc/BBBC C C C C C C C C C C C C C C }G444mDDDDDDDs   (AA!Ac                  "   t           j                            d          } d}t          j        t           j                  j        }||                     |df          z  }|                     |          }t                      }d}t          j
        t          |          5  t          j                    5  t          j        d           |                    ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r   )r   zrSolver produced non-finite parameter weights. The input data may contain large values and need to be preprocessed.matchrx   )r(   r   r   finfofloat64maxuniformstandard_normalr   r   r   r   r   r   r   r7   )rngr   fmaxr>   r?   r   msgs          r,   test_nonfinite_paramsr     sx    )


"
"CI8BJ#Ds{{A{///A++A
..C	/  
z	-	-	-  $&& 	 	!(+++GGAqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s6   !D5+C, D,C0	0D3C0	4DDDc                  x   t           d d         } t          d d         }t          ddd          }t          t                    5  |                    | |           d d d            n# 1 swxY w Y   |                    |           }|                    |           }|j        d         d}}|	                    d	          }|	                    d	          }|j        ||fk    sJ t          ||           t          |t          j        |                     t          ||d d df                   d
k    sJ d S )Nr   rs   r   r/   )r0   rL   r#   r2   r   r   axisrQ   )r4   r5   r
   r   r   r7   ro   predict_log_probar   argmaxr   r   r(   logr	   	r>   r?   r   y_probay_log_probar   	n_classes	proba_maxproba_log_maxs	            r,   test_predict_proba_binaryr    sv   AA
1RS
T
T
TC	"4	5	5	5  1              ""G''**KWQZ	YA&&I&&A&..M=Y	22222y-000K111GAAAqDM**c111111s   A))A-0A-c                  b   t           d d         } t          d d         }t          d          }t          t                    5  |                    | |           d d d            n# 1 swxY w Y   |                    |           }|                    |           }|j        d         t          j
        |          j        }}|                    d          }|                    d          }|j        ||fk    sJ t          ||           t          |t          j        |                     d S )Nr   rs   )r0   r2   r   r/   r   )X_digits_multiy_digits_multir
   r   r   r7   ro   r  r   r(   r   r   r  r   r   r  r  s	            r,   test_predict_proba_multiclassr  '  sU   ssAssA
1
-
-
-C	"4	5	5	5  1              ""G''**KWQZ1):	YA&&I&&A&..M=Y	22222y-000K11111s   A''A+.A+c                  x   t          ddd          \  } }|j        \  }}t          ddd          }|                    | |           |                    |           }|j        ||fk    sJ t          |dk    |           |                    |           }|                    d	
          }|                    d	
          }|                    d	          d	z
  	                    |                    d	          d	z
            dk    sJ t          ||           t          |t          j        |                     d S )Nr   r   Tr   rv      rJ   r0   r#   rP   r/   r   g|=)r   r   r
   r7   ro   r   r  r  r)   dotr   r(   r  )	r>   r   r   r  r   r  r  r	  r
  s	            r,   test_predict_proba_multilabelr  <  s<    *1t  DAq 7Iy
w2A
N
N
NCGGAqMMM""G=Y	22222w}a(((''**KA&&I&&A&..MKKNNQ##GKKNNQ$677%????y-000K11111r.   c                  T   t          dddd          \  } }dD ]}t          dddd|          }t          dddd|          }t          j                    5  t          j        dt
                     |                    | |           |                    | |           d d d            n# 1 swxY w Y   t          j        |j	        d         |j	        d                   sJ t          ddddd	          }t          ddddd
          }t          j                    5  t          j        dt
                     |                    | |           |                    | |           d d d            n# 1 swxY w Y   t          j        |j	        d         |j	        d                   rJ d S )Nr   rs   r/   r   )r   r    r   r#   )TF)r0   rM   r   r#   r   rx   TF)
r   r   r   r   r   r   r7   r(   array_equalr:   )r>   r?   r   mlp1mlp2s        r,   test_shuffler  T  sG   RAQRSSSDAq ! > > 
 
 
  
 
 
 $&& 	 	!(,>???HHQNNNHHQNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ~dk!ndk!n====== qQQPT  D qQQPU  D 
	 	"	"  h(:;;;AA              
 ~dk!ndk!n=======s&   AB))B-	0B-	AE00E47E4csr_containerc                    t           d d         }t          d d         } | |          }t          ddd          }|                    ||           |                    |          }|                    ||           |                    |          }t          ||           |                    |          }|                    |          }t          ||           d S )Nr   rv      r/   r  )r4   r5   r
   r7   r   r   r   )r  r>   r?   X_sparserC   r   r   s          r,   test_sparse_matricesr  ~  s     	AA}QH
w2A
N
N
NCGGAqMMMKKNNEGGHaKK!!Eu%%%KKNNEKK!!Eue$$$$$r.   c                      ddgddgg} ddg}t          ddd	          }|                    | |           |j        |j        k    sJ d S )
Nr   r   r/   r   r   rP     rH   )r   rM   rJ   )r
   r7   rM   rc   r   s      r,   test_tolerancer!    s_     Q!QA	
AA
C$u
=
=
=CGGAqMMM<#+%%%%%%r.   c                 0   ddgddgg}ddg}t          dddd          }t          t          	          5  |                    ||           d d d            n# 1 swxY w Y   |                    ||           |                                 \  }}d
|v sJ d S )Nr   r   r/   r   r   rH   r   )rJ   rM   verboser0   r2   	Iteration)r
   r   r   r7   rn   
readouterr)capsysr>   r?   r   out_s         r,   test_verbose_sgdr)    s    
Q!QA	
AA
uq"QR
S
S
SC	"4	5	5	5  1              OOAq  FC#s   AAAMLPEstimatorc                    t           d d         }t          d d         }d} | |ddd          }|                    ||           |j        |j        k    sJ |j        J t          |j        t                    sJ |j        }|j	        }t          |          |k    sJ ||z   |d         k    sJ ||z   |d         k    sJ  | |ddd	          }|                    ||           |j        J |j	        J |j        J d S )
Nr%   rO   r   rH   T)r   rM   rJ   r   r   F)r4   r5   r7   rM   rc   ri   
isinstancevalidation_scores_listbest_validation_score_r   )r*  r>   r?   r   mlp_estimatorvalid_scoresbest_valid_scores          r,   test_early_stoppingr4    sf   AA
C L$uT  M a!M$99999#+++m6===== 3L$;| 00000c!L$44444c!L$44444 !L$uU  M a+333/777#/////r.   c                      ddgddgg} ddg}t          dddd	
          }|                    | |           |j        |j        k    sJ d|j        j        k    sJ d S )Nr   r   r/   r   r   rP   r   rH   adaptive)r   rM   rJ   r   gư>)r
   r7   rM   rc   r   r   r   s      r,   test_adaptive_learning_rater7    su    
Q!QA	
AA
C$uJ
W
W
WCGGAqMMM<#+%%%%#........r.   c                     t           } t          }t          j        dgdz  dgdz  z             }t          j        dgdz  dgdz  z   dgdz  z             }t          j        dgdz  dgdz  z   dgdz  z             }t          j        dgd	z  dgd	z  z   dgd
z  z   dgd
z  z             }t          j        dgdz  dgdz  z   dgdz  z   dgdz  z   dgdz  z             }t	          ddddd                              | |          }|                    | |           |                    | |           ||||fD ]}t	          ddddd                              | |          }dt          j        |          z  }	t          j        t          t          j        |	                    5  |                    | |           d d d            n# 1 swxY w Y   d S )Nr   K   r/   (   r   F   r   r   %   &   r  r   rv   Trt   r   )r0   rJ   r   r#   r   z}warm_start can only be used where `y` has the same classes as in the previous call to fit. Previously got [0 1 2], `y` has %sr   )X_irisy_irisr(   r9   r
   r7   r   r   r   r   reescape)
r>   r?   
y_2classes
y_3classesy_3classes_alt
y_4classes
y_5classesr   y_imessages
             r,   test_warm_startrI    sL   AA1#(aS2X-..J1#(aS2X-b899JXqcBh!r1QC"H<==N1#(aS2X-b8A38CDDJ1#(aS2X-b8A38CqcBhNOOJ WBTX  	c!Qii  GGAqMMMGGAzNJ
C   
 
 
 #a)) 	246IcNNC 	
 ]:RYw-?-?@@@ 	 	GGAsOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   #GG
	G
	c                 ^   t           t          }}d} | ddd|          }t          j                    5  t          j        dt
                     |                    ||           ||j        k    sJ |                    ||           ||j        k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r   rH   T)r0   rJ   r   rM   rx   )r>  r?  r   r   r   r   r7   rc   )r*  r>   r?   rM   r   s        r,   test_warm_start_full_iterationrK    s    6qAH
,Uth  C 
	 	"	" ' 'h(:;;;13;&&&&13;&&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   A!B""B&)B&c                      t           d d         } t          d d         }d}d}dD ]H}t          ||d|          }|                    | |           |j        |dz   k    sJ ||j        k    sJ Id S )Nr%   r   r   )r   rs   r   r   r%   rH   r   rM   rJ   n_iter_no_changer/   )r4   r5   r
   r7   rk   rc   )r>   r?   r   rM   rN  r   s         r,   test_n_iter_no_changerO    s     	AA
CH 0 & &huGW
 
 
 	1 (,<q,@@@@@#+%%%%%& &r.   z-ignore::sklearn.exceptions.ConvergenceWarningc                      t           d d         } t          d d         }d}t          j        }d}t	          ||d|          }|                    | |           |j        |k    sJ |j        |j        dz
  k    sJ d S )Nr%   g    eAr   rH   rM  r/   )r4   r5   r(   rh   r
   r7   rc   rk   )r>   r?   r   rN  rM   r   s         r,   test_n_iter_no_change_infrQ    s     	AA C vH
(5CS  C GGAqMMM ;("""" $a777777r.   c                      ddgddgddgddgg} g d}t          d          }t          j        t          d	
          5  |                    | |           d d d            d S # 1 swxY w Y   d S )Nr/   r   r   r   rs   )r   r   r   r/   Tr   zaThe least populated classes in y have only 1 member.*Classes with too few members are: \['True'\]r   )r
   r   r   r   r7   rp   s      r,   test_early_stopping_stratifiedrS  2  s    
Q!Q!Q!Q(AA
t
,
,
,C	/
 
 
   	1                 s   A""A&)A&c                     t          ddddd          } |                     t          d d         t          d d                    |                     t          dd                    }|                     t          dd                    }t          ddddd          }|                    t          d d                             t          j                  t          d d                    |                    t          dd                              t          j                            }|                    t          dd                              t          j                            }t          ||           t          ||d	           d S )
Nrw   rs   r   r/   r%   rI   r1   r0   r#   rM   r   ,  r   rtol)r
   r7   X_digitsy_digitsr   ro   astyper(   float32r   r   )mlp_64pred_64proba_64mlp_32pred_32proba_32s         r,   "test_mlp_classifier_dtypes_castingrd  B  sQ   vAQU  F JJx~x~...nnXcdd^,,G##HSTTN33HvAQU  F JJx~$$RZ00(4C4.AAAnnXcdd^222:>>??G##HSTTN$9$9"*$E$EFFHw(((HhU333333r.   c                  6   t          ddddd          } |                     t          d d         t          d d                    |                     t          dd                    }t          ddddd          }|                    t          d d                             t          j                  t          d d                    |                    t          dd                              t          j                            }t          ||d	           d S )
Nrw   rU  r/   r   r   rV  rW  gMb@?rX  )	r   r7   rZ  r[  r   r\  r(   r]  r   )r^  r_  ra  rb  s       r,   !test_mlp_regressor_dtypes_castingrf  V  s    vAQU  F JJx~x~...nnXcdd^,,GvAQU  F JJx~$$RZ00(4C4.AAAnnXcdd^222:>>??GGW5111111r.   r   	Estimatorc                     t                                          t          }} |ddddd          }|                    |d d         |d d                    |                    |dd                    }t           fd|j        D                       sJ t           fd	|j        D                       sJ |t          k    r|j	         k    sJ d S d S )
Nrw   rU  r/   r   rI   rV  rW  c                 &    g | ]}|j         k    S rS   r   )rV   	interceptr   s     r,   rX   z)test_mlp_param_dtypes.<locals>.<listcomp>r  s     JJJY	5(JJJr.   c                 &    g | ]}|j         k    S rS   rj  )rV   coefr   s     r,   rX   z)test_mlp_param_dtypes.<locals>.<listcomp>t  s     ;;;
e#;;;r.   )
rZ  r\  r[  r7   r   r=   r^   r:   r   r   )r   rg  r>   r?   rC   preds   `     r,   test_mlp_param_dtypesro  f  s    
 ??5!!8qA
)vAPT  C GGAdsdGQttW;;qwDJJJJ#/JJJKKKKK;;;;
;;;<<<<<L  zU"""" ! ""r.   c                 n   t          dddd          }dggdg}}|                    ||           | dz  }t          j        ||           t          j        |          }dggd	g}}t          d          D ]}|                    ||           |                    |          }	t          |	|d
           dS )zYLoading from MLP and partial fitting updates weights. Non-regression
    test for #19626.)rt   rt   r   r   )r0   r#   rK   rM   r   r   zmlp.pklr/   -C6?rX  N)	r   r7   joblibdumploadr;   rn   r   r   )
tmp_pathpre_trained_estimatorfeaturestargetpickled_fileload_estimatorfine_tune_featuresfine_tune_targetr(  predicted_values
             r,   (test_mlp_loading_from_joblib_partial_fitr~  z  s     ) rdUX   uqcfH h/// i'L
K%|444[..N ./C51#(3ZZ I I""#57GHHHH %,,-?@@OO%5DAAAAAAr.   c                    t          j        d          }t          j                            d          }|                    |                    dd          ddg          }|                    t          j        dd          d	
          } | dd          }t          j
                    5  t          j        dt                     |                    ||           ddd           dS # 1 swxY w Y   dS )zCheck that feature names are preserved when early stopping is enabled.

    Feature names are required for consistency checks during scoring.

    Non-regression test for gh-24846
    pandasr   r   r   	colname_a	colname_b)datacolumnsr/   	colname_y)r  nameTrO   )r   validation_fractionerrorN)r   importorskipr(   r   r   	DataFramerandnSeriesfullr   r   r   UserWarningr7   )rg  pdr   r>   r?   models         r,   test_preserve_feature_namesr    s    
	X	&	&B
)


"
"C
#))B**[+4NOOA
		rwr1~~K	88AITsCCCE		 	"	"  g{333		!Q                 s   +1C))C-0C-c                     | dddd          }t          j                    5  t          j        dt                     |                    t
          t                     t          |j                  }|	                    d           |                    t
          t                     ddd           n# 1 swxY w Y   t          |j                  |k    sJ dS )	z0Check that early stopping works with warm start.r   r   T)rM   r#   r   r   rx      rM   N)
r   r   r   r   r7   r>  r?  r<   r.  
set_params)r*  rC   n_validation_scoress      r,   'test_mlp_warm_start_with_early_stoppingr    s    ,!T  C 
	 	"	"    h(:;;;!#"899###                              s%&&)<<<<<<<s   BB44B8;B8rJ   )rH   adamrv   c                     | |dddt           j        d          }t          j        t                    5  |                    t          t                     ddd           n# 1 swxY w Y   |j        dk    sJ |	                    d           t          j        t                    5  |                    t          t                     ddd           n# 1 swxY w Y   |j        dk    sJ dS )	zCheck that we stop the number of iteration at `max_iter` when warm starting.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/24764
    TFr   r   )rJ   r   r   rM   rN  r#   Nr  r  )
r(   rh   r   r   r   r7   r>  r?  rc   r  )r*  rJ   r  s      r,   "test_mlp_warm_start_no_convergencer    sg    L  E 
(	)	) " "		&&!!!" " " " " " " " " " " " " " "=B	b!!!	(	)	) " "		&&!!!" " " " " " " " " " " " " " "=Bs#   !A""A&)A&)!CCCc                     | dd                               t          t                    }d}t          j        t
          |          5  |                    t          t                     ddd           dS # 1 swxY w Y   dS )zoCheck partial fit does not fail after fit when early_stopping=True.

    Non-regression test for gh-25693.
    Tr   r   r#   z0partial_fit does not support early_stopping=Truer   N)r7   r>  r?  r   r   r   rn   )r*  rC   r   s      r,   test_mlp_partial_fit_after_fitr    s     ,d
;
;
;
?
?
O
OC
<C	z	-	-	- ( ('''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   	!A77A;>A;c                     t          dddddddddd	d
          } t          j                    5  t          j        dt                     t          j        dt
                     |                     t          t                     ddd           n# 1 swxY w Y   t          | j
        d                   t          t          j                  k    sJ t          | j
        d         t                    sJ dS )zTest that a diverging model does not raise errors when early stopping is enabled.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/29504
    r%   r   rH   rq  r   r/   Tr  r   r   )r0   rL   rJ   r1   r   rK   r   rM   r   rN  r#   rx   Nr,  )r   r   r   r   RuntimeWarningr   r7   r>  r?  strr.  r(   nanr-  float)rC   s    r,   test_mlp_diverging_lossr    s+       C 
	 	"	"     	h777h(:;;;                              s%b)**c"&kk9999c,R0%8888888s   ABBBc            	      ~   t          dddd          \  } }t          j        |          }t          ddddddd	          }t	          di |}|                    | ||
           t	          di |                    | |d 
          }t          |                    |           |                    |                      d S )Nr%   r   rt   )r   r    n_informativer#   r   r  Tr   )r0   rJ   r   r   rK   r   r#   )sample_weightrS   )r   r(   	ones_likedictr   r7   r   r   )r>   r?   swparamsm1m2s         r,   *test_mlp_sample_weight_with_early_stoppingr    s    	  DAq 
aB  F 
 
 


 
B FF1arF"""						#	#Aq	#	=	=BBJJqMM2::a==11111r.   c                 T   d}t           j                            |           }t          j        dd|          }|                    t          j        |dz                       }|                    |d          }t          dd                              ||          }t          ddd	dd
dt           j        
                    | dz                                           ||          }t          |                    |          |                    |          d           t          ddd	dd
dt           j        
                    | dz                                           ||          }t          j        |                    |          |                    |          d          rJ dS )z:Test MLP with Poisson loss and no hidden layer equals GLM.r%   r   r/   r,  gHz>)r1   r   poisson)r/   r   rv   )lossr0   rL   r1   rJ   r   r#   rq  rX  squared_errorN)r(   r   default_rnglinspacer  expreshaper   r7   r   r   r   r   allclose)global_random_seedr   r   r>   r?   glmrC   s          r,   "test_mlp_vs_poisson_glm_equivalentr    s   A
)

 2
3
3C
Aq!ABF1q5MM""A			!RA

-
-
-
1
1!Q
7
7C Y**+=+ABB   
c!Qii  CKKNNCKKNN>>>> Y**+=+ABB   
c!Qii  {3;;q>>3;;q>>EEEEEEEEr.   c                      t          ddd          \  } }t          dd          }t          j        t          d          5  |                    | |           d	d	d	           d	S # 1 swxY w Y   d	S )
z9Check error message when the validation set is too small.r   rs   r   )r   r    r#   Tr  zThe validation set is too smallr   N)r   r   r   r   r   r7   )r>   r?   r  s      r,   test_minimum_input_sample_sizer  A  s    Q11EEEDAq1===E	z)J	K	K	K  		!Q                 s   A&&A*-A*)`__doc__r@  r   rr  numpyr(   r   sklearn.datasetsr   r   r   r   sklearn.exceptionsr   sklearn.linear_modelr   sklearn.metricsr	   sklearn.neural_networkr
   r   sklearn.preprocessingr   r   r   sklearn.utils._testingr   r   r   r   sklearn.utils.fixesr   r   rZ  r[  r   r  r  r4   r5   r   r   r   regression_datasetsirisr  r>  rx  r?  rE   rq   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r!  r)  r4  r7  rI  rK  rO  filterwarningsrQ  rS  rd  rf  r]  r   ro  r~  r  r  r  r  r  r  r  r  rS   r.   r,   <module>r     s    
			                   2 1 1 1 1 1 1 1 1 1 1 1 ) ) ) ) ) ) > > > > > > > > E E E E E E E E E E            / . . . . .;;;  [t<<< (--httn==$3$ [t<<< (,....x~>>4C4. ^$o& 
 bt5q  u 	eu~& y{{		? ? ?*^F ^F ^FB@/ @/ @/F  788R R 98R0  344* * 54*(  788* * 98*(  344* * 54**P P P2# # #L! ! !. . .& & &6E E E" " "J
E 
E 
E  *2 2 2.2 2 2*2 2 20'> '> '>T .99% % :9% & & &   -)FGG0 0 HG0</ / /  D -)FGG' ' HG'$& & &( KLL8 8 ML82   4 4 4(2 2 2  2:rz":;;}l&CDD# # ED <;#$B B B6 }l&CDD  ED( -)FGG= = HG= -)FGG#;#;#;<<  =< HG2 -)FGG	( 	( HG	(9 9 9@2 2 26"F "F "FJ    r.   