
    -i                        S r SSKrSSKrSSKrSSKJr  SSKrSSKrSSK	r	SSK
JrJrJrJr  SSKJr  SSKJr  SSKJr  SSKJrJr  SS	KJrJrJr  SS
KJrJrJrJ r   SSK!J"r"  / SQr#\" SSS9u  r$r%\" 5       RM                  \$SS 5      r'\%SS r(\" SSS9u  r$r%\" 5       RM                  \$SS 5      r)\%SS r*\'\(4\)\*4/r+\" SSSSSS9u  r,r-\" \-5      r-\,\-4/r.\" 5       r/\/R`                  r1\/Rd                  r3S r4S r5S r6\	Rn                  Rq                  S\+5      S 5       r9\	Rn                  Rq                  S\.5      S 5       r:\	Rn                  Rq                  S\+5      S 5       r;\	Rn                  Rq                  S\.5      S 5       r<S r=S  r>S! r?S" r@S# rAS$ rBS% rCS& rDS' rES( rFS) rGS* rHS+ rI\	Rn                  Rq                  S,\"5      S- 5       rJS. rKS/ rL\	Rn                  Rq                  S0\\/5      S1 5       rMS2 rNS3 rO\	Rn                  Rq                  S0\\/5      S4 5       rPS5 rQ\	Rn                  R                  S65      S7 5       rSS8 rTS9 rUS: rV\	Rn                  Rq                  S;\R                  \R                  /5      \	Rn                  Rq                  S<\\/5      S= 5       5       rYS> rZ\	Rn                  Rq                  S<\\/5      S? 5       r[\	Rn                  Rq                  S0\\/5      S@ 5       r\\	Rn                  Rq                  S0\\/5      \	Rn                  Rq                  SA/ SBQ5      SC 5       5       r]\	Rn                  Rq                  S0\\/5      SD 5       r^SE r_SF r`SG raSH rbg)IzD
Testing for Multi-layer Perceptron module (sklearn.neural_network)
    N)StringIO)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            
         [         S S n [        S S n/ n[        R                  " S5      nS nU H  n[	        SUSS9n[        [        S9   UR                  X5        S S S 5        UR                  [        R                  " U" UR                  S   5      U" UR                  S   5      /5      5        M     [        [        U5      S-
  5       H$  nX'   X'S-      :  R                  5       (       a  M$   e   g ! , (       d  f       N= f)	Nd   r   c                 V    [         R                  " [         R                  " U 5      5      $ N)npsumabs)xs    X/var/www/html/venv/lib/python3.13/site-packages/sklearn/neural_network/tests/test_mlp.py<lambda>test_alpha.<locals>.<lambda>H   s    RVVBFF1I.    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_sumr3   mlpis           r-   
test_alpharG   A   s    AAM99Q<L.LrQO&89GGAM :HHl3::a=1<

13NOP	
	  3|$q() =Q#77<<>>>> * :9s   C66
D	c                     [         R                  " / SQ/5      n [         R                  " S/5      n[        SSSSSSSSS9nS/S-  Ul        S/S-  Ul        SUl        [         R                  " SS	/S
S/SS//5      UR                  S'   [         R                  " S/S	//5      UR                  S'   [         R                  " SS/5      UR                  S'   [         R                  " S/5      UR                  S'   / S-  Ul        / S-  Ul        SUl        SUl	        SUl
        SUl        S/UR                  S-
  -  Ul        S/UR                  S-
  -  Ul        SUl        SUl        [         R                  Ul        / Ul        SUl        UR                   Vs/ s H  n[         R$                  " U5      PM     snUl        UR                   Vs/ s H  n[         R$                  " U5      PM     snUl        UR+                  XSS/S9  [-        UR                  S   [         R                  " SS/SS/SS//5      SS9  [-        UR                  S   [         R                  " S/S//5      SS9  [-        UR                  S   [         R                  " SS/5      SS9  [-        UR                  S   [         R                  " S5      SS9  [-        UR/                  U 5      S   SSS9  g s  snf s  snf )N)g333333?皙?gffffff?r   sgd皙?r   r1   r   )solverlearning_rate_initr3   
activationr$   max_iterr2   momentum皙?g333333?      ?      ?r   classesgJ+?guX?gડ2?g'?g.NV?gVSbb)decimalgF??g#070?gY,?g~?gZd;O?)r   r1   gS?)r)   r;   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
zeros_like_intercept_velocity_coef_velocitypartial_fitr   predict_proba)r@   rA   rE   
interceptscoefss        r-   test_fitrl   V   s   
/"#A
!A
	C qCJcAgCOCNHHsCj3*sAh?@CJJqMHHsecU^,CJJqM3*-COOA3%COOA1fCO6CC CKC CM cS]]Q./CO3#--!"34C$CCFVVCNCO !C47OO4Cjj!OC =@JJGJ5"--.JGCOOA1a&O)> 

1
5(#i%:Y	<RST
 

1rxx'XJ0G'HRST*BHHh5H,ISTU*BHHV,<aH ))!,T2E1Ei Hs    K& K+c                    ^^^^^^^ S GH  n SnSn[         R                  R                  SS9nUR                  X5      mS[         R                  " [         R
                  " U5      S-   U 5      -   n[        5       R                  U5      m[         GH  n[        USSSS	SSS
9m[        R                  " 5          [        R                  " S[        5        TR                  TU5        S S S 5        [         R                  " TR                   TR"                  -    Vs/ s H  ofR%                  5       PM     sn5      nTR&                  S   /TR(                  /-   TR*                  /-   n/ m/ m/ m/ mTR-                  T5        [/        TR0                  S-
  5       H  n	TR-                  [         R2                  " TR&                  S   XS-      45      5        TR-                  [         R2                  " TR&                  S   XS-      45      5        X   n
XS-      nTR-                  [         R2                  " X45      5        TR-                  [         R2                  " U5      5        M     UUUUUUU4S jnU" U5      u  p[         R4                  " [         R6                  " U5      5      n[         R6                  " US5      n[         R8                  " U5      nSn[/        U5       H4  n	US S 2U	4   U-  nU" UU-   5      S   U" UU-
  5      S   -
  US-  -  X'   M6     [;        X5        GM     GM      g ! , (       d  f       GNN= fs  snf )N)r   r      r   *   )seedr1   lbfgsh㈵>rQ   )rN   r2   rL   r3   rM   rO   r$   ignorer   c           
      4   > TR                  U TTS TTTT5      $ r(   )_loss_grad_lbfgs)tr@   Yactivations
coef_gradsdeltasintercept_gradsrE   s    r-   loss_grad_fun$test_gradient.<locals>.loss_grad_fun   s'    ++q!T;
O r0   g       @)r)   randomRandomStaterandmodr8   r   fit_transformACTIVATION_TYPESr   warningscatch_warningssimplefilterr   r9   hstackr<   rW   ravelshaper2   rX   r:   r=   r^   emptyzerossizeeyer   )n_labelsr    r!   r$   rA   rN   lthetalayer_unitsrF   fan_infan_outr|   valuegradnumgradnEepsilondthetar@   rw   rx   ry   rz   r{   rE   s                       @@@@@@@r-   test_gradientr      s    	
yy,,",5i4ryy+a/::**1-**J%#%#&C ((*%%h0BC1 + II#**s2NO2NQwwy2NOPE771:,#*@*@)AAS^^DTTKKFJ Oq!3==1,-""288QWWQZU9K,L#MNbhh
KA4F'GHI$%!e,!!"((F+<"=>&&rxx'89 . 
 *%0MUhhrwwu~.Gq!Aq	AG1X1a47*!%&.1!4}UV^7TUV7WWs]$
 
  .e + $ +* Ps   8.L-L?-
L<zX,yc           
      j   U S S nUS S nU SS  nUR                   S   UR                  R                  4n[         Hu  n[	        SSSSSUS9nUR                  X#5        UR                  U5      nUR                  X#5      S:  d   eUR                   S   UR                  R                  4U:X  a  Mu   e   g )	N   r   rq   2   Tr1   )rL   r2   rO   shuffler$   rN   ffffff?)r   dtypekindr   r   r9   predictscore)	r@   rA   X_trainy_trainX_testexpected_shape_dtyperN   rE   	y_predicts	            r-   test_lbfgs_classificationr      s    
 gGgGstWF"LLOW]]-?-?@&
!!
 	!KK'	yy*T111"IOO$8$89=QQQQ 'r0   c                     [          HY  n[        SSSSSSUS9nUR                  X5        US:X  a  UR                  X5      S	:  d   eMB  UR                  X5      S
:  a  MY   e   g )Nrq   r   r   MbP?Tr1   )rL   r2   rO   tolr   r$   rN   r   rI   g\(\?)r   r   r9   r   )r@   rA   rN   rE   s       r-   test_lbfgs_regressionr     sp     '
!!
 	#99Q?T))) 99Q?T))) 'r0   c                     Sn[          HX  n[        SSSUSSUS9n[        R                  " [        5         UR                  X5        X$R                  :  d   e S S S 5        MZ     g ! , (       d  f       Ml  = f)Nr   rq   r   r   Tr1   )rL   r2   rO   max_funr   r$   rN   )r   r   pytestwarnsr   r9   r\   r@   rA   r   rN   rE   s        r-    test_lbfgs_classification_maxfunr   (  sm     G&
!!
 \\,-GGAMkk))) .- ' .-s   #A&&
A5	c                     Sn[          HY  n[        SSSSUSSUS9n[        R                  " [        5         UR                  X5        X$R                  :  d   e S S S 5        M[     g ! , (       d  f       Mm  = f)	Nr   rq   r   g        r   Tr1   )rL   r2   r   rO   r   r   r$   rN   )r   r   r   r   r   r9   r\   r   s        r-   test_lbfgs_regression_maxfunr   =  sp     G&
!!	
 \\,-GGAMkk))) .- ' .-s   #A''
A6	c            
         SS/SS/SS/SS//n / SQnS	 H  n[        S
SUSSSS9n[        [        S9   UR                  X5        UR                  R
                  nUR                  X5        UR                  R
                  nS S S 5        US:X  a
  WW:X  d   eM  US:X  d  M  UR                  [        SUR                  5      -  W:X  a  M   e   g ! , (       d  f       NT= f)Nr   r   r1      rn   )r1   r1   r1   r   )
invscalingconstantrJ      g      ?T)rL   r2   learning_raterO   power_t
warm_startr4   r   r   	   )	r   r   r   r9   
_optimizerr   rM   powr   )r@   rA   r   rE   prev_etapost_etas         r-   test_learning_rate_warmstartr   S  s    
Q!Q!Q"b*AA3 '
 &89GGAM~~33HGGAM~~33H	 : J&x'''l*))Cs{{,CCxOOO% 4 :9s   AC
C	c            
      r   [        SSSS9u  p[        SSSSSSS	S
9nUR                  X5        UR                  X5      S:  d   e[        SSSSSSS	S9n[	        S5       H  nUR                  X/ SQS9  M     UR                  X5      S:  d   e[        SS9nUR                  X5      R                  U 5        g )Nr   r   Tr    r$   return_indicatorrq   rr   r   r   rQ   )rL   r2   r3   rO   r$   rN   rM   g
ףp=
?rJ   )rL   r2   rO   r$   rN   r3   rM   r&   )r   r1   r   r   r   rT   ?early_stopping)r   r   r9   r   r=   rh   r   )r@   rA   rE   rF   s       r-   test_multilabel_classificationr   l  s     *1tDA C GGAM99Q?T!!! C 3Zo6 99Q?S    t
,CGGAM!r0   c                      [        SSSS9u  p[        SSSSSS	9nUR                  X5        UR                  X5      S
:  d   eg )Nr   rn      )r    	n_targetsr$   rq   r   {Gz?r1   )rL   r2   rO   r   r$   r   )r   r   r9   r   r@   rA   rE   s      r-   test_multioutput_regressionr     sK    SABGDA
2TUC GGAM99Q?S   r0   c                      SS//n S/n[        SS9nUR                  XSS/S9  [        R                  " [        5         UR                  XSS/S9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   rJ   rL   r1   rT   )r   rh   r   raises
ValueErrorr@   rA   clfs      r-   test_partial_fit_classes_errorr     s^    
QA	
A
u
%COOA1a&O)	z	"q!f- 
#	"	"s   A
A(c            
         [          H  u  p[        SSSSSSS9n[        [        S9   UR	                  X5        S S S 5        UR                  U 5      n[        SSSSS	9n[        S5       H'  nUR                  X[        R                  " U5      S
9  M)     UR                  U 5      n[        X55        UR                  X5      S:  a  M   e   g ! , (       d  f       N= f)NrJ   r&   r1   r   rr   rQ   )rL   rO   r$   r   r3   rM   r4   )rL   r$   r3   rM   rT   r   )classification_datasetsr   r   r   r9   r   r=   rh   r)   uniquer   r   )r@   rA   rE   pred1rF   pred2s         r-   test_partial_fit_classificationr     s     ("
 &89GGAM :Aq
 sAOOA"))A,O7 A5(yy%%%) ( :9s   C
C	c                      [        SS9n U R                  S/S/S/// SQ/ SQS9  U R                  S	//S
/5        U R                  S/S/S/S	/// SQ5      S:  d   eg )Nr   )r$   r1   r   r   )abc)r   r   r   drT   r   r   )r   rh   r   )r   s    r-   test_partial_fit_unseen_classesr     sl     Q
'COOaS1#sO_>ROSOOaSEC5!99qcA3aS)+?@1DDDr0   c                  $   [         n [        nS H  n[        SSSSSU R                  S   US9n[        R
                  " 5          [        R                  " S	[        5        UR                  X5        S S S 5        UR                  U 5      n[        SSSSU R                  S   US
9n[        S5       H  nUR                  X5        M     UR                  U 5      n[        XF5        UR                  X5      nUS:  a  M   e   g ! , (       d  f       N= f)N)r   r   rJ   r&   r   r1   r   r   )rL   rO   rN   r$   rM   
batch_sizerP   rs   )rL   rN   rM   r$   r   rP   g?)X_regy_regr   r   r   r   r   r   r9   r   r=   rh   r   r   )r@   rA   rP   rE   r   rF   r   r   s           r-   test_partial_fit_regressionr     s     	AA#wwqz
 $$&!!(,>?GGAM ' A#wwqz
 sAOOA!  A%		!t||9  '&s   -D
D	c                      SS/SS//n SS/n[         R                  " [        5         [        SS9R	                  XS/S9  S S S 5        [        [        S	S9S
5      (       a   eg ! , (       d  f       N)= f)Nr   r   r1   r   r   rJ   r   rT   rq   rh   )r   r   r   r   rh   hasattr)r@   rA   s     r-   test_partial_fit_errorsr     sp    
Q!QA	
AA 
z	"U#//qc/B 
# }G4mDDDDD	 
#	"s   A##
A1c                     [         R                  R                  S5      n Sn[         R                  " [         R                  5      R
                  nX R                  US4S9-  nU R                  US9n[        5       nSn[        R                  " [        US9   [        R                  " 5          [        R                  " S5        UR                  X45        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r   )r   zrSolver produced non-finite parameter weights. The input data may contain large values and need to be preprocessed.matchrs   )r)   r~   r   finfofloat64maxuniformstandard_normalr   r   r   r   r   r   r   r9   )rngr    fmaxr@   rA   r   msgs          r-   test_nonfinite_paramsr     s     ))


"CI88BJJ##D{{A{//A+A
.C	/  
z	-$$&!!(+GGAM ' 
.	-&& 
.	-s$   C7-(C&C7&
C4	0C77
Dc                     [         S S n [        S S n[        SSSS9n[        [        S9   UR                  X5        S S S 5        UR                  U 5      nUR                  U 5      nUR                  S   SpeUR                  SS	9nUR                  SS	9nUR                  XV4:X  d   e[        Xx5        [        U[        R                  " U5      5        [        XS S 2S4   5      S
:X  d   eg ! , (       d  f       N= f)Nr   rn   r   r1   )r2   rN   r$   r4   r   r   axisrS   )r6   r7   r   r   r   r9   ri   predict_log_probar   argmaxr   r   r)   logr
   	r@   rA   r   y_probay_log_probar    	n_classes	proba_maxproba_log_maxs	            r-   test_predict_proba_binaryr    s    AA
1RS
TC	"4	5 
6"G''*KWWQZ	A&I&&A&.M==Y2222y0K1AqDM*c111 
6	5s   C,,
C:c                     [         S S n [        S S n[        SS9n[        [        S9   UR                  X5        S S S 5        UR                  U 5      nUR                  U 5      nUR                  S   [        R                  " U5      R                  peUR                  SS9nUR                  SS9nUR                  XV4:X  d   e[        Xx5        [        U[        R                  " U5      5        g ! , (       d  f       N= f)Nr   rn   )r2   r4   r   r1   r   )X_digits_multiy_digits_multir   r   r   r9   ri   r   r   r)   r   r   r   r   r   r   r  s	            r-   test_predict_proba_multiclassr  )  s    sAsA
1
-C	"4	5 
6"G''*KWWQZ1):):	A&I&&A&.M==Y2222y0K1 
6	5s   C00
C>c                     [        SSSS9u  pUR                  u  p#[        SSSS9nUR                  X5        UR	                  U 5      nUR                  X#4:X  d   e[        US:  U5        UR                  U 5      nUR                  S	S
9nUR                  S	S
9nUR                  S	5      S	-
  R                  UR                  S	5      S	-
  5      S:  d   e[        Xx5        [        U[        R                  " U5      5        g )Nr   r   Tr   rq      rL   r2   r$   rR   r1   r   g|=)r   r   r   r9   ri   r   r   r   r*   dotr   r)   r   )	r@   rw   r    r  r   r  r  r  r  s	            r-   test_predict_proba_multilabelr  >  s     *1tDA 77I
w2A
NCGGAM"G==Y2222w}a(''*KA&I&&A&.MKKNQ##GKKNQ$67%???y0K1r0   c            	      *   [        SSSSS9u  pS H  n[        SSSSUS9n[        SSSSUS9n[        R                  " 5          [        R                  " S[
        5        UR                  X5        UR                  X5        S S S 5        [        R                  " UR                  S   UR                  S   5      (       a  M   e   [        SSSSS	S9n[        SSSSS
S9n[        R                  " 5          [        R                  " S[
        5        UR                  X5        UR                  X5        S S S 5        [        R                  " UR                  S   UR                  S   5      (       a   eg ! , (       d  f       N= f! , (       d  f       NX= f)Nr   rn   r1   r   )r    r!   r   r$   )TF)r2   rO   r   r$   r   rs   TF)
r   r   r   r   r   r   r9   r)   array_equalr<   )r@   rA   r   mlp1mlp2s        r-   test_shuffler  V  s`   RAQRSDA ! 
  
 $$&!!(,>?HHQNHHQN '
 ~~dkk!ndkk!n====) !. qQQPTD qQQPUD 
	 	 	"h(:; 
#
 ~~dkk!ndkk!n=====' '& 
#	"s   >E34>F3
F	
Fcsr_containerc                 F   [         S S n[        S S nU " U5      n[        SSSS9nUR                  X5        UR	                  U5      nUR                  X25        UR	                  U5      n[        XV5        UR	                  U5      nUR	                  U5      n[        XV5        g )Nr   rq      r1   r  )r6   r7   r   r9   r   r   r   )r  r@   rA   X_sparserE   r   r   s          r-   test_sparse_matricesr    s     	AAQH
w2A
NCGGAMKKNEGGHKK!E%KKNEKK!Eu$r0   c                      SS/SS//n SS/n[        SSSS	9nUR                  X5        UR                  UR                  :  d   eg )
Nr   r   r1   r   r   rR     rJ   )r   rO   rL   )r   r9   rO   r\   r   s      r-   test_tolerancer    sN     Q!QA	
AA
C$u
=CGGAM<<#++%%%r0   c                  R   SS/SS//n SS/n[        SSSSS9n[        R                  n[        5       =[        l        n[	        [
        S	9   UR                  X5        S S S 5        UR                  X5        U[        l        S
UR                  5       ;   d   eg ! , (       d  f       NA= f)Nr   r   r1   r   r   rJ   r   )rL   rO   verboser2   r4   	Iteration)	r   sysstdoutr   r   r   r9   rh   getvalue)r@   rA   r   
old_stdoutoutputs        r-   test_verbose_sgdr&    s    
Q!QA	
AA
uq"QR
SCJ"*$CJ	"4	5 
6OOACJ&//++++ 
6	5s   B
B&MLPEstimatorc                    [         S S n[        S S nSnU " USSSS9nUR                  X5        UR                  UR                  :  d   eUR
                  b   e[        UR                  [        5      (       d   eUR                  nUR                  n[        U5      U:X  d   eXc-   US   :  d   eXc-   US   :  d   eU " USSS	S9nUR                  X5        UR                  b   eUR                  b   eUR
                  c   eg )
Nr&   rQ   r  rJ   T)r   rO   rL   r   r   F)r6   r7   r9   rO   r\   rb   
isinstancevalidation_scores_listbest_validation_score_r   )r'  r@   rA   r   mlp_estimatorvalid_scoresbest_valid_scores          r-   test_early_stoppingr1    s9   AA
C $uTM a!!M$9$9999##+++m66==== 33L$;;| 0000!L$4444!L$4444 !$uUM a++333//777##///r0   c                      SS/SS//n SS/n[        SSSS	S
9nUR                  X5        UR                  UR                  :  d   eSUR                  R
                  :  d   eg )Nr   r   r1   r   r   rR   r  rJ   adaptive)r   rO   rL   r   gư>)r   r9   rO   r\   r   r   r   s      r-   test_adaptive_learning_rater4    sf    
Q!QA	
AA
C$uJ
WCGGAM<<#++%%%#.......r0   c            	      v   [         n [        n[        R                  " S/S-  S/S-  -   5      n[        R                  " S/S-  S/S-  -   S/S-  -   5      n[        R                  " S/S-  S/S-  -   S/S-  -   5      n[        R                  " S/S	-  S/S	-  -   S/S
-  -   S/S
-  -   5      n[        R                  " S/S-  S/S-  -   S/S-  -   S/S-  -   S/S-  -   5      n[	        SSSSSS9R                  X5      nUR                  X5        UR                  X5        X$XV4 H  n[	        SSSSSS9R                  X5      nS[        R                  " U5      -  n	[        R                  " [        [        R                  " U	5      S9   UR                  X5        S S S 5        M     g ! , (       d  f       M  = f)Nr   K   r1   (   r   F   r   r   %   &   r  r   rq   Tro   r   )r2   rL   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)   r;   r   r9   r   r   r   r   reescape)
r@   rA   
y_2classes
y_3classesy_3classes_alt
y_4classes
y_5classesr   y_imessages
             r-   test_warm_startrF    s   AA1#(aS2X-.J1#(aS2X-b89JXXqcBh!r1QC"H<=N1#(aS2X-b8A38CDJ1#(aS2X-b8A38CqcBhNOJ WBTX	c!i  GGAMGGAJC 
 #a) 	246IIcNC 	
 ]]:RYYw-?@GGAO A@ D A@s   
F))
F8	c                 N   [         [        p!SnU " SSSUS9n[        R                  " 5          [        R                  " S[
        5        UR                  X5        X4R                  :X  d   eUR                  X5        X4R                  :X  d   e S S S 5        g ! , (       d  f       g = f)Nr   r   rJ   T)r2   rL   r   rO   rs   )r;  r<  r   r   r   r   r9   r\   )r'  r@   rA   rO   r   s        r-   test_warm_start_full_iterationrH    s     6qH
UthC 
	 	 	"h(:;;;&&&;;&&& 
#	"	"s   A B
B$c                      [         S S n [        S S nSnSnS HE  n[        X#SUS9nUR                  X5        UR                  US-   :X  d   eX5R
                  :  a  ME   e   g )Nr&   r   r  )r   rn   r   r   r&   rJ   r   rO   rL   n_iter_no_changer1   )r6   r7   r   r9   rd   r\   )r@   rA   r   rO   rK  r   s         r-   test_n_iter_no_changerL    s~     	AA
CH 0uGW
 	 ((,<q,@@@@++%%% 0r0   z-ignore::sklearn.exceptions.ConvergenceWarningc                      [         S S n [        S S nSn[        R                  nSn[	        X$SUS9nUR                  X5        UR                  U:X  d   eUR                  UR                  S-
  :X  d   eg )Nr&   g    eAr  rJ   rJ  r1   )r6   r7   r)   ra   r   r9   r\   rd   )r@   rA   r   rK  rO   r   s         r-   test_n_iter_no_change_infrN    s     	AA C vvH
5CSC GGAM ;;(""" $$a777r0   c                      SS/SS/SS/SS//n / SQn[        SS9n[        R                  " [        S	S
9   UR	                  X5        S S S 5        g ! , (       d  f       g = f)Nr1   r   r   r   rn   )r   r   r   r1   Tr   z0The least populated class in y has only 1 memberr   )r   r   r   r   r9   r   s      r-   test_early_stopping_stratifiedrP  6  s^    
Q!Q!Q!Q(AA
t
,C	L
 	
 
 
s   A
Ac                  P   [        SSSSSS9n U R                  [        S S [        S S 5        U R	                  [        SS  5      nU R                  [        SS  5      n[        SSSSSS9nUR                  [        S S R                  [        R                  5      [        S S 5        UR	                  [        SS  R                  [        R                  5      5      nUR                  [        SS  R                  [        R                  5      5      n[        X5        [        X%SS	9  g )
Nrr   rn   r   r1   r&   rK   r3   r2   r$   rO   r   ,  r   rtol)r   r9   X_digitsy_digitsr   ri   astyper)   float32r   r   )mlp_64pred_64proba_64mlp_32pred_32proba_32s         r-   "test_mlp_classifier_dtypes_castingra  B  s    vAQUF JJx~x~.nnXcd^,G##HSTN3HvAQUF JJx~$$RZZ0(4C.AnnXcd^222::>?G##HSTN$9$9"**$EFHw(HU3r0   c                     [        SSSSSS9n U R                  [        S S [        S S 5        U R	                  [        SS  5      n[        SSSSSS9nUR                  [        S S R                  [        R                  5      [        S S 5        UR	                  [        SS  R                  [        R                  5      5      n[        XSS	9  g )
Nrr   rR  r1   r   r   rS  rT  gMb@?rU  )	r   r9   rW  rX  r   rY  r)   rZ  r   )r[  r\  r^  r_  s       r-   !test_mlp_regressor_dtypes_castingrc  V  s    vAQUF JJx~x~.nnXcd^,GvAQUF JJx~$$RZZ0(4C.AnnXcd^222::>?GG51r0   r   	Estimatorc                    [         R                  U 5      [        p2U" SSSSSS9nUR                  US S US S 5        UR	                  USS  5      n[        UR                   Vs/ s H  ofR                  U :H  PM     sn5      (       d   e[        UR                   Vs/ s H  owR                  U :H  PM     sn5      (       d   eU[        :X  a  UR                  U :X  d   eg g s  snf s  snf )Nrr   rR  r1   r   rK   rS  rT  )
rW  rY  rX  r9   r   r?   rW   r   r<   r   )r   rd  r@   rA   rE   pred	interceptcoefs           r-   test_mlp_param_dtypesri  f  s    
 ??5!8q
vAPTC GGAdsGQtW;;qwD#//J/Y5(/JKKKK

;


e#
;<<<<L zzU""" !	 K;s   $C!C&c                 4   [        SSSSS9nS//S/p2UR                  X#5        U S-  n[        R                  " X5        [        R                  " U5      nS//S	/pv[        S5       H  nUR                  Xg5        M     UR                  U5      n	[        XS
S9  g)zULoading from MLP and partial fitting updates weights. Non-regression
test for #19626.)ro   ro   r   r   )r2   r$   rM   rO   r   r   zmlp.pklr1   -C6?rU  N)	r   r9   joblibdumploadr=   rh   r   r   )
tmp_pathpre_trained_estimatorfeaturestargetpickled_fileload_estimatorfine_tune_featuresfine_tune_target_predicted_values
             r-   (test_mlp_loading_from_joblib_partial_fitry  z  s     ) rdUX uqcf h/ i'L
KK%4[[.N ./C51#(3Z""#5H  %,,-?@OODAr0   c                    [         R                  " S5      n[        R                  R	                  S5      nUR                  UR                  SS5      SS/S9nUR                  [        R                  " SS5      S	S
9nU " SSS9n[        R                  " 5          [        R                  " S[        5        UR                  X45        SSS5        g! , (       d  f       g= f)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columnsr1   	colname_y)r~  nameTrQ   )r   validation_fractionerrorN)r   importorskipr)   r~   r   	DataFramerandnSeriesfullr   r   r   UserWarningr9   )rd  pdr   r@   rA   models         r-   test_preserve_feature_namesr    s     
		X	&B
))


"C
#))B*[+4NOA
		rwwr1~K	8ATsCE		 	 	"g{3		! 
#	"	"s   -C
Cc                    U " SSSSS9n[         R                  " 5          [         R                  " S[        5        UR	                  [
        [        5        [        UR                  5      nUR                  SS9  UR	                  [
        [        5        SSS5        [        UR                  5      W:  d   eg! , (       d  f       N*= f)	z0Check that early stopping works with warm start.r   r   T)rO   r$   r   r   rs      rO   N)
r   r   r   r   r9   r;  r<  r>   r+  
set_params)r'  rE   n_validation_scoress      r-   'test_mlp_warm_start_with_early_stoppingr    s     !TC 
	 	 	"h(:;!#"8"89# 
# s%%&)<<<< 
#	"s   A4B77
CrL   )rJ   adamrq   c           	         U " USSS[         R                  SS9n[        R                  " [        5         UR                  [        [        5        SSS5        UR                  S:X  d   eUR                  SS9  [        R                  " [        5         UR                  [        [        5        SSS5        UR                  S:X  d   eg! , (       d  f       N= f! , (       d  f       N2= f)	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   )rL   r   r   rO   rK  r$   Nr  r  )
r)   ra   r   r   r   r9   r;  r<  r\   r  )r'  rL   r  s      r-   "test_mlp_warm_start_no_convergencer    s     E 
(	)		&&! 
*==B	b!	(	)		&&! 
*==B 
*	)
 
*	)s   CC
C
C'c                     U " SSS9R                  [        [        5      nSn[        R                  " [
        US9   UR                  [        [        5        SSS5        g! , (       d  f       g= f)zgCheck 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)r9   r;  r<  r   r   r   rh   )r'  rE   r   s      r-   test_mlp_partial_fit_after_fitr    sJ     d
;
?
?
OC
<C	z	-' 
.	-	-s   A
A-c                     [        SSSSSSSSSS	S
S9n [        R                  " 5          [        R                  " S[        5        [        R                  " S[
        5        U R                  [        [        5        SSS5        [        U R                  S   5      [        [        R                  5      :X  d   e[        U R                  S   [        5      (       d   eg! , (       d  f       Nh= f)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   rJ   rk  r   r1   Tr  r   r   )r2   rN   rL   r3   r   rM   r   rO   r   rK  r$   rs   Nr)  )r   r   r   r   RuntimeWarningr   r9   r;  r<  strr+  r)   nanr*  float)rE   s    r-   test_mlp_diverging_lossr    s      C 
	 	 	" 	h7h(:; 
# s%%b)*c"&&k999c,,R0%8888 
#	"s   AC
C*c            
      &   [        SSSSS9u  p[        R                  " U5      n[        SSSSSSSS	9n[	        S0 UD6nUR                  XUS
9  [	        S0 UD6R                  XS S
9n[        UR                  U 5      UR                  U 5      5        g )Nr&   r   ro   )r    r!   n_informativer$   r   r  Tr   )r2   rL   r   r   rM   r   r$   )sample_weight )r   r)   	ones_likedictr   r9   r   r   )r@   rA   swparamsm1m2s         r-   *test_mlp_sample_weight_with_early_stoppingr    s    	DA 
aBF 
 


B FF1rF"				#	#A	#	=BBJJqM2::a=1r0   c                    Sn[         R                  R                  U 5      n[         R                  " SSU5      nUR	                  [         R
                  " US-   5      5      nUR                  US5      n[        SSS9R                  X45      n[        SSS	SS
S[         R                  R                  U S-   5      S9R                  X45      n[        UR                  U5      UR                  U5      SS9  [        SSS	SS
S[         R                  R                  U S-   5      S9R                  X45      n[         R                  " UR                  U5      UR                  U5      SS9(       a   eg)z:Test MLP with Poisson loss and no hidden layer equals GLM.r&   r   r1   r)  gHz>)r3   r   poisson)r1   r   rq   )lossr2   rN   r3   rL   r   r$   rk  rU  squared_errorN)r)   r~   default_rnglinspacer  expreshaper	   r9   r   r   r   r   allclose)global_random_seedr   r   r@   rA   glmrE   s          r-   "test_mlp_vs_poisson_glm_equivalentr    s@   A
))

 2
3C
Aq!ABFF1q5M"A			!RA

-
1
1!
7C YY**+=+AB 
c!i  CKKNCKKN> YY**+=+AB 
c!i  {{3;;q>3;;q>EEEEr0   c                      [        SSSS9u  p[        SSS9n[        R                  " [        SS9   UR                  X5        S	S	S	5        g	! , (       d  f       g	= f)
z9Check error message when the validation set is too small.r   rn   r   )r    r!   r$   Tr  zThe validation set is too smallr   N)r   r   r   r   r   r9   )r@   rA   r  s      r-   test_minimum_input_sample_sizer  A  sE    Q11EDA1=E	z)J	K		! 
L	K	Ks   A
A)c__doc__r=  r!  r   ior   rl  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   rW  rX  r   r	  r
  r6   r7   r   r   r   regression_datasetsirisr~  r;  rr  r<  rG   rl   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r&  r1  r4  rF  rH  rL  filterwarningsrN  rP  ra  rc  rZ  r   ri  ry  r  r  r  r  r  r  r  r  r  r0   r-   <module>r     s   
 
       2 1 ) > E E  /;  t< (--htn=$3 t< (...x~>4C. ^$o& 
 bt5qu 	eu~& {		?*^FB@/F  78R 9R0  34* 5*(  78* 9*(  34* 5**P2#L!.&6E"J
E*2.2*20'>T .9% :% &,  -)FG0 H0</D -)FG' H'$&( KL8 M82	4(2  2::rzz":;}l&CD# E <#$B6 }l&CD E( -)FG= H= -)FG#;< = H2 -)FG	( H	(9@26"FJr0   