
    0PhQ                        d dl mZ d dlZd dl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 d d	lmZ d d
lmZmZmZmZmZ d dlmZ d dl m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&  ej'        d dgdd gg          Z(d e(ddd f<    e)eez   ez   ez   ez             e*e+ej,        ej-        e.ej/        ffdZ0g  e0ej1        2                    d          3                    dd          ee+f          d dgdd ggd dgg e0e(ee+f           e0d dgdd gg           e0d d gd d gg           e0d dgg          ddgddgg ej'        ddgddgg           ej'        ddgddgg           e ej'        ddgddgg                    g d ej'        g d           ej'        g dej,                   ej'        g dej-                   ej'        g de.           ej'        g dej/                   ej'        dgd gdgg           e ej'        g d                    g dg d ej'        g d           ej'        g de4           ej'        g de4          gg dg dgddgd d!gg ej'        g dg dg           ej'        g dg dgej,                   ej'        g dg dgej-                   ej'        g dg dge.           ej'        g dg dgej/                  g e0g dg dgeez   e+ej,        ej-        e.ej/        f           ej'        ddgd d!gg           ej'        ddgd d!gg           ej'        ddgd d!gge4           ej'        g dg           e ej'        g dg                    d dgddgg d g ej'        g d"           ej'        g d"e*           ej'        g d"ej,                   ej'        g d"ej-                   ej'        g d"e.           ej'        g d"ej/                   ej'        d gdgg           e ej'        d gdgg                    ddgdd#gdgddgd$d%g ej'        d$d%g          ddg ej'        d$d%ge4          gd&gd d'g ej'        d gd'gg           ej'        d gd'ggej/                  g ej'        d d'gd'd gg           ej'        d d'gd'd ggej/                   ej'        d d'gg          g e0d d'gd'd ggeez   e.ej/        f           e0d d'ggeez   e.ej/        f          g g ej'        g ge4          d(g ej'         ej'        g            ej'        g d)          ge4           ej'        g            ej'        g d)          gh d*ddhg e5g d)           e5ddg          gddd+d dig ej'        d            ej'        g g g           ej'        d dgddggd,d#gd-d.ggg          gd/Z6ej1        2                    d          3                    dd          d dgdd ggd dgge(d d gd d ggddgddgg ej'        ddgddgg           ej'        ddgddgg           e ej'        ddgddgg                    g	g d ej'        g d           ej'        g dej,                   ej'        g dej-                   ej'        g de.           ej'        g dej/                   ej'        dgd gdgg           e ej'        g d                    g dg	g dg dg ej'        g dg dg           ej'        g dg dgej,                   ej'        g dg dgej-                   ej'        g dg dge.           ej'        g dg dgej/                   ej'        g dg           e ej'        g dg                    gd dgddgg d g ej'        g d"           ej'        g d"e*           ej'        g d"ej,                   ej'        g d"ej-                   ej'        g d"e.           ej'        g d"ej/                   ej'        d gdgg           e ej'        d gdgg                    ddgdd#ggd&gd d'g ej'        d gd'gg           ej'        d gd'ggej/                  g ej'        d d'gd'd gg           ej'        d d'gd'd ggej/                   ej'        d d'gg          gg gd(g ej'        d            ej'        d dgddggd,d#gd-d.ggg          gd/Z7h d*ddd+d#gd#gd+d$ e5g d)          dgZ8dgdgd dggg d0 ej'        g ddggd1           e ej'        g ddggd1                    gZ9d2 Z:d3 Z;d4 Z<d5 Z=ej>        ?                    d6 e                      d7             Z@d8 ZAd9 ZBd: ZCd; ZDej>        ?                    d<g d=          d>             ZEej>        ?                    d?e          d@             ZFdA ZGdB ZHej>        ?                    dCdDdEg          dF             ZIdS )G    )productN)issparse)config_contextdatasets)ShuffleSplit)SVC))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                 $      fd|D             S )Nc                 4    g | ]}D ]} ||           S )dtype ).0sparse_containerr    datadtypess      c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/utils/tests/test_multiclass.py
<listcomp>z$_generate_sparse.<locals>.<listcomp>3   sP          	U+++       r!   )r$   sparse_containersr%   s   ` `r&   _generate_sparser*   (   s4         1   r(   *      )
   r-   )size)r)   r%      )
