
    /iix                     l	   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	m
Z
mZmZmZmZ d dl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mZmZmZ d dlm Z  d d	l!m"Z"  ej#                    Z$d
 Z%d Z&d Z'd Z(ej)        *                    dg d          ej)        *                    dddg          d                         Z+d Z,ej)        *                    de          d             Z-ej)        *                    dg dd dgdgd gd gdgggg dg dg dg dg dg dggg          ej)        *                    d  e                      d!                         Z.ej)        *                    d" ej/        g d#d$%           ej/        g d&d$%           ej/        d'gd$%          f ej/        g d(e0%           ej/        g d)e0%           ej/        d*ge0%          f ej/        g d(           ej/        g d)           ej/        d*g          fgg d+,          d-             Z1d. Z2ej)        *                    dd/d0g          d1             Z3d2 Z4ej)        *                    d3 ej/        g d#d$%           ej/        g d(e0%           ej/        g d(          gg d+,          d4             Z5d5 Z6ej)        *                    de          d6             Z7d7 Z8d8 Z9d9 Z:d: Z;d; Z<d< Z=d= Z>d> Z?d? Z@d@ ZAdA ZBdB ZCdC ZDej)        *                    dDej/        gez   ez   ez   ez   ez             dE             ZEdF ZFej)        *                    dg ddGdHgd gd gd gd gggg dg dIg dJg dJg dJg dJggg dd dgdgd gd gdgggg dKg dLg dMg dNg dOg dMggg          ej)        *                    d  e                      dP                         ZGej)        *                    de          dQ             ZHdR ZIej)        *                    dS e
             e	             e            g          dT             ZJej)        *                    dU e            e,          ej)        *                    dV ej/        g d#           ej/        g dW           ej/        g dX          g          dY                         ZKdS )Z    N)issparse)config_contextdatasets)LabelBinarizerLabelEncoderMultiLabelBinarizer_inverse_binarize_multiclass_inverse_binarize_thresholdinglabel_binarize)_convert_to_numpy_get_namespace_device_dtype_ids_is_numpy_namespacedeviceget_namespace)yield_namespace_device_dtype_combinations)_array_api_for_testsassert_array_equal)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS)type_of_target)_to_object_arrayc                 N    t          | d          r|                                 } | S )Ntoarray)hasattrr   as    l/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/sklearn/preprocessing/tests/test_label.pyr   r   '   s&    q) IIKKH    c                     g d} t          d          }t          j        g dg          j        }|                    |           }t          |j        dg           t          ||           t          |                    |          |            t          d          }|                    |           }t          |          sJ t          |j        dg           t          ||	                                           t          |                    |	                                          |            t          d          }g d} t          j        g dg          j        }|                    |           }t          |j        d	dg           t          ||           t          j        d
dgdd
gdd
gd
dgg          }t          |                    |          |            g d} t          j        g dg dg dg dg dg          }|                    |           }t          |j        g d           t          ||           t          |                    |          |            d S )N)posr#   r#   r#   Fsparse_outputr   r   r   r   r#   T)negr#   r#   r'   r      r)   r   r'   r)   r   )spamhameggsr+   0r   r   r   r)   r   r   r)   r   r   r)   r   r   r)   r   r   r   )r-   r,   r+   r*   )
r   nparrayTfit_transformr   classes_inverse_transformr   r   )inplbexpectedgot	to_inverts        r    test_label_binarizerr=   -   si    '
&
&C	e	,	,	,Bx'')H


3

Cr{UG,,,x%%%r++C00#666 
d	+	+	+B


3

CC==r{UG,,,x///r++CKKMM::C@@@	e	,	,	,B
&
&
&Cx'')H


3

Cr{UEN333x%%%1a&1a&1a&1a&9::Ir++I66<<< .
-
-Cx	|||\\\<<<N H 

3

Cr{$@$@$@AAAx%%%r++C00#66666r!   c            	      D   t                      } t          j        g dg dg dg          }|                     g d          }t	          ||           t          j        g dg dg dg dg dg dg          }|                     g d          }t	          ||           d S )Nr)   r   r   r   r)   r   r   r   r)   )bder   r   r   )r   rB   crC   rD   f)r   r2   r3   r5   r   	transform)r9   r:   r;   s      r    "test_label_binarizer_unseen_labelsrI   V   s    			BxIIIyyy9::H


???
+
+Cx%%%x	IIIyyy)))YYY			J H ,,555
6
6Cx%%%%%r!   c                  @   t          dd          } t          j        g d          }t          j        g dg          j        }|                     |          }t          ||           t          |                     |          |           t          dd          } t          j        g d          }t          j        g dg d	g d
g d	g dg          }|                     |          }t          ||           t          |                     |          |           d S )Nr   	neg_label	pos_labelr(   )rK   r   r   rK      )   rO   r)   rO   r   )rK   rK   rK   rO   )rK   rK   rO   rK   )rK   rO   rK   rK   )rO   rK   rK   rK   )r   r2   r3   r4   r5   r   r7   )r9   r8   r:   r;   s       r    'test_label_binarizer_set_label_encodingrQ   d   s6   	"	2	2	2B (<<<
 
 Cx())+H


