
    -i4"                        S r SSKrSSKrSSKJrJrJr  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  SS
KJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*  SSK+J,r,J-r-J.r.  SSK/J0r0  SSK1J2r2  SSK3J4r4J5r5J6r6J7r7  SSK3J8r9  SSK:J;r;  SSK<J=r=J>r>J?r?J@r@  SSKAJBrB  SSKCJDrDJErEJFrF  SSKGJHrH  \" 5       \%" 5       \'" 5       \" 5       \" SS9\#" 5       \&" SS9\ " / SQ5      \!" 5       \"" 5       /
rI\" 5       \" SS9\$" 5       \" 5       \" 5       /rJ\K" S \J 5       5      rL\I\J-   rM\%" 5       \&" 5       \"" 5       /rN\R                  " S5      rP\R                  " S5      S-  rR\R                  " / SQ5      \R                  " / SQ5      \R                  " / S Q5      \R                  " / S!Q5      / SQ/ S"Q4rT\" 5       rU\	R                  R                  S#5      rXS$ rYS% rZS& r[SS' jr\S( r]S) r^S* r_S+ r`S, ra\	R                  R                  S-S.S//5      \	R                  R                  S0/ S1Q5      \	R                  R                  S2\%\$/5      S3 5       5       5       rc\	R                  R                  S-S.S//5      \	R                  R                  S0/ S4Q5      \	R                  R                  S2\%\$/5      S5 5       5       5       rdS6 re\	R                  R                  S2\%\$/5      S7 5       rfS8 rg\	R                  R                  S2\\%\$/5      S9 5       rhS: riS; rjS< rkS= rlS> rm\	R                  R                  S?\R                  " S/S@-  S/S@-  -   5      \R                  " / SAQ5      \R                  " SS/SS/SS//5      4\R                  " S/SB-  S/SC-  -   5      \R                  " / SDQ5      \R                  " SESF/SESF/SESF//5      4/5      SG 5       ro\	R                  R                  SH/ SIQ5      \	R                  R                  SJ/ SKQ5      SL 5       5       rpSM rq\	R                  R                  SN\#\&/5      \	R                  R                  SO/ SPQ5      SQ 5       5       rr\	R                  R                  SO/ SRQ5      SS 5       rsST rtSU ruSV rvSW rwSX rxSY rySZ rzS[ r{S\ r|S] r}S^ r~S_ rS` rSa r\	R                  R                  Sb\!\"/5      Sc 5       rSd rSe rSf rSg rSh r\	R                  R                  SO/ SiQ5      Sj 5       r\	R                  R                  Sk\7" 5       \5Sl9\	R                  R                  SmSnS/\GR                  " \R                  " S@5      \GR                  " So5      45      4Sp45      Sq 5       5       r\	R                  R                  Sr\D5      Ss 5       rSt rSu r\	R                  R                  Sv\D\E-   \F-   5      Sw 5       rSx rSy r\	R                  R                  Sz/ S{Q5      S| 5       rS} rS~ rS rS rS r\	R                  R                  S2\\$/5      \	R                  R                  S-S/S./5      S 5       5       rS rS rS rS rS r\@S 5       rS r\	R                  R                  S\#\\&45      S 5       rS rS rS r\	R                  R                  S\\%\$\45      S 5       r\	R                  R                  S/ \" 5       S/4P\" S/SS9S/4P\%" 5       S/4P\%" S/SS9S/4P\$" S/SS9S/4P\$" 5       S/4P\!" SS9S/4P\"" SS9S/4P\#" SS9S/4P\" SS9S/4P\&" SS9S/4P\" 5       S/4P\" S/SS9S/4P\'" 5       S/4P\" 5       S/4P\" 5       S/4P\" SS9S/4P\" SS9S/4P\" S/SS9S.4P\" S/SS9S.4P\%" S/\GRJ                  GRM                  S5      S9S.4P\%" S/\GRJ                  GRM                  S5      S9S.4P\!" SS9S.4P\!" \GRJ                  GRM                  S5      S9S.4P\"" SS9S.4P\"" \GRJ                  GRM                  S5      S9S.4P\#" SS9S.4P\#" \GRJ                  GRM                  S5      S9S.4P\" SS9S.4P\" \GRJ                  GRM                  S5      S9S.4P\&" SS9S.4P\&" \GRJ                  GRM                  S5      S9S.4P5      S 5       r\	R                  R                  S\M\M V s/ s H  n \" U 5      PM     sn Sl9S 5       r\	R                  R                  S\M\M V s/ s H  n \" U 5      PM     sn Sl9S 5       r\	R                  R                  S\I\Sl9S 5       r\	R                  R                  S\N\N V s/ s H  n \" U 5      PM     sn Sl9S 5       rgs  sn f s  sn f s  sn f )zTest the split module    N)combinationscombinations_with_replacementpermutations)stats)issparse)comb)config_context)load_digitsmake_classification)DummyClassifier)GridSearchCV
GroupKFoldGroupShuffleSplitKFoldLeaveOneGroupOutLeaveOneOutLeavePGroupsOut	LeavePOutPredefinedSplitRepeatedKFoldRepeatedStratifiedKFoldShuffleSplitStratifiedGroupKFoldStratifiedKFoldStratifiedShuffleSplitTimeSeriesSplitcheck_cvcross_val_scoretrain_test_split)_build_repr_validate_shuffle_split_yields_constant_splits)SVC)assert_request_is_empty)_convert_to_numpy_get_namespace_device_dtype_idsget_namespace)yield_namespace_device_dtype_combinationsdevice)MockDataFrame)assert_allcloseassert_array_almost_equalassert_array_equalignore_warnings)_array_api_for_tests)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERS)_num_samples   p      ?	test_size   r<   r5   r5   r<   n_groupsc              #   L   #    U  H  oR                   R                  v   M     g 7fN)	__class____name__).0splitters     [/var/www/html/venv/lib/python3.13/site-packages/sklearn/model_selection/tests/test_split.py	<genexpr>rF   V   s     W8--66s   "$
   r<   r<   r<   r<   r5   r5   r5      rI   rI   rI   rI   r   r   r   r<   r<   r<   r5   r5   r5   rI   rI   rI   r   r<   r5   rI   r   r<   r5   rI   r   r<   r5   rI   r   r<   r5   r<   r<   r5   r5   r5   rI   rI   rI      rM   rM   rM   rM   rM   rM   rM   1rO   rO   rO   2rP   rP   3rQ   rQ   rQ   rQ   z0error:The groups parameter:UserWarning:sklearn.*c                     U R                   R                  [        ;   a  U R                  XUS9$ U R                  X5      $ )Ngroups)rA   rB   GROUP_SPLITTER_NAMESsplit)rD   XyrT   s       rE   _splitrY   q   s9    ""&::~~a6~22~~a##    c                  \   Sn SnSnSnSn[         R                  " SS/SS/SS/SS	//5      n[         R                  " / S
