
    Mpj'                    $   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K3J4r5  SSK3J6r6J7r7J8r8  SSK9J:r:  SSK;J<r<J=r=J>r>J?r?  SSK@JArA  SSKBJCrCJDrDJErE  SSKFJGrG  \" 5       \%" 5       \'" 5       \" 5       \" SS9\#" 5       \&" SS9\ " / SQ5      \!" 5       \"" 5       /
rH\" 5       \" SS9\$" 5       \" 5       \" 5       /rI\J" S \I 5       5      rK\H\I-   rL\%" 5       \&" 5       \"" 5       /rM\R                  " S5      rO\R                  " S5      S-  rQ\R                  " / SQ5      \R                  " / SQ5      \R                  " / S Q5      \R                  " / S!Q5      / SQ/ S"Q4rS\" 5       rT\	R                  R                  S#5      rWS$ rXS% rYS& rZSS' jr[S( r\S) r]S* r^S+ r_S, r`\	R                  R                  S-S.S//5      \	R                  R                  S0/ S1Q5      \	R                  R                  S2\%\$/5      S3 5       5       5       rb\	R                  R                  S-S.S//5      \	R                  R                  S0/ S4Q5      \	R                  R                  S2\%\$/5      S5 5       5       5       rcS6 rd\	R                  R                  S2\%\$/5      S7 5       reS8 rf\	R                  R                  S2\\%\$/5      S9 5       rgS: rhS; riS< rjS= rkS> rl\	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       rnSH ro\	R                  R                  SI/ SJQ5      \	R                  R                  SK/ SLQ5      SM 5       5       rpSN rq\	R                  R                  SO\#\&/5      \	R                  R                  SP/ SQQ5      SR 5       5       rr\	R                  R                  SP/ SSQ5      ST 5       rsSU rtSV ruSW rvSX rwSY rxSZ ryS[ rzS\ r{S] r|S^ r}S_ r~S` rSa rSb r\	R                  R                  Sc\!\"/5      Sd 5       rSe rSf rSg rSh rSi r\	R                  R                  SP/ SjQ5      Sk 5       r\	R                  R                  Sl\8" 5       5      \	R                  R                  SmSnS/\GR                  " \R                  " S@5      \GR                  " So5      45      4Sp45      Sq 5       5       r\	R                  R                  Sr\C5      Ss 5       rSt rSu r\	R                  R                  Sv\C\D-   \E-   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\L\L V s/ s H  n \" U 5      PM     sn S9S 5       r\	R                  R                  S\L\L V s/ s H  n \" U 5      PM     sn S9S 5       r\	R                  R                  S\H\S9S 5       r\	R                  R                  S\M\M V s/ s H  n \" U 5      PM     sn S9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device)get_namespacemove_to)yield_namespace_device_dtype_combinations)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;   r4   r4   r;   n_groupsc              #   L   #    U  H  oR                   R                  v   M     g 7fN)	__class____name__).0splitters     d/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/sklearn/model_selection/tests/test_split.py	<genexpr>rE   U   s     W8--66s   "$
   r;   r;   r;   r;   r4   r4   r4      rH   rH   rH   rH   r   r   r   r;   r;   r;   r4   r4   r4   rH   rH   rH   r   r;   r4   rH   r   r;   r4   rH   r   r;   r4   rH   r   r;   r4   r;   r;   r4   r4   r4   rH   rH   rH      rL   rL   rL   rL   rL   rL   rL   1rN   rN   rN   2rO   rO   3rP   rP   rP   rP   z0error:The groups parameter:UserWarning:sklearn.*c                     U R                   R                  [        ;   a  U R                  XUS9$ U R                  X5      $ )Ngroups)r@   rA   GROUP_SPLITTER_NAMESsplit)rC   XyrS   s       rD   _splitrX   p   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)NrL   r4   rF   r;   rH               )r;   r4   rH   rL   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listrX   asarraydtypekindreprpytestraises
