
    riP              	          d Z ddlZddlZddlZddlmZ ddlmZm	Z	 ddl
mZmZ ddlmZmZ ddlmZ ddlmZmZ dd	lmZmZ dd
lmZmZ ddlmZ ddlmZ ddlm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z&m'Z'm(Z( ejR                  jU                  d      Z+ddgddgddgddgddgddggZ,g dZ-g dZ.ddgddgddggZ/g dZ0g dZ1 ejd                         Z3e+ji                  e3jj                  jl                        Z7 ee3jp                  e3jj                  e+      \  e3_8        e3_5         ejr                         Z: ee:jp                  e:jj                  e+      \  e:_8        e:_5        d Z;d Z<d Z=d Z>ej~                  j                  dg d      d        ZAd  ZBd! ZCd" ZDd# ZEd$ ZFd% ZGd& ZHej~                  j                  d' eIg e%e&e(e$e'e%d(e&z  z               d)        ZJej~                  j                  d' eIg e%e&e(e$e'e%d(e&z  z               d*        ZKd+ ZLd, ZMd- ZNd. ZOd/ ZPej~                  j                  d0 e       e3jp                  e3jj                  f e       e:jp                  e:jj                  fg      d1        ZQd2 ZRd3 ZSy)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                     t        j                  t        t                    } t	               j                  t        |       }t        |j                  t              t        j                  t        t              df             y )Nr   )nponeslenXr   fitr   predict_proba)y_tclfs     i/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/sklearn/ensemble/tests/test_weight_boosting.pytest_oneclass_adaboost_probar-   6   sP     ''#a&/C


"
"1c
*Cc//2BGGSVQK4HI    c                     t        d      } | j                  t        t               t	        | j                  t              t               t	        t        j                  t        j                  t                    | j                         | j                  t              j                  t        t              dfk(  sJ | j                  t              j                  t        t              fk(  sJ y )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                      t        d      } | j                  t        t               t	        | j                  t              t               y 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                     t        j                  t        j                        } t	               }|j                  t        j                  t        j                         t        | |j                         |j                  t        j                        }|j                  d   t        |       k(  sJ |j                  t        j                        j                  d   t        |       k(  sJ |j                  t        j                  t        j                        }|dkD  s
J d|       t        |j                        dkD  sJ t        t        d |j                  D                    t        |j                        k(  sJ y )Nr   g?zFailed with score = c              3   4   K   | ]  }|j                     y wNr!   .0ests     r,   	<genexpr>ztest_iris.<locals>.<genexpr>c        ?3##?   )r$   r4   iristargetr   r(   datar   r6   r)   r7   r&   r8   scoreestimators_set)classesr+   probarL   s       r,   	test_irisrQ   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                    t        | d      }|j                  t        j                  t        j                         |j                  t        j                  t        j                        }|dkD  sJ t        |j                        dkD  sJ t        t        d |j                  D                    t        |j                        k(  sJ y )Nr   )rR   r"   g?r   c              3   4   K   | ]  }|j                     y wrB   r!   rC   s     r,   rF   z test_diabetes.<locals>.<genexpr>q   rG   rH   )	r	   r(   diabetesrK   rJ   rL   r&   rM   rN   )rR   regrL   s      r,   test_diabetesrZ   f   s     A
6CGGHMM8??+IIhmmX__5E4<< s!###s?s??@CDXXXXr.   c                     t         j                  j                  d      } | j                  dt        j
                  j                        }| j                  dt        j
                  j                        }t        d      }|j                  t        j                  t        j
                  |       |j                  t        j                        }|j                  t        j                        D cg c]  }| }}|j                  t        j                        }|j                  t        j                        D cg c]  }| }}|j                  t        j                  t        j
                  |      }	|j!                  t        j                  t        j
                  |      D 
cg c]  }
|
 }}
t#        |      dk(  sJ t%        ||d          t#        |      dk(  sJ t%        ||d          t#        |      dk(  sJ t%        |	|d          t'        dd      }|j                  t        j                  t        j
                  |       |j                  t        j                        }|j                  t        j                        D cg c]  }| }}|j                  t        j                  t        j
                  |      }	|j!                  t        j                  t        j
                  |      D 
cg c]  }
|
 }}
