o
    i)d                  
   @   s~  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 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! Z"d
d Z#dd Z$dd Z%dd Z&ej'(dg dej'(dddgdd Z)dd Z*ej'(dedd Z+ej'j(dej,g dd d!ej,g d"d d!ej,d#gd d!fej,g d$e-d!ej,g d%e-d!ej,d&ge-d!fe,g d$e,g d%e,d&gfgg d'd(d)d* Z.d+d, Z/ej'(dd-d.gd/d0 Z0d1d2 Z1ej'j(d3ej,g dd d!ej,g d$e-d!e,g d$gg d'd(d4d5 Z2d6d7 Z3ej'(ded8d9 Z4d:d; Z5d<d= Z6d>d? Z7d@dA Z8dBdC Z9dDdE Z:dFdG Z;dHdI Z<dJdK Z=dLdM Z>dNdO Z?dPdQ Z@dRdS ZAej'(dTej,ge e e e e dUdV ZBdWdX ZCej'(dedYdZ ZDd[d\ ZEej'(d]e
 e	 e gd^d_ ZFej'j(d`e ed(ej'(dae,g de,g dbe,g dcgddde ZGdS )f    N)issparse)config_contextdatasets)LabelBinarizerLabelEncoderMultiLabelBinarizer_inverse_binarize_multiclass_inverse_binarize_thresholdinglabel_binarize)_convert_to_numpy_get_namespace_device_dtype_ids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                 C   s   t | dr	|  } | S )Ntoarray)hasattrr   a r   u/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/sklearn/preprocessing/tests/test_label.pyr   %   s   
r   c                  C   s  g d} t dd}tg dgj}|| }t|jdg t|| t|||  t dd}|| }t|s;J t|jdg t||	  t||	 |  t dd}g d} tg dgj}|| }t|jd	dg t|| td
dgdd
gdd
gd
dgg}t|||  g d} t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gotZ	to_invertr   r   r   test_label_binarizer+   s:   







" 

r7   c               	   C   s   t  } tg dg dg dg}| g d}t|| t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   r;   cr<   r=   f)r   r-   r.   r0   r   	transform)r4   r5   r6   r   r   r   "test_label_binarizer_unseen_labelsT   s   
&rB   c                  C   s   t ddd} tg d}tg dgj}| |}t|| t| || t ddd} tg d}tg dg d	g d
g d	g dg}| |}t|| t| || d S )Nr   	neg_label	pos_labelr#   )rC   r   r   rC      )   rG   r$   rG   r   )rC   rC   rC   rG   )rC   rC   rG   rC   )rC   rG   rC   rC   )rG   rC   rC   rC   )r   r-   r.   r/   r0   r   r2   )r4   r3   r5   r6   r   r   r   'test_label_binarizer_set_label_encodingb   s&   


	
rI   dtype)ZInt64ZFloat64booleanunique_firstTFc                 C   sX   t d}|jg d| 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.
    Zpandas)	r$   r   r   r$   r   r$   r$   r   r$   rJ   r$   r   N)pytestZimportorskipZSeriesuniquer   fitrA   r   )rJ   rL   pdZy_truer4   Zy_outr   r   r   $test_label_binarizer_pandas_nullable~   s   
rR   c                  C   s  t g d} t | }g d}d}tjt|d || W d    n1 s*w   Y  t }d}tjt|d |g  W d    n1 sKw   Y  tjt|d |g  W d    n1 sgw   Y  g d}d}tdd	d
}tjt|d || W d    n1 sw   Y  d}tddd
}tjt|d || W d    n1 sw   Y  d}td	ddd}tjt|d || W d    n1 sw   Y  g d	dgdgg ddgg}d}tjt|d t 	| W d    n	1 sw   Y  d}tjt|d t
t g dg dgdg ddd W d    n	1 s2w   Y  d}tjt|d t t d	dgdd	gg W d    n	1 s[w   Y  tjt|d tt d	dgdd	ggg dd W d    d S 1 sw   Y  d S )Nr!   )rG   rH   )r   )r   rG   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.rG   r$   rD   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rE   rF   r    rH   )r   r$   rH   z?You appear to be using a legacy multi-label data representationz!output_type='binary', but y.shaper$   rG   rH   )rG   r$   rH   binaryr   youtput_typeclasses	thresholdz@Multioutput target data is not supported with label binarizationr\   )r-   r.   r   rP   rN   raises
ValueErrorrA   r2   r0   r	   r
   )Z	one_classr4   Zmulti_labelerr_msgZinput_labelsZy_seq_of_seqsr   r   r   test_label_binarizer_errors   sj   	 $$rb   csr_containerc                 C   s   d}t jt|d t| ddgddggdddgdd W d    n1 s&w   Y  d}t jt|d t| ddgddggdg d	dd W d    d S 1 sRw   Y  d S )
