U
    _»{jˆZ  ã                   @   sà  d dl Zd dlZd dlmZ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 d dlmZ d dlmZmZ d dlmZ e ¡ Zdd	„ Zd
d„ Zdd„ Zdd„ Zej  !ddddg¡ej  !dddg¡dd„ ƒƒZ"edd„ ƒZ#ej j!dej$dddddgdd �ej$dddgdd �ej$d!gdd �fej$d"d#d$d#d$ge%d �ej$d#d"d$ge%d �ej$d%ge%d �fe $d"d#d$d#d$g¡e $d#d"d$g¡e $d%g¡fgdd&d'gd(�d)d*„ ƒZ&d+d,„ Z'ej  !dd'd&g¡d-d.„ ƒZ(d/d0„ Z)ej j!d1ej$dddddgdd �ej$d"d#d$d#d$ge%d �e $d"d#d$d#d$g¡gdd&d'gd(�d2d3„ ƒZ*d4d5„ Z+d6d7„ Z,d8d9„ Z-d:d;„ Z.d<d=„ Z/d>d?„ Z0d@dA„ Z1dBdC„ Z2dDdE„ Z3dFdG„ Z4dHdI„ Z5dJdK„ Z6dLdM„ Z7dNdO„ Z8dPdQ„ Z9dRdS„ Z:dTdU„ Z;dVdW„ Z<ej  !dXeƒ eƒ eƒ g¡dYdZ„ ƒZ=dS )[é    N)Ú
coo_matrixÚ
csc_matrixÚ
csr_matrixÚ
dok_matrixÚissparseÚ
lil_matrix)Údatasets)ÚLabelBinarizerÚLabelEncoderÚMultiLabelBinarizerÚ_inverse_binarize_multiclassÚ_inverse_binarize_thresholdingÚlabel_binarize)Ú_to_object_array)Úassert_array_equalÚignore_warnings)Útype_of_targetc                 C   s   t | dƒr|  ¡ } | S )NÚtoarray)Úhasattrr   ©Úa© r   úe/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/preprocessing/tests/test_label.pyr      s    
r   c               
   C   s¶  ddddg} t dd�}t ddddgg¡j}| | ¡}t|jdgƒ t||ƒ t| |¡| ƒ t dd�}| | ¡}t|ƒs~t	‚t|jdgƒ t|| 
¡ ƒ t| | 
¡ ¡| ƒ t dd�}ddddg} t ddddgg¡j}| | ¡}t|jddgƒ t||ƒ t ddgddgddgddgg¡}t| |¡| ƒ dd	d
d	dg} t ddddgddddgddddgddddgddddgg¡}| | ¡}t|jdd
d	dgƒ t||ƒ t| |¡| ƒ d S )NÚposF©Úsparse_outputr   TÚnegé   ZspamZhamÚeggsÚ0)r	   ÚnpÚarrayÚTÚfit_transformr   Úclasses_Úinverse_transformr   ÚAssertionErrorr   )ÚinpÚlbÚexpectedÚgotZ	to_invertr   r   r   Útest_label_binarizer"   s:    







"4ÿ

r+   c               
   C   s    t ƒ } t dddgdddgdddgg¡}|  dddg¡}t||ƒ t dddgdddgdddgdddgdddgdddgg¡}|  ddddddg¡}t||ƒ d S )	Nr   r   ÚbÚdÚer   ÚcÚf)r	   r    r!   r#   r   Ú	transform)r(   r)   r*   r   r   r   Ú"test_label_binarizer_unseen_labelsK   s    "
2ÿr2   c               
   C   sÜ   t ddd�} t ddddg¡}t ddddgg¡j}|  |¡}t||ƒ t|  |¡|ƒ t ddd�} t dddddg¡}t ddddgddddgddddgddddgddddgg¡}|  |¡}t||ƒ t|  |¡|ƒ d S )Néþÿÿÿr   ©Ú	neg_labelÚ	pos_labelr   é   é   )r	   r    r!   r"   r#   r   r%   )r(   r'   r)   r*   r   r   r   Ú'test_label_binarizer_set_label_encodingY   s&    