Q5      n[         R                  " / SQ5      n[         R                  " / S
Q5      n[        5       n	[        U5      n
[	        U5      n[        U5      n[        5       n[        U5      n[        SS9n[        / SQ5      n[        U5      nSnSnSnSnSnSnSnSnSnU [        X5      UUU[        X5      USU/	n[        [        XXXUUU/	UUUUUUUUU/	5      5       H  u  nu  nnUU   UR                  XWU5      :X  d   e[         R                  R!                  [#        [%        UXWU5      5      [#        [%        UXgU5      5      5        [%        UXWU5       Hf  u  nn [         R&                  " U5      R(                  R*                  S:X  d   e[         R&                  " U 5      R(                  R*                  S:X  a  Mf   e   U[-        U5      :X  a  M   e   Sn![.        R0                  " [2        U!S9   U	R                  S Xx5        S S S 5        [.        R0                  " [2        U!S9   U
R                  S Xx5        S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)NrM   r5   rG   r<   rI               )r<   r5   rI   rM   r;   r   random_statezLeaveOneOut()zLeavePOut(p=2)z3KFold(n_splits=2, random_state=None, shuffle=False)z=StratifiedKFold(n_splits=2, random_state=None, shuffle=False)LeaveOneGroupOut()LeavePGroupsOut(n_groups=2)zJShuffleSplit(n_splits=10, random_state=0, test_size=None, train_size=None)z.PredefinedSplit(test_fold=array([1, 1, 2, 2]))zBStratifiedGroupKFold(n_splits=2, random_state=None, shuffle=False)iz%The 'X' parameter should not be None.match)nparrayr   r   r   r   r   r   r   r   r   r   	enumeratezipget_n_splitstestingassert_equallistrY   asarraydtypekindreprpytestraises
ValueError)"	n_samplesn_unique_groupsn_splitsr7   n_shuffle_splitsrW   X_1drX   rT   loolpokfskflololoposspssgkfloo_reprlpo_reprkf_reprskf_repr	lolo_repr	lopo_reprss_reprps_repr	sgkf_reprn_splits_expectedrd   cvcv_reprtraintestmsgs"                                     rE   (test_cross_validator_with_default_paramsr   x   s   IOH	A
1a&1a&1a&1a&12A88L!D
AXXl#F
-C
A,C	xB
(
#CD1D	1	%B		&B)DHHCGNH$I-IT  ?GTI 	Y_ 	
 &rBD9
	
=B" !#rqV'DDDD 	

A&)*DDV1L,M	
 ""aF3KE4::e$**//3666::d#))..#555 4
 $r("""=B 2C	z	-q) 
.	z	-q) 
.	- 
.	-	-	-s   <J0J
J
J+c                     Sn [         R                  R                  S5      nUR                  SSU S4S9nUR                  SSU 4S9nUR	                  SS5      nUR                  SSU S4S9nUR                  SSU 4S9n[        5       [        SS9[        5       [        5       [        5       [        5       [        5       [        5       [        S	S
9[        5       [        5       [!        SS9[#        SS9[%        5       ['        US9/nU H=  n[)        [+        XX6S95        [)        [+        XXFS95         [)        [+        XXVS95        M?     g ! [,         a/  n	Sn
SR/                  U
5      nU[1        U	5      ;   d   e S n	A	Mv  S n	A	ff = f)N   r<   r   rI   r5   sizer6   r8   r9   r=   rx   )	test_foldrS   )binary
multiclassz/Supported target types are: {}. Got 'multilabel)rg   randomRandomStaterandintreshaper   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   rY   ru   formatstr)rv   rngrW   rX   y_2dy_multilabelrT   	splittersrD   eallowed_target_typesr   s               rE   	test_2d_yr      sh   I
))


"CAq	1~.AAq	|,A99RD;;q!9a.;9L[[AYL[1FA!-#A&)I" VH23VH56	!\AB	 
  	!#; CJJ$C #a&= =	!s   .E
E?$E::E?c                     [        U 5      [        U5      pU R                  U5      [        5       :X  d   eUb*  U R                  U5      [        [        U5      5      :X  d   eg g r@   )setintersectionunionrange)r   r   rv   s      rE   check_valid_splitr      sZ    e*c$i4 d#su,,,{{4 Ci(8$9999 rZ   c                 "   [        U5      nU R                  XU5      U:X  d   e[        5       nSnU R                  XU5       H%  u  p[	        XUS9  US-  nUR                  U	5        M'     Xt:X  d   eUb  U[        [        U5      5      :X  d   eg g )Nr   )rv   r<   )r4   rk   r   rV   r   updater   )
r   rW   rX   rT   expected_n_splitsrv   collected_test_samples
iterationsr   r   s
             rE   check_cv_coverager      s    QI??1(,==== UJxxf-%;a
%%d+ . ***%U9-=)>>>> rZ   c            	         [         R                  " SS/SS/SS//5      n [         R                  " SS/SS/SS/SS/S	S
//5      n[        [        [	        S5      R                  U 5      4  [         R                  " / SQ5      n[        S5      n[        R                  " [        SS9   [        UR                  X5      5        S S S 5        [        S5      n[         R                  " [        U5      5      n[        R                  " [        SS9   [        UR                  XU5      5        S S S 5        [        R                  " 5          [        R                  " S5        [!        X1US SS9  S S S 5        [        R                  " 5          [        R                  " S5        [!        XAX%SS9  S S S 5        [         R                  " / SQ5      n[        R"                  " [        5         [        UR                  X5      5        S S S 5        [        R"                  " [        5         [        UR                  X5      5        S S S 5        [        R"                  " [        5         [	        S5        S S S 5        [        R"                  " [        5         [	        S5        S S S 5        Sn[        R"                  " [        US9   [        S5        S S S 5        [        R"                  " [        US9   [        S5        S S S 5        [        R"                  " [        US9   [        S5        S S S 5        [        R"                  " [        US9   [        S5        S S S 5        [        R"                  " [        5         [	        S5        S S S 5        [        R"                  " [        5         [	        S5        S S S 5        [        R"                  " [        5         [        S5        S S S 5        [        R"                  " [        5         [        S5        S S S 5        [        R"                  " [        5         [        S5        S S S 5        [        R"                  " [        5         [        S5        S S S 5        [        R"                  " [$        5         [	        SS S9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNX= f! , (       d  f       GN+= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNh= f! , (       d  f       GNM= f! , (       d  f       GN2= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNo= f! , (       d  f       g = f)Nr<   r5   rI   rM   r\   r]   r^   r_   	   rG   )rI   rI   r   r   rI   zThe least populated classre   ignorerT   r   )rI   rI   r   r   r5   r   z>k-fold cross-validation requires at least one train/test split      ?       @rx   shuffle)rg   rh   ru   nextr   rV   r   rs   warnsWarningr   arangelenwarningscatch_warningssimplefilterr   rt   	TypeError)X1X2rX   skf_3sgkf_3naive_groupserror_strings          rE   test_kfold_valueerrorsr     s   	Aq6Aq6Aq6*	+B	Aq6Aq6Aq6Aq6Ar7;	<BuQx~~b)* 	"#AAE	g%@	AU[[  
B "!$F99SV$L	g%@	AV\\"./ 
B 
	 	 	"h'%QtqI 
# 
	 	 	"h'&aPQR 
# 	"#A	z	"U[[  
#	z	"V\\" ! 
# 
z	"a 
#	z	"a 
#SL	z	6 
7	z	6 
7	z	6Q 
7	z	6Q 
7 
z	"c
 
#	z	"c
 
#	z	" 
#	z	" 
#	z	"S! 
#	z	"S! 
# 
y	!q$' 
"	!u 
B	A
 
B	A 
#	" 
#	" 
#	"	"	" 
#	"	"	" 
7	6	6	6	6	6	6	6 
#	"	"	"	"	"	"	"	"	"	"	" 
"	!s   &RR'#R9"S!SS/T	T8T%%T7U	?U-U-U?	V7V#%V5WW
R$'
R69
S
S
S,/
S>
T
T"%
T47
U	
U
U*-
U<?
V
V #
V25
W
W
W'c                      [         R                  " S5      n [        S5      n[        XS S SS9  [         R                  " S5      n[        S5      n[        XS S SS9  S[        S5      R	                  U5      :X  d   eg )N   rI   )rX   rT   r      r\   )rg   onesr   r   rk   )r   r}   r   s      rE   test_kfold_indicesr   [  sk    	B	qBbTQG 
B	qBbTQG a%%b))))rZ   c                     SS/SS/SS/SS/S	S
//n [        S5      R                  U S S 5      n[        U5      u  p#[        USS/5        [        USS/5        [        U5      u  p#[        USS/5        [        USS/5        [        S5      R                  U 5      n[        U5      u  p#[        U/ SQ5        [        USS/5        [        U5      u  p#[        USS/5        [        U/ SQ5        g )Nr<   r5   rI   rM   r\   r]   r^   r_   r   rG   r   r   r   r<   r5   )r   rV   r   r.   )r   splitsr   r   s       rE   test_kfold_no_shuffler   k  s    a&1a&1a&1a&1b'	2B1X^^BsG$Fv,KEtaV$uq!f%v,KEtaV$uq!f%1X^^BFv,KEtY'uq!f%v,KEtaV$ui(rZ   c            	      P   [         R                  " S5      / SQp[        S5      R                  X5      n[	        U5      u  p4[        USS/5        [        USS/5        [	        U5      u  p4[        USS/5        [        USS/5        [         R                  " S5      / SQp[        S5      R                  X5      n[	        U5      u  p4[        U/ S	Q5        [        U/ S
Q5        [	        U5      u  p4[        U/ S
Q5        [        U/ S	Q5        S[        S5      R                  X5      :X  d   e[         R                  " S5      n / SQn/ SQn[         R                  R                  [        [        S5      R                  X5      5      [        [        S5      R                  X5      5      5        / SQn[         R                  " U5      n [         R                  R                  [        [        S5      R                  X5      5      [        [        S5      R                  X5      5      5        g )NrM   )r<   r<   r   r   r5   r   r<   rI   r^   )r<   r<   r<   r   r   r   r   )r   r<   rI   rM   )r5   r\   r]   r\   )rO   rO   rO   0r   r   r   )r   r<   r   r<   r   r<   r   r<   )rg   r   r   rV   r   r.   rk   rl   rm   rn   	ones_liker   )rW   rX   r   r   r   y1y2s          rE    test_stratified_kfold_no_shuffler     s    771:|qQ%%a+Fv,KEtaV$uq!f%v,KEtaV$uq!f%771:,qQ%%a+Fv,KEt\*ui(v,KEtY'ul+ "//5555 	
A	,B	BJJ_Q%%a,-tOA4F4L4LQ4S/T
 	!A
QAJJ_Q%%a+,d58>>!3G.HrZ   r   FTk)rM   r\   r]   r^   r_   r   rG   kfoldc                    Sn[         R                  " U5      n[         R                  " S/[        SU-  5      -  S/[        SU-  5      -  -   S/[        SU-  5      -  -   5      n[         R                  " [        U5      5      n[         R                  " U5      [        U5      -  n/ nU(       d  S OSn	U" X	US9n
[        XXVS	9 Hy  u  p[        [         R                  " X[   5      [        U5      -  US
S9  [        [         R                  " X\   5      [        U5      -  US
S9  UR                  [        U5      5        M{     [         R                  " U5      S::  d   eg )N  rM   皙?r   {Gz?r<   {Gz?ra   r   rS   {Gz?atol)rg   r   rh   intr   r   bincountrY   r,   appendptp)r   r   r   rv   rW   rX   rT   distr
test_sizesra   r~   r   r   s                rE   test_stratified_kfold_ratiosr     s-    I
	A
	
c$"###D9$%
%	&#D9$%
%	&	A YYs1vFKKNSV#EJ&4AL
g
>Cca7AH-E
:EMAG,s4y8%dK#d)$ 8 66*"""rZ   )rM   r]   r^   c                   ^ ^^^
^ Sn[         R                  " S/[        SU-  5      -  S/[        SU-  5      -  -   S/[        SU-  5      -  -   5      n[         R                  " [	        U5      5      m
[         R
                  " [	        U5      5      mU
UU UU4S jnU" U5      n[        / S	Q5       H(  n[         R                  " Xt5      nU" U5      n	X:X  a  M(   e   g )
Nd   r5   r   r   r   r<   r   c                    > T(       d  S OSn[        T" TUTS9TU TS9 VVs/ s H  u  p#[        U5      [        U5      4PM     snn$ s  snnf )Nr   r   rS   )rY   rn   )	rX   ra   r   r   rW   rT   r   r   r   s	       rE   
get_splits:test_stratified_kfold_label_invariance.<locals>.get_splits  s`    #*t  &alGD	 
  %[$t*% 
 	
 
s   "Ar   )rg   rh   r   r   r   r   r   take)r   r   r   rv   rX   r   splits_basepermy_permsplits_permrW   rT   s   ```       @@rE   &test_stratified_kfold_label_invariancer     s    
 I
	
c$"###D9$%
%	&#D9$%
%	&	A
 	AAYYs1vF

 

 Q-KY'! ())) (rZ   c                  j   [        SS5       H  n [        S5      R                  [        R                  " U 5      S9nU VVs/ s H  u  p#[        U5      PM     nnn[        R                  " U5      [        R                  " U5      -
  S::  d   e[        R                  " U5      U :X  a  M   e   g s  snnf )N   r   r\   rW   r<   )	r   r   rV   rg   r   r   maxminsum)rd   r}   _r   sizess        rE   test_kfold_balancer    s    2r]1X^^bggaj^)*,-"wqT"-uu-!333vve}!!! -s   B/c           
         [         R                  " S5      nS/S-  S/S-  -   n[         R                  " [        U5      5      nS H  nU " SUS9n[	        SS5       H  n[        XQS U US U US U 5      nU VV	s/ s H  u  p[        U	5      PM     n
nn	[         R                  " U
5      [         R                  " U
5      -
  S::  d   e[         R                  " U
5      U:X  a  M   e   M     g s  sn	nf )	Nr   r   rI   r<      TFr   r   )	rg   r   r   r   r   rY   r   r   r   )r   rW   rX   rT   r   r   rd   r~   r   r   r  s              rE   test_stratifiedkfold_balancer    s    
 	A	
a1#(AYYs1vF 1g&r2ArUAbqE6"1:6C.12c71SYcE2FF5MBFF5M1a77766%=A%%%  ! 3s   9C+
c                     [        S5      n [        SSSS9n[        SSSS9n[        R                  " S5      n[        R                  " S5      n[	        U R                  U5      UR                  U5      UR                  U5      5       HV  u  u  pVu  pxu  p[        XWU	4S5       H3  u  p[        [        R                  " X5      5      [        U5      :w  a  M3   e   SXH'   MX     [        U5      S:X  d   eg )NrI   Tr   r   ra   r<   ,  r5   )
r   rg   r   zerosrj   rV   r   r   intersect1dr   )r}   kf2kf3rW   	all_foldstr1te1tr2te2tr3te3tr_atr_bs                rE   test_shuffle_kfoldr    s    	qB
4a
0C
4a
0C
AI.1
SYYq\399Q</*
JS
 '#:JDr~~d12c#h>>> ;
 	/ y>S   rZ   c                 $   [         R                  " S5      nS/S-  S/S-  -   n[         R                  " [        U5      5      n[         R                  " S5      nS/S-  S/S-  -   n[         R                  " [        U5      5      nU " SSSS	9n[         R                  R                  [        [        XqX#5      5      [        [        XqX#5      5      5        U " SS[         R                  R                  S5      S	9n[        X4X%4X645       Hs  n[        [        U/UQ76 [        U/UQ76 5       HL  u  u  pu  p[        R                  " [        5         [         R                  R                  X5        S S S 5        MN     Mu     g ! , (       d  f       Md  = f)
N   r   r^   r<   r_      rI   Tr	  )rg   r   r   r   rl   rm   rn   rY   r   r   rj   rs   rt   AssertionErrorr.   )r   rW   rX   groups_1r   r   groups_2r}   datar   test_atest_bs               rE   2test_shuffle_kfold_stratifiedkfold_reproducibilityr"    sD   
A	
a1#'AyyQ H	B
qA37	ByyR!H 
q$Q	/BJJVB1'($vbQ/I*J 
q$RYY-B-B1-E	FBQGaWx&:;(+F2,=,=vb?P4?P(Q$KQ!
 ~.

--f= /. )R < /.s    F  
Fc            	         [         R                  " S5      n S/S-  S/S-  -   n[        SSSS9n[        SSSS9n[        UR	                  X5      UR	                  X5      5       H$  u  u  pEu  pF[        U5      [        U5      :w  a  M$   e   [        X US SS9  [         R                  " S	5      nS/S-  S/S-  -   n[        SSSS9n[        SSSS9n[        UR	                  Xq5       V	s/ s H  n	[        U	S   5      PM     sn	5      n
[        UR	                  Xq5       V	s/ s H  n	[        U	S   5      PM     sn	5      nX:w  d   eg s  sn	f s  sn	f )
N(   r      r<   r\   Tr	  r   rG   )
rg   r   r   rj   rV   r   r   r   sortedtuple)X_40rX   kf0kf1r   test0test1rW   r  s	test_set1	test_set2s               rE   test_shuffle_stratifiedkfoldr0  ?  s;    772;D	
bA38A
!T
:C
!T
:C"%cii&8#))D:L"M
JQ5zSZ''' #Nc41E
 			"A	
a1#'A
!T
:C
!T
:CSYYq_=_ad_=>ISYYq_=_ad_=>I!!! >=s   )E Ec                     [         R                  " S5      n S/S-  S/S-  -   n[         R                  " S5      S-  n[        SSSS9n[        SSSS9nUR	                  U S U5       VVs/ s H  u  pV[        X&   5      PM     nnnUR	                  U S U5       VVs/ s H  u  pV[        X&   5      PM     nnn[        Xx5       H  u  pX:w  a  M   S	5       e   [        X0XSS
9  [        X@XSS
9  g s  snnf s  snnf )Nr$  r   r%  r<   rI   rM   Tr	  z6Test groups should differ with different random states)r   )rg   r   r   r   rV   r   rj   r   )rW   rX   rT   gkf0gkf1r   test_idxtest_groups0test_groups1g0g1s              rE   test_shuffle_groupkfoldr9  V  s    	A	
bA38AYYr]aFaA6DaA6D 26AtV1L1L+!F1L   26AtV1L1L+!F1L   l1xQQQx 2 dqA>dqA>s   )C.C4c                     [         R                  S S [         R                  S S p[        SSS9nSn[	        USS9n[        X XS9R                  5       nS	U:  d   eUS
:  d   e[	        USSS9n[        X XS9R                  5       nUS	:  d   e[	        USSS9n[        X XS9R                  5       nUS	:  d   e[        U5      n[        X XS9R                  5       nSU:  d   eUS
:  d   eg )NiX  rG   g{Gzt?)CgammarI   Fr   r   gq=
ףp?皙?Tr   r	  r<   gGz?)digitsr  targetr#   r   r   meanr   )rW   rX   modelrx   r   
mean_scores         rE   1test_kfold_can_detect_dependent_samples_on_digitsrD  n  s    ;;tfmmDS1q"E"EH	%	0B 1499;J* 
xA	6B 1499;J	xA	6B 1499;J 
	"B 1499;J*rZ   c                     [        SS9n [        R                  " S/S-  S/S-  -   5      n[        R                  " U5      R	                  SS5      n[        R
                  " S5      n[        R                  " U5      [        U5      -  n/ nU R                  X!U5       H  u  pg[        R                  " X6   X7   5      R                  S:X  d   e[        [        R                  " X   5      [        U5      -  US	S
9  [        [        R                  " X   5      [        U5      -  US	S
9  UR                  [        U5      5        M     [        R                  " U5      S::  d   eg )NrI   r   r<   r]   r      r   )r<   r5   rI   rM   r\   r]   r<   r<   r5   r5   rI   rI   rM   rM   r\   r\   r]   r]   r   r   )r   rg   rh   r   r   ro   r   r   rV   r  r   r,   r   r   )r   rX   rW   rT   r   r   r   r   s           rE   #test_stratified_group_kfold_trivialrG    s   +D
!qA38#$A
QA&AZZNOFKKNSV#EJzz!/~~fmV\:??1DDDAH-E
:EMAG,s4y8%dK#d)$ 0 66*"""rZ   c                     [        SS9n [        R                  " S/S-  S/S-  -   5      n[        R                  " U5      R	                  SS5      n[        R                  " / SQ5      n[        R
                  " S	S
/SS/SS//5      n/ n[        U R                  X!U5      U5       H{  u  u  pgn[        R                  " X6   X7   5      R                  S:X  d   e[        R                  " X   5      [        U5      -  n	[        XSS9  UR                  [        U5      5        M}     [        R                  " U5      S::  d   eg )NrI   r   r<   r]   r   rF  r   )r<   r5   rI   rI   rM   rM   r<   r<   r5   r5   rI   rM   r\   r\   r\   r]   r]   r]   g-?gsh|??gZd;O?gZd;O?r8   MbP?r   )r   rg   rh   r   r   ro   rj   rV   r  r   r   r   r,   r   r   )
r   rX   rW   rT   expectedr   r   r   expect_dist
split_dists
             rE   'test_stratified_group_kfold_approximaterM    s     +D
!qA38#$A
QA&AXXLMFzzE5>E5>C:FGHJ&)$**Q6*BH&M"{~~fmV\:??1DDD[[)CI5

e<#d)$ 'N 66*"""rZ   zy, groups, expectedr]   )r<   r<   r5   r5   rI   rI   rM   rM   r\   r\   r]   r]   r   rI   )r<   r<   r<   r5   r5   r5   rI   rI   rI   rM   r\   r]         ?      ?c                 d   [        SS9n[        R                  " U 5      R                  SS5      n[	        UR                  X@U5      U5       Ha  u  u  pVn[        R                  " X   X   5      R                  S:X  d   e[        R                  " X   5      [        U5      -  n[        XSS9  Mc     g )NrI   r   r   r<   r   rI  r   )r   rg   r   r   rj   rV   r  r   r   r   r,   )	rX   rT   rJ  r   rW   r   r   rK  rL  s	            rE   .test_stratified_group_kfold_homogeneous_groupsrQ    s       +D
QA&A&)$**Q6*BH&M"{~~fmV\:??1DDD[[)CI5

e<	 'NrZ   	cls_distr))g?333333?)g333333?ffffff?)皙?r>  )r>  rU  r>   )r\   r   F   c                    Sn[        US9n[        US9n[        R                  R	                  S5      nSnUR                  SX`S9n[        R                  " U5      R                  SS5      nUR                  X5      n	UR                  XU	S	9n
UR                  XU	S	9nSnSn[        X5       H  u  u  pu  nn[        R                  " X   X   5      R                  S:X  d   e[        R                  " X   5      [        U5      -  n[        R                  " UU   5      [        U5      -  nU[        R                  " UU S
9-  nU[        R                  " UU S
9-  nM     X-  nX-  nX::  d   eg )Nr\   r   r   r   r5   )r   r7   r   r<   rS   )qk)r   r   rg   r   r   choicer   r   rV   rj   r  r   r   r   r   entropy)rR  r>   rx   r   gkfr   n_pointsrX   rW   g
sgkf_folds	gkf_folds	sgkf_entrgkf_entr
sgkf_train	sgkf_testr   gkf_test
sgkf_distr	gkf_distrs                       rE   /test_stratified_group_kfold_against_group_kfoldrg    sY   
 H2D
h
'C
))


"CH

18
1A
QA&A

8&AA+J		!q	)IIH25j2L.!X~~amQ\:??1DDD[[.Y?
KK(,s8}<	U]]:)<<	EMM)	:: 3M IH   rZ   c                     [        SSS9R                  [        5      n [        SSS9R                  [        5      n[        [        R                  " S5      SS9R                  [        5      n[        SSS9R                  [        5      n[        XX#5       Hr  u  pEpg[        US   US   5        [        US   US   5        [        US   US   5        [        US   US   5        [        US   US   5        [        US   US   5        Mt     g )NrU  r   r:   ra   r5   r<   )r   rV   rW   rg   int32rj   r.   )ss1ss2ss3ss4t1t2t3t4s           rE   test_shuffle_splitrs    s    
1
5
;
;A
>C

3
9
9!
<C
!1
=
C
CA
FC

3
9
9!
<Cc12a5"Q%(2a5"Q%(2a5"Q%(2a5"Q%(2a5"Q%(2a5"Q%( 2rZ   split_classztrain_size, exp_train, exp_test))Nr   r<   r_   r_   r5   r>  r_   r5   c                     [         R                  " S5      n[         R                  " S5      n[        U " US9R                  XE5      5      u  pg[	        U5      U:X  d   e[	        U5      U:X  d   eg NrG   
train_size)rg   r   r   rV   r   )rt  rz  	exp_trainexp_testrW   rX   X_trainX_tests           rE   $test_shuffle_split_default_test_sizer    s^     	A
A;*=CCAIJOGw<9$$$v;("""rZ   ))Nr_   r5   )r^   r^   rI   )rT  r^   rI   c                     [         R                  " S5      n[         R                  " S5      n[        S5      n[        [	        U S9R                  X4U5      5      u  pg[        U5      U:X  d   e[        U5      U:X  d   eg rx  )rg   r   r   r   r   rV   r   )rz  r{  r|  rW   rX   rT   r}  r~  s           rE   *test_group_shuffle_split_default_test_sizer    sk     	A
A2YF,
CII!PVWXOGw<9$$$v;("""rZ   c            	         [         R                  " S5      n [         R                  " / SQ5      n[        R                  " [
        5         [        [        SSS9R                  X5      5        S S S 5        [        R                  " [
        5         [        [        SSS9R                  X5      5        S S S 5        [        R                  " [
        5         [        [        SSSS9R                  X5      5        S S S 5        [         R                  " S5      n [         R                  " / S	Q5      n[        R                  " [
        5         [        [        SS
9R                  X5      5        S S S 5        [        R                  " [
        5         [        [        SS9R                  X5      5        S S S 5        g ! , (       d  f       GNQ= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr^   )r   r<   r<   r<   r5   r5   r5   rI   rU  r9   r5   r:   rz  r   )	r   r   r   r<   r<   r<   r5   r5   r5   ry  )	rg   r   ro   rs   rt   ru   r   r   rV   rW   rX   s     rE   "test_stratified_shuffle_split_initr  "  sJ   
		!A


()A	z	"#A5;;AAB 
# 
z	"#A399!?@ 
# 
z	"#AqAGGMN 
# 			!A


./A 
z	"#q177=> 
#	z	"#a066q<= 
#	"# 
#	" 
#	" 
#	" 
#	"	"	"s<   	#F6#G$G"G+"G<6
G
G
G(+
G9<
H
c                     [         R                  " / SQ5      n SnSn[        SXSS9R                  [         R                  " [        U 5      5      U 5      nU H'  u  pE[        U5      U:X  d   e[        U5      U:X  a  M'   e   g )NrK   r\   rG   r]   r   )r:   rz  ra   )rg   rh   r   rV   r   r   )rX   r:   rz  sssr   r   s         rE   0test_stratified_shuffle_split_respects_test_sizer  ;  sy    
>?AIJ
 	YAeBGGCFOQ  5zZ'''4yI%%% rZ   c                      [         R                  " / SQ5      [         R                  " / SQ5      [         R                  " / SQS-  5      [         R                  " / SQ5      [         R                  " S/S-  S/S	-  -   5      [         R                  " [        S
5       V s/ s H  o /SU -   -  PM     sn 5      / SQ/ SQ/nU GH  n[	        SSSS9R                  [         R                  " [        U5      5      U5      n[         R                  " U5      n[         R                  " S[        U5      -  5      n[        U5      U-
  nU GH=  u  pg[        [         R                  " X&   5      [         R                  " X'   5      5        [         R                  " [         R                  " X&   SS9S   5      [        [        X&   5      5      -  n[         R                  " [         R                  " X'   SS9S   5      [        [        X'   5      5      -  n	[        XS5        [        U5      [        U5      -   UR                  :X  d   e[        U5      U:X  d   e[        U5      U:X  d   e[        [         R                   " Xg5      / 5        GM@     GM     g s  sn f )NrH   rJ   rK   r5   rL   r   i   r<   2   r   r   rN   r]   gQ?r   ri  T)return_inverse)rg   rh   concatenater   r   rV   r   r   
asanyarrayceilr.   uniquer   floatr-   r   r  )
rd   ysrX   r  r:   rz  r   r   p_trainp_tests
             rE   "test_stratified_shuffle_split_iterr  G  s   
56
56
>BC
AB
"qcBh&'
r;AsQw;<,D	
B $Q$QGMMGGCFOQ
 MM! GGD3q6M*	Vi'
KEryy2BIIag4FGkk"))AHT"J1"MNQVAHR G [[174!H!KLuAGP F &gq9u:D	)QVV333u:+++t9	)))r~~e:B?   <s   Jc                    ^ Sn SmU4S jnS GHz  n[         R                  " US-  SS/-  5      n[        TSU -  SS	9nS/U-  nS/U-  nSnUR                  [         R                  " U5      US
9 H.  u  pUS-  nXX4Xi44 H  u  pU H  nX==   S-  ss'   M     M     M0     UT:X  d   e[        USU -  SSU -  -
  S9u  p[        W5      U:X  d   e[        W	5      U:X  d   e[        [        U5      R                  U	5      5      S:X  d   e[         R                  " U5      nUR                  SU -  :X  d   eX-   [        U5      :X  d   e[        U5      S:X  d   e[        U5      U-  n[        U5      U-  nU" UU5        U" UU5        GM}     g )Nr\   r   c                    > ST-  n[         R                  " TU5      nU  H   nUR                  U5      nXR:  a  M   S5       e   g )N皙?z=An index is not drawn with chance corresponding to even draws)r   binompmf)
idx_countsr7   	thresholdbfcountprobrx   s         rE   assert_counts_are_ok@test_stratified_shuffle_split_even.<locals>.assert_counts_are_okr  sK     8O	[[1%E66%=D# O#  rZ   )r]      r5   r   r<         ?rx   r:   ra   r  r  )rg   rh   r   rV   r   r!   r   r   r   r  r:   r  )n_foldsr  rv   rT   r   train_countstest_countsn_splits_actualr   r   counteridsidn_trainn_testgroup_counts	ex_test_p
ex_train_prx   s                     @rE   "test_stratified_shuffle_split_evenr  l  s    GH	 	9>aV34'wQ
 sYcIo!<<"'')*<<GKEq O".!68K LBK1$K  !M H
 (***1w3#-;P
 5zW$$$4yF"""3u:**401Q666yy(3=0003v;...< A%%%&MI-	7^i/
\:6[)4A rZ   c                  R   / SQS-  SS/S-  -   n [         R                  " U 5      n[        SSSS9n[        UR	                  XS	95      u  p4[        [         R                  " X45      / 5        [        [         R                  " X45      [         R                  " [        U 5      5      5        g )
Nr   r<   r5   rI   rI   rM   r\   r<   r8   r   r  r  )
rg   r   r   r   rV   r.   r  union1dr   r   )rX   rW   r  r   r   s        rE   4test_stratified_shuffle_split_overlap_train_test_bugr    s     	qAq6A:%A
QA
 !s
KCsyy1y*+KE r~~e2B7 rzz%.		#a&0ABrZ   c            	         [         R                  " SS/SS/SS/SS//5      [         R                  " SS/SS/SS/SS//5      4 GH  n [         R                  " U 5      n[        SSSS9n[	        UR                  XS95      u  p4X   nX   n[        [         R                  " X45      / 5        [        [         R                  " X45      [         R                  " [        U 5      5      5        [         R                  " U S S 2S4   5      nU[         R                  " US S 2S4   5      :X  d   eU[         R                  " US S 2S4   5      :X  a  GM   e   g )Nr   r<   r8   r  r  )rg   rh   r   r   r   rV   r.   r  r  r   r   rA  )rX   rW   r  r   r   y_trainy_testexpected_ratios           rE   (test_stratified_shuffle_split_multilabelr    s)    	1a&1a&1a&1a&12
1a&1a&1a&1a&12 LLO$a3QO399q9./( 	2>>%6; 	2::e2BIIc!f4EF 1a4)A!77771!6666)rZ   c                     / SQS/S-  -   / SQ-   n / SQS/S-  -   / SQ-   n[         R                  " U /S-  U/S-  -   5      n[         R                  " U5      n[        SSSS9n[	        UR                  X2S	95      u  pVX%   nX&   n[         R                  " US S 2S
4   5      n	U	[         R                  " US S 2S
4   5      :X  d   eU	[         R                  " US S 2S
4   5      :X  d   eg )N)r<   r   r<   r   r   r<   rG   r   r8   r  r  rM   )rg   rh   r   r   r   rV   rA  )
row_with_many_zerosrow_with_many_onesrX   rW   r  r   r   r  r  r  s
             rE   4test_stratified_shuffle_split_multilabel_many_labelsr    s     $qcDj09<"aS4Z/);
%&+/A.BS.HHIA
QA
 !s
KCsyy1y*+KEhGWF WWQq!tW%NRWWWQT]3333RWWVAqD\2222rZ   c                     [         R                  " SS5      n / n/ n[        [        SSS9R	                  [
        5      5       H.  u  nu  pEUR                  U5        UR                  U5        X0U'   M0     [        U 5      n[        [         R                  " U 5      5      UR                  5       :X  d   e[        UR	                  5       6 u  px[        Xq5        [        X5        g )NrG   g      r\   Tr  )rg   fullri   r   rV   rW   r   r   r   r  rk   rj   r.   )	foldskf_trainkf_testrd   	train_indtest_indr   ps_trainps_tests	            rE   %test_predefinedsplit_with_kfold_splitr    s    GGBEHG$-eAt.D.J.J1.M$N  I	"x h %O 
	Bryy BOO$5555RXXZ(Hx*w(rZ   c                     [          GH  n [        R                  " [        U 5      5      =pSnSn[	        X4SS9n[        U5        UR                  XU S9U:X  d   e[        R                  " U 5      n[        R                  " U 5      nUR                  XU S9 GHR  u  p[        R                  " Xx   5      n
[        R                  " Xy   5      n[        R                  " [        R                  " Xx   U5      5      (       a   e[        R                  " [        R                  " Xy   U
5      5      (       a   eXx   R                  Xy   R                  -   UR                  :X  d   e[        [        R                  " X5      / 5        [        [        U5      [!        U[        U5      -  5      -
  5      S::  d   e[        [        U
5      [!        SU-
  [        U5      -  5      -
  5      S::  a  GMS   e   GM     g )Nr]   gUUUUUU?r   ri  rS   r<   r  )test_groupsrg   r   r   r   rr   rk   r  ro   rV   anyisinr   r.   r  absround)groups_irW   rX   rx   r:   slol_uniquelr   r   l_train_uniquel_test_uniques               rE   test_group_shuffle_splitr    s   KH&&	AN 	S	 X6(BBB99X&JJx 99Q(9;KEYYqx0NIIag.Mvvbggah>????vvbggag~>???? 8==17<</166999 r~~e:B? s=)E)c(m2K,LLMQRRRRC'%yCM0Q*RRSWXXX# <  rZ   c            
         [        5       n [        SS9n[        SS9n[        U 5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        [        SS95      S:X  d   e[        U S4US4US445       GHC  u  nu  pE[        [        5       GH&  u  pg[        [        R                  " U5      5      nUS:X  a  UO	XS-
  -  S-  n	[        R                  " [        U5      5      =pUR                  XUS	9U	:X  d   e[        R                  " U5      nUR                  XUS	9 H  u  p[        [        R                  " X   X   5      R                  5       / 5        [        U5      [        U5      -   [        U5      :X  d   e[        R                  " X   5      R                  S
   (       a  M   U5       e   GM)     GMF     U R                  S S / SQ5      S:X  d   eU R                  / SQS	9S:X  d   eUR                  S S [        R                   " S5      5      S:X  d   eUR                  [        R                   " S5      S	9S:X  d   e["        R$                  " [&        5         U R                  S S S[        R(                  S/5        S S S 5        ["        R$                  " [&        5         UR                  S S S[        R*                  S/5        S S S 5        Sn["        R$                  " [&        US9   U R                  S S S 5        S S S 5        ["        R$                  " [&        US9   UR                  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nf= f! , (       d  f       g = f)Nr<   r=   r5   rb   zLeavePGroupsOut(n_groups=1)rc   rI   zLeavePGroupsOut(n_groups=3)rS   r   )abcr  r  )r  皙?r  g333333?rM   r]   g        z*The 'groups' parameter should not be None.re   )r   r   rr   ri   r  r   rg   r  r   rk   ro   rV   r.   r  tolistshaper   rs   rt   ru   naninf)logolpgo_1lpgo_2jr   p_groups_outrd   r  r>   rx   rW   rX   
groups_arrr   r   r   s                   rE   test_leave_one_p_group_outr    s   Da(Fa(F :----<8888<8888+,0MMMM!*T1I{VQK+P!QB$[1KA299X./H#/1#4x(QRl:SVW:WHGGCM**A ??1?9XEEEH-J  "xxXx>"NN:#4j6FGNNPRT
 5zCI-X>>> yy!1288;;I\I;  ? 2 "R4 T4)BCqHHH$89Q>>>tT299Q<8A===biil3q888 
z	"$sBFFC&89 
#	z	"D$bffc(:; 
# 7C	z	-$d+ 
.	z	-D$- 
.	- 
#	"	"	" 
.	-	-	-s0   &%M-%M5M)*M:
M
M&)
M7:
Nc                  L   [         R                  " / SQ5      n [         R                  " [        U 5      5      n[         R                  " U SS9n[	        5       R                  XS9n[	        5       R                  XS9n[        SS9R                  XS9n[        SS9R                  XS9nSUS S & X44XV44 H4  u  px[        Xx5       H   u  u  pu  p[        X5        [        X5        M"     M6     S[        SS9R                  XU S	9:X  d   eS[	        5       R                  XU S	9:X  d   eg )
N)r   r<   r5   r<   r<   r5   r   r   T)copyrS   r5   r=   r   rI   )rX   rT   )
rg   rh   r   r   r   rV   r   rj   r.   rk   )rT   rW   groups_changingr   lolo_changinglplolplo_changingllollo_changingr   r   
train_chan	test_chans                rE   $test_leave_group_out_changing_groupsr  N  s%    XX./F
FAhhvD1O##A#5D$&,,Q,>MA&,,Q,>D#Q/55a5GMOA#3d5JK69#6L2MU2Ju1t/ 7M L +888OOOO "//v/FFFFrZ   c                  <   [         R                  " / SQ5      n [         R                  " [        U 5      5      n[	        [        5       R                  XS95      n/ SQSS/4/ SQSS/4/ S	QS
S/4/nU H(  u  pE[        U5      u  pg[        Xd5        [        Xu5        M*     g )N)r5   r5   r   r   r<   r<   rS   )r   r<   rM   r\   r5   rI   r  rM   r\   r5   rI   rM   r\   r   r<   )	rg   rh   r   r   iterr   rV   r   r.   )rT   rW   r   expected_indicesexpected_trainexpected_testr   r   s           rE   %test_leave_group_out_order_dependencer  d  s     XX()F
FA"$**1*<=F 
1v	1v	1v *:%6l514/ *:rZ   c                  D   [         R                  " S5      =n =p[        R                  " S5      n[        R
                  " [        US9   [        [        5       R                  XU5      5        S S S 5        [         R                  " S5      =n =p[        R                  " SU S35      n[        R
                  " [        US9   [        [        5       R                  XU5      5        S S S 5        [         R                  " S5      =n =p[        R                  " SU S35      n[        R
                  " [        US9   [        [        S	S
9R                  XU5      5        S S S 5        [         R                  " S	5      =n =p[        R                  " SU S35      n[        R
                  " [        US9   [        [        S	S
9R                  XU5      5        S S S 5        g ! , (       d  f       GNv= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nr   zFound array with 0 sample(s)re   r<   z:The groups parameter contains fewer than 2 unique groups (z'). LeaveOneGroupOut expects at least 2.z^The groups parameter contains fewer than (or equal to) n_groups (3) numbers of unique groups (zR). LeavePGroupsOut expects that at least n_groups + 1 (4) unique groups be presentrI   r=   )rg   r   reescapers   rt   ru   r   r   rV   r   r   )rW   rX   rT   r   s       rE   :test_leave_one_p_group_out_error_on_fewer_number_of_groupsr  x  s   WWQZA
))2
3C	z	-%%aF34 
. WWQZA
))
DVH M0 	0C 
z	-%%aF34 
. WWQZA
))	))/ 1	C 
z	-_a(..qV<= 
. YYq\!A!
))	))/ 1	C 
z	-_a(..qV<= 
.	-9 
.	- 
.	- 
.	- 
.	-s0   	$G$G.9#H 0#H
G+.
G= 
H
Hc                     [         [        4 HU  n [        R                  " [        5         U " SS9  S S S 5        [        R                  " [        5         U " SS9  S S S 5        MW     g ! , (       d  f       N<= f! , (       d  f       Mz  = f)Nr   )	n_repeatsr   )r   r   rs   rt   ru   r=  s    rE   test_repeated_cv_value_errorsr    sT    56]]:&O ']]:& '& 7&&&&s   A'A8'
A5	8
B	
RepeatedCVc                     Su  pU " XS9nSR                  UR                  R                  5      nU[        U5      :X  d   eg )N)r5   r]   rx   r  z.{}(n_repeats=6, n_splits=2, random_state=None))r   rA   rB   rr   )r  rx   r  repeated_cvrepeated_cv_reprs        rE   test_repeated_cv_reprr    sI    HhDKGNN&& tK0000rZ   c                  N   SS/SS/SS/SS/S	S
//n Sn[        SSUS9n[        S5       H  nUR                  U 5      n[        U5      u  pV[	        USS/5        [	        U/ SQ5        [        U5      u  pV[	        U/ SQ5        [	        USS/5        [        U5      u  pV[	        USS/5        [	        U/ SQ5        [        U5      u  pV[	        U/ SQ5        [	        USS/5        [
        R                  " [        5         [        U5        S S S 5        M     g ! , (       d  f       M  = f)Nr<   r5   rI   rM   r\   r]   r^   r_   r   rG   i{icrx   r  ra   )r   r<   rI   r   )r5   rI   rM   )r   r   rV   r   r.   rs   rt   StopIteration)rW   ra   rkfr   r   r   r   s          rE   &test_repeated_kfold_determinstic_splitr    s   
Q!Q!Q!Q!R1AL
al
KC 1X16l51a&)4+6l5),4!Q(6l51a&)4+6l5),4!Q(]]=)L *)% $ *)s   <D
D$	c                  P    Sn Sn[        XS9nX-  nX2R                  5       :X  d   eg NrI   rM   r   )r   rk   )rx   r  r  r   s       rE   $test_get_n_splits_for_repeated_kfoldr    s4    HI

?C , 0 0 2222rZ   c                  P    Sn Sn[        XS9nX-  nX2R                  5       :X  d   eg r
  )r   rk   )rx   r  rskfr   s       rE   /test_get_n_splits_for_repeated_stratified_kfoldr    s4    HI"HJD , 1 1 3333rZ   c                  V   SS/SS/SS/SS/S	S
//n / SQnSn[        SSUS9n[        S5       H  nUR                  X5      n[        U5      u  pg[	        USS/5        [	        U/ SQ5        [        U5      u  pg[	        U/ SQ5        [	        USS/5        [        U5      u  pg[	        USS/5        [	        U/ SQ5        [        U5      u  pg[	        U/ SQ5        [	        USS/5        [
        R                  " [        5         [        U5        S S S 5        M     g ! , (       d  f       M  = f)Nr<   r5   rI   rM   r\   r]   r^   r_   r   rG   )r<   r<   r<   r   r   iqsr  )r   r5   rI   )r   r<   rM   )r   r   rV   r   r.   rs   rt   r  )rW   rX   ra   r  r   r   r   r   s           rE   1test_repeated_stratified_kfold_determinstic_splitr    s   
Q!Q!Q!Q!R1AAL"AVD 1XA!6l51a&)4+6l5),4!Q(6l51a&)4+6l5),4!Q(]]=)L *)% $ *)s    D
D(	c            	         [         R                  " [        [        5        [         R                  " [        [        [	        S5      SS9  [         R                  " [        [        [	        S5      SSS9  [         R                  " [        [        [	        S5      [
        R                  " S5      [
        R                  " S5      S9  [         R                  " [        [        [	        S5      SS9  [         R                  " [        [        [	        S5      SS	S9  [         R                  " [        [        [	        S5      SS
9  [         R                  " [        [        [	        S5      [	        S5      5        [         R                  " [        [        [	        S5      SSS9  [         R                  " [        SS9   [        [	        S5      SSS9  S S S 5        g ! , (       d  f       g = f)NrI   r  ry  rS  r  
wrong_typer9   r5   rM   )some_argument*   rG   FT)r   stratifyzrtrain_size=11 should be either positive and smaller than the number of samples 10 or a float in the \(0, 1\) rangere   r   r<   )rz  r:   )rs   rt   ru   r   r   rg   float32r    rZ   rE   test_train_test_split_errorsr    s&   
MM*./
MM*.aSI
MM*.aCTWX
MMa**S/::c? MM*.aLQ
MM*.aARST
MM)-uQxsK
MM*.a%)D
MM*.b	5SWX	'
 	rrQ?
 
 
s   0G
G))Nr^   rI   ru  rv  c                 h    [        [        U S9u  p4[        U5      U:X  d   e[        U5      U:X  d   eg )Nry  )r   rW   r   )rz  r{  r|  r}  r~  s        rE   'test_train_test_split_default_test_sizer    s6     'qZ@OGw<9$$$v;("""rZ   z#array_namespace, device, dtype_name)r  zshuffle,stratify)TNrM   )FNc           	         [        X#5      n[        R                  " S5      R                  S5      n[        R                  " S5      nUR	                  U5      nUR                  XS9n	UR	                  U5      n
UR                  XS9n[        XSXS9u  pp[        SS9   Ub  UR                  U5      nOUn[        XU USS	9u  nnnn[        U5      S   [        U	5      S   :X  d   e[        U5      S   [        U	5      S   :X  d   e[        U5      S   [        U5      S   :X  d   e[        U5      S   [        U5      S   :X  d   e S S S 5        [        W5      [        U	5      :X  d   e[        W5      [        U5      :X  d   e[        W5      [        U	5      :X  d   e[        W5      [        U5      :X  d   eUR                  U	R                  :X  d   eUR                  UR                  :X  d   eUR                  U	R                  :X  d   eUR                  UR                  :X  d   e[        [        UUS
9U5        [        [        UUS
9U5        g ! , (       d  f       GN= f)Nr   rG   rG   rG   r)   r   )ra   r   r  T)array_api_dispatch)r   r  ra   )xp)r0   rg   r   r   astypero   r   r	   r'   array_api_devicerp   r,   r%   )r   r  array_namespacer*   
dtype_namer  rW   rX   X_npX_xpy_npy_xp
X_train_np	X_test_np
y_train_np	y_test_npstratify_xp
X_train_xp	X_test_xp
y_train_xp	y_test_xps                        rE   test_array_api_train_test_splitr0  !  sJ   " 
o	6B
		#x(A
		"A88JD::d:*D88JD::d:*D3Ca40J: 
4	0**X.K"K7G+A8
4
Iz9 Z(+}T/B1/EEEEY'*mD.A!.DDDDZ(+}T/B1/EEEEY'*mD.A!.DDDD 
1" J'+;D+AAAAJ'+;D+AAAAI&*:4*@@@@I&*:4*@@@@tzz)))tzz)))??djj(((??djj(((*, )+? 
1	0s   B)I
I coo_containerc                    [         R                  " S5      R                  S5      nU " U5      n[         R                  " S5      n[        XS SS9nUu  pVpx[	        U5      [	        U5      :X  d   e[        US S 2S4   US-  5        [        US S 2S4   US-  5        [        XUR                  5       5      nUu  pVppx[        U[        5      (       d   e[        U[        5      (       d   e[         R                  " S5      R                  SSS	S
5      n[         R                  " S5      R                  SSS5      n[        X5      nUS   R                  S:X  d   eUS   R                  S:X  d   eUS
   R                  S:X  d   eUS	   R                  S:X  d   e[         R                  " / SQ5      n[        / SQ/ SQ5       H  u  p[        X=USS9u  nn[	        U5      U:X  d   e[	        U5      [	        U5      -   [	        U5      :X  d   e[         R                  " US:H  5      [         R                  " US
:H  5      :X  a  M   e   [         R                  " S5      nS H-  n[        USUS9u  nn[        USS/5        [        U/ SQ5        M/     g )Nr   r  rG   r8   r  r   r
  r\   rI   r5   i  r^   r   )r^   r\   rI   r5   r<   )rI   r\   rI   r5   )r^   r^   r   )rI   r^   r   )r<   r<   r<   r<   r5   r5   r5   r5   )r5   rM   rO  r8   rN  )r5   rM   r5   rM   r]   )r:   r  ra   )r5   rU  F)r   r:   r_   r   )r   r<   r5   rI   rM   r\   r]   r^   )rg   r   r   r   r   r.   r  
isinstancern   r  rh   rj   r   )r1  rW   X_srX   rV   r}  r~  r  r  	X_s_trainX_s_testX_4dy_3dr:   exp_test_sizer   r   s                    rE   test_train_test_splitr:  e  sN   
		#x(A

C
		"A QTcBE',$GWv;#g,&&&wq!t}gl3vad|Vb[1 QQXXZ0E<A9GY'gt$$$$fd#### 99^$,,RAq9D99[!))"a4DT(E8>>\)))8>>\)))8>>Z'''8>>Z''' 	)*A$'(?$Q 	&QQ
t 4yM)))4y3u:%Q///vveqj!RVVEQJ%7777 %R 			"A	&q%9Mt4!Q(5":; rZ   c                      Sn [         R                  " U 5      nUSU -  :  n[        XUSS9nUu  pEpgUR                  UR                  -   U :X  d   eUR                  UR                  -   U :X  d   eg)zCheck for integer overflow on 32-bit platforms.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/20774
i Gz?rO  )r  rz  N)rg   r   r   r   )
big_numberrW   rX   rV   r}  r~  r  r  s           rE   $test_train_test_split_32bit_overflowr>    sv     J 			*A	TJAQA$?E',$GW<<&++%333<<&++%333rZ   c                      [         /n  SSKJn  U R                  U5        U  H@  nU" [
        5      n[        U5      u  pE[        XB5      (       d   e[        XR5      (       a  M@   e   g ! [         a     NSf = f)Nr   )	DataFrame)r+   pandasr@  r   ImportErrorrW   r   r3  )typesr@  InputFeatureTypeX_dfr}  r~  s         rE   test_train_test_split_pandasrF    sv    OE$Y ""*40'4444&3333 "  s   A' '
A43A4sparse_containerc                     [         R                  " S5      R                  S5      nU " U5      n[        U5      u  p4[	        U5      (       a  UR
                  S:X  d   e[	        U5      (       a  UR
                  S:X  d   eg )Nr   r  csr)rg   r   r   r   r   r   )rG  rW   r4  r}  r~  s        rE   test_train_test_split_sparserJ    sm     			#x(A
1
C&s+OGG5!888F 666 6rZ   c                      [        [        5      n [        U 5      u  p[        U[         5      (       d   e[        U[         5      (       d   e[        U 5      u  p4g r@   )r+   rW   r   r3  )rE  r}  r~  X_train_arr
X_test_arrs        rE   !test_train_test_split_mock_pandasrN    sM    D&t,OGg}----fm,,,,.t4KrZ   c                     [         R                  " S5      n S/S-  S/S-  -   n[         R                  " [         R                  " S5      [         R                  " S5      45      nUR	                  5       nS H  n[        XU(       a  UOS SS9u  pVpx[        XU(       a  UOS SS9u  pp[        XU(       a  UOS SS9u  pnn[         R                  R                  XY5        [         R                  R                  X5        [         R                  R                  Xn5        [         R                  R                  UU5        M     g )	Nr^   rO   rM   r   rI   r  r   )r  ra   )rg   r   hstackr  r  r   rl   rm   )rW   r   r   y3r  X_train1X_test1y_train1y_test1X_train2X_test2y_train2y_test2X_train3X_test3y_train3y_test3s                    rE    test_train_test_split_list_inputr^    s    

A
cUQY	B	BGGAJ,	-B	B!/?(B10
,8 0@(B10
,8 0@(B10
,8W 	

3


3


1


1 "rZ   ztest_size, train_size))r   N)r  N)r   gffffff?)Ny              ?)r   N)rG   N)r_   rI   c                     [         R                  " [        5         [        [	        XS9R                  [        5      5        S S S 5        g ! , (       d  f       g = f)Nr  )rs   rt   ru   r   r   rV   rW   r  s     rE   test_shufflesplit_errorsr`    s4    
 
z	"\IEKKANO 
#	"	"s   &A


Ac            	          [        SS9n [        U R                  [        5       VVs/ s H  u  pUPM	     snnU R                  [        5       VVs/ s H  u  pUPM	     snn5        g s  snnf s  snnf )N   r`   )r   r.   rV   rW   )r   r  r  s      rE   test_shufflesplit_reproduciblerc    sP     
2	&Bbhhqk2kdak2288A;4O;41Q;4OP24Os   A'
A-c            	      >   [        SSS9n [        R                  " S5      nS/S-  S/S-  -   n[        R                  " [        R                  " S5      [        R                  " S5      45      nUR                  5       n[        R                  R                  [        U R                  X5      5      [        U R                  X5      5      5        [        R                  R                  [        U R                  X5      5      [        U R                  X5      5      5        g )	Nr5   r  ri  r^   rO   rM   r   rI   )
r   rg   r   rP  r  r  rl   rm   rn   rV   )r  rW   r   r   rQ  s        rE   &test_stratifiedshufflesplit_list_inputre    s    
 12
>C

A
cUQY	B	BGGAJ,	-B	BJJD1!12D19I4JKJJD1!12D19I4JKrZ   c                      [         R                  " S[         R                  S9R                  SS5      n [         R                  U SS S 24'   [         R
                  " SS/U R                  S   S-  5      n[        XSS	S
9  g )N   rp   rG   r   r5   r   r<   rU  r  ri  )rg   r   float64r   r  repeatr  r   r  s     rE    test_train_test_split_allow_nansrk    s`    
		#RZZ(00R8AffAadG
		1a&!''!*q.)AQSr:rZ   c            	      l   [         R                  " S5      n [        SSS9n[         R                  R	                  [        [        S5      R                  U 5      5      [        UR                  U 5      5      5        [         R                  " / SQ5      n[        SUSS9n[         R                  R	                  [        [        S5      R                  X5      5      [        UR                  X5      5      5        [         R                  " / SQ5      n[        SUSS9n[         R                  R	                  [        [        S5      R                  X5      5      [        UR                  X5      5      5        UR                  SS	5      n[        SUSS9n[         R                  R	                  [        [        S5      R                  X5      5      [        UR                  X5      5      5        [         R                  " [        [        S5      R                  X5      5      S
   [        [        S5      R                  X5      5      S
   :H  5      (       a   e[         R                  " S5      n [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        SUSS9n[         R                  R	                  [        [        S5      R                  U 5      5      [        UR                  U 5      5      5        [         R                  " S	S/S
S/S
S
/SS	/SS
//5      n[        SUSS9n[         R                  R	                  [        [        S5      R                  U 5      5      [        UR                  U 5      5      5        [        R                  " [        5         [        SS9  S S S 5        g ! , (       d  f       g = f)Nr   rI   F)
classifier)	r   r<   r   r<   r   r   r<   r<   r<   T)	r   r<   r   r<   r5   r<   r5   r   r5   r   r<   r   r\   )r   r   r   r   )r   r<   r<   r   )r   r   r   r<   )r<   r<   r   r<   )r   r   r<   r   r5   r   r=  )rg   r   r   rl   rm   rn   r   rV   rh   r   r   allr   rs   rt   ru   )rW   r   y_binaryy_multiclassy_multiclass_2dr   y_multioutputs          rE   test_check_cvrs    s   

A	!	&B JJDq!23T"((1+5FGxx34H	!X$	/BJJ_Q%%a23T"((1:O5P 8878L	!\d	3BJJ_Q%%a67bhhq>W9X #**2q1O	!_	6BJJ_Q%%a9:RXXa)*
 vv_Q%%a9:1=aq23A6	7   
 	
A88	|\<NL 
!\d	3BJJDq!23T"((1+5FGHHq!fq!fq!fq!fq!fEFM	!]t	4BJJDq!23T"((1+5FG	z	"F 
#	"	"s   
N%%
N3c            	      J   [        5       R                  [        [        5      n [	        U 5      n[
        R                  R                  [        UR                  [        [        5      5      [        UR                  [        [        5      5      5        [        SSS9R                  [        [        5      n[	        U5      n[
        R                  R                  [        UR                  [        [        5      5      [        UR                  [        [        5      5      5         Sn[
        R                  R                  [        UR                  [        [        5      5      [        UR                  [        [        5      5      5        U(       a   S5       eg ! [         a    Sn Nf = f)NTr   r	  FzVIf the splits are randomized, successive calls to split should yield different results)
r   rV   rW   rX   r   rg   rl   rm   rn   r  )kf_iterkf_iter_wrappedkf_randomized_iterkf_randomized_iter_wrappedsplits_are_equals        rE   test_cv_iterable_wrapperrz  =  s;   gmmAq!Gw'O JJ_""1a()40E0Ea0K+L
 t!<BB1aH!)*<!=JJ'--a34'--a34
!


&&q!,-+11!Q78	
   	C  ! !s    A$F F"!F"c           	      	   [         R                  R                  U5      nSnSnSn[         R                  " U5      =pxSU-  n	UR	                  SXE5      n
XV-  n[        [         R                  " U
5      5        [         R                  " U5      nU(       d  S OUnU " XaUS9n[        UR                  XxU
5      5       H  u  nu  nnXU'   M     [        U5      [        U
5      :X  d   e[         R                  " U5       H"  nU	[        [        X:H  5      U-
  5      :  a  M"   e   [         R                  " U
5       H-  n[        [         R                  " XU:H     5      5      S:X  a  M-   e   [         R                  " U
[        S9n
UR                  XxU
5       H2  u  nn[        [         R                  " U
U   U
U   5      5      S:X  a  M2   e   [         R                  " / S	Q5      n
[        [         R                  " U
5      5      n[        U
5      nSnSU-  n	XV-  n[         R                  " U5      =px[         R                  " U5      n[        UR                  XxU
5      5       H  u  nu  nnXU'   M     [        U5      [        U
5      :X  d   eU(       d<  [         R                  " U5       H"  nU	[        [        X:H  5      U-
  5      :  a  M"   e   [         R"                  " 5          [         R$                  " S
[&        5        [         R                  " U
5       H-  n[        [         R                  " XU:H     5      5      S:X  a  M-   e   S S S 5        [         R                  " U
[        S9n
UR                  XxU
5       H2  u  nn[        [         R                  " U
U   U
U   5      5      S:X  a  M2   e   U " XaUS9n[)        UR                  XxU
R+                  5       5      5      n[-        UR                  XxU
5      U5       H$  u  u  nnu  nn[/        UU5        [/        UU5        M&     [         R                  " / SQ5      n
[         R                  " [        U
5      5      =px[0        R2                  " [4        SS9   [7        [9        SS9R                  XxU
5      5        S S S 5        g ! , (       d  f       GNa= f! , (       d  f       g = f)Nr  r   r\   r  r   )rx   r   ra   r<   rh  )&AlbertJeanBertrandMichelr}  FrancisRobertr  RachelLoisMichelleBernardMarionLaurar}  r  FranckJohnGaelAnnaAlixr  r  DavidTonyAbelBeckyMadmoodCaryMary	Alexandrer  r  BarackAbdoulRashaXiSilviar   )r<   r<   r<   r5   r5   z%Cannot have number of splits.*greaterre   rI   r   )rg   r   r   r   r   r   r  r  ri   rV   r  r   ro   objectr  rh   r   r   r   FutureWarningrn   r  rj   r.   rs   rt   ru   r   r   )r   r   global_random_seedr   r>   rv   rx   rW   rX   	tolerancerT   ideal_n_groups_per_foldr  ra   lkfrd   r   r   groupr   lkf_copycv_itertrain1r,  train2test2s                             rE   test_group_kfoldr  ^  s    ))

 2
3C HIHGGIA y I[[H0F'3		&HHYE&4,>L

NC!#))A&"9:9Atd ; u:V$$$YYuCEJ2I IJJJJ  6"299UU?345::: # ZZf-Fyyv.t2>>&->?1DDD / XX'	
)FV 299V$%HFIHy I'3GGIA HHYE!#))A&"9:9Atd ; u:V$$$5!AC
O6M$M NNNN " 
	 	 	"h6YYv&Eryy!789Q>>> ' 
# ZZf-Fyyv.t2>>&->?1DDD /
 hlSH399Q6==?34G,/qV0Lg,V(&%66*5%( -W
 XXo&FGGCK  A	z)P	QZ#))!78 
R	Q+ 
#	"* 
R	Qs   !AR R2#R0
R-0
R>c                  ,   SS/SS/SS/SS/S	S
/SS/SS//n [         R                  " [        SS9   [        [	        SS9R                  U 5      5        S S S 5        [	        S5      nUR                  U S S 5      n[        U5      u  p4[        USS/5        [        USS/5        [        U5      u  p4[        U/ SQ5        [        USS/5        [	        S5      R                  U 5      n[        U5      u  p4[        U/ SQ5        [        USS/5        [        U5      u  p4[        U/ SQ5        [        USS/5        [	        S5      R                  U 5      n[        [        U5      5      nXQR                  5       :X  d   eUS:X  d   eg ! , (       d  f       GN8= f)Nr<   r5   rI   rM   r\   r]   r^   r_   r   rG   r   rF     r  z$Cannot have number of folds.*greaterre   r   r   r   r  r   r   r<   r5   rI   rM   )
rs   rt   ru   r   r   rV   r.   r   rn   rk   )rW   tscvr   r   r   r  s         rE   test_time_series_cvr    sz   
Q!Q!Q!Q!R2r(RHEA 
z)O	P_a(..q12 
Q 1D ZZ#2Fv,KEuq!f%taV$v,KEul+taV$Q%%a(Fv,KEui(taV$v,KEuo.taV$ Q%%a(F$v,'O//1111a= 
Q	Ps   "F
Fc                     [        X5       HL  u  u  p4u  pV[        XF5        [        U5      U::  d   e[        [        U5      U-
  S5      n[        XSUS  5        MN     g )Nr   )rj   r.   r   r   )r   check_splitsmax_train_sizer   r   check_train
check_testsuffix_starts           rE   !_check_time_series_max_train_sizer    s[    474M004,;>1113u:6:;lm(<=	 5NrZ   c                  2   [         R                  " S5      n [        SS9R                  U 5      n[        SSS9R                  U 5      n[	        XSS9  [        SSS9R                  U 5      n[	        XSS9  [        SSS9R                  U 5      n[	        XSS9  g )N)r]   r<   rI   r   )rx   r  )r  r5   r\   )rg   r  r   rV   r  )rW   r   r  s      rE   test_time_series_max_train_sizer    s    
Aa(..q1F"Aa@FFqIL%f1M #Aa@FFqIL%f1M #Aa@FFqIL%f1MrZ   c                     [         R                  " S5      n [        SSS9R                  U 5      n[	        U5      u  p#[        US/5        [        U/ SQ5        [	        U5      u  p#[        U/ SQ5        [        U/ SQ5        [	        U5      u  p#[        U/ SQ5        [        U/ S	Q5        [        S
S
SS9R                  U 5      n[	        U5      u  p#[        U/ SQ5        [        USS/5        [	        U5      u  p#[        U/ SQ5        [        USS/5        [        R                  " [        SS9   [        SS
S9R                  U 5      n[	        U5        S S S 5        g ! , (       d  f       g = f)NrG   r<   rI   )rx   r:   r   )r<   r5   rI   r  rM   r\   r]   )r   r<   r5   rI   rM   r\   r]   r^   r_   r   r5   rM   )rx   r:   r  r  r]   r^   )rM   r\   r]   r^   r_   r   zToo many splits.*with test_sizere   r\   	rg   r  r   rV   r   r.   rs   rt   ru   rW   r   r   r   s       rE   test_time_series_test_sizer    s&   
A a15;;A>Fv,KEuqc"tY'v,KEul+tY'v,KEu34tY' a1QGMMaPFv,KEul+taV$v,KEul+taV$ 
z)J	K !q9??BV 
L	K	Ks   /%E
E+c                     [         R                  " S5      n [        SSS9R                  U 5      n[	        U5      u  p#[        USS/5        [        U/ SQ5        [	        U5      u  p#[        U/ SQ5        [        U/ SQ5        [        S	SSS
9R                  U 5      n[	        U5      u  p#[        USS/5        [        USS/5        [	        U5      u  p#[        USS	/5        [        USS/5        [	        U5      u  p#[        USS/5        [        USS/5        [        SSSSS9R                  U 5      n[	        U5      u  p#[        U/ SQ5        [        USS/5        [	        U5      u  p#[        U/ SQ5        [        USS/5        [        SSS	S9R                  U 5      n[	        U5      u  p#[        USS/5        [        U/ SQ5        [	        U5      u  p#[        U/ SQ5        [        U/ SQ5        [        R                  " [        SS9   [        SSS9R                  U 5      n[	        U5        S S S 5        g ! , (       d  f       g = f)Nr  r5   )rx   gapr   r<   r  r  r  rI   )rx   r  r  rM   r\   r]   r^   r_   r   )rx   r  r  r:   r  r  )rx   r  r:   zToo many splits.*and gapre   r  r  s       rE   test_time_series_gapr  >  s   
A aQ/55a8Fv,KEuq!f%tY'v,KEuo.tY' aQqAGGJFv,KEuq!f%taV$v,KEuq!f%taV$v,KEuq!f%taV$ aQqANTTUVWFv,KEul+taV$v,KEul+taV$ aQ!<BB1EFv,KEuq!f%tY'v,KEuo.tY' 
z)C	D !399!<V 
E	D	Ds   	%H77
Ic                  v   [         R                  R                  S5      n [        SSSS9u  pU R	                  SSS5      n[        5       [        SS9[        5       [        SS9[        5       [        5       [        SSS9/n[        US5       H+  u  pV[        [        5       S	S
S/0USS9n[        XqX#USU0S9  M-     g )Nr   r  r5   )rv   	n_classesra   r\   r   rI   )rx   ra   strategy
stratifiedmost_frequentraise)
param_gridr   error_scorerT   )rW   rX   rT   r   params)rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   rW   rX   rT   cvsinner_cvouter_cvgss           rE   test_nested_cvr  w  s     ))


"CqqIDA[[Ar"F 	#A:C <CC"\?$CD	
 	qHh=O	
 DrZ   c                  H     " S S5      n [        U " SS5      5      S:X  d   eg )Nc                   $    \ rS rSrSS jrS rSrg)%test_build_repr.<locals>.MockSplitteri  Nc                 (    Xl         X l        X0l        g r@   r  r  r  )selfr  r  r  s       rE   __init__.test_build_repr.<locals>.MockSplitter.__init__  s    FFFrZ   c                     [        U 5      $ r@   )r    )r  s    rE   __repr__.test_build_repr.<locals>.MockSplitter.__repr__  s    t$$rZ   r  )r   N)rB   
__module____qualname____firstlineno__r  r  __static_attributes__r  rZ   rE   MockSplitterr    s    	
	%rZ   r  r\   r]   zMockSplitter(a=5, b=6, c=None))rr   )r  s    rE   test_build_reprr    s)    % % Q"#'GGGGrZ   
CVSplitterc           
          U " SS9nS//S/p2[         R                  " [        SS9   [        [	        XUS/S95        S S S 5        g ! , (       d  f       g = f)Nr<  r9   r<   r   [With n_samples=1, test_size=0.99 and train_size=None, the resulting train set will be emptyre   rS   )rs   rt   ru   r   rY   )r  r   rW   rX   s       rE   !test_shuffle_split_empty_trainsetr    sT     
d	#BC51#q	4
 	VB1aS)*
 
 
s   A
Ac                     S//u  n [         R                  " [        SS9   [        U SS9  S S S 5        S/S/S//n [         R                  " [        SS9   [        U SS9  S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nr<   r  re   r<  r9   z[With n_samples=3, test_size=0.67 and train_size=None, the resulting train set will be emptygq=
ףp?)rs   rt   ru   r   r   s    rE   $test_train_test_split_empty_trainsetr    s    C5DQ	4
 	d+
 qcA3A	4
 	d+
 

 

 
s   A(A9(
A69
Bc                      [        5       n S//S/p![        R                  " [        SS9   [	        U R                  X5      5        S S S 5        g ! , (       d  f       g = f)Nr<   r   z+Cannot perform LeaveOneOut with n_samples=1re   )r   rs   rt   ru   r   rV   r   rW   rX   s      rE   !test_leave_one_out_empty_trainsetr    sB    	BC51#q	z)V	WRXXa^ 
X	W	Ws   A
Ac                      [        SS9n S/S//SS/p![        R                  " [        SS9   [	        U R                  X5      5        S S S 5        g ! , (       d  f       g = f)Nr5   r6   r<   r   rI   z6p=2 must be strictly less than the number of samples=2re   )r   rs   rt   ru   r   rV   r  s      rE   test_leave_p_out_empty_trainsetr    sR    	QBC!:1vq	R
 	RXXa^
 
 
s   A
AKlassc                 z    [         R                  " [        SS9   U " SSSS9  S S S 5        g ! , (       d  f       g = f)Nz$has no effect since shuffle is Falsere   rI   Fr   r	  )rs   rt   ru   )r  s    rE   test_random_state_shuffle_falser    s,    
 
z)O	PaQ/ 
Q	P	Ps   	,
:zcv, expected{   r	  r`   c                 &    [        U 5      U:X  d   eg r@   )r"   )r   rJ  s     rE   test_yields_constant_splitsr    s    L #2&(222rZ   r   c                     [        U S5      (       d   eU R                  5       nU [        ;   a  UR                  R                  S   SL d   eO'U [
        ;   a  UR                  R                  (       a   e[        US/S9  g)z>Check get_metadata_routing returns the correct MetadataRouter.get_metadata_routingrT   TrV   )excludeN)hasattrr  GROUP_SPLITTERSrV   requestsNO_GROUP_SPLITTERSr$   )r   metadatas     rE   "test_splitter_get_metadata_routingr    ss     2-....&&(H	_~~&&x0D888	!	!>>****Hwi8rZ   c                 |    U [         ;   a  [        U S5      (       d   egU [        ;   a  [        U S5      (       a   egg)zJCheck set_split_request is defined for group splitters and not for others.set_split_requestN)r  r  r  r=  s    rE   test_splitter_set_split_requestr    sE     
_r.////	!	!2233333 
"rZ   c                 l   SU R                   R                   3nSn[        R                  R	                  S5      nUR                  SSUS4S9nUR                  SSU4S9nUR                  SSU4S9n[        R                  " [        US9   U R                  XEUS	9  S S S 5        g ! , (       d  f       g = f)
Nz#The groups parameter is ignored by r   r<   r   rI   r5   r   re   rS   )
rA   rB   rg   r   r   r   rs   r   UserWarningrV   )r   r   rv   r   rW   rX   rT   s          rE   )test_no_group_splitters_warns_with_groupsr  "  s    /0E0E/F
GCI
))


"CAq	1~.AAq	|,A[[AYL[1F	k	-
f% 
.	-	-s   B%%
B3c                     Sn[         R                  " [        US9   U R                  [        5        S S S 5        g ! , (       d  f       g = f)Nz+missing 1 required positional argument: 'y're   )rs   rt   r   rV   rW   )r   r   s     rE   "test_stratified_splitter_without_yr  0  s.     8C	y	,
 
-	,	,s	   ;
A	r@   )__doc__r  r   	itertoolsr   r   r   numpyrg   rs   scipyr   scipy.sparser   scipy.specialr   sklearnr	   sklearn.datasetsr
   r   sklearn.dummyr   sklearn.model_selectionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sklearn.model_selection._splitr    r!   r"   sklearn.svmr#   %sklearn.tests.metadata_routing_commonr$   sklearn.utils._array_apir%   r&   r'   r(   r*   r   sklearn.utils._mockingr+   sklearn.utils._testingr,   r-   r.   r/   sklearn.utils.estimator_checksr0   sklearn.utils.fixesr1   r2   r3   sklearn.utils.validationr4   r  r  r   rU   ALL_SPLITTERSSPLITTERS_REQUIRING_TARGETr   rW   r   rX   rh   r  r?  markfilterwarnings
pytestmarkrY   r   r   r   r   r   r   r   r   parametrizer   r   r  r  r  r"  r0  r9  rD  rG  rM  ro   rQ  rg  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rP  r  r0  r:  r>  rF  rJ  rN  r^  r`  rc  re  rk  rs  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r   r  r  r  r  r=  s   0rE   <module>r     s    	  O O    !  " = )     * 
  I  1  O N 1 
GMNNS)L!O  LQ WWW "_4   GGBKIIbMQHH12HH12HH:;HH=>(@ 
[[''6

$R*j$!N	:?$F(R* ).(V UDM245?4H"IJ# K 6 3#0 UDM2i(?4H"IJ* K ) 3*>" ?4H"IJ& K&&!. 5/;O"PQ> R>>".?0)X#$#$  HHaS1WsQw&'HH9:JJc
S#Jc
;<	
 HHaS1WsQw&'HH9:JJttTlT4LAB	
== &VW[1! 2 X!6) 7M(NO%'M	# P	# %'M
#
#>2	&"@J15hC"723.)""J4.nG,0( >F 7N'OP1 Q1:34<@8 %'M## )-/'  
 	ryy"''!*bhhqk234	33l .9,< :,<^4.4" 7.H77520 WP	P
Q	L;+\B :/C"DET5M2|9 3 F|9~" J>N F6r 
 
:
H <!24JK
+
+,, e_&:JG00 !	$!	t#	.5! 
	D!! 
C	8$?	!
 
d	=tD! 
	&! 
C	($/! 
!c	2D9! 
3	'.! 
	,d3! 
 S	148! 
t! 
Ds	3T:! 
	D!! 
!  
	T"!!" 
!	$d+#!$ 
Q%!& 
t$	/7'!( 
t$	/7)!* 
BII4I4I!4L	MuU+!, 
BII4I4I!4L	MuU-!. 
D	)51/!0 
BII$9$9!$<	=uE1!2 
!d	3U;3!4 
!bii.C.CA.F	GO5!6 
4	(%07!8 
299#8#8#;	<eD9!: 
	-u5;!< 
		(=(=a(@	A5I=!> 
 T	2E:?!@ 
 RYY-B-B1-E	FNA!$J3K$J3 }]2S]r3r7]2ST	9 U	9 }]2S]r3r7]2ST4 U4 1s;
& <
& 
$=W*X=Wr3r7=W*X  O 3T 3T0 +Ys   f
f#f