
    -i2                        S SK rS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJrJr  S SKJrJr  S SKJr  S	 r\R(                  R+                  S
SS\R,                  " S5      S4SSS0\R,                  " S5      S4SS\R,                  " S5      S4SSSS.\R,                  " S5      S4SSSS.\R.                  " SS/5      S4/5      S 5       rS rS rS rS  rS! rS" rS# rS$ r \R(                  R+                  S%S&SS'S(.\!" S5      S)4S*SS'S(.SS+4S*SS'S(./SS,4/5      S- 5       r"S. r#S/ r$\R(                  R+                  S0\5      S1 5       r%g)2    N)assert_allclose)
make_blobs)LogisticRegression)DecisionTreeClassifier)assert_almost_equalassert_array_almost_equal)compute_class_weightcompute_sample_weight)CSC_CONTAINERSc                  6   [         R                  " / SQ5      n [         R                  " U 5      n[        SXS9n[         R                  " U 5      SS  n[        [         R                  " X#5      U R                  S   5        US   US   s=:  a
  US   :  d   e   eg )N   r   r      r      balancedclassesyr   r      )npasarrayuniquer	   bincountr   dotshape)r   r   cwclass_countss       X/var/www/html/venv/lib/python3.13/site-packages/sklearn/utils/tests/test_class_weight.pytest_compute_class_weightr      s~    


