
    0Ph0                        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mZ d dlmZmZ d dlmZ d	 Zej                            d
dd ej        d          dfdddi ej        d          dfdd ej        d          dfdddd ej        d          dfdddd ej        ddg          dfg          d             Zd Zd Zd Zd  Zd! Zd" Zd# Zej                            d$d%dd&d' e d          d(fd)dd&d'dd*fd)dd&d'gdd+fg          d,             Z!d- Z"d. Z#ej                            d/e          d0             Z$dS )1    N)assert_allclose)
make_blobs)LogisticRegression)DecisionTreeClassifier)assert_almost_equalassert_array_almost_equal)compute_class_weightcompute_sample_weight)CSC_CONTAINERSc                  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       e/var/www/html/test/jupyter/venv/lib/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            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                    | dk    rt          j        g d          nt          j        g d          }t          |           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(   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 	
%%%&&&Z---..  
!HHH	z	1	1	1 A A\7a@@@@A A A A A A A A A A A A A A A A A As   A==BB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$   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    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   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   ^   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)r:   r   )r:   r:   r   r   rR   rR   r   r   )r#   r#   r#   )r:   r   r   rR   rR   rR   r   r   )UUUUUU?r$   r#   )
r   arrayr   r	   lenr   r   r   r   r   r   r   r   r   s       r   +test_compute_class_weight_balanced_negativerW   z   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#   rS   )	r   rT   r   r	   r   r   r   r   r   rV   s       r   ,test_compute_class_weight_balanced_unorderedrY      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   r8   )r8   r#   r#         ?)r   r   )r8   r#   r[   )r   r   r   rU   r	   r   ones)r   r   classes_lenr   s       r   !test_compute_class_weight_defaultr^      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?rd   rd   rd   rd   rd   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   rT   r   sample_weightexpected_balanceds      r   test_compute_sample_weightri      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      indicesra   r   r   r   )rS   rS   rS   r$   r$   r$   )r   r   r   r   r   r   )333333?rn   rn   r6   r6   r6   r   rc   )r#   r#   r#   r#   r#   r#   g        )r   r   r
   ranger   rf   s      r   )test_compute_sample_weight_with_subsamplerp      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    z&y_type, class_weight, indices, err_msgsingle-outputr   rb   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           	         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          }| dk    r|n|}t          j        t          |          5  t          |||           d d d            d S # 1 swxY w Y   d S )Nr`   r   r   r   rq   r+   rl   )r   r   r.   r/   r0   r
   )r1   r2   rm   r3   y_single_outputy_multi_outputr   s          r   !test_compute_sample_weight_errorsru     s   4 j!3!3!344OZ!Q!Q!Q!Q!Q!Q PQQN!_44.A	z	1	1	1 @ @lAw????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   "BB	Bc                      t          j        d          } t          j        d          }t          d| |          }t          |t          j        | j        d                              d S )N2   r   rl   r   )r   r;   r
   r   r\   r   )r   rm   weights      r   'test_compute_sample_weight_more_than_32ry   $  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   
      r7   rA   )r   r   r   )r   r   r   )r   r   r   N)r   rD   )trees    r   0test_class_weight_does_not_contains_more_classesr~   ,  sQ    
 "1/C/CDDDD 	HHiiiIII.			:::::r    csc_containerc                      | t          j        dgdgdgg                    }t          d|          }t          |g d           dS )z0Check that we can compute weight for sparse `y`.r   r   r   )r8         ?r   N)r   r   r
   r   )r   r   rg   s      r   !test_compute_sample_weight_sparser   7  sU     	bj1#sQC1122A)*a88MM#4#4#45555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;   rT   r4   r=   rP   rW   rY   r^   ri   rp   ro   ru   ry   r~   r    r    r   <module>r      s        ) ) ) ) ) ) ' ' ' ' ' ' 3 3 3 3 3 3 / / / / / / Q Q Q Q Q Q Q Q R R R R R R R R . . . . . .	! 	! 	! , BIaLL<		
  #&BIaLLC		
 BIaLL5		
 BIaLL5		
 q!!BHeU^$$>		
5 # #H
A 
AI# #H
A) ) )(; ; ;87 7 7(7 7 73 3 3,)N )N )NX$R $R $RN , aLLE!HHH		
 aLLU		
 q\\N8		
 .@ @/ .@; ; ;; ; ; .996 6 :96 6 6r    