ûÿ	

r9   ÚdtypeZInt64ZFloat64ÚbooleanÚunique_firstTFc              
   C   sf   t  d¡}|jdddddddddg	| d�}|r6| ¡ }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pandasr   r   ©r:   N)ÚpytestZimportorskipZSeriesÚuniquer	   Úfitr1   r   )r:   r<   ÚpdZy_truer(   Zy_outr   r   r   Ú$test_label_binarizer_pandas_nullableu   s    
 rB   c               	   C   sà  t  ddddg¡} tƒ  | ¡}dddg}d}tjt|d�� | |¡ W 5 Q R X tƒ }d}tjt|d�� | g ¡ W 5 Q R X tjt|d�� | g ¡ W 5 Q R X ddddg}d	}td
dd�}tjt|d�� | |¡ W 5 Q R X d}td
d
d�}tjt|d�� | |¡ W 5 Q R X d}tdd
dd�}tjt|d�� | |¡ W 5 Q R X d}tjt|d��* t	t
dd
gd
dggƒddd
gdd� W 5 Q R X g dd
gdgdddgd
gg}d}tjt|d�� tƒ  |¡ W 5 Q R X d}tjt|d��, t	t
dd
gd
dggƒddd
dgdd� W 5 Q R X d}tjt|d��2 t	t  dd
dgd
ddgg¡ddd
dgdd� W 5 Q R X d}tjt|d��$ tƒ  t  ddgd
dgg¡¡ W 5 Q R X tjt|d��* tt  ddgd
dgg¡dd
dgd� W 5 Q R X d S )Nr   ©r7   r8   )r   )r   r7   z@You appear to be using a legacy multi-label data representation.©Úmatchz.This LabelBinarizer instance is not fitted yetr   z3neg_label=2 must be strictly less than pos_label=1.r7   r4   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©r5   r6   r   zfoo format is not supportedZfoo)ÚyÚoutput_typeÚclassesÚ	thresholdr8   z?You appear to be using a legacy multi-label data representationzAThe number of class is not equal to the number of dimension of y.z!output_type='binary', but y.shapeÚbinaryz@Multioutput target data is not supported with label binarization©rI   )r    r!   r	   r@   r>   ÚraisesÚ
ValueErrorr1   r%   r   r   r#   r   )Z	one_classr(   Zmulti_labelÚerr_msgZinput_labelsZy_seq_of_seqsr   r   r   Útest_label_binarizer_errors‰   sv    
ÿüüü(rP   zvalues, classes, unknownr7   r   r8   Zint64r=   é   r,   r   r/   r-   ÚobjectÚstr)Zidsc              	   C   sœ   t ƒ }| | ¡ t|j|ƒ t| | ¡dddddgƒ t| dddddg¡| ƒ t ƒ }| | ¡}t|dddddgƒ tjt	dd�� | |¡ W 5 Q R X d S )Nr   r   r7   zunseen labelsrD   )
r
   r@   r   r$   r1   r%   r#   r>   rM   rN   )ÚvaluesrI   ÚunknownÚleÚretr   r   r   Útest_label_encoderØ   s    