r   r   r,   r,   r      r,   r2   r2   r2   r   r   r,   r   r   r   r,   )abc)r   r   r,   r,   )r   r2   r,   r2   r5   r6   r7   d)
r   r   r   r   r   r   r   r   r   r      abcdefgh㈵>      ?r!   )r   r,   r1   >   r   r,   r1   r   r   r2         )multilabel-indicator
multiclassmulticlass-multioutputbinary
continuouscontinuous-multioutputunknown)r!   r,   r=   objectc            
         t          j        t                    5  t                       d d d            n# 1 swxY w Y   t	          t          t          d                    t          j        d                     t	          t          t          j        d                    t          j        d                     t	          t          g d          t          j        g d                     t	          t          t          j        g dg dg dg                    t          j        d                     t	          t          t          j        g dg dg                    t          j        d                     t	          t          g dt          d                    t          j        d                     t	          t          d	d
d          t          j        d                     t          j        t                    5  t          g dt          j	        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t          j	        d          t          j	        d                     d d d            n# 1 swxY w Y   t	          t          t          j	        d          t          j	        d                    t          j        d                     d S )Nr-   )r2   r   r,   )r   r,   r2   )r   r   r   )r   r   r   )r   r   r   r1   r9   r4   r   )r,   r   )r9   r9   )r9   r2   )r2   r9   )
pytestraises
ValueErrorr   r   rangenparangearrayonesr!   r(   r&   test_unique_labelsrR     s   	z	"	"                 }U2YY//2???}RYr]]33RYr]]CCC}YYY//)))1D1DEEE bh			999iii@AABBBIaLL   }RXyyy))).D%E%EFF	RSUUU }YYYa9929Q<<HHH}Yf==ry||LLL 
z	"	" 2 2iii1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	z	"	" 8 8bgfoorwv7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 }RWV__bgfooFF	RSUUUUUs0   599
%H;;H?H?5J  J$'J$c                     dD ]!} t           |          D ]}t          |           "t          D ]B}t          j        t
                    5  t          |           d d d            n# 1 swxY w Y   CdD ]R}t           |         D ]B}t          j        t
                    5  t          |           d d d            n# 1 swxY w Y   CSd S )N)rC   rA   r@   )rF   rD   rE   rB   )EXAMPLESr   NON_ARRAY_LIKE_EXAMPLESrJ   rK   rL   )formatyexampley_types       r&   test_unique_labels_non_specificrZ   &  sm    C  &! 	 	A!	 + # #]:&& 	# 	#'"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# ' '  ' 	' 	'Gz** ' 'g&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	'' 's$   A##A'	*A'	B77B;>B;c                     t          t          d         t          d         t          d         z             } | D ]\  }}t          j        t                    5  t          ||           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddggddgg           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddgdd	gg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dd
gdd	gg           d d d            d S # 1 swxY w Y   d S )Nr@   rA   rC   r   r,   r5   r8   1r1   2)r   rT   rJ   rK   rL   r   )mix_clf_formaty_multilabely_multiclasss      r&   test_unique_labels_mixed_typesra   >  s;   '((<*@8HCU*U N '5 6 6"l]:&& 	6 	6,555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6]:&& 	6 	6,555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 
z	"	" . .1vh#s---. . . . . . . . . . . . . . . 
z	"	"    sAh                              
z	"	" * *Qx!Q()))* * * * * * * * * * * * * * * 
z	"	" , ,SzAq6*+++, , , , , , , , , , , , , , , , , ,sl   A22A6	9A6	B33B7	:B7	C;;C?C?D==EE!FF
F'G

