
     hB                     l   d dl Zd dlmZ d dlmZ d dlZd dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z"  e	 ej#        d dgdd gg                    Z$d e$ddd f<   e
e	eeefe%e&ej'        ej(        e)ej*        ffdZ+ e
ej,        -                    d          .                    dd                    d dgdd ggd dgge$g e+d dgdd gg           e+d d gd d gg           e+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 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$e/"           ej#        g d$e/"          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 e+g d%g d&ge
e	f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e/"           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e/"          gd0gd d1g ej#        d gd1gg           ej#        d gd1ggej*        "          g ej#        d d1gd1d gg           ej#        d d1gd1d ggej*        "           ej#        d d1gg          g e+d d1gd1d gge
e	fe)ej*        f+           e+d d1gge
e	fe)ej*        f+          g g ej#        g ge/"          d2g ej#         ej#        g            ej#        g d3          ge/"           ej#        g            ej#        g d3          gh d4ddhg e0g d3           e0ddg          gd'd(d5d d'ig ej#        d            ej#        g g g           ej#        d dgddggd6d-gd7d8ggg          gd9Z1h d4d'd(d5d-gd-gd5d. e0g d3          dgZ2dgdgd dggg d: ej#        g ddggd;"           e ej#        g ddggd;"                    gZ3d< Z4d= Z5d> Z6d? Z7d@ Z8dA Z9dB Z:dC Z;ej<        =                    dDg dE          dF             Z>dG Z?dH Z@dI ZAdS )J    N)product)issparse)
csc_matrix)
csr_matrix)
coo_matrix)
dok_matrix)
lil_matrix)assert_array_equal)assert_array_almost_equal)assert_allclose)_NotAnArray)unique_labels)is_multilabel)type_of_target)class_distribution)check_classification_targets)_ovr_decision_function)_safe_split)ShuffleSplit)SVC)datasets   c                 $      fd|D             S )Nc                 4    g | ]}D ]} ||           S )dtype ).0matrix_typer   dtypesmatrixs      _/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/sklearn/utils/tests/test_multiclass.py
<listcomp>z$_generate_sparse.<locals>.<listcomp>'   sO          	F%(((       r   )r!   matrix_typesr    s   ` `r"   _generate_sparser&   "   s4    
    '   r$   *      )
   r)   )size   )
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.   r1   r2   r3   d)r%   r    )
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(   r9   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)   )r.   r   r(   )r   r(   r.   )r   r   r   )r   r   r   )r   r   r   r-   r5   r0   r   )r(   r   )r5   r5   )r5   r.   )r.   r5   )
pytestraises
ValueErrorr   r
   rangenparangearrayonesr   r$   r"   test_unique_labelsrN      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)r?   r=   r<   )rB   r@   rA   r>   )EXAMPLESr   NON_ARRAY_LIKE_EXAMPLESrF   rG   rH   )formatyexampley_types       r"   test_unique_labels_non_specificrV      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<   r=   r?   r   r(   r1   r4   1r-   2)r   rP   rF   rG   rH   r   )mix_clf_formaty_multilabely_multiclasss      r"   test_unique_labels_mixed_typesr]      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 ]I\  } }| dv rd}nd}|D ]6| dk    rt                    rd}nd}t                    spt          d          rt	          j                  j        dk    rt	          j                  j        j        dv rwt	          j                  j	        d         d	k    rTfd
t          t          t          t          t          fD             }|D ]%}|t          |          k    sJ d|d|            &t                    r                                |t                    k    sJ dd|            8Kd S )N)r<   TFr<   	__array__r(   biufr   r   c                 &    g | ]} |          S r   r   )r   sparse_matrixrT   s     r"   r#   z&test_is_multilabel.<locals>.<listcomp>  s3     	# 	# 	#% "M'**	# 	# 	#r$   zis_multilabel() should be )rP   itemsr   hasattrrJ   asarrayndimr   kindshaper   r   r   r   r	   r   toarray)groupgroup_examples	dense_exp
sparse_expexamples_sparseexmpl_sparserT   s         @r"   test_is_multilabelrq      s   !)!1!1 )G )G~,,,III% #	G #	GG ...8G3D3D.!