rX   c               
   C   s²   t ƒ } |  ddddddg¡ t| jdddddgƒ t|  dddddddg¡dddddddgƒ t|  dddddddg¡dddddddgƒ t t¡� |  ddg¡ W 5 Q R X d S )	Nr   rQ   é   éÿÿÿÿr   r7   r8   é   )	r
   r@   r   r$   r1   r%   r>   rM   rN   )rV   r   r   r   Ú test_label_encoder_negative_intsý   s    , ÿr\   c              	   C   sJ   t ƒ }| tjddg| d�¡ d}tjt|d�� | d¡ W 5 Q R X d S )NÚappleZoranger=   zshould be a 1d arrayrD   )r
   r@   r    r!   r>   rM   rN   r1   )r:   rV   Úmsgr   r   r   Ú test_label_encoder_str_bad_shape	  s
    r_   c               	   C   sà   t ƒ } t t¡� |  g ¡ W 5 Q R X t t¡� |  g ¡ W 5 Q R X t ƒ } |  dddddg¡ d}tjt|d�� |  dg¡ W 5 Q R X tjt|d�� |  ddd	g¡ W 5 Q R X d
}tjt|d�� |  d¡ W 5 Q R X d S )Nr   r7   r8   rZ   z!contains previously unseen labelsrD   r3   éýÿÿÿéüÿÿÿz should be a 1d array.+shape \(\)Ú )r
   r>   rM   rN   r1   r%   r@   )rV   r^   r   r   r   Útest_label_encoder_errors  s    rc   rT   c                 C   sH   t ƒ }| | ¡ | g ¡}tt g ¡|ƒ | g ¡}tt g ¡|ƒ d S )N)r
   r@   r1   r   r    r!   r%   )rT   rV   ZtransformedZinverse_transformedr   r   r   Útest_label_encoder_empty_array)  s    



rd   c                  C   s’  dd„ dd„ dd„ g} t  dddgdddgdddgg¡}| d ƒ }dD �]}| D ]ø}t|d�}| |ƒ ¡}t|ƒ|kszt‚|rš|jj|jjks’t‚| 	¡ }t
||ƒ t
dd	d
g|jƒ | |¡|ksÈt‚t|d�}| |ƒ ¡ |ƒ ¡}t|ƒ|ksöt‚|�r|jj|jjk�st‚| 	¡ }t
||ƒ t
dd	d
g|jƒ | |¡|ksPt‚qPqFt t¡�2 | tt  dddgd	ddgdddgg¡ƒ¡ W 5 Q R X d S )Nc                   S   s
   dddgS ©NrC   ©r   ©r   r7   r   r   r   r   r   Ú<lambda>@  ó    z9test_sparse_output_multilabel_binarizer.<locals>.<lambda>c                   S   s   ddhdhddhfS ©Nr7   r8   r   r   r   r   r   r   rh   A  ri   c                   S   s   t t dƒt dƒddhgƒS ©NrC   rf   r   r7   ©Úiterr   r   r   r   rh   B  ri   r   r   ©TFr   r7   r8   )r    r!   r   r#   r   r&   Úindicesr:   Zindptrr   r   r$   r%   r@   r1   r>   rM   rN   r   )ÚinputsÚindicator_matÚinverser   r'   Úmlbr*   r   r   r   Ú'test_sparse_output_multilabel_binarizer=  s8    ý"





rt   c                  C   sØ   dd„ dd„ dd„ g} t  dddgdddgdddgg¡}| d ƒ }| D ]Œ}tƒ }| |ƒ ¡}t||ƒ tdddg|jƒ | |¡|ksŠt‚tƒ }| |ƒ ¡ 	|ƒ ¡}t||ƒ tdddg|jƒ | |¡|ksFt‚qFd S )	Nc                   S   s
   dddgS re   r   r   r   r   r   rh   h  ri   z+test_multilabel_binarizer.<locals>.<lambda>c                   S   s   ddhdhddhfS rj   r   r   r   r   r   rh   i  ri   c                   S   s   t t dƒt dƒddhgƒS rk   rl   r   r   r   r   rh   j  ri   r   r   r7   r8   )
r    r!   r   r#   r   r$   r%   r&   r@   r1   )rp   rq   rr   r'   rs   r*   r   r   r   Útest_multilabel_binarizere  s"    ý"


