
    MpjP              	          S r SSKrSSKrSSKrSSKJr  SSKJrJ	r	  SSK
JrJr  SSKJrJr  SSKJrJr  SSKJrJr  SS	KJrJr  SS
KJrJr  SSKJr  SSKJr  SSK J!r!J"r"J#r#  SSK$J%r%J&r&J'r'J(r(J)r)  \RT                  RW                  S5      r,SS/SS/SS/SS/SS/SS//r-/ SQr./ SQr/SS/SS/SS//r0/ SQr1/ SQr2\Rf                  " 5       r4\,Rk                  \4Rl                  Rn                  5      r8\" \4Rr                  \4Rl                  \,S9u  \4l9        \4l6        \Rt                  " 5       r;\" \;Rr                  \;Rl                  \,S9u  \;l9        \;l6        S r<S r=S r>S r?\R                  R                  S/ SQ5      S 5       rBS  rCS! rDS" rES# rFS$ rGS% rHS& rI\R                  R                  S'\J" / \&Q\'Q\)Q\%Q\(Q\&S(\'-  -   5      5      S) 5       rK\R                  R                  S'\J" / \&Q\'Q\)Q\%Q\(Q\&S(\'-  -   5      5      S* 5       rLS+ rMS, rNS- rOS. rPS/ rQ\R                  R                  S0\" 5       \4Rr                  \4Rl                  4\" 5       \;Rr                  \;Rl                  4/5      S1 5       rRS2 rSS3 rTg)4z6Testing for the boost module (sklearn.ensemble.boost).    N)datasets)BaseEstimatorclone)DummyClassifierDummyRegressor)AdaBoostClassifierAdaBoostRegressor)LinearRegressionLogisticRegression)GridSearchCVtrain_test_split)SVCSVR)DecisionTreeClassifierDecisionTreeRegressor)shuffle)NoSampleWeightWrapper)assert_allcloseassert_array_almost_equalassert_array_equal)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS      )foor    r    r   r   r   )r   r   r   r   r   r      )r    r   r   )r   r   r   random_statec                  
   [         R                  " [        [        5      5      n [	        5       R                  [        U 5      n[        UR                  [        5      [         R                  " [        [        5      S45      5        g )Nr   )nponeslenXr   fitr   predict_proba)y_tclfs     g/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/sklearn/ensemble/tests/test_weight_boosting.pytest_oneclass_adaboost_probar.   6   sP     ''#a&/C