t#        |      dk(  sJ t%        ||d          t#        |      dk(  sJ t%        |	|d          y c c}w c c}w c c}
w c c}w c c}
w )Nr   
   sizen_estimatorssample_weightr   r`   r"   )r$   randomRandomStaterandintrI   rJ   r7   rX   r   r(   rK   r1   staged_predictr)   staged_predict_probarL   staged_scorer&   r   r	   )rngiris_weightsdiabetes_weightsr+   predictionspstaged_predictionsrP   staged_probasrL   sstaged_scoress               r,   test_staged_predictrs   t   s   
))


"C;;r(9(9;:L{{2HOO,A,A{B
"
-CGGDIIt{{,G?++dii(K%(%7%7		%BC!CCdii(E # 8 8 CD1QDMDIIdiiLIIE##DIIt{{,#WM  !"b(((k+=b+AB}###e]2%67}###e]2%67 !
<CGGHMM8??:JGK++hmm,K%(%7%7%FG!GGIIhmmX__DTIUE !!MM8??:J " 
 	
M  !"b(((k+=b+AB}###e]2%67A DD  Hs   2	M=	M*	M	M<	Mc                  R   t        t                     } ddd}t        | |      }|j                  t        j
                  t        j                         t        t               d      } ddd}t        | |      }|j                  t        j
                  t        j                         y )N	estimator)r   r   )r`   estimator__max_depthr   rv   r"   )
r   r   r   r(   rI   rK   rJ   r	   r   rX   )boost
parametersr+   s      r,   test_gridsearchr{      s     )?)ABE &J uj
)CGGDIIt{{# (=(?aPE"(&IJ
uj
)CGGHMM8??+r.   c                  l   dd l } t               }|j                  t        j                  t        j
                         |j                  t        j                  t        j
                        }| j                  |      }| j                  |      }t        |      |j                  k(  sJ |j                  t        j                  t        j
                        }||k(  sJ t        d      }|j                  t        j                  t        j
                         |j                  t        j                  t        j
                        }| j                  |      }| j                  |      }t        |      |j                  k(  sJ |j                  t        j                  t        j
                        }||k(  sJ y r<   )pickler   r(   rI   rK   rJ   rL   dumpsloadstype	__class__r	   rX   )r}   objrL   rq   obj2score2s         r,   test_pickler      s!    
CGGDIIt{{#IIdii-ESA<<?D:&&&ZZ		4;;/FF?? 
+CGGHMM8??+IIhmmX__5ESA<<?D:&&&ZZx7FF??r.   c            	         t        j                  ddddddd      \  } }t               }|j                  | |       |j                  }|j
                  d   dk(  sJ |d dt        j                  f   |dd  k\  j                         sJ y )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    ''DAq 
CGGAqM**KQ2%%%BJJ';qr?:??AAAr.   c                     t               } t        j                  d      }t        j                  t
        |      5  | j                  t        t        t        j                  dg             d d d        y # 1 sw Y   y xY w)Nz*sample_weight.shape == (1,), expected (6,)matchr   ra   )r   reescapepytestraises
ValueErrorr(   r'   r0   r$   r5   )r+   msgs     r,   ,test_adaboost_classifier_sample_weight_errorr      sY    

C
))@
AC	z	- <7"**bT*:;< < <s   1A55A>c                  N   ddl m}  t         |              }|j                  t        t
               t        t                     }|j                  t        t               ddl m} t         |       d      }|j                  t        t
               t        t               d      }|j                  t        t
               ddgddgddgddgg}g d}t        t                     }t        j                  t        d      5  |j                  ||       d d d        y # 1 sw Y   y xY w)	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   ?DD$c                      d} t        dd      }t        j                  t        |       5  |j	                  t
        j                  t
        j                         d d d        y # 1 sw Y   y xY w)Nz+Sample weights have reached infinite values   g      7@)r`   learning_rater   )r   r   warnsUserWarningr(   rI   rK   rJ   )r   r+   s     r,   test_sample_weights_infiniter     sL    
7C
"D
AC	k	- (		4;;'( ( (s   /A##A,z(sparse_container, expected_internal_type   c                     G d dt               }t        j                  dddd      \  }}t        j                  |      }t        ||d	      \  }}}} | |      }	 | |      }
t         |d
      d      j                  |	|      }t         |d
      d      j                  ||      }|j                  |
      }|j                  |      }t        ||       |j                  |
      }|j                  |      }t        ||       |j                  |
      }|j                  |      }t        ||       |j                  |
      }|j                  |      }t        ||       |j                  |
|      }|j                  ||      }t        ||       |j                  |
      }|j                  |      }t!        ||      D ]  \  }}t        ||        |j#                  |
      }|j#                  |      }t!        ||      D ]  \  }}t        ||        |j%                  |
      }|j%                  |      }t!        ||      D ]  \  }}t        ||        |j'                  |