ValueError)"	n_samplesn_unique_groupsn_splitsr6   n_shuffle_splitsrV   X_1drW   rS   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_expectedrc   cvcv_reprtraintestmsgs"                                     rD   (test_cross_validator_with_default_paramsr   w   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       [        SS	9[        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   rH   r4   sizer5   rw   r7   r8   r<   )	test_foldrR   )binary
multiclassz/Supported target types are: {}. Got 'multilabel)rf   randomRandomStaterandintreshaper   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rm   rX   rt   formatstr)ru   rngrV   rW   y_2dy_multilabelrS   	splittersrC   eallowed_target_typesr   s               rD   	test_2d_yr      sj   I
))


"CAq	1~.AAq	|,A99RD;;q!9a.;9L[[AYL[1FA!a(-#A&)I" VH23VH56	!\AB	 
  	!#; CJJ$C #a&= =	!s   -E
E>$E99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   ru   s      rD   check_valid_splitr      sZ    e*c$i4 d#su,,,{{4 Ci(8$9999 rY   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   )ru   r;   )r3   rj   r   rU   r   updater   )
r   rV   rW   rS   expected_n_splitsru   collected_test_samples
iterationsr   r   s
             rD   check_cv_coverager      s    QI??1(,==== UJxxf-%;a
%%d+ . ***%U9-=)>>>> rY   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;   r4   rH   rL   r[   r\   r]   r^   	   rF   )rH   rH   r   r   rH   zThe least populated classrd   ignorerS   r   )rH   rH   r   r   r4   r   z>k-fold cross-validation requires at least one train/test split      ?       @rw   shuffle)rf   rg   rt   nextr   rU   r   rr   warnsWarningr   arangelenwarningscatch_warningssimplefilterr   rs   	TypeError)X1X2rW   skf_3sgkf_3naive_groupserror_strings          rD   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   rH   )rW   rS   r      r[   )rf   onesr   r   rj   )r   r|   r   s      rD   test_kfold_indicesr   Z  sk    	B	qBbTQG 
B	qBbTQG a%%b))))rY   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;   r4   rH   rL   r[   r\   r]   r^   r   rF   r   r   r   r;   r4   )r   rU   r   r-   )r   splitsr   r   s       rD   test_kfold_no_shuffler   j  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(rY   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 )NrL   )r;   r;   r   r   r4   r   r;   rH   r]   )r;   r;   r;   r   r   r   r   )r   r;   rH   rL   )r4   r[   r\   r[   )rN   rN   rN   0r   r   r   )r   r;   r   r;   r   r;   r   r;   )rf   r   r   rU   r   r-   rj   rk   rl   rm   	ones_liker   )rV   rW   r   r   r   y1y2s          rD    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rY   r   FTk)rL   r[   r\   r]   r^   r   rF   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  rL   皙?r   {Gz?r;   {Gz?r`   r   rR   {Gz?atol)rf   r   rg   intr   r   bincountrX   r+   appendptp)r   r   r   ru   rV   rW   rS   distr
test_sizesr`   r}   r   r   s                rD   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*"""rY   )rL   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   r4   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   rR   )rX   rm   )	rW   r`   r   r   rV   rS   r   r   r   s	       rD   
get_splits:test_stratified_kfold_label_invariance.<locals>.get_splits  s`    #*t  &alGD	 
  %[$t*% 
 	
 
s   "Ar   )rf   rg   r   r   r   r   r   take)r   r   r   ru   rW   r   splits_basepermy_permsplits_permrV   rS   s   ```       @@rD   &test_stratified_kfold_label_invariancer     s    
 I
	
c$"###D9$%
%	&#D9$%
%	&	A
 	AAYYs1vF

 

 Q-KY'! ())) (rY   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[   rV   r;   )	r   r   rU   rf   r   r   maxminsum)rc   r|   _r   sizess        rD   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   rH   r;      TFr   r   )	rf   r   r   r   r   rX   r   r   r   )r   rV   rW   rS   r   r   rc   r}   r   r   r   s              rD   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 )NrH   Tr   r   r`   r;   ,  r4   )
r   rf   r   zerosri   rU   r   r   intersect1dr   )r|   kf2kf3rV   	all_foldstr1te1tr2te2tr3te3tr_atr_bs                rD   test_shuffle_kfoldr    s    	qB
4a
0C
4a
0C
AI.1
SYYq\399Q</*
JS
 '#:JDr~~d12c#h>>> ;
 	/ y>S   rY   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^      rH   Tr  )rf   r   r   r   rk   rl   rm   rX   r   r   ri   rr   rs   AssertionErrorr-   )r   rV   rW   groups_1r   r   groups_2r|   datar   test_atest_bs               rD   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   rF   )
rf   r   r   ri   rU   r   r   r   sortedtuple)X_40rW   kf0kf1r   test0test1rV   r  s	test_set1	test_set2s               rD   test_shuffle_stratifiedkfoldr/  >  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;   rH   rL   Tr  z6Test groups should differ with different random states)r   )rf   r   r   r   rU   r   ri   r   )rV   rW   rS   gkf0gkf1r   test_idxtest_groups0test_groups1g0g1s              rD   test_shuffle_groupkfoldr8  U  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  rF   g{Gzt?)CgammarH   Fr   r   gq=
ףp?皙?Tr   r  r;   gGz?)digitsr  targetr#   r   r   meanr   )rV   rW   modelrw   r   
mean_scores         rD   1test_kfold_can_detect_dependent_samples_on_digitsrC  m  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*rY   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 )NrH   r   r;   r\   r      r   )r;   r4   rH   rL   r[   r\   r;   r;   r4   r4   rH   rH   rL   rL   r[   r[   r\   r\   r   r   )r   rf   rg   r   r   rn   r   r   rU   r  r   r+   r   r   )r   rW   rV   rS   r   r   r   r   s           rD   #test_stratified_group_kfold_trivialrF    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*"""rY   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 )NrH   r   r;   r\   r   rE  r   )r;   r4   rH   rH   rL   rL   r;   r;   r4   r4   rH   rL   r[   r[   r[   r\   r\   r\   g-?gsh|??gZd;O?gZd;O?r7   MbP?r   )r   rf   rg   r   r   rn   ri   rU   r  r   r   r   r+   r   r   )
r   rW   rV   rS   expectedr   r   r   expect_dist
split_dists
             rD   'test_stratified_group_kfold_approximaterL    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*"""rY   zy, groups, expectedr\   )r;   r;   r4   r4   rH   rH   rL   rL   r[   r[   r\   r\   r   rH   )r;   r;   r;   r4   r4   r4   rH   rH   rH   rL   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 )NrH   r   r   r;   r   rH  r   )r   rf   r   r   ri   rU   r  r   r   r   r+   )	rW   rS   rI  r   rV   r   r   rJ  rK  s	            rD   .test_stratified_group_kfold_homogeneous_groupsrP    s       +D
QA&A&)$**Q6*BH&M"{~~fmV\:??1DDD[[)CI5