3

Cx%%%r++C00#666	"	2	2	2B (???
#
#Cx	
 H 

3

Cx%%%r++C00#66666r!   dtype)Int64Float64booleanunique_firstTFc                 $   t          j        d          }|                    g d|           }|r|                                }t	                                          |          }|                    ddg          }t          |dgdgg           dS )ziChecks that LabelBinarizer works with pandas nullable dtypes.

    Non-regression test for gh-25637.
    pandas)	r)   r   r   r)   r   r)   r)   r   r)   rR   r)   r   N)pytestimportorskipSeriesuniquer   fitrH   r   )rR   rV   pdy_truer9   y_outs         r    $test_label_binarizer_pandas_nullablerb      s     
	X	&	&BYY222%Y@@F ! 					f	%	%BLL!Q  EusQCj)))))r!   c                     t          j        g d          } t                                          |           }g d}d}t	          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   t                      }d}t	          j        t          |          5  |                    g            d d d            n# 1 swxY w Y   t	          j        t          |          5  |                    g            d d d            n# 1 swxY w Y   g d}d}t          dd	
          }t	          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   d}t          dd
          }t	          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   d}t          d	dd          }t	          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   g d	dgdgg ddgg}d}t	          j        t          |          5  t                      	                    |           d d d            n# 1 swxY w Y   d}t	          j        t          |          5  t          t          j        g dg dg          dg dd           d d d            n# 1 swxY w Y   d}t	          j        t          |          5  t                                          t          j        d	dgdd	gg                     d d d            n# 1 swxY w Y   t	          j        t          |          5  t          t          j        d	dgdd	gg          g d           d d d            d S # 1 swxY w Y   d S )Nr&   )rO   rP   )r   )r   rO   z@You appear to be using a legacy multi-label data representation.matchz.This LabelBinarizer instance is not fitted yet)r   r)   r   r)   z3neg_label=2 must be strictly less than pos_label=1.rO   r)   rL   z3neg_label=2 must be strictly less than pos_label=2.zqSparse binarization is only supported with non zero pos_label and zero neg_label, got pos_label=2 and neg_label=1TrM   rN   r%   rP   )r   r)   rP   z?You appear to be using a legacy multi-label data representationz!output_type='binary', but y.shaper)   rO   rP   )rO   r)   rP   binaryr   youtput_typeclasses	thresholdz@Multioutput target data is not supported with label binarizationrm   )r2   r3   r   r^   rZ   raises
