
    _nd/                         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 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z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                  X   t          j        g d          } t          j        |           }t          d||           }t          j        |           dd          }t          t          j        ||          | j        d                    |d         |d         cxk     r|d         k     sn J d S )N   r   r      r      balancedclassesyr   r      )npasarrayuniquer   bincountr   dotshape)r   r   cwclass_countss       Elib/python3.11/site-packages/sklearn/utils/tests/test_class_weight.pytest_compute_class_weightr      s    

%%%&&AillG	j'Q	?	?	?B;q>>!""%Lr<00!'!*===a52a5    2a5            c                     t          j        d          } t          j        g d          }t          j        t
                    5  t          d| |           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          ddi| |           d d d            n# 1 swxY w Y   t          j        d	          } t          j        t
                    5  t          d| |           d d d            n# 1 swxY w Y   t          j        t
                    5  t          dd
d| |           d d d            n# 1 swxY w Y   t          j        ddg          } t          j        g d          }dd	d}d}t          j        t
          |          5  t          || |           d d d            d S # 1 swxY w 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msgs       r   %test_compute_class_weight_not_presentr0      s<   illG

%%%&&A	z	"	" ? ?ZA>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
Q
 
 
 O O 	137ANNNNO O O O O O O O O O O O O O O
 illG	z	"	" ? ?ZA>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	z	"	" E E--w!DDDDE E E E E E E E E E E E E E E j%((G

((())Aq))M
<C	z	-	-	- B B]GqAAAAB B B B B B B B B B B B B B B B B BsZ   A##A'*A'	B**B.1B."DDD%EEE G  GGc                  ~   t          j        d          } dddd}t          j        g d          }t          || |          }t	          t          j        g d          |           dddd	d
}t          || |          }t          g d|           ddddd}t          || |          }t          g d|           d S )Nr   r$   r%         @r   r   r   )r   r   r   r   r   )r$   r%   r2         ?)r   r   r   r   g      @      @)r   r   r   )r5   r%   r2   )r   r*   r   r   r
   r   )r   r.   r   r   s       r   test_compute_class_weight_dictr7   9   s    illG,,M

<<<  A	mW	B	B	BB bj992>>> 44M	mW	B	B	BBOOOR(((55M	mW	B	B	BBOOOR(((((r    c                     t          dd          \  } }t          j        | g| |dk             gdz  z             }t          j        |g||dk             gdz  z             }t          j        | g| |dk             gdz  z             }t          j        |g||dk             gdz  z             }t          j        | gdz            }t          j        |gdz            }t	          d                              ||          }t	          d                              ||          }	t	          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logregs              r   $test_compute_class_weight_invariancerK   M   sb    aa000DAq
)QC1Q!V9+/)
*
*C
)QC1Q!V9+/)
*
*C
)QC1Q!V9+/)
*
*C
)QC1Q!V9+/)
*
*C	A37		B	A37		B j999==c3GGG j999==c3GGGZ888<<RDDFgmW];;;flGM:::::r    c                  P   t          j        g d          } t          j        g d          }t          d| |          }t	          |          t	          |           k    sJ t          |t          j        g d                     t          j        g d          }t          d| |          }t	          |          t	          |           k    sJ t          j        |dz             }t          t          j        ||          |j	        d                    t          |g d	           d S )
N)r6   r   )r6   r6   r   r   rM   rM   r   r   )r$   r$   r$   )r6   r   r   rM   rM   rM   r   r   )UUUUUU?r%   r$   )
r   arrayr   r   lenr
   r   r   r   r   r   r   r   r   s       r   +test_compute_class_weight_balanced_negativerR   i   s    h{{{##G

)))**A	j'Q	?	?	?Br77c'll""""b"(???";";<<< 	
)))**A	j'Q	?	?	?Br77c'll"""";q1u%%Lr<00!'!*===b"5"5"566666r    c                  6   t          j        g d          } t          j        g d          }t          d| |          }t          j        |          |          }t          t          j        ||          |j        d                    t          |g d           d S )N)r   r   r   )r   r   r   r   r   r   r   r   r   )r%   r$   rN   )	r   rO   r   r   r   r   r   r   r
   rQ   s       r   ,test_compute_class_weight_balanced_unorderedrT   }   s    hyyy!!G

%%%&&A	j'Q	?	?	?B;q>>'*Lr<00!'!*===b"5"5"566666r    c                     t          j        g d          } t          j        |           }t          |          }t	          d ||           }t          |          |k    sJ t          |t          j        d                     t	          ddi||           }t          |          |k    sJ t          |g d           t	          ddd||           }t          |          |k    sJ t          |g d	           d S )
Nr   r   r   r   r4   )r4   r$   r$         ?)r   r   )r4   r$   rV   )r   r   r   rP   r   r
   ones)r   r   classes_lenr   s       r   !test_compute_class_weight_defaultrY      s	    	