|      }|j'                  ||      }t!        ||      D ]  \  }}t        ||        |j(                  D cg c]  }|j*                   }}t-        |D cg c]  }||k(  	 c}      sJ y c c}w c c}w )Nc                   $     e Zd ZdZd fd	Z xZS )-test_sparse_classification.<locals>.CustomSVCz8SVC variant that records the nature of the training set.c                 L    t         |   |||       t        |      | _        | S z<Modification on fit caries data type for later verification.ra   superr(   r   
data_type_selfr'   r   rb   r   s       r,   r(   z1test_sparse_classification.<locals>.CustomSVC.fit!  %    GK1MK:"1gDOKr.   rB   __name__
__module____qualname____doc__r(   __classcell__r   s   @r,   	CustomSVCr         F	 	r.   r   r         *   )	n_classesr   r   r"   r   r!   T)probabilityrx   )r   r   make_multilabel_classificationr$   ravelr   r   r(   r1   r   r8   r   predict_log_probar)   rL   staged_decision_functionziprg   rh   ri   rM   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DAq 	A'711'M$GVWf%g.N$V,M +- 
c.'"  *- 
c'7  +22=A(008)+<= +<<]K(::6B02CD +<<]K(::6B02CD +88G(66v>02CD +00G(..vv>02CD +CCMR(AA&I),-?AR)S A%!.-@A +99-H(77?),-?AR)S :%>=9: +??N(==fE),-?AR)S A%!.-@A +77vN(55ffE),-?AR)S :%>=9: $5#@#@AaQ\\AEAU;++;<<< B;s   ,K 
K%c                     G d dt               }t        j                  dddd      \  }}t        ||d	      \  }}}} | |      }	 | |      }
t	         |       d
      j                  |	|      }t	         |       d
      j                  ||      }|j                  |
      }|j                  |      }t        ||       |j                  |
      }|j                  |      }t        ||      D ]  \  }}t        ||        |j                  D cg c]  }|j                   }}t        |D cg c]  }||k(  	 c}      sJ y c c}w c c}w )Nc                   $     e Zd ZdZd fd	Z xZS ))test_sparse_regression.<locals>.CustomSVRz8SVR variant that records the nature of the training set.c                 L    t         |   |||       t        |      | _        | S r   r   r   s       r,   r(   z-test_sparse_regression.<locals>.CustomSVR.fit  r   r.   rB   r   r   s   @r,   	CustomSVRr     r   r.   r   r   2   r   r   )r   r   	n_targetsr"   r   r!   rx   )r   r   make_regressionr   r	   r(   r1   r   rg   r   rM   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  s_    C  ##qrDAq (811'M$GVWf%g.N$V,M )9;QOSS
 ()+ANRRO
 +22=A(00813EF +99-H(77?+./BDV+W C'!/>BC $4#?#?@aQ\\@E@U;++;<<< A;s   E/E
c                       G d dt               } t         |        d      }|j                  t        t               t        |j                        t        |j                        k(  sJ y)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                       e Zd Zd Zd Zy)=test_sample_weight_adaboost_regressor.<locals>.DummyEstimatorc                      y rB    )r   r'   r   s      r,   r(   zAtest_sample_weight_adaboost_regressor.<locals>.DummyEstimator.fit  s    r.   c                 F    t        j                  |j                  d         S )Nr   )r$   zerosr7   )r   r'   s     r,   r1   zEtest_sample_weight_adaboost_regressor.<locals>.DummyEstimator.predict  s    88AGGAJ''r.   N)r   r   r   r(   r1   r   r.   r,   DummyEstimatorr     s    		(r.   r   r    r_   N)r   r	   r(   r'   r=   r&   estimator_weights_estimator_errors_)r   ry   s     r,   %test_sample_weight_adaboost_regressorr     sQ    ( ( n.Q?E	IIau''(C0G0G,HHHHr.   c                     t         j                  j                  d      } | j                  ddd      }| j	                  ddgd      }| j                  d      }t        t        d            }|j                  ||       |j                  |       |j                  |       t        t                     }|j                  ||       |j                  |       y)zX
    Check that the AdaBoost estimators can work with n-dimensional
    data matrix
    r   3   r    r   most_frequent)strategyN)r$   rd   re   randnchoicer   r   r(   r1   r)   r	   r   )rj   r'   ycyrry   s        r,   test_multidimensional_Xr     s    
 ))


