o
    tBhU                  	   @   s  d dl 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 e Zdd Zdd Zdd Zdd Z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 Z'd1d2 Z(ej!j"d3ej#g ddd ej#g d#e$d e#g d#gg d&d'd4d5 Z)d6d7 Z*d8d9 Z+d:d; Z,d<d= Z-d>d? Z.d@dA Z/dBdC Z0dDdE Z1dFdG Z2dHdI Z3dJdK Z4dLdM Z5dNdO Z6dPdQ Z7dRdS Z8dTdU Z9dVdW Z:dS )X    N)issparse)
coo_matrix)
csc_matrix)
csr_matrix)
dok_matrix)
lil_matrix)type_of_target)assert_array_equal)ignore_warnings)_to_object_array)LabelBinarizer)MultiLabelBinarizer)LabelEncoder)label_binarize)_inverse_binarize_thresholding)_inverse_binarize_multiclass)datasetsc                 C   s   t | dr	|  } | S )Ntoarray)hasattrr   a r   }/var/www/html/riverr-enterprise-integrations-main/venv/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got	to_invertr   r   r   test_label_binarizer%   s:   







" 

r3   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   r7   cr8   r9   f)r   r(   r)   r+   r	   	transform)r/   r0   r1   r   r   r   "test_label_binarizer_unseen_labelsN   s   
&r>   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   )r?   r   r   r?      )   rC   r   rC   r   )r?   r?   r?   rC   )r?   r?   rC   r?   )r?   rC   r?   r?   )rC   r?   r?   r?   )r   r(   r)   r*   r+   r	   r-   )r/   r.   r0   r1   r   r   r   'test_label_binarizer_set_label_encoding\   s&   


	
rE   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  d}tjt|d t	t
d	dgdd	ggdd	dgdd W d    n	1 sw   Y  g d	dgdgg ddgg}d}tjt|d t | W d    n	1 s1w   Y  d}tjt|d t	t
d	dgdd	ggdg ddd 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 sw   Y  d}tjt|d t t d	dgdd	gg W d    n	1 sw   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   )rC   rD   )r   )r   rC   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.rC   r   r@   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rA   rB   r   zfoo format is not supportedfoor   )youtput_typeclasses	thresholdrD   )r   r   rD   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.r   rC   rD   z!output_type='binary', but y.shape)rC   r   rD   binaryz@Multioutput target data is not supported with label binarizationrM   )r(   r)   r   fitpytestraises
ValueErrorr=   r-   r   r   r+   r   )	one_classr/   multi_labelerr_msginput_labelsy_seq_of_seqsr   r   r   test_label_binarizer_errorsx   s   			 $$r[   zvalues, classes, unknown)rC   r   rD   r   rD   int64dtyperO      )r7   r   r;   r   r;   r   r7   r;   r8   )r\   objectstr)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   rC   r   rC   zunseen labelsrG   )
r   rR   r	   r,   r=   r-   r+   rS   rT   rU   )valuesrM   unknownleretr   r   r   test_label_encoder   s   

"rh   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   r_      r   )rj   r   r   r_   ri   )r   r   r_   r_   ri   rj   rj   )r   rC   rD   rD   r_   r   r   r      )	r   rR   r	   r,   r=   r-   rS   rT   rU   )rf   r   r   r    test_label_encoder_negative_ints   s   "rl   r^   rb   ra   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appleoranger]   zshould be a 1d arrayrG   )r   rR   r(   r)   rS   rT   rU   r=   )r^   rf   msgr   r   r    test_label_encoder_str_bad_shape   s   "rp   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   rC   rD   rj   r   z!contains previously unseen labelsrG   r?   )r?   z should be a 1d array.+shape \(\) )r   rS   rT   rU   r=   r-   rR   )rf   ro   r   r   r   test_label_encoder_errors  s(   "rt   rd   c                 C   sH   t  }||  |g }ttg | |g }ttg | d S )N)r   rR   r=   r	   r(   r)   r-   )rd   rf   transformedinverse_transformedr   r   r   test_label_encoder_empty_array  s   



