
    -i+V                        S SK r S SKJr  S SKrS SKrS SKJr  S SKJ	r	J
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JrJrJr  S S	KJr  S S
KJrJrJrJrJr  S SK J!r!  S SK"J#r#J$r$J%r%J&r&J'r'J(r(  \RR                  " S S/SS //5      r*S \*SS2S 4'   \+" \\-   \-   \-   \-   5      \,\-\R\                  \R^                  \0\Rb                  44S jr2/ \2" \Rf                  Ri                  S5      Rk                  SSS9\\-4S9QS S/SS //PS S//P\2" \*\\-4S9Q\2" S S/SS //5      Q\2" S S /S S //5      Q\2" S S//5      QSS/SS//P\RR                  " SS/SS//5      P\RR                  " SS/SS//5      P\" \RR                  " SS/SS//5      5      P/ SQ\RR                  " / SQ5      \RR                  " / SQ\R\                  S9\RR                  " / SQ\R^                  S9\RR                  " / SQ\0S9\RR                  " / SQ\Rb                  S9\RR                  " S/S /S//5      \" \RR                  " / SQ5      5      / SQ/ SQ\RR                  " / SQ5      \RR                  " / SQ\6S9\RR                  " / SQ\6S9// SQ/ SQ/SS/S S!//\RR                  " / SQ/ SQ/5      \RR                  " / SQ/ SQ/\R\                  S9\RR                  " / SQ/ SQ/\R^                  S9\RR                  " / SQ/ SQ/\0S9\RR                  " / SQ/ SQ/\Rb                  S9/\2" / SQ/ SQ/\\-   \-\R\                  \R^                  \0\Rb                  4S9Q\RR                  " SS/S S!//5      P\RR                  " SS/S S!//5      P\RR                  " SS/S S!//\6S9P\RR                  " / SQ/5      P\" \RR                  " / SQ/5      5      PS S/SS// S /\RR                  " / S"Q5      \RR                  " / S"Q\,S9\RR                  " / S"Q\R\                  S9\RR                  " / S"Q\R^                  S9\RR                  " / S"Q\0S9\RR                  " / S"Q\Rb                  S9\RR                  " S /S//5      \" \RR                  " S /S//5      5      SS/SS#/S/SS/S$S%/\RR                  " S$S%/5      SS/\RR                  " S$S%/\6S9/S&/S S'/\RR                  " S /S'//5      \RR                  " S /S'//\Rb                  S9/\RR                  " S S'/S'S //5      \RR                  " S S'/S'S //\Rb                  S9\RR                  " S S'//5      /\2" S S'/S'S //\\-   \0\Rb                  4S9Q\2" S S'//\\-   \0\Rb                  4S9Q/ /\RR                  " / /\6S9S(/\RR                  " \RR                  " / 5      \RR                  " / S)Q5      /\6S9\RR                  " / 5      \RR                  " / S)Q5      /1 S*kSS1/\7" / S)Q5      \7" SS/5      /SSS+.S S0/\RR                  " S 5      \RR                  " / / /5      \RR                  " S S/SS//S,S#/S-S.///5      /S/.r8\Rf                  Ri                  S5      Rk                  SSS9S S/SS //S S//\*S S /S S //SS/SS//\RR                  " SS/SS//5      \RR                  " SS/SS//5      \" \RR                  " SS/SS//5      5      /	/ SQ\RR                  " / SQ5      \RR                  " / SQ\R\                  S9\RR                  " / SQ\R^                  S9\RR                  " / SQ\0S9\RR                  " / SQ\Rb                  S9\RR                  " S/S /S//5      \" \RR                  " / SQ5      5      / SQ/	/ SQ/ SQ/\RR                  " / SQ/ SQ/5      \RR                  " / SQ/ SQ/\R\                  S9\RR                  " / SQ/ SQ/\R^                  S9\RR                  " / SQ/ SQ/\0S9\RR                  " / SQ/ SQ/\Rb                  S9\RR                  " / SQ/5      \" \RR                  " / SQ/5      5      /S S/SS// S /\RR                  " / S"Q5      \RR                  " / S"Q\,S9\RR                  " / S"Q\R\                  S9\RR                  " / S"Q\R^                  S9\RR                  " / S"Q\0S9\RR                  " / S"Q\Rb                  S9\RR                  " S /S//5      \" \RR                  " S /S//5      5      SS/SS#//S&/S S'/\RR                  " S /S'//5      \RR                  " S /S'//\Rb                  S9/\RR                  " S S'/S'S //5      \RR                  " S S'/S'S //\Rb                  S9\RR                  " S S'//5      // /S(/\RR                  " S 5      \RR                  " S S/SS//S,S#/S-S.///5      /S/.r91 S*kSSS+.S#/S#/S+.S$\7" / S)Q5      S/r:S/S/S S/// S0Q\RR                  " / SS//S1S9\" \RR                  " / SS//S1S95      /r;S2 r<S3 r=S4 r>S5 r?S6 r@\R                  R                  S7\" 5       \S89S9 5       rCS: rDS; rES< rFS= rG\R                  R                  S>/ S?Q5      S@ 5       rH\R                  R                  SA\5      SB 5       rISC rJSD rK\R                  R                  SESFSG/5      SH 5       rLg)I    N)product)issparse)config_contextdatasets)ShuffleSplit)SVC)_get_namespace_device_dtype_ids)yield_namespace_device_dtype_combinations)_array_api_for_tests_convert_containerassert_allcloseassert_array_almost_equalassert_array_equal)_NotAnArray)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS)_safe_split)_ovr_decision_functioncheck_classification_targetsclass_distributionis_multilabeltype_of_targetunique_labels   c           
      T    U VVs/ s H  nU  H	  nU" XS9PM     M     snn$ s  snnf )Ndtype )datasparse_containersdtypessparse_containerr    s        V/var/www/html/venv/lib/python3.13/site-packages/sklearn/utils/tests/test_multiclass.py_generate_sparser'   ,   s<     !2 1E 	+ 	, 1  s   $*      )
   r*   )size)r#   r$      )