%&AiilG	j'	?B;;q>!"%Lr0!''!*=a52a5 2a5         z&y_type, class_weight, classes, err_msgnumericr   r   z.classes should have valid labels that are in ylabel_not_present      ?z4The classes, \[0, 1, 2, 3\], are not in class_weightr   z'classes should include all valid labels       @r   r   stringr   )dogscatdogr(   z/The classes, \['dog'\], are not in class_weightc                     U S:X  a  [         R                  " / SQ5      O[         R                  " / SQ5      n[        U5        [        R                  " [
        US9   [        XUS9  S S S 5        g ! , (       d  f       g = f)Nr!   )r   r   r   r   r   r   )r)   r(   r)   matchr   )r   r   printpytestraises
ValueErrorr	   )y_typeclass_weightr   err_msgr   s        r   %test_compute_class_weight_not_presentr4      s[    P Y 	

%&ZZ-.  
!H	z	1\a@ 
2	1	1s   A//
A=c                  @   [         R                  " S5      n SSSS.n[         R                  " / SQ5      n[        XUS9n[	        [         R                  " / SQ5      U5        SSSS	S
.n[        XUS9n[        / SQU5        SSSSS.n[        XUS9n[        / SQU5        g )Nr   r#   r$         @r   r   r   )r   r   r   r   r   )r#   r$   r6         ?)r   r   r   r   g      @      @)r   r   r   )r9   r$   r6   )r   aranger   r	   r   r   )r   class_weightsr   r   s       r   test_compute_class_weight_dictr=   J   s    iilG,M


< A	m	BB bjj92> 4M	m	BBOR(5M	m	BBOR(r    c                     [        SSS9u  p[        R                  " U /XS:H     /S-  -   5      n[        R                  " U/XS:H     /S-  -   5      n[        R                  " U /XS:H     /S-  -   5      n[        R                  " U/XS:H     /S-  -   5      n[        R                  " U /S-  5      n[        R                  " U/S-  5      n[	        SS9R                  X#5      n[	        SS9R                  XE5      n	[	        SS9R                  Xg5      n
[        UR                  U	R                  5        [        U
R                  U	R                  5        g )Nr   r   )centersrandom_stater   r   r2   )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_invariancerP   ^   s!    aa0DA
))QC1!V9+/)
*C
))QC1!V9+/)
*C
))QC1!V9+/)
*C
))QC1!V9+/)
*C	A37	B	A37	B j9==cGG j9==cGGZ8<<RDFgmmW]];fllGMM:r    c                      [         R                  " / SQ5      n [         R                  " / SQ5      n[        SXS9n[	        U5      [	        U 5      :X  d   e[        U[         R                  " / SQ5      5        g )Nr:   r   r:   r:   r   r   rS   rS   r   r   )r#   r#   r#   )r   arrayr   r	   lenr   )r   r   r   s      r   +test_compute_class_weight_balanced_negativerW   z   sV     hh{#G


)*A	j'	?Br7c'l"""b"((?";<r    c                  P   [         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " XSS9n[	        SXUS9n[	        SXS9n[        U5      [        U 5      :X  d   e[        U5      [        U 5      :X  d   e[         R                  " US	-   US
9n[         R                  " US	-   5      n[         R                  " XF5      [        R                  " [         R                  " XW5      5      :X  d   e[        XE5        g )NrR   rT   )r   r   r   r   r   r   r   )axisr   )r   r   sample_weightr   r   )weights)r   rU   r   repeatr	   rV   r   r   r.   approxr   )r   r   swy_repclass_weights_weightedclass_weights_repeatedclass_counts_weightedclass_counts_repeateds           r   <test_compute_class_weight_balanced_sample_weight_equivalencerd      s     hh{#G


)*A	&	'BIIa!$E1G 2*gW%&#g,666%&#g,666KKAr:KK	266(@FMM
%=E    *Cr    c                      [         R                  " / SQ5      n [         R                  " / SQ5      n[        SXS9n[         R                  " U5      U    n[        [         R                  " X#5      UR                  S   5        [        U/ SQ5        g )N)r   r   r   )r   r   r   r   r   r   r   r   r   )r$   r#   UUUUUU?)	r   rU   r   r	   r   r   r   r   r   )r   r   r   r   s       r   ,test_compute_class_weight_balanced_unorderedrg      sc    hhy!G


%&A	j'	?B;;q>'*Lr0!''!*=b"56r    c                     [         R                  " / SQ5      n [         R                  " U 5      n[        U5      n[	        S XS9n[        U5      U:X  d   e[        U[         R                  " S5      5        [	        SS0XS9n[        U5      U:X  d   e[        U/ SQ5        [	        SSS.XS9n[        U5      U:X  d   e[        U/ S	Q5        g )
Nr   r   r   r   r8   )r8   r#   r#         ?)r   r   )r8   r#   ri   )r   r   r   rV   r	   r   ones)r   r   classes_lenr   s       r   !test_compute_class_weight_defaultrl      s     	

%&AiilGg,K 
dG	9Br7k!!!b"''!*- 
q#h	=Br7k!!!b/2	##.	EBr7k!!!b/2r    c            
      z   [         R                  " / SQ5      n [        SU 5      n[        U/ SQ5        [        SSS.U 5      n[        U/ SQ5        [         R                  " S/S/S/S/S/S//5      n [        SU 5      n[        U/ SQ5        [         R                  " / SQ5      n [        SU 5      n[         R                  " / S	Q5      n[        XS
S9  [        S U 5      n[        U/ SQ5        [         R                  " SS/SS/SS/SS/SS/SS//5      n [        SU 5      n[        U/ SQ5        [         R                  " SS/SS/SS/SS/SS/SS//5      n [        SSS.SSS./U 5      n[        U/ SQ5        [         R                  " SS/SS/SS/SS/SS/SS/SS//5      n [        SU 5      n[        XS-  SS9  g )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?rr   rr   rr   rr   rr   g0@r   )decimal)r#   r#   r#   r#   r#   r#   r#   r   r%   )r$   r$   r$   r$   r$   r$   r   r:   )r   r   r
   r   rU   r   rZ   expected_balanceds      r   test_compute_sample_weightrv      s    	

%&A)*a8Mm-KL *aA,:Mm-KL 	

QC!qcA3aS12A)*a8Mm-KL 	

()A)*a8M@ mJ *$2Mm-PQ 	

QFQFQFQFQFQFCDA)*a8Mm-KL 	

QFQFQFQFQFQFCDA)qQ<Q1*FJMm-KL 	

QFQFQFQFQFQFQGLMA)*a8Mm-A1Mr    c            
         [         R                  " / SQ5      n [        SU [        S5      S9n[	        U/ SQ5        [         R                  " S/S/S/S/S/S//5      n [        SU [        S5      S9n[	        U/ SQ5        [         R                  " / SQ5      n [        SU [        S5      S9n[	        U/ S	Q5        [         R                  " / SQ5      n [        SU / S
QS9n[         R                  " / SQ5      n[	        X5        [         R                  " SS/SS/SS/SS/SS/SS//5      n [        SU / S
QS9n[	        XS-  5        [         R                  " / SQ5      n [        SU [        S5      S9n[	        U/ SQ5        [         R                  " SS/SS/SS/SS/SS/SS/SS//5      n [        SU [        S5      S9n[	        U/ SQ5        g )Nrn   r      indicesro   r   r   r   )rf   rf   rf   r$   r$   r$   )r   r   r   r   r   r   )333333?r{   r{   r6   r6   r6   r   rq   )r#   r#   r#   r#   r#   r#   g        )r   r   r
   ranger   rt   s      r   )test_compute_sample_weight_with_subsampler}      s    	

%&A)*aqJMm-KL 	

QC!qcA3aS12A)*aqJMm-KL 	

%&A)*aqJMm-WX 	

%&A)*aASTM

#ABm? 	

QFQFQFQFQFQFCDA)*aASTMm-AB 	

()A)*aqJMm-PQ 	

QFQFQFQFQFQFQFKLA)*aqJMm-PQr    z&y_type, class_weight, indices, err_msgsingle-outputr   rp   z:The only valid class_weight for subsampling is 'balanced'.zmulti-outputzGFor multi-output, class_weight should be a list of dicts, or the stringz)Got 1 element\(s\) while having 2 outputsc           	         [         R                  " / SQ5      n[         R                  " SS/SS/SS/SS/SS/SS//5      nU S:X  a  UOUn[        R                  " [        US9   [        XUS9  S S S 5        g ! , (       d  f       g = f)Nrn   r   r   r   r~   r+   ry   )r   r   r.   r/   r0   r
   )r1   r2   rz   r3   y_single_outputy_multi_outputr   s          r   !test_compute_sample_weight_errorsr     sx    4 jj!34OZZ!Q!Q!Q!Q!Q!Q PQN!_4.A	z	1lw? 
2	1	1s   $A88
Bc                      [         R                  " S5      n [         R                  " S5      n[        SXS9n[        U[         R                  " U R
                  S   5      5        g )N2   r   ry   r   )r   r;   r
   r   rj   r   )r   rz   weights      r   'test_compute_sample_weight_more_than_32r   6  sC    
		"AiimG":qBFfbggaggaj&9:r    c                  X    [        SSSS.S9n U R                  / SQ/ SQ/ SQ// SQ5        g	)
z[Check that class_weight can contain more labels than in y.

Non-regression test for #22413
r   
      r7   rA   )r   r   r   )r   r   r   )r   r   r   N)r   rD   )trees    r   0test_class_weight_does_not_contains_more_classesr   >  s,    
 "1/CDD 	HHiI.	:r    csc_containerc                 |    U " [         R                  " S/S/S//5      5      n[        SU5      n[        U/ SQ5        g)z0Check that we can compute weight for sparse `y`.r   r   r   )r8         ?r   N)r   r   r
   r   )r   r   rZ   s      r   !test_compute_sample_weight_sparser   I  s:     	bjj1#sQC12A)*a8MM#45r    )&numpyr   r.   numpy.testingr   sklearn.datasetsr   sklearn.linear_modelr   sklearn.treer   sklearn.utils._testingr   r   sklearn.utils.class_weightr	   r
   sklearn.utils.fixesr   r   markparametrizer;   rU   r4   r=   rP   rW   rd   rg   rl   rv   r}   r|   r   r   r   r    r    r   <module>r      s     ) ' 3 / Q R .	! , IIaL<		
  #&IIaLC		
 IIaL5		
 IIaL5		
 q!HHeU^$>		
5 #H
AI#H
A)(;8=D673,)NX$RN , aL!HH		
 aLU		
 q\N8		
.@/.@;; .96 :6r    