
    >[g\                         d dl mZ d dlZd dlZd dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZ d d	lmZmZ d d
lmZm Z  d dl!m"Z"m#Z#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z>m?Z? d dl@mAZAmBZB  ej                         ZDej                  j                  d       ZGeGj                  eDj                  j                        ZKeDj                  eK   eD_L        eDj                  eK   eD_I        dZMd ZNd ZOd ZPd ZQd ZRd ZSej                  j                  de=e<z   e;z   e>z   e?z         d        ZVd ZWd  ZXd! ZYd" ZZd# Z[d$ Z\d% Z]d& Z^d' Z_d( Z`d) Zad* Zbd+ Zcd, Zdd- Zed. Zfd/ Zgd0 Zhd1 Zid2 Zjd3 Zkd4 Zld5 Zmd6 Znd7 Zod8 Zpd9 Zqej                  j                  d:e<      d;        Zrd< Zsd= Ztej                  j                  d>e#e"g      d?        Zuej                  j                  d>e#e"g      d@        Zvej                  j                  d>e#e"g      dA        Zwej                  j                  dBej                  ej                  g      dC        ZzdD Z{dE Z|y)F    )escapeN)assert_allclose)datasetssvm)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                     t        t        d            } t        j                  t              5  | j                  g        d d d        d}t        j                  t        |      5  t        j                  ddgddgg      }t        j                  ddgddgg      }t        t                     j                  ||       d d d        t        j                  t        |      5  t        j                  ddgddgg      }t        j                  dd	gd
dgg      }t        t                     j                  ||       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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       X/var/www/html/bid-api/venv/lib/python3.12/site-packages/sklearn/tests/test_multiclass.pytest_ovr_exceptionsrA   8   s   
iQ7
8C 
~	&B 
' MC	z	-HHq!fq!f%&HHq!fq!f%&MO,00A6 
.
 
z	-HHq!fq!f%&HHsCj3*-.MO,00A6 
.	- 
'	&
 
.	-
 
.	-s%   E&AE#AEEEE(c                      t        j                  g d      } t        |       }t        j                  t
        |      5  t        |        d d d        y # 1 sw Y   y xY w)N)        g?       @g      @r0   )r9   r:   r+   r5   r6   r8   r*   )r?   r=   s     r@   !test_check_classification_targetsrE   L   s=    
%&A

