
    Ki                     <   S SK Jr  S SKrS SKrS SK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  S SKJr  S SKJr  S S	KJrJrJrJrJrJrJr  S S
KJrJ r   S SK!J"r"J#r#  S SK$J%r%J&r&J'r'  S SK(J)r)  S SK*J+r+  S SK,J-r-J.r.  S SK/J0r0J1r1  S SK2J3r3J4r4  S SK5J6r6J7r7  S SK8J9r9  S SK:J;r;J<r<  S SK=J>r>J?r?J@r@JArAJBrB  S SKCJDrDJErE  \R                  " 5       rG\R                  R                  S 5      rJ\JR                  \GR                  R                  5      rN\GR                  \N   \GlO        \GR                  \N   \GlL        SrPS rQS rRS rSS rTS rUS rVS rW\R                  R                  S\@\?-   \>-   \A-   \B-   5      S  5       rZS! r[S" r\S# r]S$ r^S% r_S& r`S' raS( rbS) rcS* rdS+ reS, rfS- rgS. rhS/ riS0 rjS1 rkS2 rlS3 rmS4 rnS5 roS6 rpS7 rqS8 rrS9 rsS: rtS; ruS< rv\R                  R                  S=\?5      S> 5       rwS? rxS@ ry\R                  R                  SA\&\%/5      SB 5       rz\R                  R                  SA\&\%/5      SC 5       r{\R                  R                  SA\&\%/5      SD 5       r|\R                  R                  SE\R                  \R                  /5      SF 5       rSG rSH rg)I    )escapeN)assert_allclose)datasetssvm)BaseEstimatorClassifierMixin)load_breast_cancer)NotFittedError)SimpleImputer)
ElasticNetLassoLinearRegressionLogisticRegression
PerceptronRidgeSGDClassifier)precision_scorerecall_score)GridSearchCVcross_val_score)OneVsOneClassifierOneVsRestClassifierOutputCodeClassifier)MultinomialNB)KNeighborsClassifier)Pipelinemake_pipeline)SVC	LinearSVC)DecisionTreeClassifierDecisionTreeRegressor)check_arrayshuffle)CheckingClassifier)assert_almost_equalassert_array_equal)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS)check_classification_targetstype_of_target   c                     [        [        SS95      n [        R                  " [        5         U R                  / 5        S S S 5        Sn[        R                  " [        US9   [        R                  " SS/SS//5      n[        R                  " SS/SS//5      n[        [        5       5      R                  X#5        S S S 5        [        R                  " [        US9   [        R                  " SS/SS//5      n[        R                  " SS	/S
S//5      n[        [        5       5      R                  X#5        S S S 5        g ! , (       d  f       GN
= f! , (       d  f       N= f! , (       d  f       g = f)Nr   random_statez@Multioutput target data is not supported with label binarizationmatch      r.   g      ?g333333@g@皙?)r   r   pytestraisesr
   predict
ValueErrornparrayr   fit)ovrmsgXys       _/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/sklearn/tests/test_multiclass.pytest_ovr_exceptionsrC   9   s   
iQ7
8C 
~	&B 
' MC	z	-HHq!fq!f%&HHq!fq!f%&MO,006 
.
 
z	-HHq!fq!f%&HHsCj3*-.MO,006 
.	- 
'	&
 
.	-
 
.	-s%   E"AEAE%
E
E"%
E3c                      [         R                  " / SQ5      n [        U 5      n[        R                  " [
        US9   [        U 5        S S S 5        g ! , (       d  f       g = f)N)        g?       @g      @r2   )r;   r<   r-   r7   r8   r:   r,   )rA   r?   s     rB   !test_check_classification_targetsrG   M   s=    
%&A

C	z	-$Q' 
.	-	-s   A
A c                  F    " S S[         5      n [        R                  " S/S/S/S//5      n[        R                  " / SQ5      n[        U " 5       5      R	                  X5      n[        UR                  U5      [        R                  " UR                  U5      SS95        g)zZCheck that ties-breaking matches np.argmax behavior

Non-regression test for issue #14124
c                        \ rS rSrS rS rSrg)test_ovr_ties.<locals>.Dummy[   c                     U $ N selfr@   rA   s      rB   r=    test_ovr_ties.<locals>.Dummy.fit\   s    K    c                 @    [         R                  " [        U5      5      $ rM   )r;   zeroslen)rP   r@   s     rB   decision_function.test_ovr_ties.<locals>.Dummy.decision_function_   s    88CF##rR   rN   N)__name__
__module____qualname____firstlineno__r=   rV   __static_attributes__rN   rR   rB   DummyrJ   [   s    		$rR   r]   r   )r   r4   r5   r.   r4   axisN)	r   r;   r<   r   r=   r&   r9   argmaxrV   )r]   r@   rA   clfs       rB   test_ovr_tiesrb   U   s}    $ $ 	1#sQC!%&A
A
eg
&
*
*1
0Cs{{1~ryy1F1Fq1IPQ'RSrR   c                  ^   [        [        SS95      n U R                  [        R                  [        R
                  5      R                  [        R                  5      n[        U R                  5      [        :X  d   e[        SS9nUR                  [        R                  [        R
                  5      R                  [        R                  5      n[        R                  " [        R
                  U:H  5      [        R                  " [        R
                  U:H  5      :X  d   e[        [        5       5      n U R                  [        R                  [        R
                  5      R                  [        R                  5      n[        R                  " [        R
                  U:H  5      S:  d   eg )Nr   r0   ?)r   r   r=   irisdatatargetr9   rU   estimators_	n_classesr;   meanr   )r>   predra   pred2s       rB   test_ovr_fit_predictrm   h   s   
iQ7
8C77499dkk*22499=Ds9,,,

#CGGDIIt{{+33DII>E774;;$&'2774;;%3G+HHHH mo
.C77499dkk*22499=D774;;$&'$...rR   c            	         [        [        R                  [        R                  SS9u  p[	        [        5       5      nUR                  U S S US S [        R                  " U5      5        UR                  U SS  USS  5        UR                  U 5      n[	        [        5       5      nUR                  X5      R                  U 5      n[        X55        [        UR                  5      [        [        R                  " U5      5      :X  d   e[        R                  " X:H  5      S:  d   e[        R                  " [        R                   R#                  SS5      5      n / SQn[	        [%        SS S	SS
95      nUR                  U S S US S [        R                  " U5      5        UR                  U SS  USS  5        UR                  U 5      n[	        [%        SS S	SS
95      nUR                  X5      R                  U 5      n[        R                  " X1:H  5      [        R                  " Xq:H  5      :X  d   e[	        ['        5       5      n[)        US5      (       a   eg )Nr   r0   d   rd      r5   r4   r4   r4   r4   r5   r.   r.   r   r   r5   r.   r4   r5   r.   r4   F)max_itertolr#   r1      partial_fit)r#   re   rf   rg   r   r   ru   r;   uniquer9   r=   r%   rU   rh   rj   absrandomrandnr   r   hasattr)r@   rA   r>   rk   ovr2rl   ovr1pred1s           rB   test_ovr_partial_fitr~   x   s   499dkk:DA
mo
.COOAdsGQtWbiil3OOAcdGQstW%;;q>D}/DHHQN""1%E$s3ryy|#44447719$$$ 	ryyr1%&A2A
qdEJC OOAbqE1Ra5"))A,/OOAabE1QR5!;;q>DqdEJD HHQN""1%E7749!4444 ce
$CsM*****rR   c                     [        [        5       5      n [        R                  " [        R                  R                  SS5      5      n/ SQnU R                  US S US S [        R                  " U5      5        S/USS -   nSn[        R                  " [        US9   U R                  USS  US	9  S S S 5        g ! , (       d  f       g = f)
Nrp   r5   rq   rt      zAMini-batch contains \[.+\] while classes must be subset of \[.+\]r2   )r@   rA   )r   r   r;   rw   rx   ry   ru   rv   r7   r8   r:   )r>   r@   rA   y1r?   s        rB   test_ovr_partial_fit_exceptionsr      s    
mo
.C
ryyr1%&A2AOOAbqE1Ra5"))A,/ q2wB
NC	z	-!AB%2& 
.	-	-s   B::
Cc                  N   [        [        5       5      n U R                  [        R                  [        R
                  5      R                  [        R                  5      n[        U R                  5      [        :X  d   e[        [        R                  " U5      / SQ5        [        R                  " U[        R
                  :H  5      S:  d   e[        [        5       5      n U R                  [        R                  [        R
                  5      R                  [        R                  5      n[        U R                  5      [        [        S-
  -  S-  :X  d   e[        [        R                  " U5      / SQ5        [        R                  " U[        R
                  :H  5      S:  d   eg )N)r   r4   r5   ?r4   r5   )r   r!   r=   re   rf   rg   r9   rU   rh   ri   r&   r;   rv   rj   r   )r>   rk   s     rB   test_ovr_ovo_regressorr      s    35
6C77499dkk*22499=Ds9,,,ryy	27744;;&'#---
24
5C77499dkk*22499=Ds9	A#>#BBBBryy	27744;;&'#---rR   sparse_containerc           
         [        SS9n[        R                  " SSSSSSS	S
9u  p#US S US S pTUSS  n[        U5      R	                  XE5      nUR                  U5      n[        U5      R	                  X@" U5      5      n	U	R                  U5      n
UR                  (       d   e[        R                  " U
5      (       d   e[        U
R                  5       U5        U	R                  U5      nUS:  n[        XR                  5       5        [        R                  " 5       n[        U5      R	                  X@" U5      5      n	U	R                  U5      S	:  R                  [         5      n[        XR                  U5      R                  5       5        g )Nr4   alpharo      r   r.   2   Tr   	n_samples
n_featuresri   n_labelslengthallow_unlabeledr1   P         ?)r   r   make_multilabel_classificationr   r=   r9   multilabel_spissparser&   toarraypredict_probar   r   rV   astypeint)r   base_clfr@   YX_trainY_trainX_testra   Y_predclf_sprsY_pred_sprsY_probark   dec_preds                 rB   test_ovr_fit_predict_sparser      sm   
 1%H22DA "vq"vWrsVF
h
'
+
+G
=C[[ F"8,00:J7:STH""6*K???;;{####{**,f5 $$V,G S=Dt0023 '')C"3'++G5Eg5NOH**62Q6>>sCHx!1!1&!9!A!A!CDrR   c                  V   [         R                  " S5      n SU S S2S S 24'   [         R                  " S5      nSUSS 2S4'   SUS S 2S4'   SUS S 2S4'   [        [	        5       5      nSn[
        R                  " [        US9   UR                  X5        S S S 5        UR                  U 5      n[        [         R                  " U5      [         R                  " U5      5        UR                  U 5      n[         R                  " US S 2S	S 24   5      S:X  d   eUR                  U 5      n[        US S 2S
4   [         R                  " U R                  S   5      5        [         R                  " S5      nSUSS 2S4'   [        [	        5       5      nSn[
        R                  " [        US9   UR                  X5        S S S 5        UR                  U 5      n[        US S 2S
4   [         R                  " U R                  S   5      5        g ! , (       d  f       GN|= f! , (       d  f       Nf= f)N
   r5   r   r   )r   r.   r4   r5   z,Label .+ is present in all training examplesr2   r   z/Label not 1 is present in all training examples)r;   onesrT   r   r   r7   warnsUserWarningr=   r9   r&   r<   rV   rv   r   shape)r@   rA   r>   r?   y_preds        rB   test_ovr_always_presentr      s    	AAbqb!eH 	AAab!eHAadGAadG
02
3C
9C	k	- 
.[[^Frxx'!5""1%F99VArsF^$)))q!Fvae}bggaggaj&9: 	AAab!eH
02
3C
<C	k	- 
.q!Fvae}bhhqwwqz&:;% 
.	- 
.	-s   H(H
H
H(c                     [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      n / SQn[         R                  " / SQ/ SQ/ S	Q/ SQ/ S	Q/5      n[        S
R                  5       5      n[	        5       [        SS9[        5       [        5       [        5       4 H  n[        U5      R                  X5      n[        UR                  5      U:X  d   eUR                  [         R                  " / SQ/5      5      S   n[        US/5        [        U5      R                  X5      nUR                  / SQ/5      S   n[        U/ SQ5        M     g )Nr   r   r   r   r   r   r.   r   r   r   r      r   r   r   )eggsspamhamr   r   )r   r   r4   r   r4   r   r4   r   r   zham eggs spamr   r0   r   r      r   )r;   r<   setsplitr   r   r   r   r   r   r=   classes_r9   r&   )r@   rA   r   classesr   ra   r   s          rB   test_ovr_multiclassr     s   
)Y	9iHIA.A
)Y	9iHIA/'')*G 	q! "(+//53<< G+++RXXyk23A66F8, "(+//5i[)!,69-rR   c                    ^^^^ [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      m/ SQm[         R                  " / SQ/5      R                  m[        SR	                  5       5      mSUUUU4S	 jjn [        S
S9[        5       [        5       [        5       4 H  nU " U5        M     [        5       [        SS9[        5       4 H
  nU " USS9  M     g )Nr   r   r   r   r   )r   r   r   r   r   )r   r4   r4   r   r4   z	eggs spamc                   > [        U 5      R                  TT
5      n[        UR                  5      T	:X  d   eUR	                  [
        R                  " / SQ/5      5      S   n[        US/5        [        U S5      (       a#  UR                  T5      nUR                  S:X  d   eU(       au  [
        R                  " / SQ/5      nUR                  U5      nS[        US   5      :X  d   eUR                  [
        R                  " USS9   UR	                  U5      :X  d   e[        U 5      R                  TT5      nUR	                  / S	Q/5      S   nUS:X  d   eg )
Nr   r   r   rV   )r   r5   r4   r^   r   )r   r=   r   r   r9   r;   r<   r&   rz   rV   r   r   rU   r`   )r   test_predict_probara   r   decr   probabilitiesr@   r   r   rA   s          rB   conduct_test%test_ovr_binary.<locals>.conduct_test.  s,   !(+//153<< G+++RXXyk23A66F8,8011''*C99$$$XXyk*F--f5MM!,----<<		-a @AS[[QWEXXXX "(+//15i[)!,{{rR   r   r0   Tprobability)r   )F)r;   r<   Tr   r   r   r   r   r   r   r   r   )r   r   r@   r   r   rA   s     @@@@rB   test_ovr_binaryr   &  s    
)Y	9iHIA0A
/"#%%A+##%&G * 	q!	 	X #_cd&;=O=QRX$7 SrR   c            	         [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      n [         R                  " / SQ/ SQ/ SQ/ S	Q/ S
Q/5      n[        5       [        SS9[	        5       [        5       [        5       [        SS94 HU  n[        U5      R                  X5      nUR                  / SQ/5      S   n[        U/ SQ5        UR                  (       a  MU   e   g )N)r   r   r   r   )r.   r.   r.   )r   r   r   r   )r   r4   r4   r   )r4   r4   r4   )r4   r   r4   r   r   r0   r   r   )r   r   r   )r;   r<   r   r   r   r   r   r   r   r=   r9   r&   r   )r@   rA   r   ra   r   s        rB   test_ovr_multilabelr   N  s    
)Y	9iHIA
)Y	9iHIA 	q!C "(+//5i[)!,69-rR   c                  :   [        [        R                  " 5       5      n U R                  [        R
                  [        R                  5        [        U R                  5      S:X  d   eU R                  [        R
                  [        R                  5      S:  d   eg )Nr.   r   )
r   r   r   r=   re   rf   rg   rU   rh   score)r>   s    rB   test_ovr_fit_predict_svcr   a  s`    
cggi
(CGGDIIt{{#s1$$$99TYY,s222rR   c                  h   [        SS9n [        SSS5       H  u  pn[        R                  " SSSS	S
USS9u  pEUS S US S pvUSS  USS  p[	        U 5      R                  Xg5      n
U
R                  U5      nU
R                  (       d   e[        [        XSS9US	S9  [        [        XSS9US	S9  M     g )Nr4   r   )TF)RQ?gQ?)r   r6   ro   r   r   r5   r   r   r   r   micro)average)decimal)r   zipr   r   r   r=   r9   r   r%   r   r   )r   auprecrecallr@   r   r   r   r   Y_testra   r   s               rB   test_ovr_multilabel_datasetr   h  s    1%H|\J&66
 Sb61Sb62323!(+//AV$FG<dA	
 	961	
' KrR   c                  (   [        SS9n S GH  n[        R                  " SSSSSUS	S
9u  p#US S US S pTUSS  n[        U 5      R	                  XE5      n[        [
        R                  " 5       5      R	                  XE5      n[        US5      (       a   e[        [
        R                  " SS95      n[        US5      (       a   eUR	                  XE5        [        US5      (       a   e[        US5      (       d   e[        [
        R                  " SS9SS/0S9n	[        U	5      n
[        U
S5      (       a   eU
R	                  XE5        [        U
S5      (       d   eUR                  U5      nUR                  U5      nUS:  n[        X5        GM     g )Nr4   r   )FTro   r   r   r.   r   r   r   r   r   Fr   rV   r   T)
param_gridr   )r   r   r   r   r=   r   SVRrz   r   r   r9   r   r&   )r   r   r@   r   r   r   r   ra   decision_onlygsproba_after_fitr   r   rk   s                 rB   !test_ovr_multilabel_predict_probar     s   1%H66
 Sb61Sb623!(+//A ,CGGI6::7L=/:::: ,CGG,FG=/::::'+=/::::}&9:::: GG&MD63J
 .b1?O<<<<G-8888V$##F+ }4(Q rR   c                     [        SS9n [        R                  [        R                  p!US S US S pCUSS  n[	        U 5      R                  X45      n[	        [        R                  " 5       5      R                  X45      n[        US5      (       a   eUR                  U5      nUR                  U5      n	[        U	R                  SS9S5        U	R                  SS9n
X-
  R                  5       (       a   eg )Nr4   r   r   r   r^         ?)r   re   rf   rg   r   r=   r   r   rz   r9   r   r%   sumr`   any)r   r@   r   r   r   r   ra   r   r   r   rk   s              rB   #test_ovr_single_label_predict_probar     s    1%H99dkkq"vq"vWrsVF
h
'
+
+G
=C (	266wHM}o6666[[ F'G+S1 >>q>!D""$$$$$rR   c                       " S S[         [        5      n U " 5       n[        R                  [        R                  p2[        U5      R                  X#5      nUR                  U5      n[        US5        g)zeCheck that predic_proba returns all zeros when the base estimator
never predicts the positive class.
c                        \ rS rSrS rS rSrg)Gtest_ovr_single_label_predict_proba_zero.<locals>.NaiveBinaryClassifieri  c                 <    [         R                  " U5      U l        U $ rM   )r;   rv   r   rO   s      rB   r=   Ktest_ovr_single_label_predict_proba_zero.<locals>.NaiveBinaryClassifier.fit  s    IIaLDMKrR   c                 Z    [         R                  " [        U5      S45      nSUS S 2S4'   U$ )Nr5   r   r4   )r;   r   rU   )rP   r@   probas      rB   r   Utest_ovr_single_label_predict_proba_zero.<locals>.NaiveBinaryClassifier.predict_proba  s*    GGSVQK(EE!Q$KLrR   )r   N)rX   rY   rZ   r[   r=   r   r\   rN   rR   rB   NaiveBinaryClassifierr     s    		rR   r   rE   N)	r   r   re   rf   rg   r   r=   r   r   )r   r   r@   rA   ra   y_probas         rB   (test_ovr_single_label_predict_proba_zeror     sX    
	 	 %&H99dkkq
h
'
+
+A
1C"GGS!rR   c            
      2   [         R                  " SSSSSSSS9u  pU S S	 US S	 p2U S	S  n[        [        R                  " 5       5      R                  X#5      n[        UR                  U5      S:  R                  [        5      UR                  U5      5        g )
Nro   r   r   r.   r   Tr   r   r   )r   r   r   r   r   r=   r&   rV   r   r   r9   r@   r   r   r   r   ra   s         rB   %test_ovr_multilabel_decision_functionr     s    22DA "vq"vWrsVF
cggi
(
,
,W
>C			v	&	*2237V9LrR   c                      [         R                  " SSSS9u  pU S S US S p2U SS  n[        [        R                  " 5       5      R                  X#5      n[        UR                  U5      R                  5       S:  UR                  U5      5        g )Nro   r   r   )r   r   r1   r   )
r   make_classificationr   r   r   r=   r&   rV   ravelr9   r   s         rB   'test_ovr_single_label_decision_functionr     s~    ''#"STUDA"vq"vWrsVF
cggi
(
,
,W
>Cs,,V4::<q@#++fBUVrR   c                      [        [        SS95      n / SQn[        U SU05      nUR                  [        R
                  [        R                  5        UR                  R                  S   R                  nX1;   d   eg Nr   r0   )皙?r   r6   estimator__C)
r   r   r   r=   re   rf   rg   best_estimator_rh   C)r>   Cscvbest_Cs       rB   test_ovr_gridsearchr    sc    
iQ7
8C	B	cNB/	0BFF499dkk"++A.00F<<rR   c                     [        S[        5       4/5      n [        U 5      nUR                  [        R
                  [        R                  5        [        [        5       5      nUR                  [        R
                  [        R                  5        [        UR                  [        R
                  5      UR                  [        R
                  5      5        g )Ntree)	r   r    r   r=   re   rf   rg   r&   r9   )ra   ovr_piper>   s      rB   test_ovr_pipeliner     s     V3567
8C"3'HLLDKK(
46
7CGGDIIt{{#s{{499-x/?/?		/JKrR   c                      [        [        SS95      n [        R                  " [        5         U R                  / 5        S S S 5        g ! , (       d  f       g = fNr   r0   )r   r   r7   r8   r
   r9   ovos    rB   test_ovo_exceptionsr    s4    
YA6
7C	~	&B 
'	&	&   A
Ac                     [        [        SS95      n U R                  [        R                  [        R
                  5      R                  [        R                  5      n[        R                   Vs/ s H  n[        U5      PM     nnU R                  U[        [        R
                  5      5      R                  U5      n[        X5        g s  snf r  )	r   r   r=   re   rf   rg   r9   listr&   )r  prediction_from_arrayairis_data_listprediction_from_lists        rB   test_ovo_fit_on_listr    s     YA6
7CGGDIIt{{;CCDIIN'+yy1y!d1gyN177>43DEMM ,C	 2s   0Cc                  *   [        [        SS95      n U R                  [        R                  [        R
                  5      R                  [        R                  5        [        U R                  5      [        [        S-
  -  S-  :X  d   e[        [        5       5      n U R                  [        R                  [        R
                  5      R                  [        R                  5        [        U R                  5      [        [        S-
  -  S-  :X  d   eg )Nr   r0   r4   r5   )r   r   r=   re   rf   rg   r9   rU   rh   ri   r   r  s    rB   test_ovo_fit_predictr    s    
YA6
7CGGDIIt{{#++DII6s9	A#>#BBBB ]_
-CGGDIIt{{#++DII6s9	A#>#BBBBrR   c                  h   [         R                  " 5       n U R                  U R                  p![	        [        5       5      nUR                  US S US S [        R                  " U5      5        UR                  USS  USS  5        UR                  U5      n[	        [        5       5      nUR                  X5        UR                  U5      n[        UR                  5      [        [        S-
  -  S-  :X  d   e[        R                  " X$:H  5      S:  d   e[        XF5        [	        [        5       5      nUR                  US S US S [        R                  " U5      5        UR                  USS  USS  5        UR                  U5      n[	        [        5       5      nUR                  X5      R                  U5      n[        XF5        [        UR                  5      [        [        R                  " U5      5      :X  d   e[        R                  " X$:H  5      S:  d   e[	        [        5       5      n[        R                   R#                  SS5      n/ SQnUR                  US S US S / S	Q5        UR                  USS  USS  5        UR                  U5      n[	        [        5       5      nUR                  X5      R                  U5      n[        X5        [	        [        5       5      n/ S
Qn	[%        SR'                  [        R                  " U	5      [        R                  " U5      5      5      n
[(        R*                  " [,        U
S9   UR                  US S U	[        R                  " U5      5        S S S 5        [	        [/        5       5      n[1        US5      (       a   eg ! , (       d  f       N5= f)Nro   r4   r5   rd   <   rp   )r4   r4   r5   r.   r.   r   r   r   r   r   r   r   r5   r5   rt   )r   r4   r5   r.   r   )r   r4   r5   r.   r   r   r5   z6Mini-batch contains {0} while it must be subset of {1}r2   ru   )r   	load_irisrf   rg   r   r   ru   r;   rv   r9   r=   rU   rh   ri   rj   r%   rx   randr   formatr7   r8   r:   r   rz   )tempr@   rA   ovo1r}   ovo2rl   r  rk   error_y
message_rer>   s               rB   test_ovo_partial_fit_predictr%  *  s   D99dkkqmo.DQtWagryy|4QstWag&LLOEmo.DHHQNLLOEt IQ$?!$CCCC771:%%%% mo.DQsVQsVRYYq\2QrsVQrsV$LLOEmo.DHHQN""1%E%t C		!$5555771:%%%
]_
-C
		r1A2AOOAbqE1Ra5/2OOAabE1QR5!;;q>Dmo.DHHQN""1%E$ ]_
-C#G@GGIIg		!	
J
 
z	4"1w		!5 
5 SU
#CsM***** 
5	4s   	+N##
N1c                     [         R                  R                  S   n [        [	        SS95      nUR                  [         R                  [         R                  S:H  5        UR                  [         R                  5      nUR                  U 4:X  d   eUR                  [         R                  [         R                  5        UR                  [         R                  5      nUR                  U [        4:X  d   e[        UR                  SS9UR                  [         R                  5      5        [        R                  " U [        45      nSn[        [        5       Hp  n[        US-   [        5       HV  nUR                  U   R                  [         R                  5      nX7S:H  U4==   S-  ss'   X7S:H  U4==   S-  ss'   US-  nMX     Mr     [        U[        R                   " U5      5        [        [        5       Hb  n[#        US S 2U4   5      R%                  [#        / SQ5      5      (       d   e['        [        R(                  " US S 2U4   5      5      S:  a  Mb   e   g )Nr   r0   r4   r^   )rE   r   rF      )re   rf   r   r   r   r=   rg   rV   ri   r&   r`   r9   r;   rT   rangerh   roundr   issubsetrU   rv   )	r   ovo_clf	decisionsvoteskijrk   	class_idxs	            rB   test_ovo_decision_functionr2  _  s   		"I !:;GKK		4;;!+,))$))4I??yl*** KK		4;;'))$))4I??y)4444y''Q'/1KL HHi+,E	A9q1ui(A&&q)11$))<D!)Q,1$!)Q,1$FA	 )  ubhhy129%	 5I&'00_1EFFFF 299Yq)|456<<< &rR   c                      [        [        SS95      n / SQn[        U SU05      nUR                  [        R
                  [        R                  5        UR                  R                  S   R                  nX1;   d   eg r   )
r   r   r   r=   re   rf   rg   r  rh   r  )r  r  r  r  s       rB   test_ovo_gridsearchr4    sc    
YA6
7C	B	cNB/	0BFF499dkk"++A.00F<<rR   c                     [         R                  " SS/SS/SS/SS//5      n [         R                  " / SQ5      n[        [        SSS S95      nUR	                  X5      R                  U 5      nUR                  U 5      n[         R                  " U5      nXE-
  n[        US	S S 24   S5        [        [         R                  " USS  SS
9USS  5        US	   US	   R                  5       :X  d   eg )Nr4   r5   r   r   r5   r   r4   r5   Fr   r#   rr   rs   r   r^   )
r;   r<   r   r   r=   r9   rV   r)  r&   r`   )r@   rA   	multi_clfovo_predictionovo_decisionr-  normalized_confidencess          rB   test_ovo_tiesr<    s     	1a&1a&2q'B845A
A":eaT#RSI]]1(003N..q1L HH\"E)1 uQT{A&ryyqr3^AB5GH! 6q 9 @ @ BBBBrR   c            	      .   [         R                  " SS/SS/SS/SS//5      n [         R                  " / SQ5      n[        S5       HL  nX-   S-  n[        [	        SSS S	95      nUR                  X5      R                  U 5      nUS
   US-  :X  a  ML   e   g )Nr4   r5   r   r   r6  r.   Fr   r7  r   )r;   r<   r(  r   r   r=   r9   )r@   y_refr/  rA   r8  r9  s         rB   test_ovo_ties2r?    s    
1a&1a&2q'B845AHH\"E 1XY!O&z%!QU'VW	"q,44Q7a AE)))	 rR   c                      [         R                  " S5      n [         R                  " / SQ5      n[        [	        5       5      nUR                  X5        [        XR                  U 5      5        g )Nr   )r  bcd)r;   eyer<   r   r   r=   r&   r9   )r@   rA   r  s      rB   test_ovo_string_yrE    sE    
q	A
%&A
Y[
)CGGAMq++a.)rR   c                     [         R                  " S5      n [         R                  " S/S-  5      n[        [	        5       5      nSn[
        R                  " [        US9   UR                  X5        S S S 5        g ! , (       d  f       g = f)Nr   r  zwhen only one classr2   )	r;   rD  r<   r   r   r7   r8   r:   r=   r@   rA   r  r?   s       rB   test_ovo_one_classrH    sY    
q	A
#A
Y[
)C
C	z	- 
.	-	-s   A::
Bc                     [         R                  n [         R                  S S 2S4   n[        [        5       5      nSn[        R
                  " [        US9   UR                  X5        S S S 5        g ! , (       d  f       g = fNr   zUnknown label typer2   )re   rf   r   r   r7   r8   r:   r=   rG  s       rB   test_ovo_float_yrK    sR    		A		!Q$A
Y[
)C
C	z	- 
.	-	-   A11
A?c                      [        [        SS95      n [        R                  " [        5         U R                  / 5        S S S 5        g ! , (       d  f       g = fr  )r   r   r7   r8   r
   r9   ecocs    rB   test_ecoc_exceptionsrP    s5    	q 9:D	~	&R 
'	&	&r  c                     [        [        SS9SSS9n U R                  [        R                  [        R
                  5      R                  [        R                  5        [        U R                  5      [        S-  :X  d   e[        [        5       SSS9n U R                  [        R                  [        R
                  5      R                  [        R                  5        [        U R                  5      [        S-  :X  d   eg )Nr   r0   r5   )	code_sizer1   )r   r   r=   re   rf   rg   r9   rU   rh   ri   r   rN  s    rB   test_ecoc_fit_predictrS    s    	q 9QUVWDHHTYY$,,TYY7t IM111  11MDHHTYY$,,TYY7t IM111rR   c                      [        [        SS9SS9n / SQn[        U SU05      nUR                  [        R
                  [        R                  5        UR                  R                  S   R                  nX1;   d   eg r   )
r   r   r   r=   re   rf   rg   r  rh   r  )rO  r  r  r  s       rB   test_ecoc_gridsearchrU    se    	q 9JD	B	d^R0	1BFF499dkk"++A.00F<<rR   c                     [         R                  n [         R                  S S 2S4   n[        [        5       5      nSn[        R
                  " [        US9   UR                  X5        S S S 5        g ! , (       d  f       g = frJ  )re   rf   r   r   r7   r8   r:   r=   rG  s       rB   test_ecoc_float_yrW    sR    		A		!Q$A
y{
+C
C	z	- 
.	-	-rL  csc_containerc                 T   [         R                  [         R                  p!U " U5      n[        [        SSS.S9n[        USS9n[        R                  " [        SS9   UR                  X25        S S S 5        UR                  X5        [        R                  " [        SS9   UR                  U5        S S S 5        [        [        SS95      nUR                  X25      R                  U5        [        UR                  5      S	:X  d   eg ! , (       d  f       N= f! , (       d  f       Nm= f)
NTF)	ensure_2daccept_sparse)check_Xcheck_X_paramsr   r0   zSparse data was passedr2   r   )re   rf   rg   r$   r"   r   r7   r8   	TypeErrorr=   r9   r   rU   rh   )rX  r@   rA   X_spbase_estimatorrO  s         rB   (test_ecoc_delegate_sparse_base_estimatorra    s     99dkkqD (%)EBN  Q?D	y(@	A 
B 	HHQN	y(@	AT 
B  	q 9:DHHTd#t A%%% 
B	A 
B	As   D D
D
D'c                     [         R                  " SS9n [        R                  [        R                  p![        U 5      n[        R                  " XR                  5      nUR                  XB5        [        UR                  5      nUR                  nU H.  nUR                  S   U-  US-
  -  UR                  S   :X  a  M.   e   g )Nprecomputedkernelr   r4   )r   r   re   rf   rg   r   r;   dotr   r=   rU   rh   pairwise_indices_r   )clf_precomputedr@   rA   	ovr_falselinear_kerneln_estimatorsprecomputed_indicesidxs           rB   test_pairwise_indicesrn    s    gg]3O99dkkq"?3IFF1ccNMMM-#y,,-L#55"IIaL<'<!+;<@S@STU@VV	
V #rR   c                     [         R                  [         R                  pUS   S:X  d   eU SS n USS nU R                  S:X  d   e[        R
                  " SS9R                  X5      nUR                  S:X  d   e[        U5      R                  X5      nUR                  S:X  d   eUR                   H  nUR                  S:X  a  M   e   [        U5      R                  X5      nUR                  S:X  d   eUR                  S:X  d   e[        UR                  5      S:X  d   eUR                   H  nUR                  S:X  a  M   e   X R                  -  nUR                  S	:X  d   e[        R
                  " S
S9R                  Xa5      nUR                  S:X  d   e[        U5      R                  Xa5      nUR                  S:X  d   eUR                  S:X  d   e[        UR                  5      S:X  d   eUR                   H  nUR                  S:X  a  M   e   [        U5      R                  Xa5      n	U	R                  S:X  d   eUR                  S:X  d   e[        UR                  5      S:X  d   eU	R                  S   R                  S:X  d   eU	R                  S   R                  S:X  d   eU	R                  S   R                  S:X  d   eg)a  Check the n_features_in_ attributes of the meta and base estimators

When the training data is a regular design matrix, everything is intuitive.
However, when the training data is a precomputed kernel matrix, the
multiclass strategy can resample the kernel matrix of the underlying base
estimator both row-wise and column-wise and this has a non-trivial impact
on the expected value for the n_features_in_ of both the meta and the base
estimators.
r   r   N)   r   linearrd  r   r.   )rp  rp  rc  rp  c   r4   r5   ro   )re   rf   rg   r   r   r   r=   n_features_in_r   rh   r   
n_classes_rU   r   )
r@   rA   clf_notprecomputedovr_notprecomputedestovo_notprecomputedKrh  ovr_precomputedovo_precomputeds
             rB   test_pairwise_n_features_inr|  .  s    99dkkq R5A::	#2A	#2A 77h155a;,,111,-?@DDQJ,,111!--!!Q&&& . ,,>?CCAI,,111((A---!--.!333!--!!Q&&& .
 	
CCA77j   gg]377=O))S000)/:>>qDO))S000%%*****+q000**!!S((( + )9==aCO))S000%%*****+q000&&q)88B>>>&&q)88B>>>&&q)88C???rR   MultiClassClassifierc                 "   [         R                  " SS9n[         R                  " 5       nU " U5      nUR                  5       R                  R                  (       a   eU " U5      nUR                  5       R                  R                  (       d   eg )Nrc  rd  )r   r   __sklearn_tags__
input_tagspairwise)r}  rh  ru  ri  ovr_trues        rB   test_pairwise_tagr  s  so     gg]3O$%78I))+66????#O4H$$&11::::rR   c                 4   [         R                  " SS9n[         R                  " SS9n[        R                  [        R                  pCU " U5      nU " U5      n[
        R                  " X3R                  5      n[        XSUSS9n[        XgUSS9n	[        X5        g )Nrc  rd  rq  raise)error_score)
r   r   re   rf   rg   r;   rf  r   r   r&   )
r}  rh  ru  r@   rA   multiclass_clf_notprecomputedmulticlass_clf_precomputedrj  score_not_precomputedscore_precomputeds
             rB   test_pairwise_cross_val_scorer    s     gg]3O199dkkq$89K$L!!5o!FFF1ccNM+%! ("1' (@rR   c                    [         R                  R                  S5      n[        R                  [        R
                  p2[         R                  " U5      nUR                  SS/UR                  SS/S9R                  [        5      n[         R                  X$'   [        [        5       [        US95      nU " U5      R                  X#5      R!                  X#5        g )N*   r4   r   r   r   )pr0   )r;   rx   RandomStatere   rf   rg   copychoicer   r   boolnanr   r   r   r=   r   )r}  rngr@   rA   masklrs         rB   test_support_missing_valuesr    s     ))


#C99dkkq

A::q!fagg#s:4;;DADffAG	}(:(L	MB  &,,Q2rR   make_yc                 6   [         R                  " S5      nU " S[         R                  S9n[        [	        5       5      nUR                  X5        UR                  U5      n[         R                  " UR                  S   S45      nSUSS2S4'   [        XE5        g)zMCheck that constant y target does not raise.

Non-regression test for #21869
r   )r   r4   )dtyper   r5   r4   N)
r;   r   int32r   r   r=   r   rT   r   r   )r  r@   rA   r>   r   expecteds         rB   test_constant_int_targetr    sz     	Awbhh'A
02
3CGGAMq!FxxQ(HHQTNF%rR   c                      [        SS9u  p[        SSS9n[        U5      nUR                  X5        UR                  X5        [	        UR                  U 5      UR                  U 5      5        g)zVCheck that ovo is consistent with binary classifier.

Non-regression test for #13617.
T)
return_X_y   distance)n_neighborsweightsN)r	   r   r   r=   r&   r9   )r@   rA   ra   r  s       rB   )test_ovo_consistent_binary_classificationr    sV    
 .DA
1j
AC
S
!CGGAMGGAMs{{1~s{{1~6rR   c                     [         R                  " 5       n [        [        SS9S9nSnSn[        R
                  " [        US9 nUR                  U R                  U R                  5        SSS5        [        WR                  R                  [        5      (       d   eU[        UR                  R                  5      ;   d   eg! , (       d  f       N_= f)zCheck 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'r2   N)r   r  r   r   r7   r8   AttributeErrorru   rf   rg   
isinstancevalue	__cause__str)re   ra   	outer_msg	inner_msg	exec_infos        rB   )test_multiclass_estimator_attribute_errorr    s     D (:(K
LCKILI	~Y	79		4;;/ 
8ioo//@@@@IOO556666 
8	7s   'C
C)rer   numpyr;   r7   scipy.sparsesparser   numpy.testingr   sklearnr   r   sklearn.baser   r   sklearn.datasetsr	   sklearn.exceptionsr
   sklearn.imputer   sklearn.linear_modelr   r   r   r   r   r   r   sklearn.metricsr   r   sklearn.model_selectionr   r   sklearn.multiclassr   r   r   sklearn.naive_bayesr   sklearn.neighborsr   sklearn.pipeliner   r   sklearn.svmr   r   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  re   rx   r  r  permutationrg   sizepermrf   ri   rC   rG   rb   rm   r~   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r%  r2  r4  r<  r?  rE  rH  rK  rP  rS  rU  rW  ra  rn  r|  r  r  r  r   rT   r  r  r  rN   rR   rB   <module>r     s       ) ! 7 / - (   : A 
 . 2 4 & F 6 J  RiiA
t{{''(IIdO	kk$	7((T&/ !+H
'.$ ^#n4~EV&E	&ER!<H.4%8P&3
4*)Z%*"2$W	L	D	C2+j,=^C0
**	2 .9& :&4
"B@J 02DE;; 02DEAA& 02DE
3
3 BGGRXX#67& 8& 7 7rR   