
    -i                     6   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 rV\R                  R                  S\@\?-   \>-   \A-   \B-   5      S 5       rYS  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; ru\R                  R                  S<\?5      S= 5       rvS> rwS? rx\R                  R                  S@\&\%/5      SA 5       ry\R                  R                  S@\&\%/5      SB 5       rz\R                  R                  S@\&\%/5      SC 5       r{\R                  R                  SD\R                  \R                  /5      SE 5       r~SF rSG rg)H    )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       P/var/www/html/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                  ^   [        [        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   lenestimators_	n_classesr;   meanr   )r>   predclfpred2s       rB   test_ovr_fit_predictrT   U   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;;$&'$...    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   rI      r5   r4   r4   r4   r4   r5   r.   r.   r   r   r5   r.   r4   r5   r.   r4   F)max_itertolr#   r1      partial_fit)r#   rJ   rK   rL   r   r   r]   r;   uniquer9   r=   r%   rM   rN   rP   absrandomrandnr   r   hasattr)r@   rA   r>   rQ   ovr2rS   ovr1pred1s           rB   test_ovr_partial_fitrf   e   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*****rU   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)
NrX   r5   rY   r\      zAMini-batch contains \[.+\] while classes must be subset of \[.+\]r2   )r@   rA   )r   r   r;   r_   r`   ra   r]   r^   r7   r8   r:   )r>   r@   rA   y1r?   s        rB   test_ovr_partial_fit_exceptionsrk      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=   rJ   rK   rL   r9   rM   rN   rO   r&   r;   r^   rP   r   )r>   rQ   s     rB   test_ovr_ovo_regressorrn      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;;&'#---rU   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   alpharW      rh   r.   2   Tr   	n_samples
n_featuresrO   n_labelslengthallow_unlabeledr1   P         ?)r   r   make_multilabel_classificationr   r=   r9   multilabel_spissparser&   toarraypredict_probar   r   decision_functionastypeint)ro   base_clfr@   YX_trainY_trainX_testrR   Y_predclf_sprsY_pred_sprsY_probarQ   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DrU   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   rh   )r   r.   r4   r5   z,Label .+ is present in all training examplesr2   ri   z/Label not 1 is present in all training examples)r;   oneszerosr   r   r7   warnsUserWarningr=   r9   r&   r<   r   r^   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   rh   r   rh   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   rR   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-rU   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   r   )rh   r5   r4   axisr   )r   r=   r   r   r9   r;   r<   r&   rb   r   r   r   rM   argmax)r   test_predict_probarR   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[)!,{{rU   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rU   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   rh   r   )r.   r.   r.   )r   r   r   r   )r   r4   r4   r   )r4   r4   r4   )r4   r   r4   r   r   r0   r|   rq   )r   r   r   )r;   r<   r   r   r   r   r   r   r   r=   r9   r&   r~   )r@   rA   r   rR   r   s        rB   test_ovr_multilabelr   ;  s    
)Y	9iHIA
)Y	9iHIA 	q!C "(+//5i[)!,69-rU   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.   rm   )
r   r   r   r=   rJ   rK   rL   rM   rN   score)r>   s    rB   test_ovr_fit_predict_svcr   N  s`    
cggi
(CGGDIIt{{#s1$$$99TYY,s222rU   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   rq   )TF)RQ?gQ?)r   r6   rW   rs   rh   r5   rt   r   ru   r{   micro)average)decimal)r   zipr   r}   r   r=   r9   r~   r%   r   r   )r   auprecrecallr@   r   r   r   r   Y_testrR   r   s               rB   test_ovr_multilabel_datasetr   U  s    1%H|\J&66
 Sb61Sb62323!(+//AV$FG<dA	
 	961	
' KrU   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   rq   )FTrW   rs   rh   r.   rt   r   ru   r{   r   Fr   r   r   T)
param_gridr|   )r   r   r}   r   r=   r   SVRrb   r   r   r9   r   r&   )r   r   r@   r   r   r   r   rR   decision_onlygsproba_after_fitr   r   rQ   s                 rB   !test_ovr_multilabel_predict_probar   o  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 rU   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   rq   r{   r   r         ?)r   rJ   rK   rL   r   r=   r   r   rb   r9   r   r%   sumr   any)r   r@   r   r   r   r   rR   r   r   r   rQ   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""$$$$$rU   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 $ )N)r;   r^   r   )selfr@   rA   s      rB   r=   Ktest_ovr_single_label_predict_proba_zero.<locals>.NaiveBinaryClassifier.fit  s    IIaLDMKrU   c                 Z    [         R                  " [        U5      S45      nSUS S 2S4'   U$ )Nr5   r   r4   )r;   r   rM   )r   r@   probas      rB   r   Utest_ovr_single_label_predict_proba_zero.<locals>.NaiveBinaryClassifier.predict_proba  s*    GGSVQK(EE!Q$KLrU   )r   N)__name__
__module____qualname____firstlineno__r=   r   __static_attributes__ rU   rB   NaiveBinaryClassifierr     s    		rU   r   rE   N)	r   r   rJ   rK   rL   r   r=   r   r   )r   r   r@   rA   rR   y_probas         rB   (test_ovr_single_label_predict_proba_zeror     sX    
	 	 %&H99dkkq
h
'
+
+A
1C"GGS!rU   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 )
NrW   rs   rh   r.   rt   Tr   ru   r{   )r   r}   r   r   r   r=   r&   r   r   r   r9   r@   r   r   r   r   rR   s         rB   %test_ovr_multilabel_decision_functionr     s    22DA "vq"vWrsVF
cggi
(
,
,W
>C			v	&	*2237V9LrU   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 )NrW   rs   r   )rv   rw   r1   r{   )
r   make_classificationr   r   r   r=   r&   r   ravelr9   r   s         rB   'test_ovr_single_label_decision_functionr     s~    ''#"STUDA"vq"vWrsVF
cggi
(
,
,W
>Cs,,V4::<q@#++fBUVrU   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=   rJ   rK   rL   best_estimator_rN   C)r>   Cscvbest_Cs       rB   test_ovr_gridsearchr     sc    
iQ7
8C	B	cNB/	0BFF499dkk"++A.00F<<rU   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=   rJ   rK   rL   r&   r9   )rR   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KrU   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=   rJ   rK   rL   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=   rJ   rK   rL   r9   rM   rN   rO   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BrU   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)NrW   r4   r5   rI   <   rX   )r4   r4   r5   r.   r.   r   r   r   r   r   r   r   r5   r5   r\   )r   r4   r5   r.   r   )r   r4   r5   r.   r   rh   r5   z6Mini-batch contains {0} while it must be subset of {1}r2   r]   )r   	load_irisrK   rL   r   r   r]   r;   r^   r9   r=   rM   rN   rO   rP   r%   r`   randr   formatr7   r8   r:   r   rb   )tempr@   rA   ovo1re   ovo2rS   r  rQ   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      )rJ   rK   r   r   r   r=   rL   r   rO   r&   r   r9   r;   r   rangerN   roundr   issubsetrM   r^   )	rv   ovo_clf	decisionsvoteskijrQ   	class_idxs	            rB   test_ovo_decision_functionr&  L  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<<< &rU   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=   rJ   rK   rL   r   rN   r   )r  r   r   r   s       rB   test_ovo_gridsearchr(  {  sc    
YA6
7C	B	cNB/	0BFF499dkk"++A.00F<<rU   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   ri   r5   r   r4   r5   Fr   r#   rZ   r[   r   r   )
r;   r<   r   r   r=   r9   r   r  r&   r   )r@   rA   	multi_clfovo_predictionovo_decisionr!  normalized_confidencess          rB   test_ovo_tiesr0    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BrU   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   ri   r*  r.   Fr   r+  r   )r;   r<   r  r   r   r=   r9   )r@   y_refr#  rA   r,  r-  s         rB   test_ovo_ties2r3    s    
1a&1a&2q'B845AHH\"E 1XY!O&z%!QU'VW	"q,44Q7a AE)))	 rU   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_yr9    sE    
q	A
%&A
Y[
)CGGAMq++a.)rU   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;   r8  r<   r   r   r7   r8   r:   r=   r@   rA   r  r?   s       rB   test_ovo_one_classr<    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   )rJ   rK   r   r   r7   r8   r:   r=   r;  s       rB   test_ovo_float_yr?    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_exceptionsrD    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=   rJ   rK   rL   r9   rM   rN   rO   r   rB  s    rB   test_ecoc_fit_predictrG    s    	q 9QUVWDHHTYY$,,TYY7t IM111  11MDHHTYY$,,TYY7t IM111rU   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=   rJ   rK   rL   r   rN   r   )rC  r   r   r   s       rB   test_ecoc_gridsearchrI    se    	q 9JD	B	d^R0	1BFF499dkk"++A.00F<<rU   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r>  )rJ   rK   r   r   r7   r8   r:   r=   r;  s       rB   test_ecoc_float_yrK    sR    		A		!Q$A
y{
+C
C	z	- 
.	-	-r@  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   )rJ   rK   rL   r$   r"   r   r7   r8   	TypeErrorr=   r9   r   rM   rN   )rL  r@   rA   X_spbase_estimatorrC  s         rB   (test_ecoc_delegate_sparse_base_estimatorrU    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   rJ   rK   rL   r   r;   dotr   r=   rM   rN   pairwise_indices_r   )clf_precomputedr@   rA   	ovr_falselinear_kerneln_estimatorsprecomputed_indicesidxs           rB   test_pairwise_indicesrb  
  s    gg]3O99dkkq"?3IFF1ccNMMM-#y,,-L#55"IIaL<'<!+;<@S@STU@VV	