C	z	-$Q' 
.	-	-s   AAc                  ^   t        t        d            } | j                  t        j                  t        j
                        j                  t        j                        }t        | j                        t        k(  sJ t        d      }|j                  t        j                  t        j
                        j                  t        j                        }t        j                  t        j
                  |k(        t        j                  t        j
                  |k(        k(  sJ t        t                     } | j                  t        j                  t        j
                        j                  t        j                        }t        j                  t        j
                  |k(        dkD  sJ y )Nr   r.   ?)r   r   r;   irisdatatargetr7   lenestimators_	n_classesr9   meanr   )r<   predclfpred2s       r@   test_ovr_fit_predictrR   T   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                     t        t        j                  t        j                  d      \  } }t	        t                     }|j                  | d d |d d t        j                  |             |j                  | dd  |dd         |j                  |       }t	        t                     }|j                  | |      j                  |       }t        ||       t        |j                        t        t        j                  |            k(  sJ t        j                  ||k(        dkD  sJ t        j                  t        j                   j#                  dd            } g d}t	        t%        dd d	d
            }|j                  | d d |d d t        j                  |             |j                  | dd  |dd         |j                  |       }t	        t%        dd d	d
            }|j                  | |      j                  |       }t        j                  ||k(        t        j                  ||k(        k(  sJ t	        t'                     }t)        |d      rJ y )Nr   r.   d   rG      r3   r2   r2   r2   r2   r3   r,   r,   r   r   r3   r,   r2   r3   r,   r2   F)max_itertolr!   r/      partial_fit)r!   rH   rI   rJ   r   r   r[   r9   uniquer7   r;   r#   rK   rL   rN   absrandomrandnr   r   hasattr)r>   r?   r<   rO   ovr2rQ   ovr1pred1s           r@   test_ovr_partial_fitrd   d   s   499dkk:DAq
mo
.COOAdsGQtWbiil3OOAcdGQstW%;;q>D}/DHHQN""1%Ee$s3ryy|#44447719$$$ 	ryyr1%&A2A
qdEJC OOAbqE1Ra5"))A,/OOAabE1QR5!;;q>DqdEJD HHQN""1%E77419!!4444 ce
$CsM****rS   c                     t        t                     } t        j                  t        j                  j                  dd            }g d}| j                  |d d |d d t        j                  |             dg|dd z   }d}t        j                  t        |      5  | j                  |dd  |	       d d d        y # 1 sw Y   y xY w)
NrV   r3   rW   rZ      zAMini-batch contains \[.+\] while classes must be subset of \[.+\]r0   )r>   r?   )r   r   r9   r]   r^   r_   r[   r\   r5   r6   r8   )r<   r>   r?   y1r=   s        r@   test_ovr_partial_fit_exceptionsri      s    
mo
.C
ryyr1%&A2AOOAbqE1Ra5"))A,/ q2wB
NC	z	-!AB%2& 
.	-	-s   B==Cc                  >   t        t                     } | j                  t        j                  t        j
                        j                  t        j                        }t        | j                        t        k(  sJ t        t        j                  |      g d       t        j                  |t        j
                  k(        dkD  sJ t        t                     } | j                  t        j                  t        j
                        j                  t        j                        }t        | j                        t        t        dz
  z  dz  k(  sJ t        t        j                  |      g d       t        j                  |t        j
                  k(        dkD  sJ y )N)r   r2   r3   ?r2   r3   )r   r   r;   rH   rI   rJ   r7   rK   rL   rM   r$   r9   r\   rN   r   )r<   rO   s     r@   test_ovr_ovo_regressorrl      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;;&'#---rS   sparse_containerc           	         t        d      }t        j                  ddddddd	
      \  }}|d d |d d }}|dd  }t        |      j	                  ||      }|j                  |      }t        |      j	                  | | |            }	|	j                  |      }
|j                  sJ t        j                  |
      sJ t        |
j                         |       |	j                  |      }|dkD  }t        ||
j                                t        j                         }t        |      j	                  | | |            }	|	j                  |      d	kD  j                  t               }t        ||	j                  |      j                                y )Nr2   alpharU      rf   r,   2   Tr   	n_samples
n_featuresrM   n_labelslengthallow_unlabeledr/   P         ?)r   r   make_multilabel_classificationr   r;   r7   multilabel_spissparser$   toarraypredict_probar   r   decision_functionastypeint)rm   base_clfr>   YX_trainY_trainX_testrP   Y_predclf_sprsY_pred_sprsY_probarO   dec_preds                 r@   test_ovr_fit_predict_sparser      st   
 1%H22DAq "vq"vWGrsVF
h
'
+
+GW
=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DrS   c                  <   t        j                  d      } d| d dd d f<   t        j                  d      }d|dd df<   d|d d df<   d|d d df<   t        t	                     }d}t        j                  t        |      5  |j                  | |       d d d        |j                  |       }t        t        j                  |      t        j                  |             |j                  |       }t        j                  |d d d	d f         dk(  sJ |j                  |       }t        |d d d
f   t        j                  | j                  d                t        j                  d      }d|dd df<   t        t	                     }d}t        j                  t        |      5  |j                  | |       d d d        |j                  |       }t        |d d d
f   t        j                  | j                  d                y # 1 sw Y   sxY w# 1 sw Y   [xY w)N
   r3   r   rf   )r   r,   r2   r3   z,Label .+ is present in all training examplesr0   rg   z/Label not 1 is present in all training examples)r9   oneszerosr   r   r5   warnsUserWarningr;   r7   r$   r:   r   r\   r   shape)r>   r?   r<   r=   y_preds        r@   test_ovr_always_presentr      s    	AAbqb!eH 	AAab!eHAadGAadG