rw   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 tt |tt g dg dg dg W d    d S 1 sw   Y  d S )Nc                   S      g dS NrF   r   )r   rC   r   r   r   r   r   <lambda>/      z9test_sparse_output_multilabel_binarizer.<locals>.<lambda>c                   S      ddhdhddhfS NrC   rD   r   r   r   r   r   r   r|   0      c                   S      t t dt dddhgS NrF   r{   r   rC   iterr   r   r   r   r|   1      r   r   r   r4   r   r   r   r   TFr   rO   )rC   r   r   )r(   r)   r   r+   r   indicesr^   indptrr   r	   r,   r-   rR   r=   rS   rT   rU   r   )inputsindicator_matinverser   r.   mlbr1   r   r   r   'test_sparse_output_multilabel_binarizer,  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   rx   ry   r   r   r   r   r   r|   W  r}   z+test_multilabel_binarizer.<locals>.<lambda>c                   S   r~   r   r   r   r   r   r   r|   X  r   c                   S   r   r   r   r   r   r   r   r|   Y  r   r   r4   r   r   rO   )	r(   r)   r   r+   r	   r,   r-   rR   r=   )r   r   r   r.   r   r1   r   r   r   test_multilabel_binarizerT  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   rC   r   )r   r(   r)   r	   r+   )r   rK   Yr   r   r   &test_multilabel_binarizer_empty_samplem  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   rC   r   zunknown class.* will be ignoredrG   r_   r4   r5   rO   rQ   )	r   r(   r)   rS   warnsUserWarningrR   r=   r	   )r   rK   r   warning_messagematrixr   r   r   'test_multilabel_binarizer_unknown_classt  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 )Nrz   r   r4   r   r   r   r   rD   rC   rQ   )r_   r   rD   rC   r   ztThe classes argument contains duplicate classes. Remove these duplicates before passing them to MultiLabelBinarizer.)r   rD   rC   rD   rG   )r(   r)   r   r	   r+   r,   rR   r=   hstackr   rS   rT   rU   )r.   r   r   rX   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 )	Nrz   r   r4   r   r   r   rQ   rO   )r(   r)   r   r	   r+   rM   )r.   r   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   rC   r5   r4   r6   )r(   r)   r   r	   r+   r-   rR   r=   r.   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{   rC   rD   ))23)1)r   r   )r   r   r   ))r7   r;   r   )r   r7   r`   ))r   r   )r{   )r{   r   r   r4   r   r]   r   r7   )r   r(   r)   r   ra   r	   r+   r,   r-   rR   r=   rS   rT   	TypeError)tuple_classesr   r   r.   rM   r   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 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   rD   r   r   r   r   )r   r+   rS   rT   rU   r-   r(   r)   )r.   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   rk   )r   rC   r_   rk   rQ   r'   r$   )r   rk   r_   rC   r&   )r   r   rC   rD   )rD   rC   r   r   r%   )r   r(   r)   r	   )outr0   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   rM   rA   rB   r   
multiclassrQ   g       @)rL   rM   rN   rI   )rS   rT   rU   r   r	   r   r   r   r   r   r   r+   r-   )rK   rM   rB   rA   r0   r   	binarizedy_typeinversedr/   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 )Nr5   r   r   rC   rj   )rj   r   rD   )r(   r)   reshaper   rK   rM   rB   rA   r0   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   rC   rC   r   rD   rj   Tr   )r(   eyer   rS   rT   rU   r   r   r   r   r   test_label_binarize_multiclassO  s   
"r   c                     s   t g dg dg dg g d} d}d}|  } fddtttttfD } g| D ]
}t|| ||| q-t	t
 t|| d	|d
d W d    d S 1 sRw   Y  d S )Nr5   r   r:   r   rC   r   c                    s   g | ]}| qS r   r   ).0sparse_matrixy_indr   r   
<listcomp>d  s    z2test_label_binarize_multilabel.<locals>.<listcomp>rj   Tr   )r(   r)   r   r   r   r   r   r   rS   rT   rU   r   )rM   rB   rA   r0   y_sparserK   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   rC   r   )rM   rB   rA   zcontinuous target data is not rG   g333333?g@rQ   zmismatch with the labelsrD   rO   )rS   rT   rU   r   r   r   r   r   !test_invalid_input_label_binarizex  s   "r   c                  C   s>   t tg dg dg dgtd} t| tg d d S )Nr5   )rj   r   rj   r:   rD   r   )r   r   r(   aranger	   r)   )r1   r   r   r    test_inverse_binarize_multiclass  s    r   );numpyr(   rS   scipy.sparser   r   r   r   r   r   sklearn.utils.multiclassr   sklearn.utils._testingr	   r
   sklearn.utilsr   sklearn.preprocessing._labelr   r   r   r   r   r   sklearnr   	load_irisirisr   r3   r>   rE   r[   markparametrizer)   ra   rh   rl   rp   rt   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s    )
N



	(#3	