V #rU   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.
ri   r   N)   r   linearrX  r   r.   )rd  rd  rW  rd  c   r4   r5   rW   )rJ   rK   rL   r   r   r   r=   n_features_in_r   rN   r   
n_classes_rM   r   )
r@   rA   clf_notprecomputedovr_notprecomputedestovo_notprecomputedKr\  ovr_precomputedovo_precomputeds
             rB   test_pairwise_n_features_inrp    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???rU   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 )NrW  rX  )r   r   __sklearn_tags__
input_tagspairwise)rq  r\  ri  r]  ovr_trues        rB   test_pairwise_tagrw  `  so     gg]3O$%78I))+66????#O4H$$&11::::rU   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 )NrW  rX  re  raise)error_score)
r   r   rJ   rK   rL   r;   rZ  r   r   r&   )
rq  r\  ri  r@   rA   multiclass_clf_notprecomputedmulticlass_clf_precomputedr^  score_not_precomputedscore_precomputeds
             rB   test_pairwise_cross_val_scorer  n  s     gg]3O199dkkq$89K$L!!5o!FFF1ccNM+%! ("1' (@rU   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   rm   )pr0   )r;   r`   RandomStaterJ   rK   rL   copychoicer   r   boolnanr   r   r   r=   r   )rq  rngr@   rA   masklrs         rB   test_support_missing_valuesr    s     ))


#C99dkkq

A::q!fagg#s:4;;DADffAG	}(:(L	MB  &,,Q2rU   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   r   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%rU   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   rR   r  s       rB   )test_ovo_consistent_binary_classificationr    sV    
 .DA
1j
AC
S
!CGGAMGGAMs{{1~s{{1~6rU   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   AttributeErrorr]   rK   rL   
isinstancevalue	__cause__str)rJ   rR   	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  rJ   r`   r  r  permutationrL   sizepermrK   rO   rC   rG   rT   rf   rk   rn   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r&  r(  r0  r3  r9  r<  r?  rD  rG  rI  rK  rU  rb  rp  rw  r  r  r   r   r  r  r  r   rU   rB   <module>r     s       ) ! 7 / - (   : A 
 . 2 4 & F 6 J  RiiA
t{{''(IIdO	kk$	7((/ !+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 7rU   