Nzfoo format is not supportedrT   r$   rG   Zfoor   rY   zAThe number of class is not equal to the number of dimension of y.rW   )rN   r_   r`   r	   )rc   ra   r   r   r   "test_label_binarizer_sparse_errors   s$   	"rd   zvalues, classes, unknown)rG   r$   rH   r$   rH   int64rM   rW      )r;   r   r?   r   r?   r   r;   r?   r<   )re   objectstr)Zidsc                 C   s   t  }||  t|j| t|| g d t|g d|  t  }|| }t|g d tjt	dd || W d    d S 1 sIw   Y  d S )N)r$   r   rG   r   rG   zunseen labelsrT   )
r   rP   r   r1   rA   r2   r0   rN   r_   r`   )valuesr\   unknownleretr   r   r   test_label_encoder   s   

"rn   c                  C   s   t  } | g d t| jg d t| g dg d t| g dg d tt | ddg W d    d S 1 sBw   Y  d S )Nr$   r$   rf      r   )rq   r   r$   rf   rp   )r   r$   rf   rf   rp   rq   rq   )r$   rG   rH   rH   rf   r   r   r      )	r   rP   r   r1   rA   r2   rN   r_   r`   )rl   r   r   r    test_label_encoder_negative_ints  s   "rs   ri   rh   c                 C   s`   t  }|tjddg| d d}tjt|d |d W d    d S 1 s)w   Y  d S )NappleZorangerM   zshould be a 1d arrayrT   )r   rP   r-   r.   rN   r_   r`   rA   )rJ   rl   msgr   r   r    test_label_encoder_str_bad_shape  s   "rv   c                  C   s>  t  } tt | g  W d    n1 sw   Y  tt | g  W d    n1 s2w   Y  t  } | g d d}tjt|d | dg W d    n1 s[w   Y  tjt|d | g d W d    n1 syw   Y  d}tjt|d | d W d    d S 1 sw   Y  d S )N)r$   rG   rH   rq   r$   z!contains previously unseen labelsrT   rC   )rC   z should be a 1d array.+shape \(\) )r   rN   r_   r`   rA   r2   rP   )rl   ru   r   r   r   test_label_encoder_errors  s(   "rz   rj   c                 C   sH   t  }||  |g }ttg | |g }ttg | d S )N)r   rP   rA   r   r-   r.   r2   )rj   rl   ZtransformedZinverse_transformedr   r   r   test_label_encoder_empty_array4  s   



r{   c                  C   s@  dd dd dd g} t g dg dg dg}| d  }d	D ]}}| D ]x}t|d
}|| }t||ks9J |rI|jj|jjksEJ | }t	|| t	g d|j
 |||ks_J t|d
}|| | }t||ksvJ |r|jj|jjksJ | }t	|| t	g d|j
 |||ksJ q$q d S )Nc                   S      g dS NrS   r$   )r$   rG   r   r   r   r   r   <lambda>K      z9test_sparse_output_multilabel_binarizer.<locals>.<lambda>c                   S      ddhdhddhfS NrG   rH   r$   r   r   r   r   r   r   L      c                   S      t t dt dddhgS NrS   r   r$   rG   iterr   r   r   r   r   M      r   r$   r$   r8   r$   r$   r   r   TFr   rW   )r-   r.   r   r0   r   indicesrJ   Zindptrr   r   r1   r2   rP   rA   )inputsindicator_matinverser    r3   mlbr6   r   r   r   'test_sparse_output_multilabel_binarizerH  s8   




r   c              
   C   s   t t dt dddhg}tdd}|| tt || tg dg dg d	g W d    d S 1 s;w   Y  d S )