02
3C
9C	k	-1 
.[[^Frxx'!5""1%F99VArsF^$)))q!Fvae}bggaggaj&9: 	AAab!eH
02
3C
<C	k	-1 
.q!Fvae}bhhqwwqz&:;% 
.	- 
.	-s   H%HHHc                     t        j                  g dg dg dg dg dg      } g d}t        j                  g dg dg d	g dg d	g      }t        d
j                               }t	               t        d      t               t               t               fD ]  }t        |      j                  | |      }t        |j                        |k(  sJ |j                  t        j                  g dg            d   }t        |dg       t        |      j                  | |      }|j                  g dg      d   }t        |g d        y )Nr   r   rf   r   rf   r   r,   r   r   r   r      r   r   r   )eggsspamhamr   r   )r   r   r2   r   r2   r   r2   r   r   zham eggs spamr   r.   r   r      r   )r9   r:   setsplitr   r   r   r   r
   r   r;   classes_r7   r$   )r>   r?   r   classesr   rP   r   s          r@   test_ovr_multiclassr      s	   
)Y	9iHIA.A
)Y	9iHIA/'')*G 	q! "(+//153<< G+++RXXyk23A66F8, "(+//15i[)!,69-rS   c                     t        j                  g dg dg dg dg dg      g dt        j                  g dg      j                  t        dj	                               dfd		} t        d
      t               t               t               fD ]
  } | |        t               t        d      t               fD ]  } | |d        y )Nr   r   r   r   r   )r   r   r   r   r   )r   r2   r2   r   r2   z	eggs spamc                    t        |       j                  
      }t        |j                        	k(  sJ |j	                  t        j                  g dg            d   }t        |dg       t        | d      r"|j                        }|j                  dk(  sJ |rtt        j                  g dg      }|j                  |      }dt        |d         k(  sJ |j                  t        j                  |d         |j	                  |      k(  sJ t        |       j                        }|j	                  g d	g      d   }|dk(  sJ y )
Nr   r   r   r   )rf   r3   r2   axisr   )r   r;   r   r   r7   r9   r:   r$   r`   r   r   r   rK   argmax)r   test_predict_probarP   r   decr   probabilitiesr>   r   r   r?   s          r@   conduct_testz%test_ovr_binary.<locals>.conduct_test  s)   !(+//153<< G+++RXXyk23A66F8,801''*C99$$$XXyk*F--f5MM!,----<<		-a @AS[[QWEXXXX "(+//15i[)!,{{rS   r   r.   Tprobability)r   )F)r9   r:   Tr   r   r   r   r   r
   r   r   r   )r   r   r>   r   r   r?   s     @@@@r@   test_ovr_binaryr     s    
)Y	9iHIA0A
/"#%%A+##%&G * 	q!	 	X #_cd&;=O=QRX$7 SrS   c                     t        j                  g dg dg dg dg dg      } t        j                  g dg dg dg d	g d
g      }t               t        d      t	               t               t               t        d      fD ]P  }t        |      j                  | |      }|j                  g dg      d   }t        |g d       |j                  rPJ  y )N)r   r   rf   r   )r,   r,   r,   )r   r   r   r   )r   r2   r2   r   )r2   r2   r2   )r2   r   r2   r   r   r.   rz   ro   )r   r   r   )r9   r:   r   r   r   r   r
   r   r   r;   r7   r$   r|   )r>   r?   r   rP   r   s        r@   test_ovr_multilabelr   :  s    
)Y	9iHIA
)Y	9iHIA 	q!C "(+//15i[)!,69-rS   c                  4   t        t        j                               } | j                  t        j
                  t        j                         t        | j                        dk(  sJ | j                  t        j
                  t        j                        dkD  sJ y )Nr,   rk   )
r   r   r   r;   rH   rI   rJ   rK   rL   score)r<   s    r@   test_ovr_fit_predict_svcr   M  s`    
cggi
(CGGDIIt{{#s1$$$99TYY,s222rS   c            
         t        d      } t        ddd      D ]  \  }}}t        j                  dddd	d
