`L i6ddlmZddlZddlZddlmZddlm Z ddl m Z m Z ddl mZmZddlmZddlmZddlmZdd lmZmZmZmZmZmZmZdd lmZm Z dd l!m"Z"m#Z#dd l$m%Z%m&Z&m'Z'dd l(m)Z)ddl*m+Z+ddl,m-Z-m.Z.ddl/m0Z0m1Z1ddl2m3Z3m4Z4ddl5m6Z6m7Z7ddl8m9Z9ddl:m;Z;mZ>m?Z?m@Z@mAZAmBZBddlCmDZDmEZEe jZGejjdZJeJjeGjjZNeGjeNeG_OeGjeNeG_LdZPdZQdZRdZSdZTdZUdZVejjde@e?ze>zeAzeBzdZYd ZZd!Z[d"Z\d#Z]d$Z^d%Z_d&Z`d'Zad(Zbd)Zcd*Zdd+Zed,Zfd-Zgd.Zhd/Zid0Zjd1Zkd2Zld3Zmd4Znd5Zod6Zpd7Zqd8Zrd9Zsd:Ztd;ZuejjdZwd?Zxejjd@e&e%gdAZyejjd@e&e%gdBZzejjd@e&e%gdCZ{ejjdDejejgdEZ~dFZdGZy)H)escapeN)assert_allclose)datasetssvm) BaseEstimatorClassifierMixin)load_breast_cancer)NotFittedError) SimpleImputer) ElasticNetLassoLinearRegressionLogisticRegression PerceptronRidge SGDClassifier)precision_score recall_score) GridSearchCVcross_val_score)OneVsOneClassifierOneVsRestClassifierOutputCodeClassifier) MultinomialNB)KNeighborsClassifier)Pipeline make_pipeline)SVC LinearSVC)DecisionTreeClassifierDecisionTreeRegressor) check_arrayshuffle)CheckingClassifier)assert_almost_equalassert_array_equal)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS)check_classification_targetstype_of_targetcttd}tjt5|j gdddd}tjt |5tjddgddgg}tjddgddgg}ttj||dddtjt |5tjddgddgg}tjdd gd d gg}ttj||dddy#1swYxYw#1swYxYw#1swYyxYw) Nr random_statez@Multioutput target data is not supported with label binarizationmatchr.g?g333333@g@皙?) rrpytestraisesr predict ValueErrornparrayrfit)ovrmsgXys c/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/tests/test_multiclass.pytest_ovr_exceptionsrC9s. iQ7 8C ~ & B MC z -7 HHq!fq!f% & HHq!fq!f% &MO,00A67 z -7 HHq!fq!f% & HHsCj3*- .MO,00A677 77 77s%E&AE#AEEEE(ctjgd}t|}tjt |5t |dddy#1swYyxYw)N)g?@g@r2)r;r<r-r7r8r:r,)rAr?s rB!test_check_classification_targetsrGMsF %&A  C z -($Q'(((s AAc^ttd}|jtjtj j tj}t|jtk(sJtd}|jtjtj j tj}tjtj |k(tjtj |k(k(sJtt}|jtjtj j tj}tjtj |k(dkDsJy)Nrr0?) rrr=irisdatatargetr9len estimators_ n_classesr;meanr)r>predclfpred2s rBtest_ovr_fit_predictrTUs iQ7 8C 77499dkk * 2 2499 =D s 9 ,, ,  #C GGDIIt{{ + 3 3DII >E 774;;$& '2774;;%3G+H HH H mo .C 77499dkk * 2 2499 =D 774;;$& '$ .. .cttjtjd\}}t t }|j |dd|ddtj||j |dd|dd|j|}t t }|j||j|}t||t|jttj|k(sJtj||k(dkDsJtjtj j#dd}gd}t t%ddd d }|j |dd |dd tj||j |d d|d d|j|}t t%ddd d }|j||j|}tj||k(tj||k(k(sJt t'}t)|d rJy) Nrr0drIr5r4r4r4r4r5r.r.rrr5r.r4r5r.r4F)max_itertolr#r1 partial_fit)r#rJrKrLrrr]r;uniquer9r=r%rMrNrPabsrandomrandnrrhasattr)r@rAr>rQovr2rSovr1pred1s rBtest_ovr_partial_fitrfes 499dkk :DAq mo .COOAdsGQtWbiil3OOAcdGQstW% ;;q>D } /D HHQN " "1 %Ee$ s 3ryy|#4 44 4 7719  $$ $ ryyr1%&A2A qdEJ COOAbqE1Ra5"))A,/OOAabE1QR5! ;;q>D qdEJ D HHQN " "1 %E 77419 !!4 44 4 ce $CsM** **rUctt}tjtjj dd}gd}|j |dd|ddtj|dg|ddz}d}tjt|5|j |dd| dddy#1swYyxYw) NrXr5rYr\zAMini-batch contains \[.+\] while classes must be subset of \[.+\]r2)r@rA) rrr;r_r`rar]r^r7r8r:)r>r@rAy1r?s rBtest_ovr_partial_fit_exceptionsrks mo .C ryyr1%&A2AOOAbqE1Ra5"))A,/ q2wB NC z -' !AB%2&'''s B==Cc>tt}|jtjtj j tj}t|jtk(sJttj|gdtj|tj k(dkDsJtt}|jtjtj j tj}t|jttdz zdz k(sJttj|gdtj|tj k(dkDsJy)N)rr4r5?r4r5)rr!r=rJrKrLr9rMrNrOr&r;r^rPr)r>rQs rBtest_ovr_ovo_regressorrns 35 6C 77499dkk * 2 2499 =D s 9 ,, ,ryy 2 7744;;& '# -- - 24 5C 77499dkk * 2 2499 =D s 9 A #>#B BB Bryy 2 7744;;& '# -- -rUsparse_containerc td}tjddddddd \}}|dd |dd }}|d d}t|j ||}|j |}t|j |||} | j |} |j sJtj| sJt| j|| j|} | d kD} t| | jtj}t|j |||} | j|d kDjt } t| | j |jy) Nr4alpharWrhr.2Tr n_samples n_featuresrOn_labelslengthallow_unlabeledr1P?)rrmake_multilabel_classificationrr=r9 multilabel_spissparser&toarray predict_probarrdecision_functionastypeint)robase_clfr@YX_trainY_trainX_testrRY_predclf_sprs Y_pred_sprsY_probarQdec_preds rBtest_ovr_fit_predict_sparserst 1%H  2 2 DAq"vq"vWG rsVF h ' + +GW =C [[ F"8,00:J7:STH""6*K ??? ;;{ ## #{**,f5$$V,G S=Dt[0023 '')C"3'++G5Eg5NOH**62Q6>>sCHx!1!1&!9!A!A!CDrUc<tjd}d|ddddf<tjd}d|dddf<d|dddf<d|dddf<tt }d}t j t|5|j||ddd|j|}ttj|tj||j|}tj|ddd dfdk(sJ|j|}t|ddd ftj|jdtjd}d|dddf<tt }d }t j t|5|j||ddd|j|}t|ddd ftj|jdy#1swYsxYw#1swY[xYw) N r5rrh)rr.r4r5z,Label .+ is present in all training examplesr2riz/Label not 1 is present in all training examples)r;oneszerosrrr7warns UserWarningr=r9r&r<rr^rshape)r@rAr>r?y_preds rBtest_ovr_always_presentrs AAbqb!eH AAab!eHAadGAadG 02 3C 9C k - 1  [[^Frxx'!5  " "1 %F 99VArsF^ $ )) )   q !Fvae}bggaggaj&9: AAab!eH 02 3C .conduct_tests)!(+//153<< G+++RXXyk23A66F8, 80 1''*C99$ $$ XXyk*F--f5MM!,-- --<< -a @AS[[QWEXX XX"(+//15i[)!,{{rUrr0T probability)r)F) r;r<Trrrrrr rrr)rrr@rrrAs @@@@rBtest_ovr_binaryrs )Y 9iHIA0A /"#%%A+##%&G* q!   X #_cd&;=O=QR8X$78rUctjgdgdgdgdgdg}tjgdgdgdgd gd g}ttd t t t td fD]P}t|j||}|jgdgd }t|gd|jrPJy)N)rrrhr)r.r.r.)rrrr)rr4r4r)r4r4r4)r4rr4rrr0r|rq)rrr) r;r<rrrrr r rr=r9r&r~)r@rArrRrs rBtest_ovr_multilabelr;s )Y 9iHIA )Y 9iHIA q!   C  "(+//15i[)!,69- rUc4ttj}|jtj tj t|jdk(sJ|jtj tj dkDsJy)Nr.rm) rrrr=rJrKrLrMrNscore)r>s rBtest_ovr_fit_predict_svcrNs` cggi (CGGDIIt{{# s 1 $$ $ 99TYY ,s 22 2rUc td}tdddD]\}}}tjdddd d |d \}}|dd |dd }}|d d|d d} }t |j ||} | j |} | jsJtt| | d|d tt| | d|d y)Nr4rq)TF)RQ?gQ?)rr6rWrsrhr5rtrrur{micro)average)decimal) rziprr}rr=r9r~r%rr) rauprecrecallr@rrrrY_testrRrs rBtest_ovr_multilabel_datasetrUs1%H |\J D&66 1Sb61Sb62323!(+//AV$ FFG >q> !Dv ""$$ $$rUcGddtt}|}tjtj}}t |j ||}|j|}t|dy)zmCheck that predic_proba returns all zeros when the base estimator never predicts the positive class. ceZdZdZdZy)Gtest_ovr_single_label_predict_proba_zero..NaiveBinaryClassifierc:tj||_|S)N)r;r^r)selfr@rAs rBr=zKtest_ovr_single_label_predict_proba_zero..NaiveBinaryClassifier.fitsIIaLDMKrUcXtjt|df}d|dddf<|S)Nr5rr4)r;rrM)rr@probas rBrzUtest_ovr_single_label_predict_proba_zero..NaiveBinaryClassifier.predict_probas*GGSVQK(EE!Q$KLrUN)__name__ __module__ __qualname__r=rrUrBNaiveBinaryClassifierrs   rUrrEN) rrrJrKrLrr=rr)rrr@rArRy_probas rB(test_ovr_single_label_predict_proba_zerors\   %&H 99dkkqA h ' + +Aq 1C"GGS!rUc :tjddddddd\}}|dd |dd }}|d d}ttjj ||}t |j|dkDjt|j|y) NrWrsrhr.rtTrrur{) rr}rrrr=r&rrrr9r@rrrrrRs rB%test_ovr_multilabel_decision_functionrs  2 2 DAq"vq"vWG rsVF cggi ( , ,Wg >C  v & *2237V9LrUc(tjddd\}}|dd|dd}}|dd}ttjj ||}t |j|jdkD|j|y)NrWrsr)rvrwr1r{) rmake_classificationrrrr=r&rravelr9rs rB'test_ovr_single_label_decision_functionrs  ' '#"ST UDAq"vq"vWG rsVF cggi ( , ,Wg >Cs,,V4::Cscvbest_Cs rBtest_ovr_gridsearchrse iQ7 8C B cNB/ 0BFF499dkk"    + +A . 0 0F R<s rBtest_ovr_pipeliners V3567 8C"3'H LLDKK( 46 7CGGDIIt{{#s{{499-x/?/? /JKrUcttd}tjt5|j gdddy#1swYyxYwNrr0)rrr7r8r r9ovos rBtest_ovo_exceptionsrs= YA6 7C ~ & B A  Acttd}|jtjtj j tj}tjDcgc] }t|}}|j|ttj j |}t||ycc}wr) rrr=rJrKrLr9listr&)rprediction_from_arrayairis_data_listprediction_from_lists rBtest_ovo_fit_on_listrs YA6 7CGGDIIt{{;CCDIIN'+yy1!d1g1N177>4 3DEMM,.BC 2s3C c,ttd}|jtjtj j tjt|jttdz zdz k(sJtt}|jtjtj j tjt|jttdz zdz k(sJy)Nrr0r4r5) rrr=rJrKrLr9rMrNrOrrs rBtest_ovo_fit_predictr  s YA6 7CGGDIIt{{#++DII6 s 9 A #>#B BB B ]_ -CGGDIIt{{#++DII6 s 9 A #>#B BB BrUcPtj}|j|j}}t t }|j |dd|ddtj||j |dd|dd|j|}t t }|j|||j|}t|jttdz zdz k(sJtj||k(dkDsJt||t t }|j |dd|ddtj||j |dd|dd|j|}t t }|j||j|}t||t|jttj|k(sJtj||k(dkDsJt t }tj j#dd}gd}|j |dd|ddgd |j |dd|dd|j|}t t }|j||j|}t||t t }gd } t%d j'tj| tj|} t)j*t,| 5|j |dd| tj|dddt t/} t1| d rJy#1swY+xYw)NrWr4r5rI<rX)r4r4r5r.r.rrrrrrrr5r5r\)rr4r5r.r)rr4r5r.rrhr5z6Mini-batch contains {0} while it must be subset of {1}r2r])r load_irisrKrLrrr]r;r^r9r=rMrNrOrPr%r`randrformatr7r8r:rrb) tempr@rAovo1reovo2rSrrQerror_y message_rer>s rBtest_ovo_partial_fit_predictrs    D 99dkkqA mo .DQtWagryy|4QstWag& LLOE mo .DHHQN LLOE t IQ$?!$C CC C 771:  %% %u% mo .DQsVQsVRYYq\2QrsVQrsV$ LLOE mo .D HHQN " "1 %Eu% t C ! $5 55 5 771:  %% % ]_ -C r1A2AOOAbqE1Ra5/2OOAabE1QR5! ;;q>D mo .D HHQN " "1 %Ee$ ]_ -C#G@GG IIg  !  J z 46 "1w ! 56 SU #CsM** ** 66s *NN%ctjjd}tt d}|j tjtj dk(|jtj}|j|fk(sJ|j tjtj |jtj}|j|tfk(sJt|jd|jtjtj|tf}d}ttD]o}t|dztD]W}|j|jtj}||dk(|fxxdz cc<||dk(|fxxdz cc<|dz }Yqt|tj |ttD]Z}t#|dd|fj%t#gdsJt'tj(|dd|fdkDrZJy)Nrr0r4r)rErrF)rJrKrrrr=rLrrOr&rr9r;rrangerNroundrissubsetrMr^) rvovo_clf decisionsvoteskijrQ class_idxs rBtest_ovo_decision_functionr!Ls "I !:;G KK 4;;!+,))$))4I ??yl ** * KK 4;;'))$))4I ??y)4 44 4y''Q'/1KL HHi+ ,E A 9 q1ui( A&&q)11$))  q 9 :D ~ & Rrcttddd}|jtjtj j tjt|jtdzk(sJttdd}|jtjtj j tjt|jtdzk(sJy)Nrr0r5) code_sizer1) rrr=rJrKrLr9rMrNrOrr=s rBtest_ecoc_fit_predictrBs  q 9QUV WDHHTYY $,,TYY7 t IM 11 1 11 MDHHTYY $,,TYY7 t IM 11 1rUcttdd}gd}t|d|i}|jtj tj |jjdj}||vsJyr) rrrr=rJrKrLrrNr)r>rrrs rBtest_ecoc_gridsearchrDsg  q 9 JD B d^R0 1BFF499dkk"    + +A . 0 0F R<s rB(test_ecoc_delegate_sparse_base_estimatorrPs 99dkkqA  D(%)EBN Q ?D y(@ A q HHQN y(@ A T q 9 :DHHT1d# t A %% %s%D-D$D!$D-ctjd}tjtj}}t |}t j||j}|j||t|j}|j}|D],}|jd|z|dz z |jdk(r,Jy)N precomputedkernelrr4)rrrJrKrLrr;dotrr=rMrNpairwise_indices_r)clf_precomputedr@rA ovr_false linear_kernel n_estimatorsprecomputed_indicesidxs rBtest_pairwise_indicesr] sgg]3O 99dkkqA"?3IFF1accNM MM-#y,,-L#55"  IIaL< '?CCAqI  , , 11 1  ( (A -- - !-- .! 33 3!--'!!Q&&&' ACCA 77j  gg]3771=O  ) )S 00 0)/:>>q!DO  ) )S 00 0  % % ** * ** +q 00 0**)!!S((())9==aCO  ) )S 00 0  % % ** * ** +q 00 0  & &q ) 8 8B >> >  & &q ) 8 8B >> >  & &q ) 8 8C ?? ?rUMultiClassClassifierctjd}tj}||}|jjjrJ||}|jjjsJy)NrRrS)rr__sklearn_tags__ input_tagspairwise)rlrWrdrXovr_trues rBtest_pairwise_tagrr`sogg]3O$%78I))+66??? ?#O4H  $ $ & 1 1 : :: :rUcPtjd}tjd}tjtj}}||}||}t j ||j}t|||d}t|||d} t| |y)NrRrSr`raise) error_score) rrrJrKrLr;rUrrr&) rlrWrdr@rAmulticlass_clf_notprecomputedmulticlass_clf_precomputedrYscore_not_precomputedscore_precomputeds rBtest_pairwise_cross_val_scorerznsgg]3O1 99dkkqA$89K$L!!5o!FFF1accNM+%q!("M1'(*?@rUctjjd}tjtj }}tj |}|jddg|jddgjt}tj||<ttt|}||j||j!||y)N*r4rrrm)pr0)r;r` RandomStaterJrKrLcopychoicerrboolnanrr rr=r)rlrngr@rAmasklrs rBtest_support_missing_valuesrs ))   #C 99dkkqA  A ::q!fagg#s: 4 ; ;D ADffAdG }(:(L MB  A&,,Q2rUmake_yc<tjd}|dtj}tt }|j |||j |}tj|jddf}d|dddf<t||y)zUCheck that constant y target does not raise. Non-regression test for #21869 r)rr4)dtyperr5r4N) r;rint32rrr=rrrr)rr@rAr>rexpecteds rBtest_constant_int_targetrs~ Awbhh'A 02 3CGGAqM   q !FxxQ(HHQTNFH%rUctd\}}tdd}t|}|j|||j||t |j ||j |y)z^Check that ovo is consistent with binary classifier. Non-regression test for #13617. T) return_X_ydistance) n_neighborsweightsN)r rrr=r&r9)r@rArRrs rB)test_ovo_consistent_binary_classificationrs\  .DAq 1j AC S !CGGAqMGGAqMs{{1~s{{1~6rUctj}ttd}d}d}t j t |5}|j|j|jdddtjjt sJ|t|jjvsJy#1swYSxYw)aCheck that we raise the proper AttributeError when the final estimator does not implement the `partial_fit` method, which is decorated with `available_if`. Non-regression test for: https://github.com/scikit-learn/scikit-learn/issues/28108 r|r0) estimatorz9This 'OneVsRestClassifier' has no attribute 'partial_fit'z:'LogisticRegression' object has no attribute 'partial_fit'r2N)rr rrr7r8AttributeErrorr]rKrL isinstancevalue __cause__str)rJrR outer_msg inner_msg exec_infos rB)test_multiclass_estimator_attribute_errorrs    D (:(K LCKILI ~Y 709  4;;/0 ioo// @@ @ IOO556 66 600s 'CC )rernumpyr;r7 scipy.sparsesparser numpy.testingrsklearnrr sklearn.baserrsklearn.datasetsr sklearn.exceptionsr sklearn.imputer sklearn.linear_modelr r rrrrrsklearn.metricsrrsklearn.model_selectionrrsklearn.multiclassrrrsklearn.naive_bayesrsklearn.neighborsrsklearn.pipelinerr sklearn.svmrr sklearn.treer r! sklearn.utilsr"r#sklearn.utils._mockingr$sklearn.utils._testingr%r&sklearn.utils.fixesr'r(r)r*r+sklearn.utils.multiclassr,r-r rJr`r~r permutationrLsizepermrKrOrCrGrTrfrkrnmark parametrizerrrrrrrrrrrrrrrrr rr!r#r+r.r4r7r:r?rBrDrFrPr]rkrrrzrrrrrrrrUrBrs )!7/-(:A .24&F6JRxiiA t{{''( IIdO kk$ 7(( / !+H '.$^#n4~EV&E &ER!