o
    tBh/                     @   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 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ ZdS )%    N)assert_allclose)sparse)
make_blobs)LogisticRegression)DecisionTreeClassifier)compute_class_weight)compute_sample_weight)assert_array_almost_equal)assert_almost_equalc                  C   s|   t g d} t | }td|| d}t | dd  }tt ||| jd  |d |d   k r9|d k s<J  J d S )N   r   r      r      balancedclassesyr   r      )npasarrayuniquer   bincountr
   dotshape)r   r   cwclass_counts r   |/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/utils/tests/test_class_weight.pytest_compute_class_weight   s   
,r   c                  C   s|  t d} t g d}tt td| |d W d    n1 s#w   Y  tjtdd tddi| |d W d    n1 sCw   Y  t d	} tt td| |d W d    n1 sdw   Y  tt tdd
d| |d W d    n1 sw   Y  t ddg} t g d}dd	d}d}tjt|d t|| |d W d    d S 1 sw   Y  d S )Nr   )r   r   r   r   r   r   r   r   z4The classes, \[0, 1, 2, 3\], are not in class_weight)matchlabel_not_present      ?r          @r   r   catdog)r%   r$   r%   r   )dogsr$   z/The classes, \['dog'\], are not in class_weight)r   aranger   pytestraises
ValueErrorr   )r   r   class_weightsmsgr   r   r   %test_compute_class_weight_not_present   s0   


"r-   c                  C   s   t d} dddd}t g d}t|| |d}tt g d| dddd	d
}t|| |d}tg d| ddddd}t|| |d}tg d| d S )Nr   r!   r"         @r   r   r   )r   r   r   r   r   )r!   r"   r.         ?)r   r   r   r   g      @      @)r   r   r   )r1   r"   r.   )r   r'   r   r   r	   r   )r   r+   r   r   r   r   r   test_compute_class_weight_dict9   s   
r3   c                  C   s   t ddd\} }t| g| |dk gd  }t|g||dk gd  }t| g| |dk gd  }t|g||dk gd  }t| gd }t|gd }tdd||}tdd||}	tdd||}
t|j|	j t|
j|	j d S )Nr   r   )centersrandom_stater   r   class_weight)r   r   vstackhstackr   fitr	   coef_)Xr   X_1y_1X_0y_0X_y_logreg1logreg0logregr   r   r   $test_compute_class_weight_invarianceM   s   
rF   c                  C   s   t g d} t g d}td| |d}t|t| ksJ t|t g d t g d}td| |d}t|t| ksAJ t |d }tt |||j	d  t|g d	 d S )
N)r2   r   )r2   r2   r   r   rG   rG   r   r   )r!   r!   r!   )r2   r   r   rG   rG   rG   r   r   )UUUUUU?r"   r!   )
r   arrayr   r   lenr	   r   r
   r   r   r   r   r   r   r   r   r   +test_compute_class_weight_balanced_negativei   s   rL   c                  C   sb   t g d} t g d}td| |d}t ||  }tt |||jd  t|g d d S )N)r   r   r   )r   r   r   r   r   r   r   r   r   )r"   r!   rH   )	r   rI   r   r   r   r
   r   r   r	   rK   r   r   r   ,test_compute_class_weight_balanced_unordered}   s   rM   c                  C   s   t g d} t | }t|}td || d}t||ksJ t|t d tddi|| d}t||ks8J t|g d tddd|| d}t||ksQJ t|g d	 d S )
Nr   r   r   r   r0   )r0   r!   r!         ?)r   r   )r0   r!   rN   )r   r   r   rJ   r   r	   ones)r   r   classes_lenr   r   r   r   !test_compute_class_weight_default   s   
rQ   c               
   C   s  t g d} td| }t|g d tddd| }t|g d t dgdgdgdgdgdgg} td| }t|g d t g d} td| }t g d	}t||d
d td | }t|g d t ddgddgddgddgddgddgg} td| }t|g d t ddgddgddgddgddgddgg} tddddddg| }t|g d t ddgddgddgddgddgddgddgg} td| }t||d dd d S )Nr   r   r   r   r   r   r   r!   r!   r!   r!   r!   r!   r   r   r   r   )r"   r"   r"   r!   r!   r!   r   r   r   r   r   r   r   ),C?rV   rV   rV   rV   rV   g0@r   )decimal)r!   r!   r!   r!   r!   r!   r!   r   r#   )r"   r"   r"   r"   r"   r"   r   r2   )r   r   r   r	   rI   r   sample_weightexpected_balancedr   r   r   test_compute_sample_weight   s2   
"


.
.4
r[   c               
   C   s  t g d} td| tdd}t|g d t dgdgdgdgdgdgg} td| tdd}t|g d t g d} td| tdd}t|g d	 t g d} td| g d
d}t g d}t|| t ddgddgddgddgddgddgg} td| g d
d}t||d  t g d} td| tdd}t|g d t ddgddgddgddgddgddgddgg} td| tdd}t|g d d S )NrR   r      indicesrS   r   r   r   )rH   rH   rH   r"   r"   r"   )r   r   r   r   r   r   )333333?r_   r_   r.   r.   r.   r   rU   )r!   r!   r!   r!   r!   r!   g        )r   r   r   ranger	   rX   r   r   r   )test_compute_sample_weight_with_subsample   s,   "
.4ra   c               	   C   s  t g d} t ddgddgddgddgddgddgg}tt td|  W d    n1 s3w   Y  tt td| tdd W d    n1 sQw   Y  tt td| W d    n1 skw   Y  tt td|tdd W d    n1 sw   Y  tt tddd| tdd W d    n1 sw   Y  tt tddd| W d    n1 sw   Y  tt tdddg| W d    d S 1 sw   Y  d S )	NrR   r   r   r   nir   r]   rT   )r   r   r(   r)   r*   r   r`   )r   rB   r   r   r   !test_compute_sample_weight_errors   s.   ."rc   c                  C   s<   t d} t d}td| |d}t|t | jd  d S )N2   r   r]   r   )r   r'   r   r	   rO   r   )r   r^   weightr   r   r   'test_compute_sample_weight_more_than_32  s   

rf   c                  C   s8   t ddddd} | g dg dg dgg d d	S )
zcCheck that class_weight can contain more labels than in y.

    Non-regression test for #22413
    r   
      r/   r6   )r   r   r   )r   r   r   )r   r   r   N)r   r:   )treer   r   r   1test_class_weight_does_not_contains_more_classses  s   &rj   c                  C   s2   t tg dj} td| }t|g d dS )z0Check that we can compute weight for sparse `y`.)r   r   r   r   )r0         ?rk   N)r   
csc_matrixr   r   Tr   r   )r   rY   r   r   r   !test_compute_sample_weight_sparse   s   
rn   ) numpyr   r(   numpy.testingr   scipyr   sklearn.datasetsr   sklearn.linear_modelr   sklearn.treer   sklearn.utils.class_weightr   r   sklearn.utils._testingr	   r
   r   r-   r3   rF   rL   rM   rQ   r[   ra   rc   rf   rj   rn   r   r   r   r   <module>   s0    ,'