
    /ЦiP              	          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  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(  \RR                  RU                  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//r// SQr0/ SQr1\Rd                  " 5       r3\+Ri                  \3Rj                  Rl                  5      r7\" \3Rp                  \3Rj                  \+S9u  \3l8        \3l5        \Rr                  " 5       r:\" \:Rp                  \:Rj                  \+S9u  \:l8        \:l5        S r;S r<S r=S r>\R~                  R                  S/ SQ5      S 5       rAS  rBS! rCS" rDS# rES$ rFS% rGS& rH\R~                  R                  S'\I" / \%Q\&Q\(Q\$Q\'Q\%S(\&-  -   5      5      S) 5       rJ\R~                  R                  S'\I" / \%Q\&Q\(Q\$Q\'Q\%S(\&-  -   5      5      S* 5       rKS+ rLS, rMS- rNS. rOS/ rP\R~                  R                  S0\" 5       \3Rp                  \3Rj                  4\" 5       \:Rp                  \:Rj                  4/5      S1 5       rQS2 rRS3 rSg)4z6Testing for the boost module (sklearn.ensemble.boost).    N)datasets)BaseEstimatorclone)DummyClassifierDummyRegressor)AdaBoostClassifierAdaBoostRegressor)LinearRegression)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     j/var/www/html/ai-image-ml/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   r1   r2   y_t_regrr9   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$   r4   iristargetr   r(   datar   r6   r)   r7   r&   r8   scoreestimators_set)classesr+   probarM   s       r,   	test_irisrR   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   )rS   r"   g?r   c              3   8   #    U  H  oR                   v   M     g 7frB   r!   rC   s     r,   rF    test_diabetes.<locals>.<genexpr>q   rH   rI   )	r	   r(   diabetesrL   rK   rM   r&   rN   rO   )rS   regrM   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   rb   r"   )r$   randomRandomStaterandintrJ   rK   r7   rZ   r   r(   rL   r1   staged_predictr)   staged_predict_probarM   staged_scorer&   r   r	   )rngiris_weightsdiabetes_weightsr+   predictionspstaged_predictionsrQ   staged_probasrM   sstaged_scoress               r,   test_staged_predictru   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   )rb   estimator__max_depthr   rx   r"   )
r   r   r   r(   rJ   rL   rK   r	   r   rZ   )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(   rJ   rL   rK   rM   dumpsloadstype	__class__r	   rZ   )r   objrM   rs   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_r7   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   rc   )r   reescapepytestraises
ValueErrorr(   r'   r0   r$   r5   )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   r0   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@)rb   learning_rater   )r   r   warnsUserWarningr(   rJ   rL   rK   )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" S
S9SS9R                  X5      n[        U" S
S9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 Vs/ s H  nUU:H  PM
     sn5      (       d   eg s  snf 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_classification.<locals>.CustomSVCi  z8SVC 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.rc   superr(   r   
data_type_selfr'   r   rd   r   s       r,   r(   1test_sparse_classification.<locals>.CustomSVC.fit!  #    GKMK:"1gDOKr.   r   rB   __name__
__module____qualname____firstlineno____doc__r(   __static_attributes____classcell__r   s   @r,   	CustomSVCr         F	 	r.   r   r         *   )	n_classesr   r   r"   r   r!   T)probabilityrz   )r   r   make_multilabel_classificationr$   ravelr   r   r(   r1   r   r8   r   predict_log_probar)   rM   staged_decision_functionzipri   rj   rk   rN   r   r   )sparse_containerexpected_internal_typer   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typests                       r,   test_sparse_classificationr     s    C  22rabDA 	A'71'M$GW%g.N$V,M +- 
c."  *- 
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U;U++U;<<<< B;s   K2Kc                     " 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 Vs/ s H  nUU:H  PM
     sn5      (       d   eg s  snf 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   rB   r   r   s   @r,   	CustomSVRr     r   r.   r   r   2   r   r   )r   r   	n_targetsr"   r   r!   rz   )r   r   make_regressionr   r	   r(   r1   r   ri   r   rN   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   r   s                       r,   test_sparse_regressionr   u  sQ    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@U;U++U;<<<< A;s    D?!E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 rB    )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$   zerosr7   )r   r'   s     r,   r1   Etest_sample_weight_adaboost_regressor.<locals>.DummyEstimator.predict  s    88AGGAJ''r.   r   N)r   r   r   r   r(   r1   r   r   r.   r,   DummyEstimatorr     s    		(r.   r   r    ra   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$   rf   rg   randnchoicer   r   r(   r1   r)   r	   r   )rl   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)Nrw   z {} doesn't support sample_weightr   )rJ   rL   rK   r   r   r   formatr   r   r   r   r   r(   )r'   r   rx   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'  rx   rb   r"   rc   )r$   rf   rg   linspacerandr7   reshaper	   r
   r   r(   	ones_likerM   r   approx)
rl   r'   r   regr_no_outlierregr_with_weightregr_with_outlierrd   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)   r1   )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   rc   )r$   r  r   r   r   r(   )r#  r'   r   rd   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  rc   N)r$   rf   rg   normalr  r  r   r   r(   isnanr   sum)rl   r'   r   rd   tree	ada_models         r,   Ftest_adaboost_numerically_stable_feature_importance_with_small_weightsr0  '  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"   re   r  r   g:0yE>)atolr   r   ra   N)r   r   r   r(   r8   r   r-  rO   r$   r4   r   
set_params)global_random_seedr   r'   r   r+   y_scores         r,   test_adaboost_decision_functionr7  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.   )Tr   r   numpyr$   r   sklearnr   sklearn.baser   r   sklearn.dummyr   r   r   r   r	   sklearn.linear_modelr
   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   rf   rg   rl   r'   r0   r=   r2   r3   r>   	load_irisrJ   permutationrK   r`   permrL   load_diabetesrZ   r-   r:   r?   rR   markparametrizer\   ru   r}   r   r   r   r   r   r   r   r   r   r  r  r  r$  r&  r0  r7  r   r.   r,   <module>rJ     s   < 	    - 9 B 1 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=W=t .	
	
	
 	
 		

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