|d      \  }}|d d |d d }}|dd  |dd  }	}t	        |       j                  ||      }
|
j                  |      }|
j                  sJ t        t        |	|d      |d	       t        t        |	|d      |d	        y )Nr2   ro   )TF)RQ?gQ?)r   r4   rU   rq   rf   r3   rr   r   rs   ry   micro)average)decimal)r   zipr   r{   r   r;   r7   r|   r#   r   r   )r   auprecrecallr>   r   r   r   r   Y_testrP   r   s               r@   test_ovr_multilabel_datasetr   T  s    1%H|\JD&66
1 Sb61Sb62323!(+//AV$FFG<dA	
 	961	
' KrS   c            
         t        d      } dD ]r  }t        j                  ddddd|d	
      \  }}|d d |d d }}|dd  }t        |       j	                  ||      }t        t        j                               j	                  ||      }t        |d      rJ t        t        j                  d            }t        |d      rJ |j	                  ||       t        |d      rJ t        |d      sJ t        t        j                  d      ddgi      }	t        |	      }
t        |
d      rJ |
j	                  ||       t        |
d      sJ |j                  |      }|j                  |      }|dkD  }t        ||       u y )Nr2   ro   )FTrU   rq   rf   r,   rr   r   rs   ry   r   Fr   r   r   T)
param_gridrz   )r   r   r{   r   r;   r   SVRr`   r   r   r7   r   r$   )r   r   r>   r   r   r   r   rP   decision_onlygsproba_after_fitr   r   rO   s                 r@   !test_ovr_multilabel_predict_probar   n  s   1%H66
1 Sb61Sb623!(+//A ,CGGI6::7GL=/::: ,CGG,FG=/:::'7+=/:::}&9::: GG&MD63J
 .b1?O<<<GW-888V$##F+ }4(Q rS   c                     t        d      } t        j                  t        j                  }}|d d |d d }}|dd  }t	        |       j                  ||      }t	        t        j                               j                  ||      }t        |d      rJ |j                  |      }|j                  |      }	t        |	j                  d      d       |	j                  d      }
|
|z
  j                         rJ y )Nr2   ro   ry   r   r         ?)r   rH   rI   rJ   r   r;   r   r   r`   r7   r   r#   sumr   any)r   r>   r   r   r   r   rP   r   r   r   rO   s              r@   #test_ovr_single_label_predict_probar     s    1%H99dkkqA"vq"vWGrsVF
h
'
+
+GW
=C (	266wHM}o666[[ F'G+S1 >>q>!Dv""$$$$rS   c            	      :   t        j                  ddddddd      \  } }| d d	 |d d	 }}| d	d  }t        t        j                               j                  ||      }t        |j                  |      dkD  j                  t              |j                  |             y )
NrU   rq   rf   r,   rr   Tr   rs   ry   )r   r{   r   r   r   r;   r$   r   r   r   r7   r>   r   r   r   r   rP   s         r@   %test_ovr_multilabel_decision_functionr     s    22DAq "vq"vWGrsVF
cggi
(
,
,Wg
>C			v	&	*2237V9LrS   c                  (   t        j                  ddd      \  } }| d d |d d }}| dd  }t        t        j                               j                  ||      }t        |j                  |      j                         dkD  |j                  |             y )NrU   rq   r   )rt   ru   r/   ry   )
r   make_classificationr   r   r   r;   r$   r   ravelr7   r   s         r@   'test_ovr_single_label_decision_functionr     s    ''#"STUDAq"vq"vWGrsVF
cggi
(
,
,Wg
>Cs,,V4::<q@#++fBUVrS   c                      t        t        d            } g d}t        | d|i      }|j                  t        j
                  t        j                         |j                  j                  d   j                  }||v sJ y Nr   r.   )皙?rz   r4   estimator__C)
r   r   r   r;   rH   rI   rJ   best_estimator_rL   C)r<   Cscvbest_Cs       r@   test_ovr_gridsearchr     se    
iQ7
8C	B	cNB/	0BFF499dkk"++A.00FR<<rS   c                     t        dt               fg      } t        |       }|j                  t        j
                  t        j                         t        t                     }|j                  t        j
                  t        j                         t        |j                  t        j
                        |j                  t        j
                               y )Ntree)	r   r   r   r;   rH   rI   rJ   r$   r7   )rP   ovr_piper<   s      r@   test_ovr_pipeliner     s     V3567