r   r   r)   r)   r      r)   r/   r/   r/   r   r   r)   r   r   r   r)   )abc)r   r   r)   r)   )r   r/   r)   r/   r2   r3   r4   d)
r   r   r   r   r   r   r   r   r   r      abcdefgh㈵>      ?r!   )r   r)   r.   >   r   r)   r.   r   r   r/         )multilabel-indicator
multiclassmulticlass-multioutputbinary
continuouscontinuous-multioutputunknown)r!   r)   r:   objectc            
         [         R                  " [        5         [        5         S S S 5        [	        [        [        S5      5      [        R                  " S5      5        [	        [        [        R                  " S5      5      [        R                  " S5      5        [	        [        / SQ5      [        R                  " / SQ5      5        [	        [        [        R                  " / SQ/ SQ/ SQ/5      5      [        R                  " S5      5        [	        [        [        R                  " / SQ/ SQ/5      5      [        R                  " S5      5        [	        [        / SQ[        S5      5      [        R                  " S5      5        [	        [        S	S
S5      [        R                  " S5      5        [         R                  " [        5         [        / SQ[        R                  " S5      5        S S S 5        [         R                  " [        5         [        [        R                  " S5      [        R                  " S5      5        S S S 5        [	        [        [        R                  " S5      [        R                  " S5      5      [        R                  " S5      5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)Nr*   )r/   r   r)   )r   r)   r/   )r   r   r   )r   r   r   )r   r   r   r.   r6   r1   )r   )r)   r   )r6   r6   )r6   r/   )r/   r6   )
pytestraises
ValueErrorr   r   rangenparangearrayonesr!       r&   test_unique_labelsrO     s   	z	" 
# }U2Y/2?}RYYr]3RYYr]C}Y/)1DE bhh	9i@ABBIIaL }RXXy).D%EF		RSU }Ya9299Q<H}Yf=ryy|L 
z	"i1 
#	z	"bggforwwv7 
# }RWWV_bggfoF		RSU3 
#	"( 
#	"	"	"s#   J"#J45K"
J14
K
Kc                     [         R                  " [         R                  " S5      S/45      n Sn[        R                  " [
        US9   [        U 5        SSS5        [         R                  " S5      n [        R                  " 5          [        R                  " S5        [        U 5        SSS5        [         R                  " S5      n [        R                  " 5          [        R                  " S	[
        5        [        U 5        SSS5        g! , (       d  f       N= f! , (       d  f       Nz= f! , (       d  f       g= f)
zCheck that we raise a warning when the number of unique classes is greater than
50% of the number of samples.

We need to check that we don't raise if we have less than 20 samples.
   r   zJThe number of unique classes is greater than 50% of the number of samples.matchNr*   error   ignore)
rJ   hstackrK   rF   warnsUserWarningr   warningscatch_warningssimplefilter)ymsgs     r&   +test_type_of_target_too_many_unique_classesr_   *  s     			299R=1#&'A
WC	k	-q 
. 			"A		 	 	"g&q 
# 			"A		 	 	"h4q 
#	" 
.	-
 
#	" 
#	"s$   	D"D'D/
D
D,/
D=c                     S H  n [         U     H  n[        U5        M     M      [         H1  n[        R                  " [
        5         [        U5        S S S 5        M3     S HA  n[         U    H1  n[        R                  " [
        5         [        U5        S S S 5        M3     MC     g ! , (       d  f       M  = f! , (       d  f       M[  = f)N)r@   r>   r=   )rC   rA   rB   r?   )EXAMPLESr   NON_ARRAY_LIKE_EXAMPLESrF   rG   rH   )formatr]   exampley_types       r&   test_unique_labels_non_specificrf   I  s     C&!A! " C
 +]]:&'" '& +  'Gz*g& +* ( '& +*s   B(B:(
B7	:
C	c                     [        [        S   [        S   [        S   -   5      n U  Ha  u  p[        R                  " [        5         [        X!5        S S S 5        [        R                  " [        5         [        X5        S S S 5        Mc     [        R                  " [        5         [        SS//SS//5        S S S 5        [        R                  " [        5         [        SS/5        S S S 5        [        R                  " [        5         [        SS/SS	//5        S S S 5        [        R                  " [        5         [        SS
/SS	//5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GMU  = f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr=   r>   r@   r   r)   r2   r5   1r.   2)r   ra   rF   rG   rH   r   )mix_clf_formaty_multilabely_multiclasss      r&   test_unique_labels_mixed_typesrm   a  s9   '((<*@8HCU*UN '5"]]:&,5 ']]:&,5 '& '5 
z	"1vh#s- 
# 
z	"sAh 
# 
z	"Qx!Q() 
# 
z	"SzAq6*+ 
#	" '&&& 
#	" 
#	" 
#	" 
#	"sH   E4E,&E?FF!?F2
E)	,
E<	?
F
F!
F/2
G c                     [         R                  5        GH_  u  pU S:H  nU GHM  nU=(       a    [        U5      n[        U5      (       d  [        US5      (       a  [        R
                  " U5      R                  S:X  a  [        R
                  " U5      R                  R                  S;   a  [        R
                  " U5      R                  S   S:  a^  [        [        -   [        -   [        -   [        -    Vs/ s H  nU" U5      PM     nnU H   nU[        U5      :X  a  M   SU< SU 35       e   [        U5      (       a  UR!                  5       nU[        U5      :X  a  GMB   SU< SU 35       e   GMb     g s  snf )	Nr=   	__array__r)   biufr   r   is_multilabel() should be )ra   itemsr   hasattrrJ   asarrayndimr    kindshaper   r   r   r   r   r   toarray)groupgroup_examples	dense_exprd   
sparse_expr%   examples_sparseexmpl_sparses           r&   test_is_multilabelr   z  su   !)!133	%G #8x'8J  --JJw',,1JJw'--22f<JJw'--a014
 '()() )) )	)	#) ) %W-)   	# %4L%|)DD ((8ZLQD %4   !//+g 66  <	{C6= & "2	#s   8E:z#array_namespace, device, dtype_name)idsc                    [        X5      n[        R                  5        H  u  pEUS:H  nU H  n[        R                  " U5      R
                  R                  S:X  a  [        R                  " XrS9nO[        R                  " U5      nUR	                  XqS9n[        SS9   U[        U5      :X  d   SU< SU 35       e S S S 5        M     M     g ! , (       d  f       M  = f)	Nr=   fr   )deviceT)array_api_dispatchrq   rr   )	r   ARRAY_API_EXAMPLESrs   rJ   ru   r    rw   r   r   )array_namespacer   
dtype_namexprz   r{   r|   rd   s           r&   'test_is_multilabel_array_api_compliancer     s     
o	6B!3!9!9!;33	%Gzz'"((--4**W?**W-jjj8G48 M'$:: $WK|I;G: 98 & "< 98s    C
Cc                  "   [         R                  5        He  n U S;   aA  [         U     H2  nSn[        R                  " [        US9   [        U5        S S S 5        M4     MJ  [         U     H  n[        U5        M     Mg     g ! , (       d  f       Mg  = f)N)rC   rA   rB   zUnknown label type: rR   )ra   keysrF   rG   rH   r   )re   rd   r^   s      r&   !test_check_classification_targetsr     so    --/HH#F+,]]:S909 :9 ,
 $F+,W5 , " :9s   A??
Bc                     [         R                  5        H9  u  pU H.  n[        U5      U :X  a  M   SU< SU < S[        U5      < 35       e   M;     [         H2  nSn[        R
                  " [        US9   [        U5        S S S 5        M4     [         H2  nSn[        R
                  " [        US9   [        U5        S S S 5        M4     g ! , (       d  f       M  = f! , (       d  f       MX  = f)Nztype_of_target(rr   z, got z6Expected array-like \(array or non-string sequence\).*rR   zYou appear to be using a legacy multi-label data representation. Sequence of sequences are no longer supported; use a binary array or sparse matrix instead.)ra   rs   r   rb   rF   rG   rH   MULTILABEL_SEQUENCES)rz   r{   rd   	msg_regexr^   s        r&   test_type_of_targetr     s    !)!1%G!'*e3  "7+	3 & "2 +M	]]:Y77# 87 +
 (< 	
 ]]:S17# 21 ( 87 21s   6C2C
C	
C,	c                  D   [         R                  " S5      n U R                  R                  S[        R
                  [        R
                  S[        R
                  /5      nSn[         R                  " [        US9   [        U5        S S S 5        g ! , (       d  f       g = f)Npandasr   z1y cannot be class 'SparseSeries' or 'SparseArray'rR   )	rF   importorskiparraysSparseArrayrJ   nanrG   rH   r   )pdr]   r^   s      r&   !test_type_of_target_pandas_sparser     sd    			X	&B
		q"&&"&&!RVV<=A
=C	z	-q 
.	-	-s   <B
Bc                     [         R                  " S5      n S HI  nU R                  / SQUS9n[        U5      S:X  d   eU R                  / SQUS9n[        U5      S:X  a  MI   e   U R	                  SS	/S	S//S
S9n[        U5      S:X  d   eU R	                  SS/SS//SS9n[        U5      S:X  d   eU R	                  SS/SS//SS9n[        U5      S:X  d   eg)z<Check that type_of_target works with pandas nullable dtypes.r   )Int32Float32)r   r   r)   r.   r/   r   r>   )r   r   r   r   r@   gffffff?g@r   rB   r   r   r   r=   r)   r.   r?   N)rF   r   Seriesr   	DataFrame)r   r    y_trues      r&   #test_type_of_target_pandas_nullabler     s   			X	&B%?%8f%555<u5f%111 & \\C:Sz2)\DF&!%====\\Aq6Aq6*'\:F&!%;;;;\\Aq6Aq6*'\:F&!%====rN   r    )Int64Float64booleanc                     [         R                  " S5      nUR                  / SQU S9nUR                  / SQSS9n[        X#5      n[	        USS/5        g)	z_Checks that unique_labels work with pandas nullable dtypes.

Non-regression test for gh-25634.
r   )	r   r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   int64r   r   N)rF   r   r   r   r   )r    r   r   y_predictedlabelss        r&   "test_unique_labels_pandas_nullabler     sR     
		X	&BYY2%Y@F))7w)GK6/Fv1v&rN   csc_containerc           	         [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      nU " X#U4S	S
9n[        U5      u  pgn[        U5      u  pn/ SQ/ SQS/S//n/ SQn/ SQ/ SQS/S//n[        UR                  S   5       Hc  n[        Xo   X   5        [        X   X   5        [        X   X   5        [        X   X   5        [        X   X   5        [        X   X   5        Me     [        U/ SQ5      u  pgn[        U/ SQ5      u  pn/ SQ/ SQS/S//n[        UR                  S   5       Hc  n[        Xo   X   5        [        X   X   5        [        X   X   5        [        X   X   5        [        X   X   5        [        X   X   5        Me     g )N)r   r   r   r   )r)   r)   r   r   )r   r.   r   r   )r/   r)   r   r   )r)   r   r   r   )r   r)   r   r/   r)   r   r   r)   r.   r)   r.   r   r   r   r   r   r   )r   r   r)   r.   r/   r6   r   r   r)   r.   r6   r   r   r)   r.   r/   r6   )r   r;      r      )r;   r/   )rx   )r   r)   r/   )r   r)   r.   r   r   )r.   r.   r   r   )r9   UUUUUU?gUUUUUU?)r   r   r         ?)r          @r   r   r   r   )qq?r   qq?)r   r   r   )rJ   rL   r   rI   rx   r   )r   r]   r"   indicesindptry_spclasses	n_classesclass_prior
classes_spn_classes_spclass_prior_spclasses_expectedn_classes_expectedclass_prior_expectedks                   r&   test_class_distributionr     s   
	
		A 88GHDhhJKGXX()F$0?D&8&;#G/A$/G,Jn!9qcA37%13H3%RUQVW1771:!'*.>.AB!),0B0EF!+.2F2IJ!*-1A1DE!,/3E3HI!."35I5LM  );	))%W 2D	)2.Z~ 23H3%RUQVW1771:!'*.>.AB!),0B0EF!+.2F2IJ!*-1A1DE!,/3E3HI!."35I5LM rN   c                  l   [        5       n [        SS9n[        R                  " 5       nUR                  UR                  pC[
        R                  " X3R                  5      n[        SSS9n[        [        UR                  U5      5      5      u  px[        XXG5      u  p[        XXG5      u  p[        U[
        R                  " XR                  5      5        [        X5        [        XXHU5      u  p[        XXHU5      u  nn[        U[
        R                  " XR                  5      5        [        UU5        g )Nprecomputed)kernelg      ?r   )	test_sizerandom_state)r   r   	load_irisr"   targetrJ   dotTr   nextitersplitr   r   )clfclfpirisXr]   KcvtraintestX_trainy_trainK_trainy_train2X_testy_testK_testy_test2s                    r&   'test_safe_split_with_precomputed_kernelr   @  s    
%Cm$DD99dkkq
q##A	1	5BtBHHQK()KE"314G#DQ6Ggrvvgyy'ABg0 %8NF!$1E:OFGfbffVYY&?@fg.rN   c            
      V   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n [         R                  " / SQ/ SQ/ SQ/ SQ/5      nSn[        XU5      n[         R                  " / SQ/ S	Q/ SQ/ SQ/5      n[        XCS
S9  [         R                  " / SQ5      n[	        [         R
                  " USS9U5        US   US   :  d   e[        S5       Vs/ s HA  n[        [         R                  " X   /5      [         R                  " X   /5      U5      S   PMC     nn[        X7SS9  g s  snf )N)r   r   r   )r   r   r   ) 7yAr   r   )r   r   g      )g      r   g      @)g      g?r9   r.   r0   )r   r   r   r9   )atol)r)   r   r)   r)   r   )axis)r)   r)   )r.   r)   r/   r   gư>)rJ   rL   r   r   r   argmaxrI   )predictionsconfidencesr   
dec_valuesvotesexpected_predictionidec_values_ones           r&   test_ovr_decision_functionr   V  s    ((Iy)YGHK((	,.>@PQK I')LJ HHiIyABEEC0
 ((<0ryy!46IJ dj.... q	 A 	HHkn%&+.1A(BI	

	 	   JT:s   AD&
input_typelistrL   c                     [        SS/U 5      nSn[        R                  " [        US9   [	        U5        S S S 5        g ! , (       d  f       g = f)N   a   bz8Support for labels represented as bytes is not supportedrR   )r   rF   rG   	TypeErrorr   )r   r   err_msgs      r&   !test_labels_in_bytes_format_errorr   }  s;    
  tj9FHG	y	0v 
1	0	0s	   ?
A)MrZ   	itertoolsr   numpyrJ   rF   scipy.sparser   sklearnr   r   sklearn.model_selectionr   sklearn.svmr   sklearn.utils._array_apir	   r
   sklearn.utils._testingr   r   r   r   r   sklearn.utils.estimator_checksr   sklearn.utils.fixesr   r   r   r   r   sklearn.utils.metaestimatorsr   sklearn.utils.multiclassr   r   r   r   r   r   rL   multilabel_explicit_zerotupleboolintint8uint8floatfloat32r'   randomRandomStaterandintrD   	frozensetra   r   rb   r   rO   r_   rf   rm   r   markparametrizer   r   r   r   r   r   r   r   r   r   r!   rN   r&   <module>r     s       ! , 0   7  5  88aVaV$45 !" A 
 
	
	 	 		 #rww%<& 
II!!"%--ah-?,6

 Q!Q Q 
$PSv

 
Aq6Aq6*	+ 
Aq6Aq6*	+ 
Aq6(	#" a1b'#$ 	2q'Ar7#$%& 	2q'Ar7#$'( 	BHHr1g2w/01). 	'

"''*
"((+
%(
"**-
1#sQC!BHHY'(
!
/
/  
|$
sc3Z 
,-.
,-RWW=
,-RXX>
,-U;
,-RZZ@ 
<(,~="((E2::>

 	3*sCj)* 	3*sCj)* 	3*sCj)8  	)!" 	BHHi[)*#( 
A	
A
	

/0
/t<
/rww?
/rxx@
/u=
/rzzB
1#sBHHqcA3Z()	
B	
A		c
	
% 	c

%v.). 
	
C
1#u
1#uRZZ0	 	1c(S!H%&
1c(S!H%RZZ8
1c( 
XQx ,~=2::&

	 
XJ,~=2::&

  

"V$	
"((2, 34FC	"rxx	*+	QF	9	y!Q01S	As8$

"b
Aq6Aq6"aVaV$456!Ivt 			b!))!();
Q!Q
Q 
Q!Q
a1b'
2q'Ar7#$
2q'Ar7#$BHHr1g2w/01
 	'

"''*
"((+
%(
"**-
1#sQC!BHHY'(
 
|$
,-.
,-RWW=
,-RXX>
,-U;
,-RZZ@
)BHHi[)*	 
A	
A
	

/0
/t<
/rww?
/rxx@
/u=
/rzzB
1#sBHHqcA3Z()	
B	
A" 
	
C
1#u
1#uRZZ0	 	1c(S!H%&
1c(S!H%RZZ8
1c( 
	

Aq6Aq6"aVaV$456	yB L 	
	i  S1#1vHHb1a&\*"q!fX67	 V<>'0,2$N )-/'  

$	6$6>* "AB' C' .90N :0Nf/,$;N '89 :rN   