`L ikk 6dZddlZddlZddlZddlmZmZddlm Z m Z m Z ddl m Z ddlmZddlmZmZmZmZddlmZdd lmZmZdd lmZmZmZdd lmZdd l m!Z!dd l"m#Z#ddl$m%Z%ddl&m'Z'ddl(m)Z)m*Z*m+Z+m,Z,ddl-m.Z.m/Z/ddl0m1Z1m2Z2m3Z3ejhZ5e5jlddddfe5jncZ8Z9e%jue8Z;ejxd\Z=Z>ej~jddgidfdegidfddefgidfdefgddgddfgdZAd ZBd!ZCd"ZDd#ZEd$ZFd%ZGd&ZHd'ZId(ZJd)ZKd*ZLd+ZMd,ZNd-ZOd.ZPd/ZQd0ZRej~jd1e8e9edefd2ed34fgfe=e>edefd2ed34fgfgd5ZSej~jd6edefd7e/d8fg9eded8fd7e.d8fg9gd:d;g<d=ZTej~jd>edefd2ed?8fgd@eded?8fd2ed?8fgd@gdAZUdBZVej~jdCdDddEgdFfdGdHidIdJgfgdKZWdLZXej~jdMee)fee*fgdNZYej~jdMee)fee*fgedOdPZZej~jdMee)fee*fgej~jdQdRdSgedOdTZ[ej~jdMee)fee*fgedOdUZ\y)Vz4Testing for the VotingClassifier and VotingRegressorN)config_contextdatasets) BaseEstimatorClassifierMixinclone)make_multilabel_classification)DummyRegressor)RandomForestClassifierRandomForestRegressorVotingClassifierVotingRegressor)NotFittedError)LinearRegressionLogisticRegression) GridSearchCVcross_val_scoretrain_test_split)OneVsRestClassifier) GaussianNB)KNeighborsClassifier)StandardScaler)SVC)ConsumingClassifierConsumingRegressor _Registrycheck_recorded_metadata)DecisionTreeClassifierDecisionTreeRegressor)assert_almost_equalassert_array_almost_equalassert_array_equalT) return_X_yzparams, err_msg estimatorszGInvalid 'estimators' attribute, 'estimators' should be a non-empty listlr)r%weightsz0Number of `estimators` and weights must be equalctdi|}tjt|5|j t t dddy#1swYyxYw)Nmatch)r pytestraises ValueErrorfitXy)paramserr_msgensembles h/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/ensemble/tests/test_voting.py%test_voting_classifier_estimator_initr80sB, )&)H z 1 Qs A  Actdtfdtfgd}d}d}tjt|5}|j dddt jjtsJ|t|jjvsJt|drJ|jttt|drJy#1swYxYw) Nlr1lr2hardr%voting1predict_proba is not available when voting='hard'3'VotingClassifier' has no attribute 'predict_proba'r+ predict_proba)r rr.r/AttributeErrorrA isinstancevalue __cause__strhasattrr1X_scaledr3)eclf inner_msg outer_msg exec_infos r7test_predictproba_hardvotingrMKs .01E;M;O3PQ D DIEI ~Y 79  ioo// @@ @ IOO556 66 6t_-- -HHXqt_-- --s  CC!cJtdtfdtfgd}tdtfg}d}t j t |dz5|jtdddt j t |dz5|jtdddt j t |dz5|jtdddt j t |d z5|jtdddt j t |d z5|jtdddy#1swYxYw#1swYxYw#1swYxYw#1swYjxYw#1swYyxYw) Nr:r;softr=drzfThis %s instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.r r+r ) r rr r r.r/rpredictr2rA transformX_r)rIeregmsgs r7test_notfittedrV]s\ .01E;M;O3PQ D T>#345 6D C ~S3E-E F Q ~S3E-E F 1 ~S3E-E F q ~S3D-D E S ~S3D-D E ss<E)E5FF  F)E25E>F  FF"ct|}td|}t}td|fd|fd|fgd}t |t t d }|jd k\sJy ) z7Check classification by majority label on dataset iris. random_state  n_estimatorsrYr'rfgnbr<r=accuracyscoring?N)rr rr rr2r3meanglobal_random_seedclf1clf2clf3rIscoress r7test_majority_label_irisrjssi += >D !r@R SD v DT1a ! !! $R (A -- - 88Aq> ! !! $R (A -- - 88Aq> ! !! $R (A -- -rkct|}td|}t}td|fd|fd|fgdgd }t |t t d }|jd k\sJy )z>Check classification by average probabilities on dataset iris.rXrZr[r'r]r^rOr"r(rZr%r>r)r_r`rbN)rr rr rrHr3rcrds r7test_weights_irisrssm += >D !r@R SD  D T8Q CF ;;=C  rkc<td}td}tdd}td|fd|fd|fggd}tttd \}}}}|j ||j |}|j ||j |} |j ||j |} |j ||j |} tjtj|| | gd gd } t| | d td|fd|fd|fgd} td|fd|fd|fggd}| j |||j ||| j |}|j |}t||d y)zACheck weighted average regression prediction on diabetes dataset.rc)strategymedianquantile皙?)rurwrq)r)g?) test_sizer)axisr)r(decimalNr"r"r") r r rrSy_rr1rQnpaverageasarrayr)reg1reg2reg3rT X_r_trainX_r_test y_r_trainy_r_test reg1_pred reg2_pred reg3_pred ereg_predavgereg_weights_noneereg_weights_equalereg_none_predereg_equal_preds r7test_weights_regressorrs 6 *D 8 ,D :  D0@ SD0,IxHI.66x@II.66x@II.66x@II.66x@I ** Iy)45Az C 32' $(D)J+=>) $(D)J+=> )Y/9i0&..x8N(00:OCrkc t|}td|}t}tjddgddgdd gd d gd d gddgg}tjgd}t |j ||j|gdt |j ||j|gdt |j ||j|gdtd|fd|fd|fgdgd}t |j ||j|gdtd|fd|fd|fgdgd}t |j ||j|gdy)z6Manually check predicted class labels for toy dataset.rXrZr[皙333333ffffff333333 皙皙?333333?g@gffffff?g@gffffff@)r"r"r"r(r(r(r'r]r^r<r}rrrON) rr rrarrayr!r1rQr )rerfrgrhr2r3rIs r7test_predict_on_toy_problemrsY += >D !r@R SD  D txx1~--a02DE 4L4, > D txx1~--a02DErkctd}td}t}tjddgddgddgd d gg}tjgd }tjd d gddgddgddgg}tjddgddgddgddgg}tjddgddgddgddgg}d|ddz|ddz|ddzd z }d|d!d!z|d!d!z|d!d!zd z } d|dd!z|dd!z|dd!zd z } d|d"d!z|d"d!z|d"d!zd z } t d#|fd$|fd%|fgd&gd'(} | j ||j|} t|| ddd!)t| | d!d!d!)t| | dd!d!)t| | d"d!d!)d*}d+}tjt|,5}t d#|fd$|fd%|fgd-.} | j ||j|d/d/d/tjjtsJ|t|jjvsJy/#1swYSxYw)0z1Calculate predicted probabilities on toy dataset.rmrXrrrrrrrrr"r"r(r(g7sa"?g=?gRhp?gℶZ/?gl^Ԭ;?g(1BW?gU(V6?g&d?g?rx333333?ffffff?g5w?g9= qX?g_?g$/AY??r(rr"r#r'r]r^rO)r(r"r"rrr{r?r@r+r<r=N)rr rrrr r1rArr.r/rBrCrDrErF)rfrgrhr2r3clf1_resclf2_resclf3_rest00t11t21t31rIeclf_resrJrKrLs r7!test_predict_proba_on_toy_problemrs 3 /D !s 3D  D xx1~++A.HXa[^Q7Xa[^Q7Xa[^Q7Xa[^Q7CIEI ~Y 7(9t tTlUDMB6  A$$Q' ( ioo// @@ @ IOO556 66 6((s '8I11I:ctdddd\}}ttd}td|fgd } |j ||y #t $rYy wxYw) z7Check if error is raised for multilabel classification.r(r"Frm) n_classesn_labelsallow_unlabeledrYlinear)kernelovrr<r=N)rrrr r1NotImplementedError)r2r3clfrIs r7test_multilabelrs` )aS DAq c2 3C  ~f ED A sA AActd}tdd}t}td|fd|fd|fgd }d d gdd ggd gdgd}t ||d}|j t ty)zCheck GridSearch support.r"rXr#)rYr\r'r]r^rOr=rgY@r<)?rr)rrr)lr__Cr>r)r() estimator param_gridcvN)rr rr rr1rHr3)rfrgrhrIr4grids r7test_gridsearchrs 1 -D !qq AD v D u6"#_5F $6a @DHHXqrkct|}td|}t}tjddgddgdd gd d gg}tjgd }t d |fd|fd|fgddj ||}t d |fd|fd|fgddj ||}t|j||j|t|j||j|y)z:Check parallel backend of VotingClassifier on toy dataset.rXrZr[rrrrrrrrrr'r]r^rOr")r%r>n_jobsr(N) rr rrrr r1r!rQr rA)rerfrgrhr2r3eclf1eclf2s r7test_parallel_fitr1s += >D !r@R SD vVW  c!Qi  4L4, >vVW  c!Qi u}}Q'q)9:e11!4e6I6I!6LMrkc t|}td|}td|}td|fd|fd|fgd j t t tjtt f }td|fd|fd|fgd j t t }t|jt |jt t|jt |jt tjj|j!tt f }td|fgd }|j t t | |j t t |t|jt |jt t|jt |jt t#}td|fd|fd |fgd }d} t%j&t(| 5|j t t | dddGddt*t,} | } t%j&t(d5| j t t | dddy#1swYexYw#1swYyxYw)z1Tests sample_weight parameter of VotingClassifierrXrZr[T) probabilityrYr'r]svcrOr= sample_weight)sizeknnzJUnderlying estimator KNeighborsClassifier does not support sample weights.r+NceZdZdZy).test_sample_weight..ClassifierErrorFitctd)Nz!Error unrelated to sample_weight.) TypeError)selfrHr3rs r7r1z2test_sample_weight..ClassifierErrorFit.fitis?@ @rkN)__name__ __module__ __qualname__r1r-rkr7ClassifierErrorFitrhs Arkrz Error unrelated to sample_weight)rr rr r1rHr3roneslenr!rQr rArandom RandomStateuniformrr.r/rrr) rerfrgrhrrreclf3clf4rUrrs r7test_sample_weightrDs< += >D !r@R SD 4.@ AD 4L4, >v  c(ARWWc!fY%7c8  4L4, >v  c(A u}}X. h0GH H%u':':8'DII))*<=EECPQF9EUM $v FE IIhI7HHXq-(u}}X. X0FG H%t'9'9('C !D 4L5$-%? E WC y ,< (A] ;< A_mA  C y(J K: !=9::<<::s/J0 J<0J9<Kc Gddtt}|}td|fgd}|jtt t jtt fy)z:Check that VotingClassifier passes sample_weight as kwargsceZdZdZdZy)1test_sample_weight_kwargs..MockClassifierzAMock Classifier to check that sample_weight is received as kwargscd|vsJy)Nrr-)rr2r3argsrs r7r1z5test_sample_weight_kwargs..MockClassifier.fitws"m3 33rkN)rrr__doc__r1r-rkr7MockClassifierrts O 4rkrmockrOr=rN) rrr r1r2r3rrr)rrrIs r7test_sample_weight_kwargsrqsO4-4  C  v FD HHQ#a&!3H4rkct|}td|d}t}td|fd|fgdddg j t t }td|fd |fgdddg }|j| j t t t|jt |jt t|jt |jt |jd dj|jk(sJ|jddj|jk(sJy) NrXrZ)r\rY max_depthr'r]rOr"r()r>r)nb)rr)rr rr r1rHr3 set_paramsr!rQr rAr% get_params)rerfrgrhrrs r7!test_voting_classifier_set_paramsrs: += >D !&8D D z*test_set_estimator_drop..s">A 3+Z89s "rO)r>z4All estimators are dropped. At least one is requiredr+)r'r]rr"rrF)r%r>r)flatten_transformrrrr)rr rr r1r2r3rr!rQdictr%r estimators_allrr rAr.r/r0rrrR)rfrgrhrrrUX1y1s r7test_set_estimator_droprs 3 /D !r DD )r"r() rr r rrr1rHr3r rA)rerfrgrrs r7test_estimator_weights_formatrs += >D !r@R SD 4L4,/!Q E 4L4,/&9IRX E IIh IIh H%u':':8'Drkcft|}td|}t}tjddgddgdd gd d gg}tjgd }t d |fd|fd|fgdj ||}t d |fd|fd|fgddj ||}t d |fd|fd|fgddj ||}t|j|jdt|j|jdt|j|jdt|j||j|t|j|jddjd|j|y)z:Check transform method of VotingClassifier on toy dataset.rXrZr[rrrrrrrrrr'r]r^rOr=Tr%r>rF)r)r#rr(rr"N) rr rrrr r1r!rRshaper swapaxesreshape) rerfrgrhr2r3rrrs r7test_transformrs += >D !r@R SD v  c!Qi  4L4, >  c!Qi  4L4, >  c!Qi  uq)//8uq)//8uq)//;eooa0%//!2DE ##Aq)11&95??1;Mrkz X, y, voterr])r\ct|}tj|}|j||t j |j |jd|j||t j |j |j|}|j |j k(sJy)Nrr)r') rr fit_transformr1rrrrrQ)r2r3voterrHy_preds r7 test_none_estimator_with_weightsr s: %LE--a0H IIh)9I:  IIh)9I: ]]8 $F <<177 "" "rkrtreerXr%r r )idscddgddgddgg}gd}t|drJ|j|||jdk(sJy) Nr"r(r#rrrrr"r(n_features_in_)rGr1r )rr2r3s r7test_n_features_inr1sS& Q!Q!Q AAs,-- -GGAqM    "" "rkrrm)r%verbosectjddgddgddgddgg}tjgd }d }t|j||t j ||j d sJy) Nrrrrrrrrrza\[Voting\].*\(1 of 2\) Processing lr, total=.*\n\[Voting\].*\(2 of 2\) Processing rf, total=.*\n$r)rrrr1rer, readouterr)rcapsysr2r3patterns r7test_voting_verboserLs|( 4,t tTlS#JGHA A =  )A 88GV..03 44 4rkcddgddgddgg}gd}tdtfd td fd g }|j|||j }ddg}t ||y)z1Check get_feature_names_out output for regressor.r"r(r#rrrr r'rrrX)ignorerr votingregressor_lrvotingregressor_treeN)r rrr1get_feature_names_outr!)r2r3r> names_outexpected_namess r7%test_get_features_names_out_regressorrks Q!Q!Q AA  #% & *: ;  F JJq!,,.I*,BCNy.1rkzkwargs, expected_namesrO)r>r)votingclassifier_lr0votingclassifier_lr1votingclassifier_lr2votingclassifier_tree0votingclassifier_tree1votingclassifier_tree2r>r<votingclassifier_lrvotingclassifier_treec .ddgddgddgddgg}gd}tdd d td fd td fgi|}|j|||j |}|j }|j dt|k(sJt||y)zBCheck get_feature_names_out for classifier for different settings.r"r(r#rrrr)rr"r(rr%r'rrXrNr-) r rrr1rRrrrr!)kwargsrr2r3r>X_transrs r7&test_get_features_names_out_classifierr)s& Q!Q!Q!S*AA  %15 6 +; <   F JJq!q!G,,.I == s>2 22 2y.1rkcddgddgddgg}gd}tdtd fd td fgd d }|j||d}t j t |5|jdddy#1swYyxYw)zJCheck that error is raised when voting="soft" and flatten_transform=False.r"r(r#rrrr r'rrXrrOFrzYget_feature_names_out is not supported when `voting='soft'` and `flatten_transform=False`r+N)r rrr1r.r/r0r)r2r3r>rUs r7,test_get_features_names_out_classifier_errorr+s Q!Q!Q AA  %15 6 +; <  F JJq! $ z -'$$&'''s 'BB zEstimator, Childctjddgddgddgg}gd}tjtd5|d |gj ||gd d d d d y #1swYy xYw)zTest that the right error message is raised when metadata is passed while not supported when `enable_metadata_routing=False`.rr"r(rrr"r(r#z1is only supported if enable_metadata_routing=Truer+rr}armetadataN)rrr.r/r0r1) EstimatorChildr2r3s r7*test_routing_passed_metadata_not_supportedr3s{ 1a&1a&1a&)*AA M U 5%'"#''1IPS'TUUUs %A,,A5)enable_metadata_routingcD|d|fg}|jy)Nsub_est)get_metadata_routing)r1r2rs r7%test_get_metadata_routing_without_fitr8s$ i)* +Crkproprr0c tjddgddgddgg}gd}gdd}}|d |t jdi|d ifd |t jdi|d ifg}|j||fi||d k(r|n|i|j D]B}|d k(r||i} n||i} |dj } t| sJ| D]} td| ddd| Dy)z3Test that metadata is routed correctly for Voting*.rr"r(rrr-r}r.sub_est1)registryTsub_est2rr1)objmethodparentNr-) rrrset_fit_requestr1r%r<rr) r1r2r9r2r3rr0rrr'r<r6s r7+test_metadata_routing_for_voting_estimatorsrBs( 1a&1a&1a&)*AA'8M ;y{+;;KtTlK  ;y{+;;KtTlK   C CGGAqSTDO,C=RS^^ W ? "M*FH%FQ<((8}} WG # Ve Vv V W WrkcDtjddgddgddgg}gd}gdd}}|d |fg}d |jd }tjt t j| 5|j|||| dddy#1swYyxYw)zCTest that the right error is raised when metadata is not requested.rr"r(rrr-r}r.r6zb[sample_weight, metadata] are passed but are not explicitly set as requested or not requested for z.fitr+r/N) rrrr.r/r0rescaper1)r1r2r2r3rr0r error_messages r71test_metadata_routing_error_for_voting_estimatorsrFs 1a&1a&1a&)*AA'8M i)* +C !!& 0 6 z=)A BF 1MHEFFFs 7BB)]rrnumpyrr.sklearnrr sklearn.baserrrsklearn.datasetsr sklearn.dummyr sklearn.ensembler r r r sklearn.exceptionsrsklearn.linear_modelrrsklearn.model_selectionrrrsklearn.multiclassrsklearn.naive_bayesrsklearn.neighborsrsklearn.preprocessingr sklearn.svmr%sklearn.tests.metadata_routing_commonrrrr sklearn.treerrsklearn.utils._testingrr r! load_irisirisdatatargetr2r3rrH load_diabetesrSr~mark parametrizer8rMrVrjrorsrrrrrrrrrrrrrrrrr)r+r3r8rBrFr-rkr7r_s:  ,>>;( .ESS2*20 Gx yyAaC$++1   ) )! , !8 ! !T 2S2  U .01 2 U S"4"678 9 U "#5#789q!f M > *+* .$,  .  !DHF>17h &N&*:Z 5 D0>BB">  -/01qAB     +-.0a@A  2 #32 # ')*.A>? )q9:/Q?@   ./!$#%$#')*,#>?   )s;<-3?@  & 5'& 52(D 9   F 35LMN "2#"2('6+,@R.ST U  U+,@R.ST-.   +,@R.ST/:!>?-W.@  WB+,@R.ST-F.  Frk