8C"3'HLLDKK(
46
7CGGDIIt{{#s{{499-x/?/?		/JKrS   c                      t        t        d            } t        j                  t              5  | j                  g        d d d        y # 1 sw Y   y xY wNr   r.   )r   r   r5   r6   r   r7   ovos    r@   test_ovo_exceptionsr     s4    
YA6
7C	~	&B 
'	&	&   A

Ac                     t        t        d            } | j                  t        j                  t        j
                        j                  t        j                        }t        j                  D cg c]  }t        |       }}| j                  |t        t        j
                              j                  |      }t        ||       y c c}w r   )	r   r   r;   rH   rI   rJ   r7   listr$   )r   prediction_from_arrayairis_data_listprediction_from_lists        r@   test_ovo_fit_on_listr     s     YA6
7CGGDIIt{{;CCDIIN'+yy1y!d1gyN177>43DEMM ,.BC	 2s   3Cc                  ,   t        t        d            } | j                  t        j                  t        j
                        j                  t        j                         t        | j                        t        t        dz
  z  dz  k(  sJ t        t                     } | j                  t        j                  t        j
                        j                  t        j                         t        | j                        t        t        dz
  z  dz  k(  sJ y )Nr   r.   r2   r3   )r   r   r;   rH   rI   rJ   r7   rK   rL   rM   r   r   s    r@   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BrS   c                  P   t        j                         } | j                  | j                  }}t	        t                     }|j                  |d d |d d t        j                  |             |j                  |dd  |dd         |j                  |      }t	        t                     }|j                  ||       |j                  |      }t        |j                        t        t        dz
  z  dz  k(  sJ t        j                  ||k(        dkD  sJ t        ||       t	        t                     }|j                  |d d |d d t        j                  |             |j                  |dd  |dd         |j                  |      }t	        t                     }|j                  ||      j                  |      }t        ||       t        |j                        t        t        j                  |            k(  sJ t        j                  ||k(        dkD  sJ t	        t                     }t        j                   j#                  dd      }g d}|j                  |d d |d d g d	       |j                  |dd  |dd         |j                  |      }t	        t                     }|j                  ||      j                  |      }t        ||       t	        t                     }g d
}	t%        dj'                  t        j                  |	      t        j                  |                  }
t)        j*                  t,        |
      5  |j                  |d d |	t        j                  |             d d d        t	        t/                     }t1        |d      rJ y # 1 sw Y   +xY w)NrU   r2   r3   rG   <   rV   )r2   r2   r3   r,   r,   r   r   r   r   r   r   r   r3   r3   rZ   )r   r2   r3   r,   r   )r   r2   r3   r,   r   rf   r3   z6Mini-batch contains {0} while it must be subset of {1}r0   r[   )r   	load_irisrI   rJ   r   r   r[   r9   r\   r7   r;   rK   rL   rM   rN   r#   r^   randr   formatr5   r6   r8   r   r`   )tempr>   r?   ovo1rc   ovo2rQ   r   rO   error_y
message_rer<   s               r@   test_ovo_partial_fit_predictr    s   D99dkkqAmo.DQtWagryy|4QstWag&LLOEmo.DHHQNLLOEt IQ$?!$CCCC771:%%%u% mo.DQsVQsVRYYq\2QrsVQrsV$LLOEmo.DHHQN""1%Eu%t C		!$5555771:%%%
]_
-C
		r1A2AOOAbqE1Ra5/2OOAabE1QR5!;;q>Dmo.DHHQN""1%Ee$ ]_
-C#G@GGIIg		!	
J
 