NrS   r   r$   rG   Fr   r   )rG   r   r   r   )	r   r   rP   rN   r_   r`   r2   r-   r.   )rc   r3   r   r   r   r   .test_sparse_output_multilabel_binarizer_errorsm  s   

"r   c                  C   s   dd dd dd g} t g dg dg dg}| d  }| D ]D}t }|| }t|| tg d	|j |||ksAJ t }|| | }t|| tg d	|j |||ksdJ q d S )
Nc                   S   r|   r}   r   r   r   r   r   r   {  r   z+test_multilabel_binarizer.<locals>.<lambda>c                   S   r   r   r   r   r   r   r   r   |  r   c                   S   r   r   r   r   r   r   r   r   }  r   r   r8   r   r   rW   )	r-   r.   r   r0   r   r1   r2   rP   rA   )r   r   r   r3   r   r6   r   r   r   test_multilabel_binarizerx  s$   


r   c                  C   sF   t  } ddgdgg g}tddgddgddgg}t| || d S )Nr$   rG   r   )r   r-   r.   r   r0   )r   rZ   Yr   r   r   &test_multilabel_binarizer_empty_sample  s   r   c                  C   s   t  } ddgg}tddgddgg}d}tjt|d | |ddgddgg}W d    n1 s5w   Y  tg dg dg}t g d	d
} tjt|d | |ddgddgg}W d    n1 slw   Y  t|| d S )Nr$   rG   r   zunknown class.* will be ignoredrT   rf   r8   r9   rW   r^   )	r   r-   r.   rN   ZwarnsUserWarningrP   rA   r   )r   rZ   r   Zwarning_messagematrixr   r   r   'test_multilabel_binarizer_unknown_class  s   
r   c                  C   sF  g d} t g dg dg dg}tg dd}t|| | t|jg d tg dd}t|| | | t|jg d tg dd}t|| t dgdgdgg|f t|jg d t	| } tg dd}t|| | | d	}tg d
d}t
jt|d ||  W d    d S 1 sw   Y  d S )Nr~   r   r8   r$   r   r$   r$   rH   rG   r^   )rf   r$   rH   rG   r   ztThe classes argument contains duplicate classes. Remove these duplicates before passing them to MultiLabelBinarizer.)r$   rH   rG   rH   rT   )r-   r.   r   r   r0   r1   rP   rA   Zhstackr   rN   r_   r`   )r3   r   r   ra   r   r   r   'test_multilabel_binarizer_given_classes  s,    "r   c                  C   s|   g d} t g dg dg dg}t g dg dg dg}tg dd}t|| | g d|_t|| | d S )	Nr~   r   r8   r   r   r   r^   rW   )r-   r.   r   r   r0   r\   )r3   r   Zindicator_mat2r   r   r   r   (test_multilabel_binarizer_multiple_calls  s   
r   c                  C   s   dgdgdgg} t g dg dg dg}t }t|| | t|||  t }t|| | | t|||  d S )Nr$   r   rG   r9   r8   r:   )r-   r.   r   r   r0   r2   rP   rA   r3   r   r   r   r   r   .test_multilabel_binarizer_same_length_sequence  s   r   c                  C   s@  t g d} g dg dfg dg dfg d| fg}tg dg dg d	g}|D ]N\}}t }tj|td
}t||| t|j| tj||td
}t|| t }t|	|
|| t|j| tj||td
}t|| q+t }tt |i i ddifg W d    d S 1 sw   Y  d S )N)r   rG   rH   ))23)1)r   r   )r   r   r   ))r;   r?   r   )r   r;   rg   ))r   r   )r   )r   r   r   r8   r   rM   r   r;   )r   r-   r.   r   rh   r   r0   r1   r2   rP   rA   rN   r_   	TypeError)Ztuple_classesr   r   r3   r\   r   Zindicator_mat_invr   r   r   ,test_multilabel_binarizer_non_integer_labels  s,   

"r   c                  C   s0   dg} t ddgg}t }t|| | d S )Nr$   r$   r$   r   r$   )r-   r.   r   r   r0   r   r   r   r   $test_multilabel_binarizer_non_unique  s   r   c                  C   s  dg} t  }||  tt |tddgg W d    n1 s&w   Y  |tddgg |tddgg |tddgg tt |tdgg W d    n1 sfw   Y  tt |tg dg W d    d S 1 sw   Y  d S )Nr   r$   rH   r   r$   r$   r$   )r   r0   rN   r_   r`   r2   r-   r.   )r3   r   r   r   r   ,test_multilabel_binarizer_inverse_validation  s   
"r   c                  C   s   t ddgg dd} tg dg dg}t| | t ddgg dd} tg dg dg}t| | t g d	g d
d} tg dg dg dg dg}t| | d S )Nr$   rr   )r$   rG   rf   rr   r^   r,   r)   )r$   rr   rf   rG   r+   )r   r$   rG   rH   )rH   rG   r   r$   r*   )r
   r-   r.   r   )outr5   r   r   r   $test_label_binarize_with_class_order  s   