"
   U--UJw'',11Jw''-2f<<Jw''-a0144	# 	# 	# 	# #""""*	# 	# 	# %4 U UL%$* *    ;G<<T   
    ,!//++! !    3:77IIF   C#	G)G )Gr$   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)rB   r@   rA   zUnknown label type: match)rP   keysrF   rG   rH   r   )rU   rT   msgs      r"   !test_check_classification_targetsrw   -  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(rc   z, got z6Expected array-like \(array or non-string sequence\).*rs   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.)rP   rd   r   rQ   rF   rG   rH   MULTILABEL_SEQUENCES)rk   rl   rT   	msg_regexrv   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'rs   )	rF   importorskiparraysSparseArrayrJ   nanrG   rH   r   )pdrS   rv   s      r"   !test_type_of_target_pandas_sparser   T  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(   r-   r.   r   r=   )r   r   r   r   r?   gffffff?g@r   rA   r   r   r   r<   r(   r-   r>   N)rF   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)rF   r~   r   r   r
   )r   r   r   y_predictedlabelss        r"   "test_unique_labels_pandas_nullabler   r  su     
	X	&	&BYY222%Y@@F))777w)GGK6;//Fv1v&&&&&r$   c            	         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          }t          j        |||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   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.   r5   r   r   r(   r-   r5   r   r   r(   r-   r.   r5   )r   r:      r      )r:   r.   )ri   )r   r(   r.   )r   r(   r-   r   r   )r-   r-   r   r   )r8   UUUUUU?gUUUUUU?)r   r   r         ?)r          @r   r   r   r   )qq?r   qq?)r   r   r   )rJ   rL   spr   r   rI   ri   r   )rS   data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   targetrJ   dotTr   listsplitr   r   )clfclfpirisXrS   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?r8   r-   r/   )r   r   r   r8   )atol)r(   r   r(   r(   r   )axis)r(   r(   )r-   r(   c           	          g | ]K}t          t          j        |         g          t          j        |         g                    d          LS rE   )r   rJ   rL   )r   iconfidencesr   predictionss     r"   r#   z.test_ovr_decision_function.<locals>.<listcomp>  sf         	Hk!n%&&+a.1A(B(BI	
 	

	  r$   r.   gư>)rJ   rL   r   r   r
   argmaxrI   )
dec_valuesvotesexpected_predictiondec_values_oner   r   r   s       @@@r"   test_ovr_decision_functionr     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$   )BnumpyrJ   scipy.sparsesparser   	itertoolsr   rF   r   r   r   r   r   r	   sklearn.utils._testingr
   r   r   sklearn.utils.estimator_checksr   sklearn.utils.multiclassr   r   r   r   r   r   sklearn.utils.metaestimatorsr   sklearn.model_selectionr   sklearn.svmr   sklearnr   rL   sparse_multilable_explicit_zeroboolintint8uint8floatfloat32r&   randomRandomStaterandintrC   	frozensetrP   rQ   ry   rN   rV   r]   rq   rw   r{   r   r   markparametrizer   r   r   r   r   r$   r"   <module>r      sM                    ! ! ! ! ! ! # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 5 5 5 5 5 5 < < < < < < 2 2 2 2 2 2 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 7 7 7 7 7 7 A A A A A A ; ; ; ; ; ; 4 4 4 4 4 4 0 0 0 0 0 0            ",*XRX1v1v6F-G-G"H"H () 1 %
 j*j*M#rw%<	 	 	 	  	
29((,,44QX4FFGG
Q!Q
Q' 
	Aq6Aq6*	+	+ 
	Aq6Aq6*	+	+ 
	Aq6(	#	# a1b' 	2q'Ar7#$$ 	2q'Ar7#$$ 	HBHr1g2w/0011" 	'&&"'***"(+++%((("*---1#sQC!!HBHYYY''((		!!//////  
|||$
sc3Z ,,,-..,,,-RW===,,,-RX>>>,,,-U;;;,,,-RZ@@@ 
	\\<<<($j1"(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 $j12:&

 

 

	 
	XJ$j1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!}p pf II	
	Iiii  S1#1vBHb1a&\***K"q!fX66677	 V V V<' ' '0, , ,2*G *G *GZ	6 	6 	6$ $ $4  > > >* "A"A"ABB' ' CB'0N 0N 0Nf/ / /,$; $; $; $; $;r$   