GGc                     t                                           D ]D\  } }| dk    }|D ]4|ot                    }t                    spt          d          rt	          j                  j        dk    rt	          j                  j        j        dv r~t	          j                  j	        d         dk    r[fdt          t          z   t          z   t          z   t          z   D             }|D ]%}|t          |          k    sJ d|d	|             &t                    r                                |t                    k    sJ dd	|             6Fd S )
Nr@   	__array__r,   biufr   r   c                 &    g | ]} |          S r!   r!   )r"   r#   rX   s     r&   r'   z&test_is_multilabel.<locals>.<listcomp>f  s4     	# 	# 	#( %$W--	# 	# 	#r(   is_multilabel() should be )rT   itemsr   hasattrrN   asarrayndimr    kindshaper   r   r   r   r   r   toarray)groupgroup_examples	dense_exp
sparse_expexamples_sparseexmpl_sparserX   s         @r&   test_is_multilabelru   W  s   !)!1!1 #C #C~33	%  	C  	CG #8x'8'8J   Q--QJw'',11Jw''-2f<<Jw''-a0144	# 	# 	# 	# '()() )) )	)	# 	# 	# %4 Q QL%$* *   PPPJPP   
    ,!//++! !   BBByBB   = 	C#C #Cr(   z#array_namespace, device, dtype_namec                    t          | |          }t                                          D ]\  }}|dk    }|D ]}t          j        |          j        j        dk    rt          j        ||          }nt          j        |          }|                    ||          }t          d          5  |t          |          k    sJ d|d|             	 d d d            n# 1 swxY w Y   d S )	Nr@   fr   )deviceT)array_api_dispatchrf   rg   )	r
   ARRAY_API_EXAMPLESrh   rN   rj   r    rl   r   r   )array_namespacerx   
dtype_namexpro   rp   rq   rX   s           r&   'test_is_multilabel_array_api_compliancer~   ~  sx   
 
ov	6	6B!3!9!9!;!; G G~33	% 
	G 
	GGz'""(-44*WJ???*W--jjj88G4888 G G M% %   FGFF9FF   G G G G G G G G G G G G G G G
	GG Gs   -$CC"%C"c                  .   t                                           D ]z} | dv rUt           |          D ]F}d}t          j        t          |          5  t          |           d d d            n# 1 swxY w Y   G[t           |          D ]}t          |           {d S )N)rF   rD   rE   zUnknown label type: match)rT   keysrJ   rK   rL   r   )rY   rX   msgs      r&   !test_check_classification_targetsr     s    --// 6 6HHH#F+ : :,]:S999 : :0999: : : : : : : : : : : : : : ::
 $F+ 6 6,W555566 6s   A((A,/A,c                     t                                           D ]=\  } }|D ]5}t          |          | k    s J d|d| dt          |                      6>t          D ]F}d}t	          j        t          |          5  t          |           d d d            n# 1 swxY w Y   Gt          D ]F}d}t	          j        t          |          5  t          |           d d d            n# 1 swxY w Y   Gd S )Nztype_of_target(rg   z, got z6Expected array-like \(array or non-string sequence\).*r   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.)rT   rh   r   rU   rJ   rK   rL   MULTILABEL_SEQUENCES)ro   rp   rX   	msg_regexr   s        r&   test_type_of_targetr     s   !)!1!1  ~% 	 	Gw''50000w''' 1000	 + $ $M	]:Y777 	$ 	$7###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ ( $ $< 	
 ]:S111 	$ 	$7###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$$ $s$   >BB	!B	C((C,	/C,	c                  2   t          j        d          } | j                            dt          j        t          j        dt          j        g          }d}t          j        t          |          5  t          |           d d d            d S # 1 swxY w Y   d S )Npandasr   z1y cannot be class 'SparseSeries' or 'SparseArray'r   )	rJ   importorskiparraysSparseArrayrN   nanrK   rL   r   )pdrW   r   s      r&   !test_type_of_target_pandas_sparser     s    		X	&	&B
	q"&"&!RV<==A