"r   c              	   C   s>  dD ]}|dks|dkr-|r-t t t| ||||d W d    n1 s'w   Y  qt| ||||d}tt|| t||ksEJ t| }|dkrTt||d}nt	||||| d d}tt|t|  t
|||d}	|	| }tt|| t||ksJ |	|}
tt|
t|  t|
t| ksJ qd S )	Nr   r   r\   rE   rF   r    Z
multiclassr^   g       @)r[   r\   r]   rV   )rN   r_   r`   r
   r   r   r   r   r   r	   r   r0   r2   )rZ   r\   rF   rE   r5   r    Z	binarizedZy_typeZinversedr4   Zinverse_outputr   r   r   check_binarized_results-  sR   


r   c                  C   s   g d} ddg}d}d}t ddgddgddggd d df d}t| |||| g d} ddg}d}d}t ddgddgddggd d df d}t| |||| d S )Nr9   r   r$   rG   rq   )rq   r$   rH   )r-   r.   Zreshaper   rZ   r\   rF   rE   r5   r   r   r   test_label_binarize_binary`  s   ..r   c                  C   sx   g d} g d}d}d}dt d }t| |||| tt t| |d|dd W d    d S 1 s5w   Y  d S )Nr   r$   rG   rG   r   rH   rq   Tr   )r-   eyer   rN   r_   r`   r
   r   r   r   r   test_label_binarize_multiclasss  s   
"r   arr_typec                 C   s   t g dg dg dg}g d}d}d}|| }| |}t||||| tt t||d|dd	 W d    d S 1 s@w   Y  d S )
Nr9   r   r>   r   rG   r   rq   Tr   )r-   r.   r   rN   r_   r`   r
   )r   Zy_indr\   rF   rE   r5   rZ   r   r   r   test_label_binarize_multilabel  s   

"r   c                   C   s   t t tddgddgddd W d    n1 sw   Y  t jtdd tddgddgd	 W d    n1 s=w   Y  t jtd
d tddggg dd	 W d    d S 1 s`w   Y  d S )Nr   rG   r$   )r\   rF   rE   zcontinuous target data is not rT   g333333?g@r^   zmismatch with the labelsrH   rW   )rN   r_   r`   r
   r   r   r   r   !test_invalid_input_label_binarize  s   "r   c                 C   s>   t | g dg dg dgtd}t|tg d d S )Nr9   )rq   r   rq   r>   rH   r   )r   r-   Zaranger   r.   )rc   r6   r   r   r    test_inverse_binarize_multiclass  s    r   c                  C   s8   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   r;   rG   N)r   rP   r-   nanrA   r   )rl   Zy_transr   r   r   test_nan_label_encoder  s   r   encoderc                 C   s:   t | drJ | jg d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.
    Z
set_outputrg   )rZ   N)r   r0   r   )r   Zy_encoded_with_kwargZy_encoded_positionalr   r   r   *test_label_encoders_do_not_have_set_output  s   r   zarray_namespace, device, dtyperZ   ro   )rH   rp   	   rp   r   rH   c                 C   sz  t ||}|j| |d}tdd t }t }||}||}||}	|| }|| }
t|d j|jks=J t|	d j|jksIJ t|j	d j|jksVJ t
t|||
 t
t|	||  t
t|j	||j	 t }t }||}|| }
t|d j|jksJ t|j	d j|jksJ t
t|||
 t
t|j	||j	 W d    d S 1 sw   Y  d S )N)deviceT)Zarray_api_dispatchr   )r   Zasarrayr   r   rP   rA   r2   r   __name__r1   r   r   r0   )rZ   Zarray_namespacer   rJ   ZxpZxp_yZxp_labelZnp_labelZxp_transformedZxp_inv_transformedZnp_transformedr   r   r   'test_label_encoder_array_api_compliance  s2   







"r   )Hnumpyr-   rN   Zscipy.sparser   Zsklearnr   r   Zsklearn.preprocessing._labelr   r   r   r   r	   r
   Zsklearn.utils._array_apir   r   r   r   Zsklearn.utils._testingr   r   Zsklearn.utils.fixesr   r   r   r   r   Zsklearn.utils.multiclassr   Zsklearn.utils.validationr   Z	load_irisZirisr   r7   rB   rI   markZparametrizerR   rb   rd   r.   rh   rn   rs   rv   rz   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   <module>   s     ):




	%

#3
		

