U
    9%e.                     @   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mZ d dlmZ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)assert_almost_equalassert_array_almost_equal)compute_class_weightcompute_sample_weightc                  C   s   t ddddddg} t | }td|| d}t | dd  }tt ||| jd  |d |d   k rx|d k s~n td S )N         balancedclassesyr      )	npasarrayuniquer	   bincountr   dotshapeAssertionError)r   r   cwclass_counts r   d/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sklearn/utils/tests/test_class_weight.pytest_compute_class_weight   s    
r   c               	   C   s   t d} t ddddddg}tt td| |d W 5 Q R X tjtdd td	d
i| |d W 5 Q R X t d} tt td| |d W 5 Q R X tt td
dd| |d W 5 Q R X t ddg} t dddg}ddd}d}tjt|d t|| |d W 5 Q R X d S )Nr   r   r   r   r   r   z4The classes, \[0, 1, 2, 3\], are not in class_weight)matchZlabel_not_present      ?       @r   r   catdogr   )Z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   s(    
 

r+   c                  C   s   t d} dddd}t ddddg}t|| |d	}tt dddg| dddd
d}t|| |d	}tdddg| ddddd}t|| |d	}tdddg| d S )Nr   r    r!         @r   r   r   r   r   r   r         ?)r   r   r   r   g      @g      @)r   r   r   )r   r%   r   r	   r   r   )r   r)   r   r   r   r   r   test_compute_class_weight_dict6   s    
r0   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   )ZcentersZrandom_stater   r   Zclass_weight)r   r   ZvstackZhstackr   fitr   Zcoef_)Xr   ZX_1Zy_1ZX_0Zy_0ZX_y_Zlogreg1Zlogreg0Zlogregr   r   r   $test_compute_class_weight_invarianceJ   s    
r5   c                  C   s   t dddg} t ddddddg}td| |d}t|t| ksHtt|t dddg t ddddddg}td| |d}t|t| kstt |d }tt 	|||j
d  t|dd	dg d S )
Nr/   r   r   r   r    r   UUUUUU?r!   )r   arrayr   r	   lenr   r   r   r   r   r   r   r   r   r   r   r   r   +test_compute_class_weight_balanced_negativef   s    r;   c                  C   sn   t dddg} t ddddddg}td| |d}t ||  }tt |||jd  t|dddg d S )	Nr   r   r   r   r   r!   r    r7   )	r   r8   r   r	   r   r   r   r   r   r:   r   r   r   ,test_compute_class_weight_balanced_unorderedz   s    r<   c                  C   s   t ddddddg} t | }t|}td || d}t||ksFtt|t d tddi|| d}t||ksxtt|dddg tddd|| d}t||kstt|dddg d S )	Nr   r   r   r   r.   r    g      ?)r   r   )r   r   r   r9   r	   r   r   ones)r   r   Zclasses_lenr   r   r   r   !test_compute_class_weight_default   s    
r>   c               
   C   s  t ddddddg} td| }t|ddddddg tddd| }t|ddddddg t dgdgdgdgdgdgg} td| }t|ddddddg t dddddddg} td| }t ddddddd	g}t||d
d td | }t|dddddddg t 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ddg 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|ddddddg 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 )Nr   r   r   r    r   r   r!   r   g,C?g0@r   )decimalr   r"   r/   )r   r   r
   r   r8   r   sample_weightZexpected_balancedr   r   r   test_compute_sample_weight   s2    
"


.
.4
rC   c               
   C   s  t ddddddg} td| tdd}t|ddddddg t dgdgdgdgdgdgg} td| tdd}t|ddddddg t ddddddg} td| tdd}t|dddd	d	d	g t ddddddg} td| d
dddddgd}t ddddddg}t|| 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dgd}t||d  t dddddddg} td| tdd}t|dddddddg 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|dddddddg d S )Nr   r   r      indicesr    r   r7   r!   r   r   g333333?r,   g        )r   r   r
   ranger   rA   r   r   r   )test_compute_sample_weight_with_subsample   s,    "
.4rH   c               	   C   sT  t ddddddg} 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 5 Q R X tt td| tdd W 5 Q R X tt td| W 5 Q R X tt td|tdd W 5 Q R X tt tddd| tdd W 5 Q R X tt tddd| W 5 Q R X tt tdddg| W 5 Q R X d S )Nr   r   r   nir   rE   r?   )r   r   r&   r'   r(   r
   rG   )r   r4   r   r   r   !test_compute_sample_weight_errors   s     ."rJ   c                  C   s<   t d} t d}td| |d}t|t | jd  d S )N2   r   rE   r   )r   r%   r
   r   r=   r   )r   rF   weightr   r   r   'test_compute_sample_weight_more_than_32
  s    

rM   c                  C   s@   t ddddd} | dddgdddgdddggdddg dS )	zcCheck that class_weight can contain more labels than in y.

    Non-regression test for #22413
    r   
      r-   r1   r   r   N)r   r2   )treer   r   r   0test_class_weight_does_not_contains_more_classes  s    rQ   c                  C   s6   t tdddgj} td| }t|dddg dS )z0Check that we can compute weight for sparse `y`.r   r   r   r.   g      ?N)r   Z
csc_matrixr   r   Tr
   r   )r   rB   r   r   r   !test_compute_sample_weight_sparse  s    
rS   ) numpyr   r&   Znumpy.testingr   Zscipyr   Zsklearn.datasetsr   Zsklearn.linear_modelr   Zsklearn.treer   Zsklearn.utils._testingr   r   Zsklearn.utils.class_weightr	   r
   r   r+   r0   r5   r;   r<   r>   rC   rH   rJ   rM   rQ   rS   r   r   r   r   <module>   s*   ,'