z	4"1w		!5 
5 SU
#CsM**** 
5	4s   *NN%c                     t         j                  j                  d   } t        t	        d            }|j                  t         j                  t         j                  dk(         |j                  t         j                        }|j                  | fk(  sJ |j                  t         j                  t         j                         |j                  t         j                        }|j                  | t        fk(  sJ t        |j                  d      |j                  t         j                               t        j                  | t        f      }d}t        t              D ]o  }t        |dz   t              D ]W  }|j                  |   j                  t         j                        }||dk(  |fxx   dz  cc<   ||dk(  |fxx   dz  cc<   |dz  }Y q t        |t        j                   |             t        t              D ]Z  }t#        |d d |f         j%                  t#        g d            sJ t'        t        j(                  |d d |f               dkD  rZJ  y )Nr   r.   r2   r   )rC   r   rD      )rH   rI   r   r   r   r;   rJ   r   rM   r$   r   r7   r9   r   rangerL   roundr   issubsetrK   r\   )	rt   ovo_clf	decisionsvoteskijrO   	class_idxs	            r@   test_ovo_decision_functionr  2  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 299Yq)|456<<< &rS   c                      t        t        d            } g d}t        | d|i      }|j                  t        j
                  t        j                         |j                  j                  d   j                  }||v sJ y r   )
r   r   r   r;   rH   rI   rJ   r   rL   r   )r   r   r   r   s       r@   test_ovo_gridsearchr  a  se    
YA6
7C	B	cNB/	0BFF499dkk"++A.00FR<<rS   c                     t        j                  ddgddgddgddgg      } t        j                  g d      }t        t        ddd             }|j	                  | |      j                  |       }|j                  |       }t        j                  |      }||z
  }t        |d	d d f   d       t        t        j                  |dd  d
      |dd         |d	   |d	   j                         k(  sJ y )Nr2   r3   r   rg   r3   r   r2   r3   Fr   r!   rX   rY   r   r   )
r9   r:   r   r   r;   r7   r   r  r$   r   )r>   r?   	multi_clfovo_predictionovo_decisionr  normalized_confidencess          r@   test_ovo_tiesr  j  s     	1a&1a&2q'B845A
A":eaT#RSI]]1a(003N..q1L HH\"E)E1 uQT{A&ryyqr3^AB5GH! 6q 9 @ @ BBBBrS   c                  .   t        j                  ddgddgddgddgg      } t        j                  g d      }t        d      D ]O  }||z   dz  }t        t	        ddd 	            }|j                  | |      j                  |       }|d
   |dz  k(  rOJ  y )Nr2   r3   r   rg   r  r,   Fr   r  r   )r9   r:   r  r   r   r;   r7   )r>   y_refr  r?   r  r  s         r@   test_ovo_ties2r    s    
1a&1a&2q'B845AHH\"E 1XQY!O&z%!QU'VW	"q!,44Q7a AE)))	 rS   c                      t        j                  d      } t        j                  g d      }t        t	                     }|j                  | |       t        ||j                  |              y )Nr   )r   bcd)r9   eyer:   r   r   r;   r$   r7   )r>   r?   r   s      r@   test_ovo_string_yr$    sI    
q	A
%&A
Y[
)CGGAqMq#++a.)rS   c                     t        j                  d      } t        j                  dgdz        }t        t	                     }d}t        j                  t        |      5  |j                  | |       d d d        y # 1 sw Y   y xY w)Nr   r   zwhen only one classr0   )	r9   r#  r:   r   r   r5   r6   r8   r;   r>   r?   r   r=   s       r@   test_ovo_one_classr'    s[    
q	A
#A
Y[
)C
C	z	-1 
.	-	-s   A;;Bc                      t         j                  } t         j                  d d df   }t        t                     }d}t	        j
                  t        |      5  |j                  | |       d d d        y # 1 sw Y   y xY wNr   zUnknown label typer0   )rH   rI   r   r   r5   r6   r8   r;   r&  s       r@   test_ovo_float_yr*    sT    		A		!Q$A
Y[
)C
C	z	-1 
.	-	-   A44A=c                      t        t        d            } t        j                  t              5  | j                  g        d d d        y # 1 sw Y   y xY wr   )r   r   r5   r6   r   r7   ecocs    r@   test_ecoc_exceptionsr/    s5    	q 9:D	~	&R 
'	&	&r   c                     t        t        d      dd      } | j                  t        j                  t        j
                        j                  t        j                         t        | j                        t        dz  k(  sJ t        t               dd      } | j                  t        j                  t        j
                        j                  t        j                         t        | j                        t        dz  k(  sJ y )Nr   r.   r3   )	code_sizer/   )r   r   r;   rH   rI   rJ   r7   rK   rL   rM   r   r-  s    r@   test_ecoc_fit_predictr2    s    	q 9QUVWDHHTYY$,,TYY7t IM111  11MDHHTYY$,,TYY7t IM111rS   c                     t        t        d      d      } g d}t        | d|i      }|j                  t        j
                  t        j                         |j                  j                  d   j                  }||v sJ y r   )
