
    {Kg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(                  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(                  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(                  j+                  d/e      d0        Z$y)1    N)assert_allclose)
make_blobs)LogisticRegression)DecisionTreeClassifier)assert_almost_equalassert_array_almost_equal)compute_class_weightcompute_sample_weight)CSC_CONTAINERSc                  4   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J  J y )N   r   r      r      balancedclassesyr   r      )npasarrayuniquer	   bincountr   dotshape)r   r   cwclass_countss       i/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/utils/tests/test_class_weight.pytest_compute_class_weightr      s    


%&AiilG	j'Q	?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                     | dk(  rt        j                  g d      nt        j                  g d      }t        |       t        j                  t
        |      5  t        |||       d d d        y # 1 sw Y   y xY w)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\7a@ 
2	1	1s   A22A;c                  R   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|       y )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	mW	BB bjj92> 4M	mW	BBOR(5M	mW	BBOR(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      j                  ||      }t	        d      j                  ||      }	t	        d      j                  ||      }
t        |j                  |	j                         t        |
j                  |	j                         y )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   ^   s1    aa0DAq
))QC1Q!V9+/)
*C
))QC1Q!V9+/)
*C
))QC1Q!V9+/)
*C
))QC1Q!V9+/)
*C	A37	B	A37	B j9==c3GG j9==c3GGZ8<<RDFgmmW]];fllGMM:r    c                     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	       y )
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     hh{#G


)*A	j'Q	?Br7c'l"""b"((?";< 	

)*A	j'Q	?Br7c'l""";;q1u%Lr<0!''!*=b"56r    c                  "   t        j                  g d      } t        j                  g d      }t        d| |      }t        j                  |      |    }t        t        j                  ||      |j                  d          t        |g d       y )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      sg    hhy!G


%&A	j'Q	?B;;q>'*Lr<0!''!*=b"5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	       y )
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iilGg,K 
dGq	9Br7k!!!b"''!*- 
q#h1	=Br7k!!!b/2	##.1	EBr7k!!!b/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       y )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      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            
         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       y )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      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   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        y # 1 sw Y   y xY w)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     sz    4 jj!34OZZ!Q!Q!Q!Q!Q!Q PQN!_4.A	z	1lAw? 
2	1	1s   #A;;Bc                      t        j                  d      } t        j                  d      }t        d| |      }t        |t        j                  | j
                  d                y )N2   r   rl   r   )r   r;   r
   r   r\   r   )r   rm   weights      r   'test_compute_sample_weight_more_than_32ry   $  sE    
		"AiimG":q'BFfbggaggaj&9:r    c                  ^    t        dddd      } | j                  g dg dg dgg d       y	)
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~   ,  s,    
 "1/CDD 	HHiI.	:r    csc_containerc                 z     | t        j                  dgdgdgg            }t        d|      }t        |g d       y)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  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;   rT   r4   r=   rP   rW   rY   r^   ri   rp   ro   ru   ry   r~   r    r    r   <module>r      s     ) ' 3 / Q R .	! , BIIaL<		
  #&BIIaLC		
 BIIaL5		
 BIIaL5		
 q!BHHeU^$>		
5 #H
AI#H
A)(;87(73,)NX$RN , aL!HH		
 aLU		
 q\N8		
.@/.@;; .96 :6r    