ru   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   r7   r   )r   r    r!   r   r#   )rs   rG   ÚYr   r   r   Ú&test_multilabel_binarizer_empty_sample~  s    rw   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 5 Q R X t dddgdddgg¡}t dddgd�} tjt|d��" |  |¡ ddgddgg¡}W 5 Q R X t||ƒ d S )	Nr   r7   r   zunknown class.* will be ignoredrD   rQ   r8   rL   )	r   r    r!   r>   ZwarnsÚUserWarningr@   r1   r   )rs   rG   rv   Zwarning_messageÚmatrixr   r   r   Ú'test_multilabel_binarizer_unknown_class…  s    
&&rz   c               	   C   sN  dddg} t  dddgdddgdddgg¡}tdddgd�}t| | ¡|ƒ t|jdddgƒ tdddgd�}t| | ¡ | ¡|ƒ t|jdddgƒ td	dddgd�}t| | ¡t  dgdgdgg|f¡ƒ t|jd	dddgƒ t	| ƒ} tdddgd�}t| | ¡ | ¡|ƒ d
}tddddgd�}t
jt|d�� | | ¡ W 5 Q R X d S )NrC   rf   rg   r   r   r8   r7   rL   rQ   ztThe classes argument contains duplicate classes. Remove these duplicates before passing them to MultiLabelBinarizer.rD   )r    r!   r   r   r#   r$   r@   r1   Zhstackrm   r>   rM   rN   )r'   rq   rs   rO   r   r   r   Ú'test_multilabel_binarizer_given_classes”  s,    
" ÿÿr{   c                  C   sŽ   dddg} t  dddgdddgdddgg¡}t  dddgdddgdddgg¡}tdddgd�}t| | ¡|ƒ dddg|_t| | ¡|ƒ d S )	NrC   rf   rg   r   r   r8   r7   rL   )r    r!   r   r   r#   rI   )r'   rq   Zindicator_mat2rs   r   r   r   Ú(test_multilabel_binarizer_multiple_calls·  s    
""r|   c                  C   sˆ   dgdgdgg} t  dddgdddgdddgg¡}tƒ }t| | ¡|ƒ t| |¡| ƒ tƒ }t| | ¡ | ¡|ƒ t| |¡| ƒ d S )Nr   r   r7   )r    r!   r   r   r#   r%   r@   r1   ©r'   rq   rs   r   r   r   Ú.test_multilabel_binarizer_same_length_sequenceÅ  s    "r~   c               	   C   s<  t dddgƒ} dddgddd	gfd
ddgdddgfdddg| fg}t dddgdddgdddgg¡}|D ]œ\}}tƒ }tj|td�}t| |¡|ƒ t|j|ƒ tj| |¡td�}t||ƒ tƒ }t| 	|¡ 
|¡|ƒ t|j|ƒ tj| |¡td�}t||ƒ qhtƒ }t t¡� | i i ddifg¡ W 5 Q R X d S )Nrf   ©r7   ©r8   )Ú2Ú3)Ú1)rƒ   r�   rƒ   r�   r‚   )r,   r/   r   )r   r,   r   r,   r/   )r   r€   )rf   )rf   r   r   r   r=   )r   r    r!   r   rR   r   r#   r$   r%   r@   r1   r>   rM   Ú	TypeError)Ztuple_classesrp   rq   r'   rI   rs   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   r#   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 5 Q R X | t ddgg¡¡ | t ddgg¡¡ | t ddgg¡¡ t t¡� | t dgg¡¡ W 5 Q R X t t¡� | t dddgg¡¡ W 5 Q R X d S )Nr†   r   r8   r   )r   r#   r>   rM   rN   r%   r    r!   )r'   rs   r   r   r   Ú,test_multilabel_binarizer_inverse_validationø  s    
 rˆ   c               	   C   sÜ   t ddgddddgd�} t ddddgddddgg¡}t| |ƒ t ddgddddgd�} t ddddgddddgg¡}t| |ƒ t ddddgddddgd�} t ddddgddddgddddgddddgg¡}t| |ƒ d S )Nr   r[   r7   rQ   rL   r   r8   )r   r    r!   r   )Úoutr)   r   r   r   Ú$test_label_binarize_with_class_order  s    

2rŠ   c              
   C   s,  dD �] }|dks|dkrH|rHt  t¡� t| ||||d� W 5 Q R X qt| ||||d�}tt|ƒ|ƒ t|ƒ|ksxt‚t| ƒ}|dkr–t	||d�}nt