r   r   r   r;   rH   rI   rJ   r   rL   r   )r.  r   r   r   s       r@   test_ecoc_gridsearchr4    sg    	q 9JD	B	d^R0	1BFF499dkk"++A.00FR<<rS   c                      t         j                  } t         j                  d d df   }t        t                     }d}t	        j
                  t        |      5  |j                  | |       d d d        y # 1 sw Y   y xY wr)  )rH   rI   r   r   r5   r6   r8   r;   r&  s       r@   test_ecoc_float_yr6    sT    		A		!Q$A
y{
+C
C	z	-1 
.	-	-r+  csc_containerc                 `   t         j                  t         j                  }} | |      }t        t        ddd      }t        |d      }t        j                  t        d      5  |j                  ||       d d d        |j                  ||       t        j                  t        d      5  |j                  |       d d d        t        t        d            }|j                  ||      j                  |       t        |j                        d	k(  sJ y # 1 sw Y   xY w# 1 sw Y   fxY w)
NTF)	ensure_2daccept_sparse)check_Xcheck_X_paramsr   r.   zSparse data was passedr0   r   )rH   rI   rJ   r"   r    r   r5   r6   	TypeErrorr;   r7   r   rK   rL   )r7  r>   r?   X_spbase_estimatorr.  s         r@   (test_ecoc_delegate_sparse_base_estimatorr@    s     99dkkqAD (%)EBN  Q?D	y(@	Aq 
B 	HHQN	y(@	AT 
B  	q 9:DHHT1d#t A%%% 
B	A 
B	As   %D-D$D!$D-c                     t        j                  d      } t        j                  t        j                  }}t        |       }t        j                  ||j                        }|j                  ||       t        |j                        }|j                  }|D ],  }|j                  d   |z  |dz
  z  |j                  d   k(  r,J  y )Nprecomputedkernelr   r2   )r   r   rH   rI   rJ   r   r9   dotr   r;   rK   rL   pairwise_indices_r   )clf_precomputedr>   r?   	ovr_falselinear_kerneln_estimatorsprecomputed_indicesidxs           r@   test_pairwise_indicesrM    s    gg]3O99dkkqA"?3IFF1accNMMM-#y,,-L#55"IIaL<'<!+;<@S@STU@VV	
V #rS   c                     t         j                  t         j                  }} |d   dk(  sJ | dd } |dd }| j                  dk(  sJ t	        j
                  d      j                  | |      }|j                  dk(  sJ t        |      j                  | |      }|j                  dk(  sJ |j                  D ]  }|j                  dk(  rJ  t        |      j                  | |      }|j                  dk(  sJ |j                  dk(  sJ t        |j                        dk(  sJ |j                  D ]  }|j                  dk(  rJ  | | j                  z  }|j                  d	k(  sJ t	        j
                  d
      j                  ||      }|j                  dk(  sJ t        |      j                  ||      }|j                  dk(  sJ |j                  dk(  sJ t        |j                        dk(  sJ |j                  D ]  }|j                  dk(  rJ  t        |      j                  ||      }	|	j                  dk(  sJ |j                  dk(  sJ t        |j                        dk(  sJ |	j                  d   j                  dk(  sJ |	j                  d   j                  dk(  sJ |	j                  d   j                  dk(  sJ y)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.
    rg   r   N)   r   linearrC  r   r,   )rO  rO  rB  rO  c   r2   r3   rU   )rH   rI   rJ   r   r   r   r;   n_features_in_r   rL   r   
n_classes_rK   r   )
r>   r?   clf_notprecomputedovr_notprecomputedestovo_notprecomputedKrG  ovr_precomputedovo_precomputeds
             r@   test_pairwise_n_features_inr[    s    99dkkqA R5A::	#2A	#2A 77h155a;,,111,-?@DDQJ,,111!--!!Q&&& . ,,>?CCAqI,,111((A---!--.!333!--!!Q&&& .
 	
ACCA77j   gg]3771=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???rS   MultiClassClassifierc                    t        j                  d      }t        j                         } | |      }|j                         j                  j                  rJ  | |      }|j                         j                  j                  sJ y )NrB  rC  )r   r   __sklearn_tags__
input_tagspairwise)r\  rG  rT  rH  ovr_trues        r@   test_pairwise_tagrb  F  so     gg]3O$%78I))+66????#O4H$$&11::::rS   c                 P   t        j                  d      }t        j                  d      }t        j                  t        j                  }} | |      } | |      }t        j                  ||j                        }t        |||d      }t        |||d      }	t        |	|       y )NrB  rC  rP  raise)error_score)
r   r   rH   rI   rJ   r9   rE  r   r   r$   )
r\  rG  rT  r>   r?   multiclass_clf_notprecomputedmulticlass_clf_precomputedrI  score_not_precomputedscore_precomputeds
             r@   test_pairwise_cross_val_scorerj  T  s     gg]3O199dkkqA$89K$L!!5o!FFF1accNM+%q! ("M1' (*?@rS   c                    t         j                  j                  d      }t        j                  t        j
                  }}t        j                  |      }|j                  ddg|j                  ddg      j                  t              }t         j                  ||<   t        t               t        |            } | |      j                  ||      j!                  ||       y )N*   r2   r   r   rk   )pr.   )r9   r^   RandomStaterH   rI   rJ   copychoicer   r   boolnanr   r	   r   r;   r   )r\  rngr>   r?   masklrs         r@   test_support_missing_valuesrv  j  s     ))


#C99dkkqA

A::q!fagg#s:4;;DADffAdG	}(:(L	MB  A&,,Q2rS   make_yc                 <   t        j                  d      } | dt         j                        }t        t	                     }|j                  ||       |j                  |      }t        j                  |j                  d   df      }d|dddf<   t        ||       y)zUCheck that constant y target does not raise.

    Non-regression test for #21869
    r   )r   r2   )dtyper   r3   r2   N)
r9   r   int32r   r   r;   r   r   r   r   )rw  r>   r?   r<   r   expecteds         r@   test_constant_int_targetr|  }  s~     	Awbhh'A
02
3CGGAqMq!FxxQ(HHQTNFH%rS   c                      t        d      \  } }t        dd      }t        |      }|j                  | |       |j                  | |       t	        |j                  |       |j                  |              y)z^Check 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$   r7   )r>   r?   rP   r   s       r@   )test_ovo_consistent_binary_classificationr    s\    
 .DAq
1j
AC
S
!CGGAqMGGAqMs{{1~s{{1~6rS   c                     t        j                         } t        t        d            }d}d}t	        j
                  t        |      5 }|j                  | j                  | j                         ddd       t        j                  j                  t              sJ |t        |j                  j                        v sJ y# 1 sw Y   SxY w)a  Check 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
    rl  r.   )	estimatorz9This 'OneVsRestClassifier' has no attribute 'partial_fit'z:'LogisticRegression' object has no attribute 'partial_fit'r0   N)r   r   r   r   r5   r6   AttributeErrorr[   rI   rJ   
isinstancevalue	__cause__str)rH   rP   	outer_msg	inner_msg	exec_infos        r@   )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   numpyr9   r5   scipy.sparsesparser}   numpy.testingr   sklearnr   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   rH   r^   rn  rs  permutationrJ   sizepermrI   rM   rA   rE   rR   rd   ri   rl   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r$  r'  r*  r/  r2  r4  r6  r@  rM  r[  rb  rj  rv  r   r   r|  r  r   rS   r@   <module>r     s       ) ! / - (   : A 
 . 2 4 & F 6 J  RxiiA
t{{''(IIdO	kk$	7((/ !+H
'.$ ^#n4~EV&E	&ER!<H.4%8P&3
4*)Z%*$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 7rS   