ValueErrorrH   r7   r5   r
   r   )	one_classr9   multi_labelerr_msginput_labelsy_seq_of_seqss         r    test_label_binarizer_errorsrw      sG   &&I					i	(	(B(((KPG	z	1	1	1 " "
[!!!" " " " " " " " " " " " " " " 
		B>G	z	1	1	1  
R              	z	1	1	1 ! !
R   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !  <<LCG	!q	1	1	1B	z	1	1	1  
|              CG	!q	1	1	1B	z	1	1	1  
|              	5  
!q	E	E	EB	z	1	1	1  
|               !Q!iii!5MOG	z	1	1	1 6 6&&}5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2G	z	1	1	1 
 
&h			999-.. II		
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 QG	z	1	1	1 9 9RX1v1v&6778889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	z	1	1	1 F Frx!Q!Q 011999EEEEF F F F F F F F F F F F F F F F F Fs   A;;A?A?1CCC9DD"DE::E>E>3GGGH11H58H5&"JJJ<.K66K:=K::M$$M(+M(
,OO
Ocsr_containerc                 l   d}t          j        t          |          5  t           | ddgddgg          dddgd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t           | ddgddgg          dg d	d           d d d            d S # 1 swxY w Y   d S )
Nzfoo format is not supportedre   r)   rO   foor   rj   zAThe number of class is not equal to the number of dimension of y.rh   )rZ   rp   rq   r
   )rx   rt   s     r    "test_label_binarizer_sparse_errorsr{      sp    ,G	z	1	1	1 
 
&maVaV,--F		
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 RG	z	1	1	1 
 
&maVaV,--II		
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s#   %AAA7%B))B-0B-zy, classes, expected)r)   r   r   r)   r)   )r)   r   rO   	   )r   r)   rO   r|   r0   r1   r/   r.   z$array_namespace, device_, dtype_namec                    t          ||          }t          j        |           }t          d          5  |                    | |          } t	          |          sJd}t          j        t          |          5  t          d          	                    |            ddd           n# 1 swxY w Y   t          d          	                    |          }	t          j        t          |          5  |	
                    |            ddd           n# 1 swxY w Y   t                      	                    |          }
d|
_        d}t          j        t          |          5  |
                    |                    ||                     ddd           n# 1 swxY w Y   t                      }|                    |           }t          |          d	         j        |j        k    sJ d
t!          |j                  v sJ t%          |          t%          |           k    sJ t'          t)          ||          t          j        |                     |j        }t          |          d	         j        |j        k    sJ t%          |          t%          |           k    sJ d
t!          |j                  v sJ t'          t)          ||          t          j        |                     |                    ||          }|                    |          }t          |          d	         j        |j        k    sJ d
t!          |j                  v sJ t%          |          t%          |           k    sJ t'          t)          ||          t)          | |                     ddd           dS # 1 swxY w Y   dS )zTest that :class:`LabelBinarizer` works correctly with the Array API for binary
    and multi-class inputs for numerical labels and non-sparse outputs.
    Tarray_api_dispatchr   z3`sparse_output=True` is not supported for array APIre   r$   NzD`LabelBinarizer` was fitted on a sparse matrix, and therefore cannotr   intxp)r   r2   asarrayr   r   rZ   rp   rq   r   r^   rH   sparse_input_r7   r5   r   __name__strrR   r   r   r   r6   )rk   rm   r:   array_namespacedevice_
dtype_namer   y_npsparse_output_msglb_np	lb_sparsesparse_input_msglb_xp	binarizedfitted_classesexpected_xpbinarized_inverses                    r    )test_label_binarizer_array_api_compliancer      s   ( 
ow	7	7B:a==D	4	0	0	0 0
 0
JJqJ))
 #2&& 	R Uz1BCCC : :T22266q999: : : : : : : : : : : : : : : #666::4@@Ez1BCCC # #"""# # # # # # # # # # # # # # # '((,,T22I&*I#V  z1ABBB R R++BJJxJ,P,PQQQR R R R R R R R R R R R R R R   ''**	Y''*3r{BBBBIO,,,,,,i  F1II----,Y2>>>
8@T@TUUU^,,Q/8BKGGGGn%%2222N0111111n444bj6I6I	
 	
 	
 jj'j::!33K@@.//2;r{JJJJ-3444444'((F1II5555/B7779J1QS9T9T9T	
 	
 	
]0
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0
 0
s   AN7:$B*N7*B.	.N71B.	2AN73D	N7D	N7D	AN7%+FN7F 	 N7#F 	$HN77N;>N;zvalues, classes, unknown)rO   r)   rP   r)   rP   int64rY   rh      )rB   r   rF   r   rF   r   rB   rF   rC   )r   objectr   )idsc                    t                      }|                    |            t          |j        |           t          |                    |           g d           t          |                    g d          |            t                      }|                    |           }t          |g d           t          j        t          d          5  |                    |           d d d            d S # 1 swxY w Y   d S )N)r)   r   rO   r   rO   zunseen labelsre   )
r   r^   r   r6   rH   r7   r5   rZ   rp   rq   )valuesrm   unknownlerets        r    test_label_encoderr   0  s+   0 
BFF6NNNr{G,,,r||F++___===r++OOO<<fEEE	B


6
"
"CsOOO,,,	z	9	9	9  
W                 s   C66C:=C:c                     t                      } |                     g d           t          | j        g d           t          |                     g d          g d           t          |                     g d          g d           t          j        t                    5  |                     ddg           d d d            d S # 1 swxY w Y   d S )Nr)   r)   r      r   )r   r   r)   r   r   )r   r)   r   r   r   r   r   )r)   rO   rP   rP   r   r   r   r      )	r   r^   r   r6   rH   r7   rZ   rp   rq   )r   s    r     test_label_encoder_negative_intsr   U  s&   	BFFr{$4$4$4555r||$;$;$;<<>S>S>STTT
222335L5L5L   
z	"	"  
aV                 s   $C		CCr   r   c                    t                      }|                    t          j        ddg|                      d}t	          j        t          |          5  |                    d           d d d            d S # 1 swxY w Y   d S )NappleorangerY   zshould be a 1d arrayre   )r   r^   r2   r3   rZ   rp   rq   rH   )rR   r   msgs      r     test_label_encoder_str_bad_shaper   a  s    	BFF28Wh'u555666
 C	z	-	-	-  
