`L iYw dddlZddlZddlZddlmZddlmZddlm Z m Z ddl m Z m Z mZmZddlmZmZddlmZmZmZddlmZdd lmZdd lmZmZmZmZm Z m!Z!m"Z"m#Z#dd l$m%Z%m&Z&dd l'm(Z(m)Z)dd l*m+Z+ddl,m-Z-m.Z.m/Z/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6ddl7m8Z8ddl9m:Z:m;Z;mZ>m?Z?m@Z@mAZAmBZBmCZCdZDdZEdZFejjdeAe@ze?zeCzeBze>zdZIdZJdZKdZLejZNeNjZPeNjZRe8eRdZSe8eRdZTejeReSeTfZVePj\ZXZYeVjdZZe[ejeRZ]e^e_ejeReSeTfZ`d Zad!Zbd"Zcd#Zdd$Zed%Zfd&Zgd'Zhd(Zid)Zjd*Zkejjd+d,d-gd.Zld/Zmd0Znejjd1d-d2gd3Zoejjd4eAd5Zpd6Zqejjd1gd7ejjd+d,d8gd9Zrd:Zsejjd4eAd;Ztd<Zuejjd=gd>d?Zvejjd@edAe.edAe-edAgdBZwGdCdDeZxGdEdFeZyejjdGe.eydHIejfe/exejdJdKfgdLZzdMZ{ejjdNe.efe/e!fgdOZ|ejjdPe^eje~gdQZdRZdSZdTZdUZejjdVe-dWfe.dXfgdYZdZZejjd[e-e0gd\Zy)]N) cpu_count)datasets)ClassifierMixinclone) load_linnerudmake_classificationmake_multilabel_classificationmake_regression)DummyClassifierDummyRegressor)GradientBoostingRegressorRandomForestClassifierStackingRegressor)NotFittedError) SimpleImputer)LassoLinearRegressionLogisticRegressionOrthogonalMatchingPursuitPassiveAggressiveClassifierRidge SGDClassifier SGDRegressor) jaccard_scoremean_squared_error) GridSearchCVtrain_test_split)OneVsRestClassifier)ClassifierChainMultiOutputClassifierMultiOutputRegressorRegressorChain) make_pipeline) LinearSVC)DecisionTreeClassifier)shuffle)assert_almost_equalassert_array_almost_equalassert_array_equal)BSR_CONTAINERSCOO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERSctjdd\}}|dd|dd}}|dd|dd}}tj|}t dD]?}t d}|j ||dd|f|j||dd|f<Att d}|j |||j|} t|| yNr n_targets random_state2r5) rr np zeros_likeranger fitpredictr!r') XyX_trainy_trainX_testy_test referencesnrgry_preds d/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/tests/test_multioutput.pytest_multi_target_regressionrH=s  # #aa @DAq"vq"vWGrsVQrsVFFv&J 1X/'Q7 A';;v. 1a4/ 8aH ICGGGW [[ F F+cdtjdd\}}|dd|dd}}|dd|dd}}tj|}d}t dD]_}t dd} | j |d||d||f| j ||d||d|f| j||dd|f<att dd} | j |d||d|| j ||d||d| j|} t|| tttdrJy) Nr2rr3r6r5max_iter partial_fit) rr r8r9r:rrOr<r!r'hasattrr) r=r>r?r@rArBrC half_indexrDsgrrFs rG(test_multi_target_regression_partial_fitrSOsI  # #aa @DAq"vq"vWGrsVQrsVFFv&JJ 1X/A6  ,gkzk1n.EF  ,gjk1n.EF;;v. 1a4 / |QG HCOOGKZ('+:*>?OOGJK('*+*>? [[ F F++E2MBB BBrIctjdd\}}ttd}d}t j t |5|j||dddy#1swYyxYw)Nrr3r7zat least two dimensionsmatch)rr r!r pytestraises ValueErrorr;)r=r>rEmsgs rG'test_multi_target_regression_one_targetr\fs]  # #aa @DAq 8aH IC #C z - 1 s A))A2sparse_containerc^tjdd\}}|dd|dd}}|dd}ttd}ttd}|j |||j |||t |j ||j ||yr1)rr r!rr;r'r<)r]r=r>r?r@rArE rgr_sparses rG#test_multi_target_sparse_regressionr`os  # #aa @DAq"vq"vWG rsVF u!4 5C%e&;wrEr[s rG$test_multi_target_sample_weights_apirjs IA %(A c A 8: ;C +C z - 1a 8aH ICGGAq! s B  Bc:gdgdg}ddgddgg}ddg}ttdd }|j|||ddg}ttdd }|j||||j|dd|j|ddk7sJy) Nrbrdrgrh@?rrLrM)r!rrOr<)r=r>rirgr_wrEs rG+test_multi_target_sample_weight_partial_fitros IA %(A c A 1q!I JE aA c A |QG HCOOAq! ;;q>! Q 5==#3A#6q#9 99 9rIcZgdgdg}ddgddgg}ddg}ttd}|j|||gdgdgdg}ddgddgddgg}ttd}|j||gd gd g}t|j ||j |y) Nrbrdrgrhrlrmrr7g?g@ @rrg@g@)r!r r;r'r<)Xwywrirnr=r>rErAs rG test_multi_target_sample_weightsrvs Y B %.5%. )B c A !:!J KE IIb"a Iy)A %%8A 8aH ICGGAqM /F F+U]]6-BCrIrUr7rcctddd}t|d}|jttt |j d}|jtt|j d}tdkDr||usJyy)Nlog_lossrUrLlossr5rNre)n_jobsr)rr rOr=r>classes estimators_r)sgd_linear_clfmorest1est2s rG8test_multi_output_classification_partial_fit_parallelismrsr" QON q 9COOAq'" ??1 DOOAq ??1 D{Q4rIctdd}t|}|jttt |drJtddd}t|}|jttt |dsJy)NrUrLrM predict_probarxry)rr r;r=r>rP)r~multi_target_linears rG'test_hasattr_multi_output_predict_probarsx#A>N/?Aq!*O<< <# QON/?Aq! & 88 8rIctdd}ddi}d}t|||dd }t|}|jtt |j ttdd}t|}|jtt d }d }d }tjt| 5}|j tdddtjjtsJ|t|jjvsJt|jjjtsJ|t|jjjvsJy#1swYxYw)NrUrLrMrz)hingerxmodified_huberct|dryy)Nrrmg)rP) estimatorr=r>s rG custom_scorerz6test_multi_output_predict_proba..custom_scorers 9o .rIr2raise) param_gridscoringcv error_scorez8probability estimates are not available for loss='hinge'z0'SGDClassifier' has no attribute 'predict_proba'8'MultiOutputClassifier' has no attribute 'predict_proba'rV)rrr r;r=r>rrXrYAttributeError isinstancevalue __cause__str) r~paramrgrid_clfr inner2_msg inner1_msg outer_msg exec_infos rGtest_multi_output_predict_probarsK"A>N < =E   H09Aq!%%a(#A>N/?Aq!KJCJJI ~Y 7-9))!,- ioo// @@ @ Y__667 77 7 ioo//99> JJ J Y__66@@A AA A--s 2E77Fctddd}t|}tjddz}|j td|t d|t |jt}ttf|jk(sJ|j t|dt |d|jt}ttf|jk(sJtdD]}t|}|j td|t d||ft |t|jt|dd|f|j t|dt |d|ft|jt|dd|fy) NrxrUrLryrrc)r|r2) rr r=shaperOr>r|r< n_samples n_outputsr:rr))r~rrQfirst_predictionssecond_predictionsis rG,test_multi_output_classification_partial_fitrsv# QON/?qJ##AkzNAkzNG#T+33A6 y !%6%<%< << <##AjkNAjkNC,44Q7 y !%7%=%= == =1XP~."" kzNAkzk1n-wqz #  >11!46G16MN""1Z[>1Z[!^3DE>11!46HA6NOPrIctddd}t|}d}tjt|5|j t tdddy#1swYyxYw)NrxrUrLryz8classes must be passed on the first call to partial_fit.rV)rr rXrYrZrOr=r>)r~rr[s rGGtest_multi_output_classification_partial_fit_no_first_classes_exceptionr-sS" QON/? DC z -.''1-...s AA$c tdd}t|}|jtt|j t}t tf|jk(sJ|jt}t|tk(sJ|D]}t tf|jk(rJttjtj|d|t!dD]}t#|}|jttdd|ft%|j tt%|dd|fk(sJtt%|jtt%||y)N rU n_estimatorsr5axisr2)rr r;r=r>r<rrrrlen n_classesr)r8argmaxdstackr:rlist)forestmulti_target_forest predictionsrclass_probabilitiesrforest_s rG test_multi_output_classificationr5sI$! DF/7Aq!%--a0K y ![%6%6 66 6'55a8M }  ** *,C9%)<)B)BBBBCryy=!9BKP1XS- AqAwGOOA&'4 AqD0A+BBBB4 5 5a 894 a@P;QR SrIctd}t|}t|}|jtt |j t}ttf|jk(sJtdD]a}t|}|jtt dd|ft|j tt|dd|fk(raJy)Nrr7r2) r$rr r;r=r>r<rrrr:rr)svcmulti_class_svcmulti_target_svcrrmulti_class_svc_s rG%test_multiclass_multioutput_estimatorrRs  #C)#.O,_=A"**1-K y ![%6%6 66 61XL 1Q!Q$($,,Q/0DQT9J4KKKKLrIc d}tjj|}|jd}tjgdj dd}tjgdj dd}tj ||gd}tt| }|j|||j|}tjd d gd d gddgddgddggtjgdgdgdgdgdgg}tt|D]} t|| || y)Ni)rLrL)size)barrrrLrU)defrrrr7g7E-?gd]7v?gYA?gzXP?gZ]3?gJE?gJo8?g[|c?gx?g{du?)ggK ?g!U5?g}i?)gg362?gPm?gKɱ?)g ?gn۔~?g 2b?)g_E֖?glE?g ̖B?)g͢?g?g}DBˉ?)r8random RandomStatenormalarrayreshape concatenater rr;rr:rr') seedrngr=y1y2Yclfy_resulty_actualrs rG3test_multiclass_multioutput_estimator_predict_probards8 D ))   %C  A + , 4 4Q :B + , 4 4Q :B Bxa(A  2 E FCGGAqM  #H Z(Z(Z(Z(Z(    44443   H*3x= !6HQK!56rIcgdgdg}ddgddgg}tjddg}tdd }t|}|j |||gdgdgdg}ddgddgddgg}tdd }t|}|j ||gd gd g}t |j ||j |y) Nrbrdr2rcrlrmrrUrrqrs)r8asarrayrr r;r'r<) rtrurirclf_wr=r>rrAs rG/test_multi_output_classification_sample_weightsrs Y B a&1a& B C:A #! DF !& )E IIb"a Iy)A Q!Q!Q A #! DF  'CGGAqM /F F+U]]6-BCrIcgdgdgdg}ddgddgddgg}tjgd}tdd }t|}|j |||gdgdgdgdg}ddgddgddgddgg}tdd }t|}|j ||gdg}t |j ||j |y) Nrbrdrqr2rc)rlrmrmrUrM)r8rrr r;r(r<) rtrurir~rr=r>rrAs rG;test_multi_output_classification_partial_fit_sample_weightsrs Y 0B a&1a&1a& !B ?#A"B?N !. 1E IIb"a Iy/:A Q!Q!Q!Q(A"B?N  /CGGAqM Fckk&15==3HIrIc^ttd}tjt5|j t tdddtjttf}|jt ttjt5|j t |dddd}tjt|5|jt t dddfdddy#1swYxYw#1swY]xYw#1swYyxYw)Nrr7zUnknown label typerVrU)r r$rXrYrscorer=r>r8 column_stackrrr;rZ)mocy_newr[s rGtest_multi_output_exceptionsrs q 9 :C ~ & !Q OORH %EGGAqM z " !U C z - 1QT7 s#D $D "D# DD #D,response_methodrr<ctt}tjt5t ||t dddy#1swYyxYw)zECheck that we raise the proper error when the estimator is not fittedN)r rrXrYrgetattrr=)rrs rG"test_multi_output_not_fitted_errorrsD 2 4 5C ~ &)%_%a()))s A  Acltt}t|dsJ|jtt t|dsJtt }t|drJd}d}tjt|5}|jtdddtjjtsJ|t|jjk(sJ|jtt t|drJtjt|5}|jtdddt|jjtsJ|t|jjk(sJy#1swYxYw#1swY`xYw)zVCheck the behavior for the delegation of predict_proba to the underlying estimatorrrz3'LinearSVC' object has no attribute 'predict_proba'rVN)r rrPr;r=r>r$rXrYrrrrrr)rr inner_msgrs rG(test_multi_output_delegate_predict_probarsX 2 4 5C 3 (( (GGAqM 3 (( ( ,CsO,, ,JIEI ~Y 79 ! ioo// @@ @ IOO556 66 6GGAqMsO,, , ~Y 79 ! ioo// @@ @ IOO556 66 6s F5F*F'*F3c tddddd\}}tj|Dcgc](}t|dddDcgc] }t |c}*c}}}||fScc}wcc}}w) Nidrr)r n_featuresr n_informativer5z#06brc)rr8rformatint)r=r>yyyyyY_multis rG-generate_multilabel_dataset_with_correlationsrsi 3"BUV DAqhhqQVB-?-CDcSDQRG g:EQsA& A!A& !A& chain_methoddecision_functionc t\}}tt|j||}|j |}|j |j k(sJ|j |}|dk\}t||t|drJy)Nrrr) rrr$r;r<rrr)rP)rr=rclassifier_chainY_pred Y_decisionY_binarys rG5test_classifier_chain_fit_and_predict_with_linear_svcrs 9 :DAq& ! c!Qi  % %a (F <<177 "" "!33A6JQHx('99 99rI csr_containerct\}}||}ttj||}|j |}ttj||}|j |}t ||yN)rrrr;r<r))rr=rX_sparser Y_pred_sparse Y_pred_denses rG6test_classifier_chain_fit_and_predict_with_sparse_datars| 9 :DAqQH&'9';<@@1M$,,X6M&'9';<@@AF#++A.L}l3rIct\}}|ddddf}|ddddf}|ddddf}|ddddf}tt}|j|||j |}t t}|j|||j |} t || dt ||dkDsJy)NiXsamplesaverage)rrrr;r<rr) r=rr?rAY_trainY_testovr Y_pred_ovrchain Y_pred_chains rG+test_classifier_chain_vs_independent_modelsrs 9 :DAqajG stQwZFajG stQwZF 02 3CGGGWV$J .0 1E IIgw==(L y AM IE  rI)r<rpredict_log_probarrc Lt\}}tt|}|j|||j |}|j |j k(sJ|j Dcgc]}|jjc}tt|j d|j d|j dzk(sJt|||}|dk(rtj|}|dk\}t||t|t sJycc}w)NrrUr?)rrrr;r<rr}coef_rrr:rr8expr)rr) rrr=rr rcY_probrs rG%test_classifier_chain_fit_and_predictr6s 9 :DAq .0| LE IIaO ]]1 F <<177 "" ""'"3"3 4QAGGLL 4 aggaj!''!*qwwqz129  -WUO ,Q /F--}Hx( e_ -- - 5s/D!c t\}}tt}|j|||j |}|j |j k(sJ|j Dcgc]}|jjc}tt|j d|j d|j dzk(sJycc}w)NrU) rr"rr;r<rr}rrrr:)r=rr rrs rG$test_regressor_chain_fit_and_predictrOs 8 :DAq 57 #E IIaO ]]1 F <<177 "" ""'"3"3 4QAGGLL 4 aggaj!''!*qwwqz129   4s-Cc t\}}||}ttdtt dg}|D]@}|j |||j |}|j|jk(r@Jy)Nr2r)rrrr"rr;r<r)rr=rr base_chainsr rs rG7test_base_chain_fit_and_predict_with_sparse_data_and_cvr[s~ 9 :DAqQH*,3uw1%K' (Ax(||qww&&&'rIct\}}tttt fD]9}t |j dd}|j||t |j |j}|j||t|j|jt|jttdk7sJt|jdk(sJtt|jdk(sJt|j |j D]%\}}t#|j$|j$'<y)Nr*)orderr5r re)rrrr"rr set_paramsr;order_r)rr r:rsetzipr}r(r)r=rr  chain_random chain_fixedrrs rGtest_base_chain_random_orderr(js. 8 :DAq!"4"679PQ >U|..XB.O AEl--L4G4G-H 1;--|/B/BCL&&'4a>999<&&'1,,,3|**+,111l66 8O8OP >JD$ %djj$** = > >rIzchain_type, chain_method)) classifierr<)r)r)r)r)r)r) regressorct\}}|dk(rtt|}ntt }|j ||t |jd}|j |||j|}|j|}|j|jk(sJtj||k(rJt|trt||ddkDsJyt||dksJy) Nr)rr2rrrg?g?)rrrr"rr;rr"r<rr8allrrr) chain_typerr=rr chain_cv Y_pred_cvrs rG(test_base_chain_crossval_fit_and_predictr1|s 9 :DAq\! 2 4<Puw' IIaOU|&&!&,H LLA  #I ]]1 F ??fll ** *vvf )** *%)Q 9=CCC!!Y/$666rIr)rc|jttt|jt sJt |jtk(sJtt|jD]\}}t||yr) r;r=r>rclasses_rrrr%r|r))restimator_classesexpected_classess rGtest_multi_output_classes_r6srMM!Q i(($ // / y!! "i // //27I?@rIc eZdZdfd ZxZS)DummyRegressorWithFitParamsc 4||_t| |||Sr _fit_paramssuperr;selfr=r> sample_weight fit_params __class__s rGr;zDummyRegressorWithFitParams.fit%w{1a//rIr__name__ __module__ __qualname__r; __classcell__rAs@rGr8r8 00rIr8c eZdZdfd ZxZS)DummyClassifierWithFitParamsc 4||_t| |||Srr:r=s rGr;z DummyClassifierWithFitParams.fitrBrIrrCrHs@rGrKrKrIrIrKzestimator, datasetprior)strategyr2r3c|\}}tj|}|j||||jD]}d|jvrJy)N) some_paramrP)r8r9r;r}r;)rdatasetr=r>rPdummy_estimators rG*test_multioutput_estimator_with_fit_paramsrSsV DAqq!J MM!Q:M.$00;:::::;rIcbtjjd}tjdd\}}|j |j d}Gddt}t|}d|i}|j||fi||jD]}|j|urJy)Nrr2r3ceZdZfdZxZS)0test_regressor_chain_w_fit_params..MySGDc<|d|_t|||fi|y)Nr?)sample_weight_r<r;)r>r=r>r@rAs rGr;z4test_regressor_chain_w_fit_params..MySGD.fits#",_"=D  GK1 + +rIrCrHs@rGMySGDrVs  , ,rIrYr?) r8rrrr randrrr"r;r}rX)rr=r>weightrYmodel fit_paramests rG!test_regressor_chain_w_fit_paramsr_s ))   "C  # #aa @DAq XXaggaj !F, , 57 #E!&)I EIIa i   ,!!V+++,rIzMultiOutputEstimator, Estimatorctjjd}|jdd|j ddd}}|j ddg|j dd g jt}tj||<tt|}||j||j||y) Nrr6rcrUr)r6r2rg{Gz?gGz?)p)r8rrrandnbinomialchoicerastypeboolnanr#rr;r)MultiOutputEstimator Estimatorrr=r>maskpipes rGtest_support_missing_valuesrls ))   #C 99R S\\!S':qA ::q!fagg$: 6 = =d CDffAdG )+ 6D""1a(..q!4rI order_typecgdgdgdg}ddgddgddgg}|ddg}ttdd| }|j||gdg}ddgg}t|j ||y) Nrbrdrqr2rcrUrrr!)rrr;r(r<)rmr=r>r r rArBs rG!test_classifier_chain_tuple_orderros I/A Q!Q!Q A 1v E AA>e E IIaO F!fXFemmF3Vr r s rG)test_classifier_chain_tuple_invalid_orderrrss I/A Q!Q!Q A 1a&ME 24E BE z 9 !Qs A00A9ctddddd\}}t||d\}}}}d}ttgddd }|j ||t j ||jdsJy) NrrLr2r)rrrn_labelsr5r7z\[Chain\].*\(1 of 3\) Processing order 0, total=.*\n\[Chain\].*\(2 of 3\) Processing order 1, total=.*\n\[Chain\].*\(3 of 3\) Processing order 2, total=.*\n$)rrUrcTr r5verbose)r rrr%r;rerW readouterr) capsysr=r>r?rAr@rBpatternr)s rGtest_classifier_chain_verboser{s )!q11 DAq(811'M$GVWf A !  J NN7G$ 88GV..03 44 4rIctddd\}}t||d\}}}}d}ttgddd }|j ||t j ||jdsJy) N}r2r)rr4r5r7z\[Chain\].*\(1 of 3\) Processing order 1, total=.*\n\[Chain\].*\(2 of 3\) Processing order 0, total=.*\n\[Chain\].*\(3 of 3\) Processing order 2, total=.*\n$)rUrrcTru)r rr"rr;rwrWrx) ryr=r>r?rAr@rBrzr*s rGtest_regressor_chain_verboser~)s SAA FDAq'711'M$GVWf A  I MM'7# 88GV..03 44 4rIctd\}}tdtdfgtd}t |j ||}|j |y ) zkTest that MultiOutputRegressor checks the fitted estimator for predict. Non-regression test for #16549.T) return_X_ysgdrUr7rc) estimatorsfinal_estimatorr)rN)rrrrr!r;r<)r=r>stackerregs rG4test_multioutputregressor_ducktypes_fitted_estimatorr<sZ D )DAqLa89: G  1 5 5a ;CKKNrIz Cls, methodr;rOctd\}}|t}tjtd5t ||||ddddy#1swYyxYw)zgCheck that we raise an error when passing metadata not requested by the underlying classifier. r6)rzis only supported ifrVrU)testN)rrrXrYrZr)Clsmethodr=r>rs rGtest_fit_params_no_routingrLsY  ,DAq )+ ,C z)? @+VQ*+++s AA#ctt}d}tjt|5t |ddddy#1swYyxYw)Nz:This 'MultiOutputRegressor' has no attribute 'partial_fit'rVrO)r!rrXrYrr)r^r[s rG*test_multioutput_regressor_has_partial_fitrZsD /1 2C FC ~S 1$]#$$$s AArictjddgddgg}tjddgddgg}t}tjt 5||j ||dddtjt5|||j ||dddy#1swYFxYw#1swYyxYw) z=Check that we warn about the deprecation of `base_estimator`.rUrcr2rer)base_estimatorN)rr) r8rrrXwarns FutureWarningr;rYrZ)rir=r>rs rGtest_base_estimator_deprecationrds 1a&1a&!"A 1a&1a&!"A"$I m $6+//156 z "Ki@DDQJKK66KKsB9C9CC)rwnumpyr8rXjoblibrsklearnr sklearn.baserrsklearn.datasetsrrr r sklearn.dummyr r sklearn.ensembler rrsklearn.exceptionsrsklearn.imputersklearn.linear_modelrrrrrrrrsklearn.metricsrrsklearn.model_selectionrrsklearn.multiclassrsklearn.multioutputrr r!r"sklearn.pipeliner# sklearn.svmr$ sklearn.treer% sklearn.utilsr&sklearn.utils._testingr'r(r)sklearn.utils.fixesr*r+r,r-r.r/rHrSr\mark parametrizer`rjrorv load_irisirisdatar=targetrry3rr>rrrrruniquerrmapr|rrrrrrrrrrrrrrrrrrrrr(r1r6r8rKrSr_rlrrqrorrr{r~rrrrrIrGrs  / : .(   >B2 +!/! ,$C.       : D&xII [[ Ra  Ra BOORRL! : GGAJ   "  s299r2rl+ ,   9 'BTP>.S:L$*6ZD(J&(*_i,HI)J)7: )5H)IJ:K:$.9 4: 4.J*_>Q,RS.T  .( .9 ': '>$ 7 7.A.4!DE.A>?@@0.0 0?0  "">"P Q 3H 3 3 5 !! ? $H $ $qq A  ; ;,*%/03G2OP 5  5bhh'>? =@ =5,5&  _e,/Dm.TU++$&GH KI KrI