||||| d d�}tt|ƒt| ƒƒ t|||d�}	|	 | ¡}tt|ƒ|ƒ t|ƒ|ksöt‚|	 |¡}
tt|
ƒt| ƒƒ t|
ƒt| ƒkst‚qd S )	Nrn   r   ©rI   r5   r6   r   Z
multiclassrL   g       @)rH   rI   rJ   rF   )r>   rM   rN   r   r   r   r   r&   r   r   r   r	   r#   r%   )rG   rI   r6   r5   r)   r   Z	binarizedZy_typeZinversedr(   Zinverse_outputr   r   r   Úcheck_binarized_results  sR    
ûû
ü  ÿ

rŒ   c                  C   s´   dddg} ddg}d}d}t  ddgddgddgg¡d d …df  d¡}t| ||||ƒ dddg} ddg}d}d}t  ddgddgddgg¡d d …df  d¡}t| ||||ƒ d S )Nr   r   r7   rZ   )rZ   r   r8   )r    r!   ZreshaperŒ   ©rG   rI   r6   r5   r)   r   r   r   Útest_label_binarize_binaryM  s    
.
.rŽ   c               	   C   sf   dddg} dddg}d}d}dt  d¡ }t| ||||ƒ t t¡� t| |d|dd� W 5 Q R X d S )Nr   r   r7   r8   rZ   Tr‹   )r    ÚeyerŒ   r>   rM   rN   r   r�   r   r   r   Útest_label_binarize_multiclass`  s    

    ÿr�   c               	      s¤   t  dddgdddgdddgg¡‰ dddg} d}d}|ˆ  }‡ fdd„tttttfD ƒ}ˆ g| D ]}t|| |||ƒ qbt 	t
¡� t|| d|dd� W 5 Q R X d S )	Nr   r   r7   c                    s   g | ]}|ˆ ƒ‘qS r   r   )Ú.0Zsparse_matrix©Zy_indr   r   Ú
<listcomp>u  s   ÿz2test_label_binarize_multilabel.<locals>.<listcomp>rZ   Tr‹   )r    r!   r   r   r   r   r   rŒ   r>   rM   rN   r   )rI   r6   r5   r)   Zy_sparserG   r   r’   r   Útest_label_binarize_multilabelo  s.    "

ûþ    ÿr”   c                	   C   s’   t  t¡� tddgddgddd� W 5 Q R X t jtdd�� tddgddgd	� W 5 Q R X t jtd
d�� tddggdddgd	� W 5 Q R X d S )Nr   r7   r   )rI   r6   r5   zcontinuous target data is not rD   g333333ó?gš™™™™™@rL   zmismatch with the labelsr8   )r>   rM   rN   r   r   r   r   r   Ú!test_invalid_input_label_binarize‰  s    "r•   c                  C   sF   t tdddgdddgdddggƒt d¡ƒ} t| t dddg¡ƒ d S )Nr   r   rZ   r8   )r   r   r    Zaranger   r!   )r*   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,   r7   N)r
   r@   r    Únanr1   r   )rV   Zy_transr   r   r   Útest_nan_label_encoder™  s    r˜   Úencoderc                 C   s>   t | dƒrt‚| jdddgd�}|  dddg¡}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_outputr   r,   r/   )rG   N)r   r&   r#   r   )r™   Zy_encoded_with_kwargZy_encoded_positionalr   r   r   Ú*test_label_encoders_do_not_have_set_output¥  s    rš   )>Únumpyr    r>   Zscipy.sparser   r   r   r   r   r   Zsklearnr   Zsklearn.preprocessing._labelr	   r
   r   r   r   r   Zsklearn.utilsr   Zsklearn.utils._testingr   r   Zsklearn.utils.multiclassr   Z	load_irisZirisr   r+   r2   r9   ÚmarkZparametrizerB   rP   r!   rR   rX   r\   r_   rc   rd   rt   ru   rw   rz   r{   r|   r~   r…   r‡   rˆ   rŠ   rŒ   rŽ   r�   r”   r•   r–   r˜   rš   r   r   r   r   Ú<module>   sŽ    	 )
Nýý
ýõí

ýù	
(#3	 ÿ