"
"1c
*Cc//2BGGSVQK4HI    c                     [        SS9n U R                  [        [        5        [	        U R                  [        5      [        5        [	        [        R                  " [        R                  " [        5      5      U R                  5        U R                  [        5      R                  [        [        5      S4:X  d   eU R                  [        5      R                  [        [        5      4:X  d   eg )Nr   r"   r   )r   r)   r(   y_classr   predictT	y_t_classr%   uniqueasarrayclasses_r*   shaper'   decision_functionr,   s    r-   test_classification_toyr;   ?   s    
!
,CGGAws{{1~y1ryyI!67FQ%%#a&!444  #))c!fY666r/   c                      [        SS9n U R                  [        [        5        [	        U R                  [        5      [        5        g Nr   r"   )r	   r)   r(   y_regrr   r2   r3   y_t_regrr:   s    r-   test_regression_toyr@   I   s,    

+CGGAvs{{1~x0r/   c                     [         R                  " [        R                  5      n [	        5       nUR                  [        R                  [        R                  5        [        XR                  5        UR                  [        R                  5      nUR                  S   [        U 5      :X  d   eUR                  [        R                  5      R                  S   [        U 5      :X  d   eUR                  [        R                  [        R                  5      nUS:  d   SU< 35       e[        UR                  5      S:  d   e[        [        S UR                   5       5      5      [        UR                  5      :X  d   eg )Nr   g?zFailed with score = c              3   8   #    U  H  oR                   v   M     g 7fNr"   .0ests     r-   	<genexpr>test_iris.<locals>.<genexpr>c        ?##   )r%   r5   iristargetr   r)   datar   r7   r*   r8   r'   r9   scoreestimators_set)classesr,   probarN   s       r-   	test_irisrS   P   s   ii$G

CGGDIIt{{#w-dii(E;;q>S\)))  +11!4GDDDIIdii-E3;1/uj11; s!###s?s??@CDXXXXr/   loss)linearsquareexponentialc                    [        U SS9nUR                  [        R                  [        R                  5        UR                  [        R                  [        R                  5      nUS:  d   e[        UR                  5      S:  d   e[        [        S UR                   5       5      5      [        UR                  5      :X  d   eg )Nr   )rT   r#   g?r   c              3   8   #    U  H  oR                   v   M     g 7frC   r"   rD   s     r-   rG    test_diabetes.<locals>.<genexpr>q   rI   rJ   )	r	   r)   diabetesrM   rL   rN   r'   rO   rP   )rT   regrN   s      r-   test_diabetesr]   f   s     A
6CGGHMM8??+IIhmmX__5E4<< s!###s?s??@CDXXXXr/   c                     [         R                  R                  S5      n U R                  S[        R
                  R                  S9nU R                  S[        R
                  R                  S9n[        SS9nUR                  [        R                  [        R
                  US9  UR                  [        R                  5      nUR                  [        R                  5       Vs/ s H  oUPM     nnUR                  [        R                  5      nUR                  [        R                  5       Vs/ s H  oUPM     nnUR                  [        R                  [        R
                  US9n	UR!                  [        R                  [        R
                  US9 V
s/ s H  oPM     nn
[#        U5      S:X  d   e[%        XFS   5        [#        U5      S:X  d   e[%        XxS   5        [#        U5      S:X  d   e[%        XS   5        ['        SSS9nUR                  [        R                  [        R
                  US9  UR                  [        R                  5      nUR                  [        R                  5       Vs/ s H  oUPM     nnUR                  [        R                  [        R
                  US9n	UR!                  [        R                  [        R
                  US9 V
s/ s H  n
U
PM     nn
[#        U5      S:X  d   e[%        XFS   5        [#        U5      S:X  d   e[%        XS   5        g s  snf s  snf s  sn
f s  snf s  sn
f )Nr   
   sizen_estimatorssample_weightr   rc   r#   )r%   randomRandomStaterandintrK   rL   r8   r[   r   r)   rM   r2   staged_predictr*   staged_predict_probarN   staged_scorer'   r   r	   )rngiris_weightsdiabetes_weightsr,   predictionspstaged_predictionsrR   staged_probasrN   sstaged_scoress               r-   test_staged_predictrv   t   s   
))


"C;;r(9(9;:L{{2HOO,A,A{B
"
-CGGDIIt{{,G?++dii(K%(%7%7		%BC%B!%BCdii(E # 8 8 CD C1Q CMDIIdiiLIIE##DIIt{{,#WWaW   !"b(((kb+AB}###e2%67}###e2%67 !
<CGGHMM8??:JGK++hmm,K%(%7%7%FG%F!%FGIIhmmX__DTIUE !!MM8??:J " 

A 	

   !"b(((kb+AB}###e2%67A DD  Hs   &L33L8L==M&Mc                  B   [        [        5       S9n SSS.n[        X5      nUR                  [        R
                  [        R                  5        [        [        5       SS9n SSS.n[        X5      nUR                  [        R
                  [        R                  5        g )N	estimator)r   r   )rc   estimator__max_depthr   ry   r#   )
r   r   r   r)   rK   rM   rL   r	   r   r[   )boost
parametersr,   s      r-   test_gridsearchr~      s}     )?)ABE &J u
)CGGDIIt{{# (=(?aPE"(&IJ
u
)CGGHMM8??+r/   c                  j   SS K n [        5       nUR                  [        R                  [        R
                  5        UR                  [        R                  [        R
                  5      nU R                  U5      nU R                  U5      n[        U5      UR                  :X  d   eUR                  [        R                  [        R
                  5      nX%:X  d   e[        SS9nUR                  [        R                  [        R
                  5        UR                  [        R                  [        R
                  5      nU R                  U5      nU R                  U5      n[        U5      UR                  :X  d   eUR                  [        R                  [        R
                  5      nX%:X  d   eg r=   )pickler   r)   rK   rM   rL   rN   dumpsloadstype	__class__r	   r[   )r   objrN   rt   obj2score2s         r-   test_pickler      s    
CGGDIIt{{#IIdii-ESA<<?D:&&&ZZ		4;;/F?? 
+CGGHMM8??+IIhmmX__5ESA<<?D:&&&ZZx7F??r/   c            
         [         R                  " SSSSSSSS9u  p[        5       nUR                  X5        UR                  nUR
                  S   S:X  d   eUS S2[        R                  4   USS  :  R                  5       (       d   eg )Ni  r_   r!   r   Fr   )	n_samples
n_featuresn_informativen_redundant
n_repeatedr   r#   )	r   make_classificationr   r)   feature_importances_r8   r%   newaxisall)r(   yr,   importancess       r-   test_importancesr      s    ''DA 
CGGAM**KQ2%%%BJJ';qr?:??AAAAr/   c                     [        5       n [        R                  " S5      n[        R                  " [
        US9   U R                  [        [        [        R                  " S/5      S9  S S S 5        g ! , (       d  f       g = f)Nz*sample_weight.shape == (1,), expected (6,)matchr   rd   )r   reescapepytestraises
ValueErrorr)   r(   r1   r%   r6   )r,   msgs     r-   ,test_adaboost_classifier_sample_weight_errorr      sP    

C
))@
AC	z	-7"**bT*:; 
.	-	-s   /A22
B c                  F   SSK Jn   [        U " 5       5      nUR                  [        [
        5        [        [        5       5      nUR                  [        [        5        SSK Jn  [        U" 5       SS9nUR                  [        [
        5        [        [        5       SS9nUR                  [        [
        5        SS/SS/SS/SS//n/ SQn[        [        5       5      n[        R                  " [        SS9   UR                  X45        S S S 5        g ! , (       d  f       g = f)	Nr   )RandomForestClassifier)RandomForestRegressorr"   r   )r    barr   r   zworse than randomr   )sklearn.ensembler   r   r)   r(   r>   r   r1   r   r	   r   r   r   r   )r   r,   r   X_faily_fails        r-   test_estimatorr      s    7 35
6CGGAv
SU
#CGGAw6
13!
DCGGAv
CE
2CGGAv !fq!fq!fq!f-F!F
SU
#C	z)<	= 
>	=	=s   7D
D c                      Sn [        SSS9n[        R                  " [        U S9   UR	                  [
        R                  [
        R                  5        S S S 5        g ! , (       d  f       g = f)Nz+Sample weights have reached infinite values   g      7@)rc   learning_rater   )r   r   warnsUserWarningr)   rK   rM   rL   )r   r,   s     r-   test_sample_weights_infiniter     sC    
7C
"D
AC	k	-		4;;' 
.	-	-s   /A
A,z(sparse_container, expected_internal_type   c                   ^  " S S[         5      n[        R                  " SSSSS9u  p4[        R                  " U5      n[        X4SS	9u  pVpxU " U5      n	U " U5      n
[        U" 5       SS
9R                  X5      n[        U" 5       SS
9R                  XW5      nUR                  U
5      nUR                  U5      n[        X5        UR                  U
5      nUR                  U5      n[        X5        UR                  U
5      nUR                  U5      n[        X5        UR                  U
5      nUR                  U5      n[        X5        UR                  X5      nUR                  Xh5      n[        X5        UR                  U
5      nUR                  U5      n[!        X5       H  u  nn[        UU5        M     UR#                  U
5      nUR#                  U5      n[!        X5       H  u  nn[        UU5        M     UR%                  U
5      nUR%                  U5      n[!        X5       H  u  nn[        UU5        M     UR'                  X5      nUR'                  Xh5      n[!        X5       H  u  nn[        UU5        M     UR(                   Vs/ s H  nUR*                  PM     nn[-        U4S jU 5       5      (       d   eg s  snf )Nc                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )Atest_sparse_classification.<locals>.CustomProbabilisticClassifieri  zGLogisticRegression variant that records the nature of the training set.c                 D   > [         TU ]  XUS9  [        U5      U l        U $ z<Modification on fit caries data type for later verification.rd   superr)   r   
data_type_selfr(   r   re   r   s       r-   r)   Etest_sparse_classification.<locals>.CustomProbabilisticClassifier.fit!  #    GKMK:"1gDOKr/   r   rC   __name__
__module____qualname____firstlineno____doc__r)   __static_attributes____classcell__r   s   @r-   CustomProbabilisticClassifierr     s    U	 	r/   r   r         *   )	n_classesr   r   r#   r   r"   r{   c              3   <   >#    U  H  n[        UT5      v   M     g 7frC   
issubclassrE   texpected_internal_types     r-   rG   -test_sparse_classification.<locals>.<genexpr>r       Dez!344e   )r   r   make_multilabel_classificationr%   ravelr   r   r)   r2   r   r9   r   predict_log_probar*   rN   staged_decision_functionziprj   rk   rl   rO   r   r   )sparse_containerr   r   r(   r   X_trainX_testy_trainy_testX_train_sparseX_test_sparsesparse_classifierdense_classifiersparse_clf_resultsdense_clf_resultssparse_clf_resdense_clf_resitypess    `                 r-   test_sparse_classificationr     s    (:  22rabDA 	A'71'M$GW%g.N$V,M +/1 
c."  */1 
c'  +22=A(008)= +<<]K(::6B0D +<<]K(::6B0D +88G(66v>0D +00G(..v>0D +CCMR(AA&I),-?)S%!.-@ *T +99-H(77?),-?)S%>=9 *T +??N(==fE),-?)S%!.-@ *T +77N(55fE),-?)S%>=9 *T $5#@#@A#@aQ\\#@EADeDDDDD Bs   K	c                 v  ^  " S S[         5      n[        R                  " SSSSS9u  p4[        X4SS	9u  pVpxU " U5      n	U " U5      n
[	        U" 5       SS
9R                  X5      n[	        U" 5       SS
9R                  XW5      nUR                  U
5      nUR                  U5      n[        X5        UR                  U
5      nUR                  U5      n[        X5       H  u  nn[        UU5        M     UR                   Vs/ s H  nUR                  PM     nn[        U4S jU 5       5      (       d   eg s  snf )Nc                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ ))test_sparse_regression.<locals>.CustomSVRi  z8SVR variant that records the nature of the training set.c                 D   > [         TU ]  XUS9  [        U5      U l        U $ r   r   r   s       r-   r)   -test_sparse_regression.<locals>.CustomSVR.fit  r   r/   r   rC   r   r   s   @r-   	CustomSVRr     s    F	 	r/   r   r   2   r   r   )r   r   	n_targetsr#   r   r"   r{   c              3   <   >#    U  H  n[        UT5      v   M     g 7frC   r   r   s     r-   rG   )test_sparse_regression.<locals>.<genexpr>  r   r   )r   r   make_regressionr   r	   r)   r2   r   rj   r   rO   r   r   )r   r   r   r(   r   r   r   r   r   r   r   sparse_regressordense_regressorsparse_regr_resultsdense_regr_resultssparse_regr_resdense_regr_resr   r   s    `                 r-   test_sparse_regressionr   u  s@    C  ##qrDA (81'M$GW%g.N$V,M )9;QOSS
 ()+ANRRO
 +22=A(0081F +99-H(77?+./B+W'!/>B ,X $4#?#?@#?aQ\\#?E@DeDDDDD As   D6c                       " S S[         5      n [        U " 5       SS9nUR                  [        [        5        [        UR                  5      [        UR                  5      :X  d   eg)z
AdaBoostRegressor should work without sample_weights in the base estimator
The random weighted sampling is done internally in the _boost method in
AdaBoostRegressor.
c                        \ rS rSrS rS rSrg)=test_sample_weight_adaboost_regressor.<locals>.DummyEstimatori  c                     g rC    )r   r(   r   s      r-   r)   Atest_sample_weight_adaboost_regressor.<locals>.DummyEstimator.fit  s    r/   c                 H    [         R                  " UR                  S   5      $ )Nr   )r%   zerosr8   )r   r(   s     r-   r2   Etest_sample_weight_adaboost_regressor.<locals>.DummyEstimator.predict  s    88AGGAJ''r/   r   N)r   r   r   r   r)   r2   r   r   r/   r-   DummyEstimatorr     s    		(r/   r  r!   rb   N)r   r	   r)   r(   r>   r'   estimator_weights_estimator_errors_)r  r|   s     r-   %test_sample_weight_adaboost_regressorr    sQ    ( ( n.Q?E	IIau''(C0G0G,HHHHr/   c                     [         R                  R                  S5      n U R                  SSS5      nU R	                  SS/S5      nU R                  S5      n[        [        SS95      nUR                  X5        UR                  U5        UR                  U5        [        [        5       5      nUR                  X5        UR                  U5        g)zL
Check that the AdaBoost estimators can work with n-dimensional
data matrix
r   3   r!   r   most_frequent)strategyN)r%   rg   rh   randnchoicer   r   r)   r2   r*   r	   r   )rm   r(   ycyrr|   s        r-   test_multidimensional_Xr    s    
 ))


"C		"aA	QFB	B	2BHIE	IIa	MM!	n./E	IIa	MM!r/   c                  L   [         R                  [         R                  p[        [	        5       5      n[        US9nSR                  UR                  R                  5      n[        R                  " [        US9   UR                  X5        S S S 5        g ! , (       d  f       g = f)Nrx   z {} doesn't support sample_weightr   )rK   rM   rL   r   r   r   formatr   r   r   r   r   r)   )r(   r   ry   r,   err_msgs        r-   -test_adaboostclassifier_without_sample_weightr    si    99dkkq%o&78I
y
1C077	8K8K8T8TUG	z	1 
2	1	1s   :B
B#c                     [         R                  R                  S5      n [         R                  " SSSS9nSU-  S-   U R	                  UR
                  S   5      S-  -   nUR                  S	S
5      nUS	==   S-  ss'   SUS	'   [        [        5       S
SS9n[        U5      n[        U5      nUR                  X5        UR                  US S	 US S	 5        [         R                  " U5      nSUS	'   UR                  XUS9  UR                  US S	 US S	 5      nUR                  US S	 US S	 5      nUR                  US S	 US S	 5      n	Xx:  d   eXy:  d   eU[        R                  " U	5      :X  d   eg )Nr   r   d     )numg?g?g-C6?r   r   r_   i'  ry   rc   r#   rd   )r%   rg   rh   linspacerandr8   reshaper	   r
   r   r)   	ones_likerN   r   approx)
rm   r(   r   regr_no_outlierregr_with_weightregr_with_outlierre   score_with_outlierscore_no_outlierscore_with_weights
             r-   $test_adaboostregressor_sample_weightr$    s    ))


#C
As%A	q3388AGGAJ/&89A			"aA bERKEAbE ("$11O _-o. !#2#2'LLOMM"];*003B3B@&,,QsVQsV<(..q"vq"v>000111v}}->????r/   c                      [        [        R                  " SS9SS06u  pp#[        SS9nUR	                  X5        [        [        R                  " UR                  U5      SS9UR                  U5      5        g )NT)
return_X_yr#   r   r"   r   axis)
r   r   load_digitsr   r)   r   r%   argmaxr*   r2   )r   r   r   r   models        r-    test_adaboost_consistent_predictr,    sm     (8				.(=?($GW B/E	IIg
		%%%f-A6f8Mr/   zmodel, X, yc                     [         R                  " U5      nSUS'   Sn[        R                  " [        US9   U R                  XUS9  S S S 5        g ! , (       d  f       g = f)Nir   z1Negative values in data passed to `sample_weight`r   rd   )r%   r  r   r   r   r)   )r+  r(   r   re   r  s        r-   #test_adaboost_negative_weight_errorr.    sJ     LLOMM"AG	z	1		!m	4 
2	1	1s   A
Ac                  h   [         R                  R                  S5      n U R                  SS9nU R	                  SS/SS9n[         R
                  " U5      S-  n[        SS	S
9n[        USS	S9nUR                  XUS9  [         R                  " UR                  5      R                  5       S:X  d   eg)zCheck that we don't create NaN feature importance with numerically
instable inputs.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/20320
r   )r  r_   r`   r   r   r  gtDS 'T	r_      )	max_depthr#      r  rd   N)r%   rg   rh   normalr  r  r   r   r)   isnanr   sum)rm   r(   r   re   tree	ada_models         r-   Ftest_adaboost_numerically_stable_feature_importance_with_small_weightsr8  '  s     ))


#C



#A

Aq6
%ALLOf,M!BR@D"TQSTIMM!mM488I223779Q>>>r/   c                    Sn[         R                  " USU S9u  p#[        SU S9R                  X#5      nUR	                  U5      n[        UR                  SS9SSS9  [        [        R                  " U5      5      SS	US-
  -  1:X  d   eUR                  U5       HH  n[        UR                  SS9SSS9  [        [        R                  " U5      5      SS	US-
  -  1:X  a  MH   e   UR                  S
S9R                  X#5        UR	                  U5      n[        UR                  SS9SSS9  UR                  U5       H  n[        UR                  SS9SSS9  M     g)zCheck that the decision function respects the symmetric constraint for weak
learners.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/26520
r!   r   )r   n_clusters_per_classr#   rf   r'  r   g:0yE>)atolr   r   rb   N)r   r   r   r)   r9   r   r5  rP   r%   r5   r   
set_params)global_random_seedr   r(   r   r,   y_scores         r-   test_adaboost_decision_functionr?  8  sY    I''!BTDA !:L
M
Q
QRS
WC##A&GGKKQK'6 ryy!"q"	A*>&???? //2+QT: 299W%&1bIM.B*CCCC 3 NNN"&&q,##A&GGKKQK'6//2+QT: 3r/   )Ur   r   numpyr%   r   sklearnr   sklearn.baser   r   sklearn.dummyr   r   r   r   r	   sklearn.linear_modelr
   r   sklearn.model_selectionr   r   sklearn.svmr   r   sklearn.treer   r   sklearn.utilsr   sklearn.utils._mockingr   sklearn.utils._testingr   r   r   sklearn.utils.fixesr   r   r   r   r   rg   rh   rm   r(   r1   r>   r3   r4   r?   	load_irisrK   permutationrL   ra   permrM   load_diabetesr[   r.   r;   r@   rS   markparametrizer]   rv   r~   r   r   r   r   r   r   r   r   r  r  r  r$  r,  r.  r8  r?  r   r/   r-   <module>rR     s   < 	    - 9 B E B   F ! 8 
  	iiA 	"XBx"bAq6Aq6Aq6:
(	"X1v1v	 
t{{''( DKKcJ 	4; !!#!(MM8??" x
J71Y, !DE
Y F
Y*8Z,$6B*< 8( .	
	
	
 	
 		

 	
 	^++	WEWEt .	
	
	
 	
 		

 	
 	^++	,E,E^I&*#@L 		tyy$++6		hmmX__=55?"";r/   