=C	z	-	-	-  q                 s   /BBBc                     t          j        d          } dD ]^}|                     g d|          }t          |          dk    sJ |                     g d|          }t          |          dk    sJ _|                     dd	gd	dggd
          }t          |          dk    sJ |                     ddgddggd          }t          |          dk    sJ |                     ddgddggd          }t          |          dk    sJ dS )z<Check that type_of_target works with pandas nullable dtypes.r   )Int32Float32)r   r   r,   r1   r2   r   rA   )r   r   r   r   rC   gffffff?g@r   rE   r   r   r   r@   r,   r1   rB   N)rJ   r   Seriesr   	DataFrame)r   r    y_trues      r&   #test_type_of_target_pandas_nullabler     sB   		X	&	&B% 2 2???%88f%%5555<<<u55f%%11111\\C:Sz2)\DDF&!!%=====\\Aq6Aq6*'\::F&!!%;;;;;\\Aq6Aq6*'\::F&!!%=======r(   r    )Int64Float64booleanc                     t          j        d          }|                    g d|           }|                    g dd          }t          ||          }t	          |ddg           dS )	zgChecks 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)rJ   r   r   r   r   )r    r   r   y_predictedlabelss        r&   "test_unique_labels_pandas_nullabler     su     
	X	&	&BYY222%Y@@F))777w)GGK6;//Fv1v&&&&&r(   csc_containerc           	         t          j        g dg dg dg dg dg dg          }t          j        g d          }t          j        g d          }t          j        g d          } | |||fd	
          }t          |          \  }}}t          |          \  }	}
}g dg ddgdgg}g d}g dg ddgdgg}t          |j        d                   D ]}t          ||         ||                    t          ||         ||                    t          ||         ||                    t          |	|         ||                    t          |
|         ||                    t          ||         ||                    t          |g d          \  }}}t          |g d          \  }	}
}g dg ddgdgg}t          |j        d                   D ]}t          ||         ||                    t          ||         ||                    t          ||         ||                    t          |	|         ||                    t          |
|         ||                    t          ||         ||                    d S )N)r   r   r   r   )r,   r,   r   r   )r   r1   r   r   )r2   r,   r   r   )r,   r   r   r   )r   r,   r   r2   r,   r   r   r,   r1   r,   r1   r   r   r   r   r   r   )r   r   r,   r1   r2   r9   r   r   r,   r1   r9   r   r   r,   r1   r2   r9   )r   r>      r      )r>   r2   )rm   )r   r,   r2   )r   r,   r1   r   r   )r1   r1   r   r   )r<   UUUUUU?gUUUUUU?)r   r   r         ?)r          @r   r   r   r   )qq?r   qq?)r   r   r   )rN   rP   r   rM   rm   r   )r   rW   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   
LLLLLLLLLLLL	
		 		A 8GGGHHDhJJJKKGX((())F=$0???D&8&;&;#GY/A$/G/G,Jn!		999qcA37%1113H3H3H3%RUQVW171: N N!'!*.>q.ABBB!)A,0B10EFFF!+a.2Fq2IJJJ!*Q-1A!1DEEE!,q/3Ea3HIII!."35I!5LMMMM );	)))) )%Wi 2D	)))2 2.Z~ 2113H3H3H3%RUQVW171: N N!'!*.>q.ABBB!)A,0B10EFFF!+a.2Fq2IJJJ!*Q-1A!1DEEE!,q/3Ea3HIII!."35I!5LMMMMN Nr(   c                     t                      } t          d          }t          j                    }|j        |j        }}t          j        ||j                  }t          dd          }t          |
                    |                    d         \  }}t          | |||          \  }	}