"C		"aA	QFB	B	2BHIE	IIa	MM!	n./E	IIa	MM!r.   c                  P   t         j                  t         j                  }} t        t	                     }t        |      }dj                  |j                  j                        }t        j                  t        |      5  |j                  | |       d d d        y # 1 sw Y   y xY w)Nru   z {} doesn't support sample_weightr   )rI   rK   rJ   r   r   r   formatr   r   r   r   r   r(   )r'   r   rv   r+   err_msgs        r,   -test_adaboostclassifier_without_sample_weightr    sv    99dkkqA%o&78I
y
1C077	8K8K8T8TUG	z	1 1  s    BB%c                     t         j                  j                  d      } t        j                  ddd      }d|z  dz   | j	                  |j
                  d         dz  z   }|j                  d	d
      }|d	xx   dz  cc<   d|d	<   t        t               d
d      }t        |      }t        |      }|j                  ||       |j                  |d d	 |d d	        t        j                  |      }d|d	<   |j                  |||       |j                  |d d	 |d d	       }|j                  |d d	 |d d	       }|j                  |d d	 |d d	       }	||k  sJ ||	k  sJ |t        j                  |	      k(  sJ y )Nr   r   d     )numg?g?g-C6?r   r   r\   i'  rv   r`   r"   ra   )r$   rd   re   linspacerandr7   reshaper	   r
   r   r(   	ones_likerL   r   approx)
rj   r'   r   regr_no_outlierregr_with_weightregr_with_outlierrb   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. !Q#2#2'LLOMM"A];*003B3B@&,,QsVQsV<(..q"vq"v> 0000 1111v}}->????r.   c                     t        t        j                  d      ddi\  } }}}t        d      }|j	                  | |       t        t        j                  |j                  |      d      |j                  |             y )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    ss     (8				.(=?($GVWf B/E	IIgw
		%%%f-A6f8Mr.   zmodel, X, yc                     t        j                  |      }d|d<   d}t        j                  t        |      5  | j                  |||       d d d        y # 1 sw Y   y xY w)Nir   z1Negative values in data passed to `sample_weight`r   ra   )r$   r  r   r   r   r(   )r  r'   r   rb   r  s        r,   #test_adaboost_negative_weight_errorr    sU     LLOMM"AG	z	1 5		!Qm	45 5 5s   AAc                     t         j                  j                  d      } | j                  d      }| j	                  ddgd      }t        j
                  |      dz  }t        dd	
      }t        |dd	      }|j                  |||       t        j                  |j                        j                         dk(  sJ y)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  ra   N)r$   rd   re   normalr   r  r   r   r(   isnanr   sum)rj   r'   r   rb   tree	ada_models         r,   Ftest_adaboost_numerically_stable_feature_importance_with_small_weightsr'  '  s     ))


#C



#A

Aq6
%ALLOf,M!BR@D"TQSTIMM!QmM488I223779Q>>>r.   c                    d}t        j                  |d|       \  }}t        d|       j                  ||      }|j	                  |      }t        |j                  d      dd       t        t        j                  |            dd	|dz
  z  hk(  sJ |j                  |      D ]K  }t        |j                  d      dd       t        t        j                  |            dd	|dz
  z  hk(  rKJ  |j                  d
      j                  ||       |j	                  |      }t        |j                  d      dd       |j                  |      D ]   }t        |j                  d      dd       " y)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"   rc   r  r   g:0yE>)atolr   r   r_   N)r   r   r   r(   r8   r   r$  rN   r$   r4   r   
set_params)global_random_seedr   r'   r   r+   y_scores         r,   test_adaboost_decision_functionr.  8  sl    I''!BTDAq !:L
M
Q
QRSUV
WC##A&GGKKQK'6 ryy!"q"	A*>&???? //2 D+QT: 299W%&1bIM.B*CCCCD NNN"&&q!,##A&GGKKQK'6//2 ;+QT:;r.   )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   rd   re   rj   r'   r0   r=   r2   r3   r>   	load_irisrI   permutationrJ   r^   permrK   load_diabetesrX   r-   r:   r?   rQ   markparametrizerZ   rs   r{   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r'  r.  r   r.   r,   <module>rA     s   < 	    - 9 B 1 B   F ! 8 
  	iiA 	"XBx"bAq6Aq6Aq6:
(	"X1v1v	 x
t{{''( DKKcJ 	4; "8!!#!(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.   