e<	 'NrY   c                     [         R                  " S/S-  S/S-  -   5      n [         R                  " [        U 5      S45      n[         R                  " / SQ5      n[         R                  " SS/5      nSn[        U5       H  n[        S	S
US9n/ nUR                  XU5       H  u  p[         R                  " X(   X)   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::  a  M   e   g )Nr   rE  r;   r\   )r;   r;   rH   rH   rH   rL   r[   r[   r[   r[   r]   r]   r4   r4   r\   r\   r^   r^   gUUUUUU?UUUUUU?r   rH   Trw   r   r`   g:0yE>r   )rf   rg   r   r   rn   r   r   rU   r  r   r+   r   r   r   )
rW   rV   rS   expected_class_ratiosn_itersseedr   r   r   r   s
             rD   <test_stratified_group_kfold_shuffle_preserves_stratificationrW    s8    	!rQC!G#$A
QA XXLMFJJ'9: Gg#Q4P
::aF3KE>>&->CCqHHHAH%E
24IPT AG$s4y02Gd c$i( 4 vvj!Q&&& rY   	cls_distr))g?333333?)g333333?ffffff?)皙?r=  )r=  r[  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   r4   )r   r6   r   r;   rR   )qk)r   r   rf   r   r   choicer   r   rU   ri   r  r   r   r   r   entropy)rX  r=   rw   r   gkfr   n_pointsrW   rV   g
sgkf_folds	gkf_folds	sgkf_entrgkf_entr
sgkf_train	sgkf_testr   gkf_test
sgkf_distr	gkf_distrs                       rD   /test_stratified_group_kfold_against_group_kfoldrm    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   rY   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 )Nr[  r   r9   r`   r4   r;   )r   rU   rV   rf   int32ri   r-   )ss1ss2ss3ss4t1t2t3t4s           rD   test_shuffle_splitry    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%( 2rY   split_classztrain_size, exp_train, exp_test))Nr   r;   r^   r^   r4   r=  r^   r4   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 NrF   
train_size)rf   r   r   rU   r   )rz  r  	exp_trainexp_testrV   rW   X_trainX_tests           rD   $test_shuffle_split_default_test_sizer     s^     	A
A;*=CCAIJOGw<9$$$v;("""rY   ))Nr^   r4   )r]   r]   rH   )rZ  r]   rH   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 r~  )rf   r   r   r   r   rU   r   )r  r  r  rV   rW   rS   r  r  s           rD   *test_group_shuffle_split_default_test_sizer  0  sk     	A
A2YF,
CII!PVWXOGw<9$$$v;("""rY   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;   r4   r4   r4   rH   r[  r8   r4   r9   r  r   )	r   r   r   r;   r;   r;   r4   r4   r4   r  )	rf   r   rn   rr   rs   rt   r   r   rU   rV   rW   s     rD   "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 )NrJ   r[   rF   r\   r   )r9   r  r`   )rf   rg   r   rU   r   r   )rW   r9   r  sssr   r   s         rD   0test_stratified_shuffle_split_respects_test_sizer  Y  sy    
>?AIJ
 	YAeBGGCFOQ  5zZ'''4yI%%% rY   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 )NrG   rI   rJ   r4   rK   r   i   r;   2   r   r   rM   r\   gQ?r   ro  T)return_inverse)rf   rg   concatenater   r   rU   r   r   
asanyarrayceilr-   uniquer   floatr,   r   r  )
rc   ysrW   r  r9   r  r   r   p_trainp_tests
             rD   "test_stratified_shuffle_split_iterr  e  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_countsr6   	thresholdbfcountprobrw   s         rD   assert_counts_are_ok@test_stratified_shuffle_split_even.<locals>.assert_counts_are_ok  sK     8O	[[1%E66%=D# O#  rY   )r\      r4   r   r;         ?rw   r9   r`   r  r  )rf   rg   r   rU   r   r!   r   r   r   r  r9   r  )n_foldsr  ru   rS   r   train_countstest_countsn_splits_actualr   r   counteridsidn_trainn_testgroup_counts	ex_test_p
ex_train_prw   s                     @rD   "test_stratified_shuffle_split_evenr    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 rY   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;   r4   rH   rH   rL   r[   r;   r7   r   r  r  )
rf   r   r   r   rU   r-   r  union1dr   r   )rW   rV   r  r   r   s        rD   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BrY   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;   r7   r  r  )rf   rg   r   r   r   rU   r-   r  r  r   r   r@  )rW   rV   r  r   r   y_trainy_testexpected_ratios           rD   (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)rY   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;   rF   r   r7   r  r  rL   )rf   rg   r   r   r   rU   r@  )
row_with_many_zerosrow_with_many_onesrW   rV   r  r   r   r  r  r  s
             rD   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2rY   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 )NrF   g      r[   Tr  )rf   fullrh   r   rU   rV   r   r   r   r  rj   ri   r-   )	foldskf_trainkf_testrc   	train_indtest_indr   ps_trainps_tests	            rD   %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(rY   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\   rR  r   ro  rR   r;   r  )test_groupsrf   r   r   r   rq   rj   r  rn   rU   anyisinr   r-   r  absround)groups_irV   rW   rw   r9   slol_uniquelr   r   l_train_uniquel_test_uniques               rD   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# <  rY   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<   r4   ra   zLeavePGroupsOut(n_groups=1)rb   rH   zLeavePGroupsOut(n_groups=3)rR   r   )abcr  r  )r  皙?r  g333333?rL   r\   g        z*The 'groups' parameter should not be None.rd   )r   r   rq   rh   r  r   rf   r  r   rj   rn   rU   r-   r  tolistshaper   rr   rs   rt   naninf)logolpgo_1lpgo_2jr   p_groups_outrc   r  r=   rw   rV   rW   
groups_arrr   r   r   s                   rD   test_leave_one_p_group_outr  5  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;   r4   r;   r;   r4   r   r   T)copyrR   r4   r<   r   rH   )rW   rS   )
rf   rg   r   r   r   rU   r   ri   r-   rj   )rS   rV   groups_changingr~   lolo_changinglplolplo_changingllollo_changingr   r   
train_chan	test_chans                rD   $test_leave_group_out_changing_groupsr  l  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FrY   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)r4   r4   r   r   r;   r;   rR   )r   r;   rL   r[   r4   rH   r  rL   r[   r4   rH   rL   r[   r   r;   )	rf   rg   r   r   iterr   rU   r   r-   )rS   rV   r   expected_indicesexpected_trainexpected_testr   r   s           rD   %test_leave_group_out_order_dependencer    s     XX()F
FA"$**1*<=F 
1v	1v	1v *:%6l514/ *:rY   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)rd   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 presentrH   r<   )rf   r   reescaperr   rs   rt   r   r   rU   r   r   )rV   rW   rS   r   s       rD   :test_leave_one_p_group_out_error_on_fewer_number_of_groupsr     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   rr   rs   rt   r<  s    rD   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)r4   r\   rw   r  z.{}(n_repeats=6, n_splits=2, random_state=None))r   r@   rA   rq   )r  rw   r  repeated_cvrepeated_cv_reprs        rD   test_repeated_cv_reprr	    sI    HhDKGNN&& tK0000rY   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;   r4   rH   rL   r[   r\   r]   r^   r   rF   i{icrw   r  r`   )r   r;   rH   r   )r4   rH   rL   )r   r   rU   r   r-   rr   rs   StopIteration)rV   r`   rkfr   r   r   r   s          rD   'test_repeated_kfold_deterministic_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 NrH   rL   r  )r   rj   )rw   r  r  r   s       rD   $test_get_n_splits_for_repeated_kfoldr    s4    HI

?C , 0 0 2222rY   c                  P    Sn Sn[        XS9nX-  nX2R                  5       :X  d   eg r  )r   rj   )rw   r  rskfr   s       rD   /test_get_n_splits_for_repeated_stratified_kfoldr    s4    HI"HJD , 1 1 3333rY   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;   r4   rH   rL   r[   r\   r]   r^   r   rF   )r;   r;   r;   r   r   iqsr  )r   r4   rH   )r   r;   rL   )r   r   rU   r   r-   rr   rs   r  )rV   rW   r`   r  r   r   r   r   s           rD   2test_repeated_stratified_kfold_deterministic_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)NrH   r  r  rY  r  
wrong_typer8   r4   rL   )some_argument*   rF   FT)r   stratifyzrtrain_size=11 should be either positive and smaller than the number of samples 10 or a float in the \(0, 1\) rangerd   r   r;   )r  r9   )rr   rs   rt   r   r   rf   float32r    rY   rD   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]   rH   r{  r|  c                 h    [        [        U S9u  p4[        U5      U:X  d   e[        U5      U:X  d   eg )Nr  )r   rV   r   )r  r  r  r  r  s        rD   'test_train_test_split_default_test_sizer   3  s6     'qZ@OGw<9$$$v;("""rY   z(array_namespace, device_name, dtype_namezshuffle,stratify)TNrL   )FNc           	         [        X#U5      u  pV[        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  pnn[        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[        U5      [        U
5      :X  d   e[        U5      [        U5      :X  d   e[        U5      [        U
5      :X  d   e[        U5      [        U5      :X  d   e S S S 5        WR                  U
R                  :X  d   eWR                  UR                  :X  d   eWR                  U
R                  :X  d   eWR                  UR                  :X  d   e[        [        U[        S
S9U5        [        [        U[        S
S9U5        g ! , (       d  f       N= f)Nr   rF   rF   rF   r%   r   )r`   r   r  T)array_api_dispatch)r   r  r`   cpu)xpr&   )r/   rf   r   r   astypern   r   r	   r'   array_api_devicero   r+   r(   )r   r  array_namespacedevice_name
dtype_namer%  r&   rV   rW   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                         rD   test_array_api_train_test_splitr8  ?  sV     &oJOJB
		#x(A
		"A88JD::d:*D88JD::d:*D3Ca40J:y 
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  
+/?/EEEE
+/?/EEEE	*.>t.DDDD	*.>t.DDDD) 
1, tzz)))tzz)))??djj(((??djj(((
r%0 	b/? 
1	0s   "D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"  rF   r7   r  r   r	  r[   rH   r4   i  r]   r   )r]   r[   rH   r4   r;   )rH   r[   rH   r4   )r]   r]   r   )rH   r]   r   )r;   r;   r;   r;   r4   r4   r4   r4   )r4   rL   rN  r7   rM  )r4   rL   r4   rL   r\   )r9   r  r`   )r4   r[  F)r   r9   r^   r   )r   r;   r4   rH   rL   r[   r\   r]   )rf   r   r   r   r   r-   r  
isinstancerm   r  rg   ri   r   )r9  rV   X_srW   rU   r  r  r  r  	X_s_trainX_s_testX_4dy_3dr9   exp_test_sizer   r   s                    rD   test_train_test_splitrB    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":; rY   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?rN  )r  r  N)rf   r   r   r   )
big_numberrV   rW   rU   r  r  r  r  s           rD   $test_train_test_split_32bit_overflowrF    sv     J 			*A	TJAQA$?E',$GW<<&++%333<<&++%333rY   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*   pandasrH  r   ImportErrorrV   r   r;  )typesrH  InputFeatureTypeX_dfr  r  s         rD   test_train_test_split_pandasrN    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)rf   r   r   r   r   r   )rO  rV   r<  r  r  s        rD   test_train_test_split_sparserR    sm     			#x(A
1
C&s+OGG5!888F 666 6rY   c                      [        [        5      n [        U 5      u  p[        U[         5      (       d   e[        U[         5      (       d   e[        U 5      u  p4g r?   )r*   rV   r   r;  )rM  r  r  X_train_arr
X_test_arrs        rD   !test_train_test_split_mock_pandasrV    sM    D&t,OGg}----fm,,,,.t4KrY   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]   rN   rL   r   rH   r  r   )r  r`   )rf   r   hstackr
  r  r   rk   rl   )rV   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                    rD    test_train_test_split_list_inputrf    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 "rY   ztest_size, train_size))r   N)r  N)r   gffffff?)Ny              ?)r   N)rF   N)r^   rH   c                     [         R                  " [        5         [        [	        XS9R                  [        5      5        S S S 5        g ! , (       d  f       g = f)Nr  )rr   rs   rt   r   r   rU   rV   r  s     rD   test_shufflesplit_errorsrh    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-   rU   rV   )r   r  r  s      rD   test_shufflesplit_reproduciblerk    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 )	Nr4   r  ro  r]   rN   rL   r   rH   )
r   rf   r   rX  r
  r  rk   rl   rm   rU   )r  rV   r   r   rY  s        rD   &test_stratifiedshufflesplit_list_inputrm    s    
 12
>C

A
cUQY	B	BGGAJ,	-B	BJJD1!12D19I4JKJJD1!12D19I4JKrY   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   ro   rF   r   r4   r   r;   r[  r  ro  )rf   r   float64r   r  repeatr  r   r  s     rD    test_train_test_split_allow_nansrs  $  s`    
		#RZZ(00R8AffAadG
		1a&!''!*q.)AQSr:rY   c            	      n   [         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        Sn[        R                  " [        US9   [        SS9  S S S 5        g ! , (       d  f       g = f)Nr   rH   F)
classifier)	r   r;   r   r;   r   r   r;   r;   r;   T)	r   r;   r   r;   r4   r;   r4   r   r4   r   r;   r   r[   )r   r   r   r   )r   r;   r;   r   )r   r   r   r;   )r;   r;   r   r;   )r   r   r;   r   r4   z6Expected `cv` as an integer, a cross-validation objectrd   r~   r<  )rf   r   r   rk   rl   rm   r   rU   rg   r   r   allr   rr   rs   rt   )rV   r   y_binaryy_multiclassy_multiclass_2dr   y_multioutputr   s           rD   test_check_cvr{  ,  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
BC	z	-F 
.	-	-s   
N&&
N4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   rU   rV   rW   r   rf   rk   rl   rm   r  )kf_iterkf_iter_wrappedkf_randomized_iterkf_randomized_iter_wrappedsplits_are_equals        rD   test_cv_iterable_wrapperr  [  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        U " SS9R                  XxU
5      5        S S S 5        g ! , (       d  f       GN^= f! , (       d  f       g = f)Nr  r   r[   r  r   rS  r;   rp  )&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;   r4   r4   z%Cannot have number of splits.*greaterrd   rH   r   )rf   r   r   r   r   r   r  r
  rh   rU   r  r   rn   objectr  rg   r   r   r   FutureWarningrm   r  ri   r-   rr   rs   rt   r   )r   r   global_random_seedr   r=   ru   rw   rV   rW   	tolerancerS   ideal_n_groups_per_foldr  r`   lkfrc   r   r   groupr   lkf_copycv_itertrain1r+  train2test2s                             rD   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UA$$Q623 
R	Q+ 
#	"* 
R	Qs   !AR R2 R-
R*-
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;   r4   rH   rL   r[   r\   r]   r^   r   rF   r   rE     r  z$Cannot have number of folds.*greaterrd   r   r   r   r  r   r   r;   r4   rH   rL   )
rr   rs   rt   r   r   rU   r-   r   rm   rj   )rV   tscvr   r   r   r  s         rD   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   )ri   r-   r   r   )r   check_splitsmax_train_sizer   r   check_train
check_testsuffix_starts           rD   !_check_time_series_max_train_sizer  "  s[    474M004,;>1113u:6:;lm(<=	 5NrY   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;   rH   r   )rw   r  )r  r4   r[   )rf   r
  r   rU   r  )rV   r   r  s      rD   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MrY   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rF   r;   rH   )rw   r9   r   )r;   r4   rH   r  rL   r[   r\   )r   r;   r4   rH   rL   r[   r\   r]   r^   r   r4   rL   )rw   r9   r  r  r\   r]   )rL   r[   r\   r]   r^   r   zToo many splits.*with test_sizerd   r[   	rf   r
  r   rU   r   r-   rr   rs   rt   rV   r   r   r   s       rD   test_time_series_test_sizer  9  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  r4   )rw   gapr   r;   r  r  r  rH   )rw   r  r  rL   r[   r\   r]   r^   r   )rw   r  r  r9   r  r  )rw   r  r9   zToo many splits.*and gaprd   r  r  s       rD   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                  t   [         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       [        SS9[        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  r4   )ru   	n_classesr`   r[   r   rH   )rw   r`   strategy
stratifiedmost_frequentraise)
param_gridr   error_scorerS   )rV   rW   rS   r   params)rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   rV   rW   rS   cvsinner_cvouter_cvgss           rD   test_nested_cvr    s     ))


"CqqIDA[[Ar"F 	#Aa(:C <CC"\?$CD	
 	qHh=O	
 DrY   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       rD   __init__.test_build_repr.<locals>.MockSplitter.__init__  s    FFFrY   c                     [        U 5      $ r?   )r    )r  s    rD   __repr__.test_build_repr.<locals>.MockSplitter.__repr__  s    t$$rY   r  )r   N)rA   
__module____qualname____firstlineno__r  r  __static_attributes__r  rY   rD   MockSplitterr    s    	
	%rY   r  r[   r\   zMockSplitter(a=5, b=6, c=None))rq   )r  s    rD   test_build_reprr    s)    % % Q"#'GGGGrY   
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)NrD  r8   r;   r   [With n_samples=1, test_size=0.99 and train_size=None, the resulting train set will be emptyrd   rR   )rr   rs   rt   r   rX   )r  r   rV   rW   s       rD   !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  rd   rD  r8   z[With n_samples=3, test_size=0.67 and train_size=None, the resulting train set will be emptygq=
ףp?)rr   rs   rt   r   r   s    rD   $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=1rd   )r   rr   rs   rt   r   rU   r   rV   rW   s      rD   !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)Nr4   r5   r;   r   rH   z6p=2 must be strictly less than the number of samples=2rd   )r   rr   rs   rt   r   rU   r  s      rD   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 Falserd   rH   Fr   r  )rr   rs   rt   )r  s    rD   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   rI  s     rD   test_yields_constant_splitsr    s    L #2&(222rY   r   )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_routingrS   TrU   )excludeN)hasattrr  GROUP_SPLITTERSrU   requestsNO_GROUP_SPLITTERSr$   )r   metadatas     rD   "test_splitter_get_metadata_routingr  *  ss     2-....&&(H	_~~&&x0D888	!	!>>****Hwi8rY   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    rD   test_splitter_set_split_requestr  7  sE     
_r.////	!	!2233333 
"rY   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   rH   r4   r   rd   rR   )
r@   rA   rf   r   r   r   rr   r   UserWarningrU   )r   r   ru   r   rV   rW   rS   s          rD   )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'rd   )rr   rs   r   rU   rV   )r   r   s     rD   "test_stratified_splitter_without_yr  N  s.     8C	y	,
 
-	,	,s	   ;
A	r?   )__doc__r  r   	itertoolsr   r   r   numpyrf   rr   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)   sklearn.utils._mockingr*   sklearn.utils._testingr+   r,   r-   r.   sklearn.utils.estimator_checksr/   sklearn.utils.fixesr0   r1   r2   sklearn.utils.validationr3   r  r  r   rT   ALL_SPLITTERSSPLITTERS_REQUIRING_TARGETr   rV   r   rW   rg   r  r>  markfilterwarnings
pytestmarkrX   r   r   r   r   r   r   r   r   parametrizer   r   r  r  r  r!  r/  r8  rC  rF  rL  rn   rP  rW  rm  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r	  r  r  r  r  r  r   rX  r
  r8  rB  rF  rN  rR  rV  rf  rh  rk  rm  rs  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r   r  r  r  r  r<  s   0rD   <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|4 3 F|4~" 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