W                 s   A::A>A>c                  D   t                      } t          j        t                    5  |                     g            d d d            n# 1 swxY w Y   t          j        t                    5  |                     g            d d d            n# 1 swxY w Y   t                      } |                     g d           d}t          j        t          |          5  |                     dg           d d d            n# 1 swxY w Y   t          j        t          |          5  |                     g d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                     d           d d d            d S # 1 swxY w Y   d S )N)r)   rO   rP   r   r)   z!contains previously unseen labelsre   rK   )rK   z should be a 1d array.+shape \(\) )r   rZ   rp   rq   rH   r7   r^   )r   r   s     r    test_label_encoder_errorsr   j  s   	B	z	"	"  
R              	z	"	" ! !
R   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
BFF
-C	z	-	-	- # #
bT"""# # # # # # # # # # # # # # #	z	-	-	- + +
\\\***+ + + + + + + + + + + + + + + .C	z	-	-	- ! !
R   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !sY   A

AA.BBBD  DD&E

EE2FFFr   c                 (   t                      }|                    |            |                    g           }t          t	          j        g           |           |                    g           }t          t	          j        g           |           d S )N)r   r^   rH   r   r2   r3   r7   )r   r   transformedinverse_transformeds       r    test_label_encoder_empty_arrayr     sx     
BFF6NNN,,r""Krx||[111..r22rx||%899999r!   c                     d d d g} t          j        g dg dg dg          } | d                     }dD ]}| D ]}t          |	          }|                     |                      }t	          |          |k    sJ |r0|j        j        |j        j        k    sJ |                                }t          ||           t          g d
|j
                   |                    |          |k    sJ t          |	          }|                     |                                           |                      }t	          |          |k    sJ |r0|j        j        |j        j        k    sJ |                                }t          ||           t          g d
|j
                   |                    |          |k    sJ d S )Nc                  
    g dS Nrd   r)   )r)   rO    r   r!   r    <lambda>z9test_sparse_output_multilabel_binarizer.<locals>.<lambda>      &&& r!   c                      ddhdhddhfS NrO   rP   r)   r   r   r!   r    r   z9test_sparse_output_multilabel_binarizer.<locals>.<lambda>      !Q!q!f% r!   c                  ^    t          t          d          t          d          ddhg          S Nrd   r   r)   rO   iterr   r!   r    r   z9test_sparse_output_multilabel_binarizer.<locals>.<lambda>  %    d6llDJJA788 r!   r   r)   r)   r?   r)   r)   r   r   TFr$   rh   )r2   r3   r   r5   r   indicesrR   indptrr   r   r6   r7   r^   rH   )inputsindicator_matinverser%   r8   mlbr;   s          r    'test_sparse_output_multilabel_binarizerr     s    	'&%%88F
 HiiiIII>??MfQikkG& 9 9 	9 	9C%MBBBC##CCEE**CC==M1111 ${(CJ,<<<<<kkmm}c222yyy#,777((--8888 &MBBBC''##%%..**335511CC==M1111 ${(CJ,<<<<<kkmm}c222yyy#,777((--88888/	99 9r!   c                    t          t          d          t          d          ddhg          }t          d          }|                    |           t          j        t
                    5  |                     | t          j        g dg dg d	g                               d d d            d S # 1 swxY w Y   d S )
Nrd   r   r)   rO   Fr$   r   )rO   r   r   r   )	r   r   r^   rZ   rp   rq   r7   r2   r3   )rx   r8   r   s      r    .test_sparse_output_multilabel_binarizer_errorsr     s    
Vd4jj1a&1
2
2C
E
2
2
2CGGCLLL	z	"	" 
 
M"(IIIyyy)))#DEEFF	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   -:B44B8;B8c                  d   d d d g} t          j        g dg dg dg          } | d                     }| D ]}t                      }|                     |                      }t	          ||           t	          g d|j                   |                    |          |k    sJ t                      }|                     |                                           |                      }t	          ||           t	          g d|j                   |                    |          |k    sJ d S )	Nc                  
    g dS r   r   r   r!   r    r   z+test_multilabel_binarizer.<locals>.<lambda>  r   r!   c                      ddhdhddhfS r   r   r   r!   r    r   z+test_multilabel_binarizer.<locals>.<lambda>  r   r!   c                  ^    t          t          d          t          d          ddhg          S r   r   r   r!   r    r   z+test_multilabel_binarizer.<locals>.<lambda>  r   r!   r   r?   r   r   rh   )	r2   r3   r   r5   r   r6   r7   r^   rH   )r   r   r   r8   r   r;   s         r    test_multilabel_binarizerr     sP    	'&%%88F
 HiiiIII>??MfQikkG 5 5!##&&=#...999cl333$$S))W4444 "##ggcceenn&&ssuu--=#...999cl333$$S))W444445 5r!   c                      t                      } ddgdgg g}t          j        ddgddgddgg          }t          |                     |          |           d S )Nr)   rO   r   )r   r2   r3   r   r5   )r   rk   Ys      r    &test_multilabel_binarizer_empty_sampler     se    


C
Q!bA
1a&1a&1a&)**As((++Q/////r!   c                  `   t                      } ddgg}t          j        ddgddgg          }d}t          j        t
          |          5  |                     |                              ddgddgg          }d d d            n# 1 swxY w Y   t          j        g dg dg          }t          g d	
          } t          j        t
          |          5  |                     |                              ddgddgg          }d d d            n# 1 swxY w Y   t          ||           d S )Nr)   rO   r   zunknown class.* will be ignoredre   r   r?   r@   rh   ro   )	r   r2   r3   rZ   warnsUserWarningr^   rH   r   )r   rk   r   warning_messagematrixs        r    'test_multilabel_binarizer_unknown_classr     s   


C
QA
1a&1a&!""A7O	k	9	9	9 8 8%%1v1v&6778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 	)))YYY'((A
iii
0
0
0C	k	9	9	9 8 8%%1v1v&6778 8 8 8 8 8 8 8 8 8 8 8 8 8 8vq!!!!!s$   /BB
B
/DDDc                     g d} t          j        g dg dg dg          }t          g d          }t          |                    |           |           t          |j        g d           t          g d          }t          |                    |                               |           |           t          |j        g d           t          g d          }t          |                    |           t          j        dgdgdgg|f                     t          |j        g d           t          |           } t          g d          }t          |                    |                               |           |           d	}t          g d
          }t          j        t          |          5  |                    |            d d d            d S # 1 swxY w Y   d S )Nr   r   r?   r)   r   r)   r)   rP   rO   ro   )r   r)   rP   rO   r   ztThe classes argument contains duplicate classes. Remove these duplicates before passing them to MultiLabelBinarizer.)r)   rP   rO   rP   re   )r2   r3   r   r   r5   r6   r^   rH   hstackr   rZ   rp   rq   )r8   r   r   rt   s       r    'test_multilabel_binarizer_given_classesr     s+   
 
 
 CHiiiIII>??M
iii
0
0
0Cs((--}===s|YYY/// iii
0
0
0Cswws||--c22MBBBs|YYY/// lll
3
3
3C#	QC!qc?M*J K K   s|\\\222 s))C
iii
0
0
0Cswws||--c22MBBB	G  lll
3
3
3C	z	1	1	1                   s   9GG #G c                  D   g d} t          j        g dg dg dg          }t          j        g dg dg dg          }t          g d          }t          |                    |           |           g d|_        t          |                    |           |           d S )	Nr   r   r?   r   r   r   ro   rh   )r2   r3   r   r   r5   rm   )r8   r   indicator_mat2r   s       r    (test_multilabel_binarizer_multiple_callsr     s    
 
 
 CHiiiIII>??MXyyy)))YYY?@@N iii
0
0
0Cs((--}===))CKs((--~>>>>>r!   c                     dgdgdgg} t          j        g dg dg dg          }t                      }t          |                    |           |           t          |                    |          |            t                      }t          |                    |                               |           |           t          |                    |          |            d S )Nr)   r   rO   r@   r?   rA   )r2   r3   r   r   r5   r7   r^   rH   r8   r   r   s      r    .test_multilabel_binarizer_same_length_sequencer   %  s    3aS/CHiiiIII>??M


Cs((--}===s,,];;SAAA 

Cswws||--c22MBBBs,,];;SAAAAAr!   c                     t          g d          } g dg dfg dg dfg d| fg}t          j        g dg dg d	g          }|D ]<\  }}t                      }t          j        |t          
          }t          |                    |          |           t          |j        |           t          j        |                    |          t          
          }t          ||           t                      }t          |	                    |          
                    |          |           t          |j        |           t          j        |                    |          t          
          }t          ||           >t                      }t          j        t                    5  |                    i i ddifg           d d d            d S # 1 swxY w Y   d S )N)r   rO   rP   ))23)1)r   r   )r   r   r   ))rB   rF   r   )r   rB   r   ))r   r   )r   )r   r   r   r?   r   rY   r   rB   )r   r2   r3   r   r   r   r5   r6   r7   r^   rH   rZ   rp   	TypeError)tuple_classesr   r   r8   rm   r   indicator_mat_invs          r    ,test_multilabel_binarizer_non_integer_labelsr   4  s*   $%7%7%788M	)	)	)???;	)	)	)???;	.	.	.>F
 HiiiIII>??M 3 3W!##hs&)))3,,S11=AAA3<111HS%:%:=%I%IQWXXX,c222 "##3773<<11#66FFF3<111HS%:%:=%I%IQWXXX,c2222


C	y	!	! 4 4B"sCj!123334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   +GGGc                      dg} t          j        ddgg          }t                      }t          |                    |           |           d S )Nr)   r)   r)   r   r)   )r2   r3   r   r   r5   r   s      r    $test_multilabel_binarizer_non_uniquer   Q  sM    .CHq!fX&&M


Cs((--}=====r!   c                  p   dg} t                      }|                    |            t          j        t                    5  |                    t          j        ddgg                     d d d            n# 1 swxY w Y   |                    t          j        ddgg                     |                    t          j        ddgg                     |                    t          j        ddgg                     t          j        t                    5  |                    t          j        dgg                     d d d            n# 1 swxY w Y   t          j        t                    5  |                    t          j        g dg                     d d d            d S # 1 swxY w Y   d S )Nr   r)   rP   r   r)   r)   r)   )r   r5   rZ   rp   rq   r7   r2   r3   )r8   r   s     r    ,test_multilabel_binarizer_inverse_validationr   X  s>   .C


Cc	z	"	" 2 2bhAx001112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 "(QF8,,---"(QF8,,---"(QF8,,--- 
z	"	" / /bhuoo.../ / / / / / / / / / / / / / /	z	"	" 5 5bh			{334445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s6    +A77A;>A;*EEE3+F++F/2F/c                     t          ddgg d          } t          j        g dg dg          }t          | |           t          ddgg d          } t          j        g dg dg          }t          | |           t          g d	g d
          } t          j        g dg dg dg dg          }t          | |           d S )Nr)   r   )r)   rO   r   r   ro   r1   r.   )r)   r   r   rO   r0   )r   r)   rO   rP   )rP   rO   r   r)   r/   )r   r2   r3   r   )outr:   s     r    $test_label_binarize_with_class_orderr   k  s    
!Q
6
6
6Cx|||455HsH%%% !Q
6
6
6Cx|||455HsH%%%
|||
<
<
<Cx|||\\\<<<PQQHsH%%%%%r!   c           	         dD ]}|dk    s|dk    rH|rFt          j        t                    5  t          | ||||           d d d            n# 1 swxY w Y   Wt          | ||||          }t	          t          |          |           t          |          |k    sJ t          |           }|dk    rt          ||          }nt          |||||z   dz            }t	          t          |          t          |                      t          |||          }	|	                    |           }t	          t          |          |           t          |          |k    sJ |	                    |          }
t	          t          |
          t          |                      t          |
          t          |           k    sJ d S )	Nr   r   rm   rM   rN   r%   
multiclassro   g       @)rl   rm   rn   rg   )rZ   rp   rq   r   r   r   r   r   r	   r
   r   r5   r7   )rk   rm   rN   rM   r:   r%   r   y_typeinversedr9   inverse_outputs              r    check_binarized_resultsr  z  sI   & /7 /7NNi1nn-nz**  #''"/                   #'
 
 
	 	79--x888	""m3333  ""\!!3IwOOOHH 6"%	1S8	  H 	78,,gajj999 9M
 
 
 $$Q''	79--x888	""m3333--i887>22GAJJ???''8A;;66666_/7 /7s   AA	A	c                  j   g d} ddg}d}d}t          j        ddgddgddgg          d d df                             d          }t          | ||||           g d} ddg}d}d}t          j        ddgddgddgg          d d df                             d          }t          | ||||           d S )Nr@   r   r)   rO   r   )r   r)   rP   )r2   r3   reshaper  rk   rm   rN   rM   r:   s        r    test_label_binarize_binaryr    s    		A!fGIIx!R2q'Ar7344QQQT:BB7KKHAw	9hGGG 			A!fGIIx!Q!Q!Q011!!!Q$7??HHHAw	9hGGGGGr!   c                      g d} g d}d}d}dt          j        d          z  }t          | ||||           t          j        t
                    5  t          | |d|d           d d d            d S # 1 swxY w Y   d S )Nr   r)   rO   rO   r   rP   r   Tr   )r2   eyer  rZ   rp   rq   r   r  s        r    test_label_binarize_multiclassr    s    		AiiGII26!99}HAw	9hGGG	z	"	" 
 
w"	QU	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   A22A69A6arr_typec                 "   t          j        g dg dg dg          }g d}d}d}||z  } | |          }t          |||||           t          j        t
                    5  t          ||d|d	           d d d            d S # 1 swxY w Y   d S )
Nr@   r   rE   r	  rO   r   r   Tr   )r2   r3   r  rZ   rp   rq   r   )r  y_indrm   rN   rM   r:   rk   s          r    test_label_binarize_multilabelr    s     HiiiIII677EiiGII5 HAAw	9hGGG	z	"	" 
 
w"	QU	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   "BBBc                     t          j        t                    5  t          ddgddgdd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          ddgddg	           d d d            n# 1 swxY w Y   t          j        t          d
          5  t          ddggg d	           d d d            d S # 1 swxY w Y   d S )Nr   rO   r)   )rm   rN   rM   zcontinuous target data is not re   g333333?g@ro   zmismatch with the labelsrP   rh   )rZ   rp   rq   r   r   r!   r    !test_invalid_input_label_binarizer    s   	z	"	" I I1v1vaHHHHI I I I I I I I I I I I I I I	z)I	J	J	J 3 3SzAq622223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	z)C	D	D	D 4 4Ax33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s3   >AA$BB
B
,CCCyesno)birdcatdogrE   )r)   r   rO   r)   r	  r@   r?   rA   c                    t          ||          }t          |          }t          j        t          j        |           j        t          j                  o5t          j        t          j        |          j        t          j                  }t          d          5  |                    | |          } |r|sGd}	t          j	        t          |	          5  t          | |d           ddd           n# 1 swxY w Y   t          | |          }
t          j        |t          	          }t          |
          d
         j        |j        k    sJ t          |
          t          |           k    sJ dt!          |
j                  v sJ t#          t%          |
|          |           |sH|sFd}	t          j	        t          |	          5  t          | |           ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )zTest that :func:`label_binarize` works correctly with the Array API for binary
    and multi-class inputs for numerical labels and non-sparse outputs.
    Tr~   r   z4`sparse_output=True` is not supported for array API re   )rk   rm   r%   Nro   rY   r   r   r   z3`classes` contains unsupported dtype for array API )rk   rm   )r   r   r2   
issubdtyper   rR   integerr   rZ   rp   rq   r   r   r   r   r   r   r   r   )rk   rm   r:   r   r   r   r   xp_is_numpynumeric_dtyper   r   s              r    (test_label_binarize_array_api_compliancer    s   , 
ow	7	7B%b))KM"*Q--"5rzBB r}

7!2:H HM 
4	0	0	0 5 5JJqJ)) 	N ML]:S999 M M"QtLLLLM M M M M M M M M M M M M M M 'q':::Iz(#666H ++A.72;FFFF)$$q		1111C	0000000rBBBHMMM 	5= 	5GCz555 5 5G44445 5 5 5 5 5 5 5 5 5 5 5 5 5 5+5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s[   9H C4(H 4C8	8H ;C8	<CH 
G(H (G,	,H /G,	0H  HHc                     t           | g dg dg dg          t          j        d                    }t          |t          j        g d                     d S )Nr@   )r   r   r   rE   rP   r   )r	   r2   aranger   r3   )rx   r;   s     r     test_inverse_binarize_multiclassr  &  sa    
&yyy+++yyy9::BIaLL C sBHYYY//00000r!   c                      t                      } |                     dddt          j        g           |                     t          j        g          }t          |dg           dS )z]Check that label encoder encodes nans in transform.

    Non-regression test for #22628.
    r   rB   rO   N)r   r^   r2   nanrH   r   )r   y_transs     r    test_nan_label_encoderr#  .  sW    
 
BFFCc26"###llBF8$$Gw$$$$$r!   encoderc                     t          | d          rJ |                     g d          }|                     g d          }t          ||           dS )zxCheck that label encoders do not define set_output and work with y as a kwarg.

    Non-regression test for #26854.
    
set_outputr   )rk   N)r   r5   r   )r$  y_encoded_with_kwargy_encoded_positionals      r    *test_label_encoders_do_not_have_set_outputr)  :  se     w-----"00???0CC"00AA+-ABBBBBr!   zarray_namespace, device, dtyperk   r   )rP   r   r|   r   r|   rP   c                    t          ||          }|                    | |          }t          d          5  t                      }t                      }|                    |          }|                    |          }|                    |          }	|                    |           }|                    |           }
t          |          d         j        |j        k    sJ t          |	          d         j        |j        k    sJ t          |j	                  d         j        |j        k    sJ t          t          ||          |
           t          t          |	|          |            t          t          |j	        |          |j	                   t                      }t                      }|                    |          }|                    |           }
t          |          d         j        |j        k    sJ t          |j	                  d         j        |j        k    sJ t          t          ||          |
           t          t          |j	        |          |j	                   d d d            d S # 1 swxY w Y   d S )Nr   Tr~   r   )r   r   r   r   r^   rH   r7   r   r   r6   r   r   r5   )rk   r   r   rR   r   xp_yxp_labelnp_labelxp_transformedxp_inv_transformednp_transformeds              r    'test_label_encoder_array_api_compliancer1  H  s    
ov	6	6B::a:''D	4	0	0	0 X X>>>><<%%!++D11%77GG<<??!++A..^,,Q/8BKGGGG/003<KKKKX.//2;r{JJJJ,^R@@.QQQ,-?DDaHHH,X->CCXEVWWW>>>>!//55!//22^,,Q/8BKGGGGX.//2;r{JJJJ,^R@@.QQQ,X->CCXEVWWW-X X X X X X X X X X X X X X X X X Xs   H9I>>JJ)Lnumpyr2   rZ   scipy.sparser   sklearnr   r   sklearn.preprocessing._labelr   r   r   r	   r
   r   sklearn.utils._array_apir   r   r   r   r   r   sklearn.utils._testingr   r   sklearn.utils.fixesr   r   r   r   r   sklearn.utils.multiclassr   sklearn.utils.validationr   	load_irisirisr   r=   rI   rQ   markparametrizerb   rw   r{   r   r3   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)  r1  r   r!   r    <module>r?     s        ! ! ! ! ! ! , , , , , , , ,                                                   4 3 3 3 3 3 5 5 5 5 5 5x  &7 &7 &7R& & &7 7 78 "A"A"ABB$77* * 87 CB*$7F 7F 7Ft .99
 
 :9
, 	1vaS1#s34LLLL\\<<<|||D	

 
 *,U,U,W,W :
 :
 
 
:
z  BH___G444BHYYYg...BHaS(((	
 BH...f===BH___F333BHcU&)))	
 BH...//BH___%%BHcUOO	
" 	#""'   * + * 	 	 	 5("344  54! ! !. 000***&999***++
 	#""   : : :"9 "9 "9J .99
 
 :9
5 5 520 0 0" " "     F? ? ?B B B4 4 4:> > >5 5 5&& & &07 07 07fH H H&
 
 
 XJ  	
  
 
 
 4 4 4 	t}sQC!qc&:;LL"""YY			999iii8	

 
1vaS1#s34	yyy999iiiIII"NO	  *,U,U,W,W "5 "5   "5J .991 1 :91	% 	% 	%  0 02E2E2G2GH C C C $--//'   
 !!$$$%%###$$ X X  X X Xr!   