%%%&&AillGg,,K 
dGq	9	9	9Br77k!!!!b"'!**--- 
q#h1	=	=	=Br77k!!!!b///222	##..1	E	E	EBr77k!!!!b///22222r    c            
         t          j        g d          } t          d|           }t          |g d           t          ddd|           }t          |g d           t          j        dgdgdgdgdgdgg          } t          d|           }t          |g d           t          j        g d          } t          d|           }t          j        g d	          }t          ||d
           t          d |           }t          |g d           t          j        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          j        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          j        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z  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?r_   r_   r_   r_   r_   g0@r   )decimal)r$   r$   r$   r$   r$   r$   r$   r   r&   )r%   r%   r%   r%   r%   r%   r   r6   )r   r   r	   r
   rO   r   sample_weightexpected_balanceds      r   test_compute_sample_weightrd      su    	
%%%&&A)*a88Mm-K-K-KLLL *aA,,::Mm-K-K-KLLL 	
QC!qcA3aS122A)*a88Mm-K-K-KLLL 	
((())A)*a88M@@@  m->JJJJ *$22Mm-P-P-PQQQ 	
QFQFQFQFQFQFCDDA)*a88Mm-K-K-KLLL 	
QFQFQFQFQFQFCDDA)qQ<<Q1*FJJMm-K-K-KLLL 	
QFQFQFQFQFQFQGLMMA)*a88Mm->-A1MMMMMMr    c            
      @   t          j        g d          } t          d| t          d                    }t	          |g d           t          j        dgdgdgdgdgdgg          } t          d| t          d                    }t	          |g d           t          j        g d          } t          d| t          d                    }t	          |g d	           t          j        g d          } t          d| g d
          }t          j        g d          }t	          ||           t          j        ddgddgddgddgddgddgg          } t          d| g d
          }t	          ||dz             t          j        g d          } t          d| t          d                    }t	          |g d           t          j        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                    }t	          |g d           d S )Nr[   r      indicesr\   r   r   r   )rN   rN   rN   r%   r%   r%   )r   r   r   r   r   r   )333333?ri   ri   r2   r2   r2   r   r^   )r$   r$   r$   r$   r$   r$   g        )r   r   r	   ranger
   ra   s      r   )test_compute_sample_weight_with_subsamplerk      sm    	
%%%&&A)*aqJJJMm-K-K-KLLL 	
QC!qcA3aS122A)*aqJJJMm-K-K-KLLL 	
%%%&&A)*aqJJJMm-W-W-WXXX 	
%%%&&A)*aASASASTTTM
#A#A#ABBm->??? 	
QFQFQFQFQFQFCDDA)*aASASASTTTMm->-ABBB 	
((())A)*aqJJJMm-P-P-PQQQ 	
QFQFQFQFQFQFQFKLLA)*aqJJJMm-P-P-PQQQQQr    c            	      |   t          j        g d          } t          j        ddgddgddgddgddgddgg          }t          j        t                    5  t          d|            d d d            n# 1 swxY w Y   t          j        t                    5  t          d| t          d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          d|           d d d            n# 1 swxY w Y   t          j        t                    5  t          d|t          d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          ddd| t          d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          ddd|           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg|           d d d            d S # 1 swxY w Y   d S )	Nr[   r   r   r   nir   rg   r]   )r   r   r+   r,   r-   r	   rj   )r   rG   s     r   !test_compute_sample_weight_errorsrn      s    	
%%%&&A	aVaVaVaVaVaVD	E	EB	z	"	" ' 'dA&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	z	"	" 9 9dAuQxx88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	z	"	" ( (dB'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	z	"	" : :dBa9999: : : : : : : : : : : : : : : 
z	"	" A A!llAuQxx@@@@A A A A A A A A A A A A A A A 
z	"	" 0 0!llB///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
z	"	" 2 21||nb1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s~   A33A7:A7 CC
C'DDD( EEE8#F''F+.F+G++G/2G/H11H58H5c                      t          j        d          } t          j        d          }t          d| |          }t          |t          j        | j        d                              d S )N2   r   rg   r   )r   r*   r	   r
   rW   r   )r   rh   weights      r   'test_compute_sample_weight_more_than_32rr     sV    
	"AimmG":q'BBBFfbgagaj&9&9:::::r    c                  p    t          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   
      r3   r;   )r   r   r   )r   r   r   )r   r   r   N)r   r?   )trees    r   1test_class_weight_does_not_contains_more_classsesrw     sQ    
 "1/C/CDDDD 	HHiiiIII.			:::::r    c                      t          j        t          j        g d                    j        } t          d|           }t          |g d           dS )z0Check that we can compute weight for sparse `y`.)r   r   r   r   )r4         ?ry   N)r   
csc_matrixr   r   Tr	   r   )r   rb   s     r   !test_compute_sample_weight_sparser|      sO    "*YYY//002A)*a88MM#4#4#455555r    ) numpyr   r+   numpy.testingr   scipyr   sklearn.datasetsr   sklearn.linear_modelr   sklearn.treer   sklearn.utils.class_weightr   r	   sklearn.utils._testingr
   r   r   r0   r7   rK   rR   rT   rY   rd   rk   rn   rr   rw   r|    r    r   <module>r      s        ) ) ) ) ) )       ' ' ' ' ' ' 3 3 3 3 3 3 / / / / / / ; ; ; ; ; ; < < < < < < < < < < < < 6 6 6 6 6 6	! 	! 	!B B B:) ) )(; ; ;87 7 7(7 7 73 3 3,)N )N )NX$R $R $RN2 2 28; ; ;; ; ;6 6 6 6 6r    