t          ||||          \  }}t          |t          j        |	|	j                             t          |
|           t          | ||||          \  }}t          |||||          \  }}t          |t          j        ||	j                             t          ||           d S )Nprecomputed)kernelg      ?r   )	test_sizerandom_state)r   r   	load_irisr$   targetrN   dotTr   listsplitr   r   )clfclfpirisXrW   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9dkqA
q!#A	1	5	5	5Brxx{{##A&KE4"31e44GW#D!Q66GXgrvgwy'A'ABBBgx000 aD%88NFF!$1dE::OFGfbfVWY&?&?@@@fg.....r(   c                     t          j        g dg dg dg dg          t          j        g dg dg dg dg          dt                    } t          j        g dg d	g dg dg          }t          || d
           t          j        g d          }t	          t          j        | d          |           | d         | d         k    sJ fdt          d          D             }t          | |d           d S )N)r   r   r   )r   r   r   ) 7yAr   r   )r   r   g      )g      r   g      @)g      g?r<   r1   r3   )r   r   r   r<   )atol)r,   r   r,   r,   r   )axis)r,   r,   )r1   r,   c           	          g | ]K}t          t          j        |         g          t          j        |         g                    d          LS rI   )r   rN   rP   )r"   iconfidencesr   predictionss     r&   r'   z.test_ovr_decision_function.<locals>.<listcomp>N  sf         	Hk!n%&&+a.1A(B(BI	
 	

	  r(   r2   gư>)rN   rP   r   r   r   argmaxrM   )
dec_valuesvotesexpected_predictiondec_values_oner   r   r   s       @@@r&   test_ovr_decision_functionr   1  sh    (IIIyyy)))YYYGHHK(			,,,.>.>.>@P@P@PQ K I'[)LLJ HiiiIIIyyyABBEE:C0000
 (<<<00ry!4446IJJJ dj.....      q	  N JT::::::r(   
input_typer   rP   c                     t          ddg|           }d}t          j        t          |          5  t	          |           d d d            d S # 1 swxY w Y   d S )N   a   bzSupport for labels represented as bytes is deprecated in v1.5 and will error in v1.7. Convert the labels to a string or integer format.r   )r   rJ   warnsFutureWarningr   )r   r   err_msgs      r&   test_labels_in_bytes_formatr   Y  s    
  tj99F	L  
m7	3	3	3  v                 s   AAA)J	itertoolsr   numpyrN   rJ   scipy.sparser   sklearnr   r   sklearn.model_selectionr   sklearn.svmr   sklearn.utils._array_apir	   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   rP   multilabel_explicit_zerotupleboolintint8uint8floatfloat32r*   randomRandomStaterandintrG   	frozensetrT   rz   rU   r   rR   rZ   ra   ru   markparametrizer~   r   r   r   r   r   r   r   r   r   r!   r(   r&   <module>r     s              ! ! ! ! ! ! , , , , , , , , 0 0 0 0 0 0       N N N N N N              7 6 6 6 6 6              5 4 4 4 4 4                $28aVaV$455 !" A 
 e
	
	 	 		  #rw%<   & 
	I!!"%%--ah-??,6

 

 

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

 

 

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

 

 

 	3*sCj)** 	3*sCj)** 	3*sCj)888  	)))!" 	HBHiii[))**#( 
A	
A
	
///00///t<<<///rw???///rx@@@///u===///rzBBB1#sHBHqcA3Z(())	
B	
A		c
	%  	c
%v...). 
	
C1#u1#uRZ000	 	1c(S!H%&&1c(S!H%RZ8881c( 
	XQx ,~=2:&

 

 

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

 

 

  
"V$$$	("(2,, 3 34FCCC	"xrx			**+	QF	999		yy!Q001S		As8$"bAq6Aq6"aVaV$4566!Iv vt 		b!!))!();;
Q!Q
Q 
Q!Q
a1b'2q'Ar7#$$2q'Ar7#$$HBHr1g2w/0011
 	'&&"'***"(+++%((("*---1#sQC!!HBHYYY''((		
 
|||$,,,-..,,,-RW===,,,-RX>>>,,,-U;;;,,,-RZ@@@)))HBHiii[))**	 
A	
A
	
///00///t<<<///rw???///rx@@@///u===///rzBBB1#sHBHqcA3Z(())	
B	
A" 
	
C1#u1#uRZ000	 	1c(S!H%&&1c(S!H%RZ8881c( 
	Aq6Aq6"aVaV$4566	yB B L II	
	Iiii  S1#1vBHb1a&\***K"q!fX66677	 V V V<' ' '0, , ,2$C $C $CN )--// G G	 G$	6 	6 	6$ $ $4  > > >* "A"A"ABB' ' CB' .990N 0N :90Nf/ / /,$; $; $;P '899
 
 :9
 
 
r(   