
    Wh4"                       d Z ddlZddlZddlmZmZmZ ddlZddl	Z	ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7 ddl3m8Z9 ddl:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@ ddlAmBZB ddlCmDZDmEZEmFZF ddlGmHZH  e        e%        e'        e        ed       e#        e&d       e g d       e!        e"       g
ZI e        ed       e$        e        e       gZJ eKd eJD              ZLeIeJz   ZM e%        e&        e"       gZN ej                  d      ZP ej                  d      dz  ZR ej                  g d       ej                  g d       ej                  g d        ej                  g d!      g dg d"fZT e       ZUe	j                  j                  d#      ZXd$ ZYd% ZZd& Z[dd'Z\d( Z]d) Z^d* Z_d+ Z`d, Zae	j                  j                  d-d.d/g      e	j                  j                  d0g d1      e	j                  j                  d2e%e$g      d3                      Zce	j                  j                  d-d.d/g      e	j                  j                  d0g d4      e	j                  j                  d2e%e$g      d5                      Zdd6 Zee	j                  j                  d2e%e$g      d7        Zfd8 Zge	j                  j                  d2ee%e$g      d9        Zhd: Zid; Zjd< Zkd= Zld> Zme	j                  j                  d? ej                  dgd@z  dgd@z  z          ej                  g dA       ej                  ddgddgddgg      f ej                  dgdBz  dgdCz  z          ej                  g dD       ej                  dEdFgdEdFgdEdFgg      fg      dG        Zoe	j                  j                  dHg dI      e	j                  j                  dJg dK      dL               ZpdM Zqe	j                  j                  dNe#e&g      e	j                  j                  dOg dP      dQ               Zre	j                  j                  dOg dR      dS        ZsdT ZtdU ZudV ZvdW ZwdX ZxdY ZydZ Zzd[ Z{d\ Z|d] Z}d^ Z~d_ Zd` Zda Ze	j                  j                  dbe!e"g      dc        Zdd Zde Zdf Zdg Zdh Ze	j                  j                  dOg di      dj        Ze	j                  j                  dk e7       e5l      e	j                  j                  dmdnd/ ej                   ej                  d@       ej                  do      f      fdpf      dq               Ze	j                  j                  dreD      ds        Zdt Zdu Ze	j                  j                  dveDeEz   eFz         dw        Zdx Zdy Ze	j                  j                  dzg d{      d|        Zd} Zd~ Zd Zd Zd Ze	j                  j                  d2ee$g      e	j                  j                  d-d/d.g      d               Zd Zd Zd Zd Zd Ze@d        Zd Ze	j                  j                  de#ee&f      d        Zd Zd Zd Ze	j                  j                  dee%e$ef      d        Ze	j                  j                  dg  e       d/f ed/d      d/f e%       d/f e%d/d      d/f e$d/d      d/f e$       d/f e!d      d/f e"d      d/f e#d      d/f ed      d/f e&d      d/f e       d/f ed/d      d/f e'       d/f e       d/f e       d/f ed      d/f ed      d/f ed/d      d.f ed/d      d.f e%d/ejJ                  jM                  d            d.f e%d/ejJ                  jM                  d            d.f e!d      d.f e!ejJ                  jM                  d            d.f e"d      d.f e"ejJ                  jM                  d            d.f e#d      d.f e#ejJ                  jM                  d            d.f ed      d.f eejJ                  jM                  d            d.f e&d      d.f e&ejJ                  jM                  d            d.f      d        Ze	j                  j                  deMeMD  cg c]
  }  e|        c} l      d        Ze	j                  j                  deMeMD  cg c]
  }  e|        c} l      d        Ze	j                  j                  deIel      d        Ze	j                  j                  deNeND  cg c]
  }  e|        c} l      d        Zyc c} w c c} w c c} w )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              #   H   K   | ]  }|j                   j                    y wN)	__class____name__).0splitters     b/var/www/html/jupyter_env/lib/python3.12/site-packages/sklearn/model_selection/tests/test_split.py	<genexpr>rF   V   s     W88--66Ws    "
   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                     | j                   j                  t        v r| j                  |||      S | j                  ||      S )Ngroups)rA   rB   GROUP_SPLITTER_NAMESsplit)rD   XyrT   s       rE   _splitrY   q   s=    ""&::~~a6~22~~a##    c                  P   d} d}d}d}d}t        j                  ddgddgddgdd	gg      }t        j                  g d
      }t        j                  g d      }t        j                  g d
      }t               }	t        |      }
t	        |      }t        |      }t               }t        |      }t        d      }t        g d      }t        |      }d}d}d}d}d}d}d}d}d}| t        | |      |||t        ||      |d|g	}t        t        |	|
|||||||g	|||||||||g	            D ]  \  }\  }}||   |j                  |||      k(  sJ t         j                  j!                  t#        t%        ||||            t#        t%        ||||                   t%        ||||      D ]a  \  }} t        j&                  |      j(                  j*                  dk(  sJ t        j&                  |       j(                  j*                  dk(  raJ  |t-        |      k(  rJ  d}!t/        j0                  t2        |!      5  |	j                  d ||       d d d        t/        j0                  t2        |!      5  |
j                  d ||       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)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_a 	
 &#r3dBD9
	
 #=B" !#rq!V'DDDD 	

Aq&)*DD!V1L,M	
 ""aF3 	6KE4::e$**//3666::d#))..#555	6
 $r("""=#B 2C	z	- *q&)*	z	- *q&)* ** ** *s   <J3JJJ%c                  L   d} t         j                  j                  d      }|j                  dd| df      }|j                  dd| f      }|j	                  dd      }|j                  dd| df      }|j                  dd| f      }t               t        d      t               t               t               t               t               t               t        d	
      t               t               t!        d      t#        d      t%               t'        |      g}|D ]K  }t)        t+        ||||             t)        t+        ||||             	 t)        t+        ||||             M y # t,        $ r,}	d}
dj/                  |
      }|t1        |	      v sJ Y d }	~	d }	~	ww xY w)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      sy   I
))


"CAq	1~.AAq	|,A99RD;;q!9a.;9L[[AYL[1FA!-#A&)I"  
!VHa623VHaf56	!!\&AB	
!
  	!#; CJJ$C #a&= =	!s   E..	F#7"FF#c                     t        |       t        |      }} | j                  |      t               k(  sJ |)| j                  |      t        t        |            k(  sJ y y r@   )setintersectionunionrange)r   r   rv   s      rE   check_valid_splitr      s\    e*c$i4E d#su,,,{{4 Ci(8$9999 rZ   c                 &   t        |      }| j                  |||      |k(  sJ t               }d}| j                  |||      D ])  \  }}	t	        ||	|       |dz  }|j                  |	       + ||k(  sJ ||t        t        |            k(  sJ y y )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??1a(,==== UJxx1f- ,t%;a
%%d+, ****%U9-=)>>>> rZ   c                  &   t        j                  ddgddgddgg      } t        j                  ddgddgddgddgd	d
gg      }t        t        t	        d      j                  |       f t        j                  g d      }t        d      }t        j                  t        d      5  t        |j                  ||             d d d        t        d      }t        j                  t        |            }t        j                  t        d      5  t        |j                  |||             d d d        t        j                         5  t        j                  d       t!        |||d d       d d d        t        j                         5  t        j                  d       t!        ||||d       d d d        t        j                  g d      }t        j"                  t              5  t        |j                  ||             d d d        t        j"                  t              5  t        |j                  ||             d d d        t        j"                  t              5  t	        d       d d d        t        j"                  t              5  t	        d       d d d        d}t        j"                  t        |      5  t        d       d d d        t        j"                  t        |      5  t        d       d d d        t        j"                  t        |      5  t        d       d d d        t        j"                  t        |      5  t        d       d d d        t        j"                  t              5  t	        d       d d d        t        j"                  t              5  t	        d       d d d        t        j"                  t              5  t        d       d d d        t        j"                  t              5  t        d       d d d        t        j"                  t              5  t        d       d d d        t        j"                  t              5  t        d       d d d        t        j"                  t$              5  t	        dd        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   MxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   =xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   WxY w# 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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[[Q ! "!$F99SV$L	g%@	A 0V\\"a./0 
	 	 	" Jh'%QtqIJ 
	 	 	" Sh'&"aPQRS 	"#A	z	" !U[[Q !	z	" "V\\"a !" 
z	" a	z	" aSL	z	6 	z	6 	z	6  Q 	z	6  Q  
z	" c
	z	" c
	z	" 	z	" 	z	" "S!"	z	" "S!" 
y	! (q$'( (u! !
0 0J JS S! !" "              " "" "( (s   %RR*&R7&S&S#S S+S8>T-TTT,8T9%UU?U ,U-U:VR'*R47SSSS(+S58TTTT),T69UUU U*-U7:VVc                     t        j                  d      } t        d      }t        || d d d       t        j                  d      }t        d      }t        ||d d d       dt        d      j	                  |      k(  sJ y )N   rI   )rX   rT   r      r\   )rg   onesr   r   rk   )r   r}   r   s      rE   test_kfold_indicesr   [  so    	B	qBb"TQG 
B	qBb"TQG a%%b))))rZ   c                     ddgddgddgddgd	d
gg} t        d      j                  | d d       }t        |      \  }}t        |ddg       t        |ddg       t        |      \  }}t        |ddg       t        |ddg       t        d      j                  |       }t        |      \  }}t        |g d       t        |ddg       t        |      \  }}t        |ddg       t        |g d       y )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,KE4taV$uq!f%v,KE4taV$uq!f%1X^^BFv,KE4tY'uq!f%v,KE4taV$ui(rZ   c            	      `   t        j                  d      g d}} t        d      j                  | |      }t	        |      \  }}t        |ddg       t        |ddg       t	        |      \  }}t        |ddg       t        |ddg       t        j                  d      g d}} t        d      j                  | |      }t	        |      \  }}t        |g d	       t        |g d
       t	        |      \  }}t        |g d
       t        |g d	       dt        d      j                  | |      k(  sJ t        j                  d      } g d}g d}t         j                  j                  t        t        d      j                  | |            t        t        d      j                  | |                   g d}t        j                  |      } t         j                  j                  t        t        d      j                  | |            t        t        d      j                  | |                   y )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:|qAQ%%a+Fv,KE4taV$uq!f%v,KE4taV$uq!f%771:,qAQ%%a+Fv,KE4t\*ui(v,KE4tY'ul+ "//15555 	
A	,B	BJJ_Q%%a,-tOA4F4L4LQPR4S/T
 	!A
QAJJ_Q%%a+,d58>>!Q3G.HrZ   r   FTk)rM   r\   r]   r^   r_   r   rG   kfoldc                    d}t        j                  |      }t        j                  dgt        d|z        z  dgt        d|z        z  z   dgt        d|z        z  z         }t        j                  t        |            }t        j                  |      t        |      z  }g }|sd nd}	 || |	|      }
t        |
|||	      D ]  \  }}t        t        j                  ||         t        |      z  |d
       t        t        j                  ||         t        |      z  |d
       |j                  t        |              t        j                  |      dk  sJ y )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c1a7 %tAeH-E
:EMAdG,s4y8%dK#d)$% 66*"""rZ   )rM   r]   r^   c                    
 d}t        j                  dgt        d|z        z  dgt        d|z        z  z   dgt        d|z        z  z         }t        j                  t	        |            
t        j
                  t	        |            
 fd} ||      }t        g d	      D ]'  }t        j                  ||      } ||      }	|	|k(  r'J  y )
Nd   r5   r   r   r   r<   r   c                     sd nd}t         |      |       D cg c]  \  }}t        |      t        |      f c}}S c c}}w )Nr   r   rS   )rY   rn   )	rX   ra   r   r   rW   rT   r   r   r   s	       rE   
get_splitsz:test_stratified_kfold_label_invariance.<locals>.get_splits  sY    #*t  &alGD	 
t %[$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' *q! (k)))*rZ   c                  \   t        dd      D ]  } t        d      j                  t        j                  |             }|D cg c]  \  }}t        |       }}}t        j                  |      t        j                  |      z
  dk  sJ t        j                  |      | k(  rJ  y c c}}w )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           
         t        j                  d      }dgdz  dgdz  z   }t        j                  t        |            }dD ]  } | d|      }t	        dd      D ]  }t        ||d | |d | |d |       }|D 	cg c]  \  }}	t        |	       }
}}	t        j                  |
      t        j                  |
      z
  dk  sJ t        j                  |
      |k(  rJ   y c c}	}w )	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QrUAbqE6"1:6C.1271dSY2E2FF5MBFF5M1a77766%=A%%%	&& 3s   ;C"
c                     t        d      } t        ddd      }t        ddd      }t        j                  d      }t        j                  d      }t	        | j                  |      |j                  |      |j                  |            D ]X  \  \  }}\  }}\  }	}
t        |||	fd      D ]2  \  }}t        t        j                  ||            t        |      k7  r2J  d||<   Z t        |      dk(  sJ y )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</ *
cJS#
c 'S#: 	?JD$r~~dD12c#h>>>	?
 	# y>S   rZ   c                 &   t        j                  d      }dgdz  dgdz  z   }t        j                  t        |            }t        j                  d      }dgdz  dgdz  z   }t        j                  t        |            } | ddd	      }t         j                  j                  t        t        ||||            t        t        ||||                    | ddt         j                  j                  d      	      }t        ||f||f||f      D ]r  }t        t        |g| t        |g|       D ]M  \  \  }	}
\  }	}t        j                  t              5  t         j                  j                  |
|       d d d        O t y # 1 sw Y   \xY w)
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!    sj   
A	
a1#'AyyQ H	B
qA37	ByyR!H 
q$Q	/BJJVB1h'($vb!Q/I*J 
q$RYY-B-B1-E	FBQGaWx&:; >(+F2,=,=vb?P4?P(Q 	>$KQ!V
 ~. >

--ff=> >	>>> >s   !FFc            	         t        j                  d      } dgdz  dgdz  z   }t        ddd      }t        ddd      }t        |j	                  | |      |j	                  | |            D ]$  \  \  }}\  }}t        |      t        |      k7  r$J  t        || |d d       t        j                  d	      }dgdz  dgdz  z   }t        ddd      }t        ddd      }t        |j	                  ||      D 	cg c]  }	t        |	d          c}	      }
t        |j	                  ||      D 	cg c]  }	t        |	d          c}	      }|
|k7  sJ y c c}	w c c}	w )
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_stratifiedkfoldr/  ?  sG    772;D	
bA38A
!T
:C
!T
:C"%ciia&8#))D!:L"M (
EJQ5zSZ'''(c441E
 			"A	
a1#'A
!T
:C
!T
:CSYYq!_=ad=>ISYYq!_=ad=>I	!!! >=s   9E.Ec                     t        j                  d      } dgdz  dgdz  z   }t        j                  d      dz  }t        ddd      }t        ddd      }|j	                  | d |      D cg c]  \  }}t        ||          }}}|j	                  | d |      D cg c]  \  }}t        ||          }}}t        ||      D ]  \  }	}
|	|
k7  rJ d	        t        || ||d
       t        || ||d
       y c c}}w c c}}w )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_groupkfoldr8  V  s    	A	
bA38AYYr]aFaA6DaA6D 26AtV1L"-!XF8L  26AtV1L"-!XF8L  lL1 RBRxQQQxR dAq&A>dAq&A>s   -C:D c                     t         j                  d d t         j                  d d }} t        dd      }d}t	        |d      }t        || ||      j                         }d	|kD  sJ |d
kD  sJ t	        |dd      }t        || ||      j                         }|d	kD  sJ t	        |dd      }t        || ||      j                         }|d	kD  sJ t        |      }t        || ||      j                         }d|kD  sJ |d
kD  sJ y )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_digitsrC  n  s"    ;;tfmmDS1qA"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                     t        d      } t        j                  dgdz  dgdz  z         }t        j                  |      j	                  dd      }t        j
                  d      }t        j                  |      t        |      z  }g }| j                  |||      D ]  \  }}t        j                  ||   ||         j                  dk(  sJ t        t        j                  ||         t        |      z  |d	
       t        t        j                  ||         t        |      z  |d	
       |j                  t        |              t        j                  |      dk  sJ y )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_trivialrF    s%   +D
!qA38#$A
QA&AZZNOFKKNSV#EJzz!Q/ %t~~fUmVD\:??1DDDAeH-E
:EMAdG,s4y8%dK#d)$% 66*"""rZ   c                     t        d      } t        j                  dgdz  dgdz  z         }t        j                  |      j	                  dd      }t        j                  g d      }t        j
                  d	d
gddgddgg      }g }t        | j                  |||      |      D ]  \  \  }}}t        j                  ||   ||         j                  dk(  sJ t        j                  ||         t        |      z  }	t        |	|d       |j                  t        |              t        j                  |      dk  sJ y )NrI   r   r<   r]   r   rE  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_approximaterL    s!     +D
!qA38#$A
QA&AXXLMFzzE5>E5>C:FGHJ&)$**Q6*BH&M %"{~~fUmVD\:??1DDD[[4)CI5

Ke<#d)$% 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                 p   t        d      }t        j                  |       j                  dd      }t	        |j                  || |      |      D ]e  \  \  }}}t        j                  ||   ||         j                  dk(  sJ t        j                  | |         t        |      z  }t        ||d       g y )NrI   r   r   r<   r   rH  r   )r   rg   r   r   rj   rV   r  r   r   r   r,   )	rX   rT   rI  r   rW   r   r   rJ  rK  s	            rE   .test_stratified_group_kfold_homogeneous_groupsrP    s       +D
QA&A&)$**Q6*BH&M ="{~~fUmVD\:??1DDD[[4)CI5

Ke<	=rZ   	cls_distr))g?333333?)g333333?ffffff?)皙?r=  )r=  rT  r>   )r\   r   F   c                    d}t        |      }t        |      }t        j                  j	                  d      }d}|j                  d||       }t        j                  |      j                  dd      }|j                  ||      }	|j                  |||		      }
|j                  |||		      }d}d}t        |
|      D ]  \  \  }}\  }}t        j                  |	|   |	|         j                  dk(  sJ t        j                  ||         t        |      z  }t        j                  ||         t        |      z  }|t        j                  || 
      z  }|t        j                  || 
      z  } ||z  }||z  }||k  sJ y )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)rQ  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_kfoldrf    su   
 H2D
h
'C
))


"CH

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

8X&AAq+J		!Qq	)IIH25j)2L ;.Y!X~~a
mQy\:??1DDD[[9.Y?
KK(,s8}<	U]]:)<<	EMM)	::; IH   rZ   c                  2   t        dd      j                  t              } t        dd      j                  t              }t        t        j                  d      d      j                  t              }t        dd      j                  t              }t        | |||      D ]s  \  }}}}t        |d   |d          t        |d   |d          t        |d   |d          t        |d   |d          t        |d   |d          t        |d   |d          u y )NrT  r   r:   ra   r5   r<   )r   rV   rW   rg   int32rj   r.   )ss1ss2ss3ss4t1t2t3t4s           rE   test_shuffle_splitrr    s    
1
5
;
;A
>C

3
9
9!
<C
!1
=
C
CA
FC

3
9
9!
<Cc3S1 )BB2a5"Q%(2a5"Q%(2a5"Q%(2a5"Q%(2a5"Q%(2a5"Q%()rZ   split_classztrain_size, exp_train, exp_test))Nr   r<   r_   r_   r5   r=  r_   r5   c                     t        j                  d      }t        j                  d      }t         | |      j                  ||            \  }}t	        |      |k(  sJ t	        |      |k(  sJ y NrG   
train_size)rg   r   r   rV   r   )rs  ry  	exp_trainexp_testrW   rX   X_trainX_tests           rE   $test_shuffle_split_default_test_sizer~    sb     	A
A;*=CCAqIJOGVw<9$$$v;("""rZ   ))Nr_   r5   )r^   r^   rI   )rS  r^   rI   c                     t        j                  d      }t        j                  d      }t        d      }t        t	        |       j                  |||            \  }}t        |      |k(  sJ t        |      |k(  sJ y rw  )rg   r   r   r   r   rV   r   )ry  rz  r{  rW   rX   rT   r|  r}  s           rE   *test_group_shuffle_split_default_test_sizer    so     	A
A2YF,
CII!QPVWXOGVw<9$$$v;("""rZ   c                     t        j                  d      } t        j                  g d      }t        j                  t
              5  t        t        dd      j                  | |             d d d        t        j                  t
              5  t        t        dd      j                  | |             d d d        t        j                  t
              5  t        t        ddd      j                  | |             d d d        t        j                  d      } t        j                  g d	      }t        j                  t
              5  t        t        d
      j                  | |             d d d        t        j                  t
              5  t        t        d      j                  | |             d d d        y # 1 sw Y   VxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   y xY w)Nr^   )r   r<   r<   r<   r5   r5   r5   rI   rT  r9   r5   r:   ry  r   )	r   r   r   r<   r<   r<   r5   r5   r5   rx  )	rg   r   ro   rs   rt   ru   r   r   rV   rW   rX   s     rE   "test_stratified_shuffle_split_initr  "  s   
		!A


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


./A 
z	" ?#q1771=>?	z	" >#a066q!<=> >#C CA AO O? ?> >s<   'G'G(G&G'&G3GGG$'G03G<c                     t        j                  g d      } d}d}t        d||d      j                  t        j                  t        |             |       }|D ]%  \  }}t        |      |k(  sJ t        |      |k(  r%J  y )NrK   r\   rG   r]   r   )r:   ry  ra   )rg   rh   r   rV   r   r   )rX   r:   ry  sssr   r   s         rE   0test_stratified_shuffle_split_respects_test_sizer  ;  s    
>?AIJ
 	Y:AeBGGCFOQ   &t5zZ'''4yI%%%&rZ   c                     t        j                  g d      t        j                  g d      t        j                  g ddz        t        j                  g d      t        j                  dgdz  dgd	z  z         t        j                  t        d
      D  cg c]  } | gd| z   z   c}       g dg dg}|D ]  }t	        ddd      j                  t        j                  t        |            |      }t        j                  |      }t        j                  dt        |      z        }t        |      |z
  }|D ]A  \  }}t        t        j                  ||         t        j                  ||                t        j                  t        j                  ||   d      d         t        t        ||               z  }t        j                  t        j                  ||   d      d         t        t        ||               z  }	t        ||	d       t        |      t        |      z   |j                  k(  sJ t        |      |k(  sJ t        |      |k(  sJ t        t        j                   ||      g        D  y c c} w )NrH   rJ   rK   r5   rL   r   i   r<   2   r   r   rN   r]   gQ?r   rh  T)return_inverse)rg   rh   concatenater   r   rV   r   r   
asanyarrayceilr.   uniquer   floatr-   r   r  )
rd   ysrX   r  r:   ry  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'
 	@KE4ryy52BIIag4FGkk"))AeHT"J1"MNQVAeHR G [[1T74!H!KLuAdGP F &gvq9u:D	)QVV333u:+++t9	)))r~~eT:B?	@@ <s   Jc                     d} dfd}dD ]y  }t        j                  |dz  ddgz        }t        d| z  d	      }dg|z  }dg|z  }d}|j                  t        j                  |      |
      D ].  \  }}	|dz  }||f||	ffD ]  \  }
}|D ]  }|
|xx   dz  cc<     0 |k(  sJ t        |d| z  dd| z  z
        \  }}t              |k(  sJ t        	      |k(  sJ t        t        |      j                  |	            dk(  sJ t        j                  |      }|j                  d| z  k(  sJ ||z   t        |      k(  sJ t        |      dk(  sJ t        |      |z  }t        |      |z  } |||        |||       | y )Nr\   r   c                     dz  }t        j                  |      }| D ]  }|j                  |      }||kD  rJ d        y )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_okz@test_stratified_shuffle_split_even.<locals>.assert_counts_are_okr  sR     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	   5	9>aV34'wQ
 sYcIo!<<"'')*<<G 	%KE4q O".!6d8K L % %BBK1$K%%	%
 (***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 5rZ   c                  ^   g ddz  ddgdz  z   } t        j                  |       }t        ddd      }t        |j	                  || 	            \  }}t        t        j                  ||      g        t        t        j                  ||      t        j                  t        |                    y )
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syy1y*+KE4 r~~eT2B7 rzz%.		#a&0ABrZ   c            	         t        j                  ddgddgddgddgg      t        j                  ddgddgddgddgg      fD ]	  } t        j                  |       }t        ddd      }t	        |j                  ||             \  }}| |   }| |   }t        t        j                  ||      g        t        t        j                  ||      t        j                  t        |                    t        j                  | d d df         }|t        j                  |d d df         k(  sJ |t        j                  |d d df         k(  r
J  y )Nr   r<   r8   r  r  )rg   rh   r   r   r   rV   r.   r  r  r   r   r@  )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 7 LLO$a3QO399qA9./tE(4 	2>>%6; 	2::eT2BIIc!f4EF 1a4)A!77771!6666)7rZ   c                     g ddgdz  z   g dz   } g ddgdz  z   g dz   }t        j                  | gdz  |gdz  z         }t        j                  |      }t        ddd      }t	        |j                  ||	            \  }}||   }||   }t        j                  |d d d
f         }	|	t        j                  |d d d
f         k(  sJ |	t        j                  |d d d
f         k(  sJ y )N)r<   r   r<   r   r   r<   rG   r   r8   r  r  rM   )rg   rh   r   r   r   rV   r@  )
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syy1y*+KE4hGtWF WWQq!tW%NRWWWQT]3333RWWVAqD\2222rZ   c                     t        j                  dd      } g }g }t        t        dd      j	                  t
                    D ]/  \  }\  }}|j                  |       |j                  |       || |<   1 t        |       }t        t        j                  |             |j                         k(  sJ t        |j	                          \  }}t        ||       t        ||       y )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   Ix	"x h 
	Bryy BOO$5555RXXZ(Hgx*w(rZ   c                     t         D ]  } t        j                  t        |             x}}d}d}t	        ||d      }t        |       |j                  |||       |k(  sJ t        j                  |       }t        j                  |       }|j                  |||       D ]E  \  }}	t        j                  ||         }
t        j                  ||	         }t        j                  t        j                  ||   |            rJ t        j                  t        j                  ||	   |
            rJ ||   j                  ||	   j                  z   |j                  k(  sJ t        t        j                  ||	      g        t        t        |      t!        |t        |      z        z
        dk  sJ t        t        |
      t!        d|z
  t        |      z        z
        dk  rFJ   y )Nr]   gUUUUUU?r   rh  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    !H&&A	IAN 	S	 1X6(BBB99X&JJx 99Q(9; 	KE4YYqx0NIIag.Mvvbggah>???vvbggag~>??? U8==1T7<</166999 r~~eT:B? s=)E)c(m2K,LLMQRRRRC'%yCM0Q*RRSWXXX#	!rZ   c            
         t               } t        d      }t        d      }t        |       dk(  sJ t        |      dk(  sJ t        |      dk(  sJ t        t        d            dk(  sJ t        | df|df|dff      D ]A  \  }\  }}t        t              D ]%  \  }}t        t        j                  |            }|dk(  r|n
||dz
  z  dz  }	t        j                  t        |            x}
}|j                  |
||	      |	k(  sJ t        j                  |      }|j                  |
||	      D ]  \  }}t        t        j                  ||   ||         j                         g        t        |      t        |      z   t        |      k(  sJ t        j                  ||         j                  d
   rJ |        ( D | j                  d d g d      dk(  sJ | j                  g d	      dk(  sJ |j                  d d t        j                   d            dk(  sJ |j                  t        j                   d      	      dk(  sJ t#        j$                  t&              5  | j                  d d dt        j(                  dg       d d d        t#        j$                  t&              5  |j                  d d dt        j*                  dg       d d d        d}t#        j$                  t&        |      5  | j                  d d d        d d d        t#        j$                  t&        |      5  |j                  d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)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    sJ   Da(Fa(F :----<8888<8888+,0MMMM!*T1I{VQK+P!Q JB$[1 	JKAx299X./H#/1#4x(hQRl:SVW:WHGGCM**A ??1a?9XEEEH-J  "xx1Xx> Jt"NN:e#4j6FGNNPRT
 5zCI-X>>> yyD!1288;I\I;J	JJ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7M#.M/MM #M,/M8c                     t        j                  g d      } t        j                  t        |             }t        j                  | d      }t	               j                  ||       }t	               j                  ||       }t        d      j                  ||       }t        d      j                  ||       }d|d d  ||f||ffD ]7  \  }}t        ||      D ]#  \  \  }	}
\  }}t        |	|       t        |
|       % 9 dt        d      j                  ||| 	      k(  sJ dt	               j                  ||| 	      k(  sJ y )
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  sI    XX./F
FAhhvD1O##Af#5D$&,,Qv,>MA&,,Qv,>D#Q/55a5GMOA#]3dM5JK 0\69#|6L 	02MUD2J	uj1tY/	00 +88a8OOOO "//Qv/FFFFrZ   c                  D   t        j                  g d      } t        j                  t        |             }t	        t               j                  ||             }g dddgfg dddgfg d	d
dgfg}|D ]+  \  }}t        |      \  }}t        ||       t        ||       - y )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"$**1V*<=F 
1v	1v	1v *: 0%6lt5.14/0rZ   c                  8   t        j                  d      x} x}}t        j                  d      }t	        j
                  t        |      5  t        t               j                  | ||             d d d        t        j                  d      x} x}}t        j                  d| d      }t	        j
                  t        |      5  t        t               j                  | ||             d d d        t        j                  d      x} x}}t        j                  d| d      }t	        j
                  t        |      5  t        t        d	
      j                  | ||             d d d        t        j                  d	      x} x}}t        j                  d| d      }t	        j
                  t        |      5  t        t        d	
      j                  | ||             d d d        y # 1 sw Y   }xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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F
))2
3C	z	- 5%%aF345 WWQZAF
))
DVH M0 	0C 
z	- 5%%aF345 WWQZAF
))	))/ 1	C 
z	- >_a(..q!V<=> YYq\!A!F
))	))/ 1	C 
z	- >_a(..q!V<=> >95 55 5> >> >s0   
%G*%G7>'H:'H*G47HHHc                     t         t        fD ]X  } t        j                  t              5   | d       d d d        t        j                  t              5   | d       d d d        Z y # 1 sw Y   7xY w# 1 sw Y   qxY w)Nr   )	n_repeatsr   )r   r   rs   rt   ru   r<  s    rE   test_repeated_cv_value_errorsr    sm    56 ]]:& 	O	]]:& 		 		 		 	s   
A)
A5)A2	5A>	
RepeatedCVc                     d\  }} | ||      }dj                  |j                  j                        }|t        |      k(  sJ y )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    sM    Hih)DKGNN&& tK0000rZ   c                  J   ddgddgddgddgd	d
gg} d}t        dd|      }t        d      D ]  }|j                  |       }t        |      \  }}t	        |ddg       t	        |g d       t        |      \  }}t	        |g d       t	        |ddg       t        |      \  }}t	        |ddg       t	        |g d       t        |      \  }}t	        |g d       t	        |ddg       t        j                  t              5  t        |       d d d         y # 1 sw Y   xY w)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t51a&)4+6lt5),4!Q(6lt51a&)4+6lt5),4!Q(]]=) 	L	 	%$	 	s   DD"	c                  Z    d} d}t        | |      }| |z  }||j                         k(  sJ y NrI   rM   r  )r   rk   )rx   r  r  r   s       rE   $test_get_n_splits_for_repeated_kfoldr	    s:    HI
Y
?C 9, 0 0 2222rZ   c                  Z    d} d}t        | |      }| |z  }||j                         k(  sJ y r  )r   rk   )rx   r  rskfr   s       rE   /test_get_n_splits_for_repeated_stratified_kfoldr    s:    HI"H	JD 9, 1 1 3333rZ   c                  T   ddgddgddgddgd	d
gg} g d}d}t        dd|      }t        d      D ]  }|j                  | |      }t        |      \  }}t	        |ddg       t	        |g d       t        |      \  }}t	        |g d       t	        |ddg       t        |      \  }}t	        |ddg       t	        |g d       t        |      \  }}t	        |g d       t	        |ddg       t        j                  t              5  t        |       d d d         y # 1 sw Y   xY w)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 Aq!6lt51a&)4+6lt5),4!Q(6lt51a&)4+6lt5),4!Q(]]=) 	L	 	%$	 	s   DD'	c            	         t        j                  t        t               t        j                  t        t        t	        d      d       t        j                  t        t        t	        d      dd       t        j                  t        t        t	        d      t        j                  d      t        j                  d             t        j                  t        t        t	        d      d       t        j                  t        t        t	        d      dd	       t        j                  t        t        t	        d      d
       t        j                  t        t        t	        d      t	        d             t        j                  t        t        t	        d      dd       t        j                  t        d      5  t        t	        d      dd       d d d        y # 1 sw Y   y xY w)NrI   r  rx  rR  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<   )ry  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   <GG&))Nr^   rI   rt  ru  c                 l    t        t        |       \  }}t        |      |k(  sJ t        |      |k(  sJ y )Nrx  )r   rW   r   )ry  rz  r{  r|  r}  s        rE   'test_train_test_split_default_test_sizer    s8     'qZ@OGVw<9$$$v;("""rZ   z#array_namespace, device, dtype_name)r  zshuffle,stratify)TNrM   )FNc                    t        ||      }t        j                  d      j                  d      }t        j                  d      }|j	                  |      }|j                  ||      }	|j	                  |      }
|j                  |
|      }t        ||d| |      \  }}}}t        d      5  ||j                  |      }n|}t        |	|| |d	      \  }}}}t        |      d   t        |	      d   k(  sJ t        |      d   t        |	      d   k(  sJ t        |      d   t        |      d   k(  sJ t        |      d   t        |      d   k(  sJ 	 d d d        t              t        |	      k(  sJ t              t        |      k(  sJ t              t        |	      k(  sJ t              t        |      k(  sJ |j                  |	j                  k(  sJ |j                  |j                  k(  sJ |j                  |	j                  k(  sJ |j                  |j                  k(  sJ t        t        ||
      |       t        t        ||
      |       y # 1 sw Y   	xY w)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_splitr.  !  se   " 
ov	6B
		#x(A
		"A88JD::d6:*D88JD::d6:*D3Caa840J	:y 
4	0 E**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" J'+;D+AAAAJ'+;D+AAAAI&*:4*@@@@I&*:4*@@@@tzz)))tzz)))??djj(((??djj(((*, )+?E Es   /B(II)coo_containerc                    t        j                  d      j                  d      } | |      }t        j                  d      }t        ||d d      }|\  }}}}t	        |      t	        |      k(  sJ t        |d d df   |dz         t        |d d df   |dz         t        |||j                               }|\  }}}	}
}}t        |t              sJ t        |t              sJ t        j                  d      j                  ddd	d
      }t        j                  d      j                  ddd      }t        ||      }|d   j                  dk(  sJ |d   j                  dk(  sJ |d
   j                  dk(  sJ |d	   j                  dk(  sJ t        j                  g d      }t        g dg d      D ]  \  }}t        |||d      \  }}t	        |      |k(  sJ t	        |      t	        |      z   t	        |      k(  sJ t        j                  |dk(        t        j                  |d
k(        k(  rJ  t        j                  d      }dD ]/  }t        |d|      \  }}t        |ddg       t        |g d       1 y )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   rN  r8   rM  )r5   rM   r5   rM   r]   )r:   r  ra   )r5   rT  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   )r/  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_splitr8  e  se   
		#x(A

C
		"A QTcBE',$GVWfv;#g,&&&wq!t}gl3vad|Vb[1 QQXXZ0E<A9GVY'6gt$$$fd### 99^$,,RAq9D99[!))"a4DT4(E8>>\)))8>>\)))8>>Z'''8>>Z''' 	)*A$'(?$Q 8 	=&QQ
t 4yM)))4y3u:%Q///vveqj!RVVEQJ%77778 			"A <	&q%9Mt4!Q(5":;<rZ   c                      d} t        j                  |       }|d| z  kD  }t        |||d      }|\  }}}}|j                  |j                  z   | k(  sJ |j                  |j                  z   | k(  sJ y)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  ry  N)rg   r   r   r   )
big_numberrW   rX   rV   r|  r}  r  r  s           rE   $test_train_test_split_32bit_overflowr<    s|     J 			*A	TJAQA$?E',$GVWf<<&++%333<<&++%333rZ   c                      t         g} 	 ddlm} | j                  |       | D ]8  } |t
              }t        |      \  }}t        ||      sJ t        ||      r8J  y # t        $ r Y Iw xY w)Nr   )	DataFrame)r+   pandasr>  r   ImportErrorrW   r   r1  )typesr>  InputFeatureTypeX_dfr|  r}  s         rE   test_train_test_split_pandasrD    s}    OE$Y " 4"*40'#3444&"23334  s   A 	A*)A*sparse_containerc                     t        j                  d      j                  d      } | |      }t        |      \  }}t	        |      r|j
                  dk(  sJ t	        |      r|j
                  dk(  sJ y )Nr   r  csr)rg   r   r   r   r   r   )rE  rW   r2  r|  r}  s        rE   test_train_test_split_sparserH    si     			#x(A
1
C&s+OGVG5!888F 666 6rZ   c                      t        t              } t        |       \  }}t        |t               sJ t        |t               sJ t        |       \  }}y r@   )r+   rW   r   r1  )rC  r|  r}  X_train_arr
X_test_arrs        rE   !test_train_test_split_mock_pandasrL    sI    D&t,OGVg}---fm,,,.t4KrZ   c                     t        j                  d      } dgdz  dgdz  z   }t        j                  t        j                  d      t        j                  d      f      }|j	                         }dD ]  }t        | ||r|nd d      \  }}}}t        | ||r|nd d      \  }	}
}}t        | ||r|nd d      \  }}}}t         j                  j                  ||	       t         j                  j                  ||       t         j                  j                  ||       t         j                  j                  ||        y )	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! 2/?r(B10
,'8W 0@r(B10
,'8W 0@r(B10
,'8W 	

(3


(3


1


12rZ   ztest_size, train_size))r   N)r  N)r   gffffff?)Ny              ?)r   N)rG   N)r_   rI   c                     t        j                  t              5  t        t	        | |      j                  t                     d d d        y # 1 sw Y   y xY w)Nr  )rs   rt   ru   r   r   rV   rW   r  s     rE   test_shufflesplit_errorsr^    sC    
 
z	" P\I*EKKANOP P Ps   *AAc            	          t        d      } t        | j                  t              D cg c]  \  }}|	 c}}| j                  t              D cg c]  \  }}|	 c}}       y c c}}w c c}}w )N   r`   )r   r.   rV   rW   )r   r  r  s      rE   test_shufflesplit_reproduciblera    sL     
2	&Bbhhqk2da2288A;4O41aQ4OP24Os   A&
A,c            	      D   t        dd      } t        j                  d      }dgdz  dgdz  z   }t        j                  t        j                  d      t        j                  d      f      }|j                         }t        j                  j                  t        | j                  ||            t        | j                  ||                   t        j                  j                  t        | j                  ||            t        | j                  ||                   y )	Nr5   r  rh  r^   rO   rM   r   rI   )
r   rg   r   rN  r
  r  rl   rm   rn   rV   )r  rW   r   r   rO  s        rE   &test_stratifiedshufflesplit_list_inputrc    s    
 12
>C

A
cUQY	B	BGGAJ,	-B	BJJD1b!12D1b9I4JKJJD1b!12D1b9I4JKrZ   c                  
   t        j                  dt         j                        j                  dd      } t         j                  | dd d f<   t        j
                  ddg| j                  d   dz        }t        | |dd	
       y )N   rp   rG   r   r5   r   r<   rT  r  rh  )rg   r   float64r   r  repeatr  r   r  s     rE    test_train_test_split_allow_nansri    sb    
		#RZZ(00R8AffAadG
		1a&!''!*q.)AQSr:rZ   c            	         t        j                  d      } t        dd      }t         j                  j	                  t        t        d      j                  |             t        |j                  |                    t        j                  g d      }t        d|d      }t         j                  j	                  t        t        d      j                  | |            t        |j                  | |                   t        j                  g d      }t        d|d      }t         j                  j	                  t        t        d      j                  | |            t        |j                  | |                   |j                  dd	      }t        d|d      }t         j                  j	                  t        t        d      j                  | |            t        |j                  | |                   t        j                  t        t        d      j                  | |            d
   t        t        d      j                  | |            d
   k(        rJ t        j                  d      } t        j                  g dg dg dg dg dg      }t        d|d      }t         j                  j	                  t        t        d      j                  |             t        |j                  |                    t        j                  d	dgd
dgd
d
gdd	gdd
gg      }t        d|d      }t         j                  j	                  t        t        d      j                  |             t        |j                  |                    t        j                  t              5  t        d       d d d        y # 1 sw Y   y xY w)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_cvrq    s   

A	!	&B JJDq!23T"((1+5FGxx34H	!X$	/BJJ_Q%%a23T"((1h: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   N55N>c            	      D   t               j                  t        t              } t	        |       }t
        j                  j                  t        |j                  t        t                    t        |j                  t        t                           t        dd      j                  t        t              }t	        |      }t
        j                  j                  t        |j                  t        t                    t        |j                  t        t                           	 d}t
        j                  j                  t        |j                  t        t                    t        |j                  t        t                           |rJ d       y # t        $ r d}Y w xY w)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_wrapperrx  =  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           	      J	   t         j                  j                  |      }d}d}d}t        j                  |      x}}d|z  }	|j	                  d||      }
||z  }t        t        j                  |
             t        j                  |      }|sd n|} | |||      }t        |j                  |||
            D ]  \  }\  }}|||<    t        |      t        |
      k(  sJ t        j                  |      D ]!  }|	t        t        ||k(        |z
        k\  r!J  t        j                  |
      D ]+  }t        t        j                  ||
|k(                 dk(  r+J  t        j                  |
t              }
|j                  |||
      D ]/  \  }}t        t        j                  |
|   |
|               dk(  r/J  t        j                  g d	      }
t        t        j                  |
            }t        |
      }d}d|z  }	||z  }t        j                  |      x}}t        j                  |      }t        |j                  |||
            D ]  \  }\  }}|||<    t        |      t        |
      k(  sJ |s9t        j                  |      D ]!  }|	t        t        ||k(        |z
        k\  r!J  t!        j"                         5  t!        j$                  d
t&               t        j                  |
      D ]+  }t        t        j                  ||
|k(                 dk(  r+J  	 d d d        t        j                  |
t              }
|j                  |||
      D ]/  \  }}t        t        j                  |
|   |
|               dk(  r/J   | |||      }t)        |j                  |||
j+                                     }t-        |j                  |||
      |      D ]#  \  \  }}\  }}t/        ||       t/        ||       % t        j                  g d      }
t        j                  t        |
            x}}t1        j2                  t4        d      5  t7        t9        d      j                  |||
             d d d        y # 1 sw Y   dxY w# 1 sw Y   y xY w)Nr  r   r\   r  r   )rx   r   ra   r<   rf  )&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[[Hi0F'83		&HHYE&4,>L
7
NC!#))Aq&"9: 9Atd u:V$$$YYu KCEQJ2I IJJJJK 6" ;299U6U?345:::; ZZf-FyyAv. Et2>>&->?1DDDE XX'	
)FV 299V$%HFIHy I'83GGIA HHYE!#))Aq&"9: 9Atd u:V$$$5! 	OAC
O6M$M NNNN	O 
	 	 	" ?h6YYv& 	?Eryyv!789Q>>>	?? ZZf-FyyAv. Et2>>&->?1DDDE
 hlSH399Q6==?34G,/q!V0Lg,V )(&%66*5%()
 XXo&FGGCK  A	z)P	Q 9Z#))!Q789 9+? ?*9 9s   AR&R'RRR"c                  2   ddgddgddgddgd	d
gddgddgg} t        j                  t        d      5  t        t	        d      j                  |              d d d        t	        d      }|j                  | d d       }t        |      \  }}t        |ddg       t        |ddg       t        |      \  }}t        |g d       t        |ddg       t	        d      j                  |       }t        |      \  }}t        |g d       t        |ddg       t        |      \  }}t        |g d       t        |ddg       t	        d      j                  |       }t        t        |            }||j                         k(  sJ |dk(  sJ y # 1 sw Y   6xY w)Nr<   r5   rI   rM   r\   r]   r^   r_   r   rG   r   rE     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    s   
Q!Q!Q!Q!R2r(RHEA 
z)O	P 3_a(..q123 1D ZZ#2Fv,KE4uq!f%taV$v,KE4ul+taV$Q%%a(Fv,KE4ui(taV$v,KE4uo.taV$ Q%%a(F$v,'Od//1111a=3 3s   %FFc                     t        | |      D ]N  \  \  }}\  }}t        ||       t        |      |k  sJ t        t        |      |z
  d      }t        |||d         P y )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    si    474M >00Z4,;>1113u:6:;lm(<=	>rZ   c                  `   t        j                  d      } t        d      j                  |       }t        dd      j                  |       }t	        ||d       t        dd      j                  |       }t	        ||d       t        dd      j                  |       }t	        ||d       y )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%fl1M #Aa@FFqIL%fl1M #Aa@FFqIL%fl1MrZ   c                     t        j                  d      } t        dd      j                  |       }t	        |      \  }}t        |dg       t        |g d       t	        |      \  }}t        |g d       t        |g d       t	        |      \  }}t        |g d       t        |g d	       t        d
d
d      j                  |       }t	        |      \  }}t        |g d       t        |ddg       t	        |      \  }}t        |g d       t        |ddg       t        j                  t        d      5  t        dd
      j                  |       }t	        |       d d d        y # 1 sw Y   y xY w)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    s8   
A a15;;A>Fv,KE4uqc"tY'v,KE4ul+tY'v,KE4u34tY' a1QGMMaPFv,KE4ul+taV$v,KE4ul+taV$ 
z)J	K  !q9??BV  s   ;(E,,E5c                     t        j                  d      } t        dd      j                  |       }t	        |      \  }}t        |ddg       t        |g d       t	        |      \  }}t        |g d       t        |g d       t        d	dd
      j                  |       }t	        |      \  }}t        |ddg       t        |ddg       t	        |      \  }}t        |dd	g       t        |ddg       t	        |      \  }}t        |ddg       t        |ddg       t        dddd      j                  |       }t	        |      \  }}t        |g d       t        |ddg       t	        |      \  }}t        |g d       t        |ddg       t        ddd	      j                  |       }t	        |      \  }}t        |ddg       t        |g d       t	        |      \  }}t        |g d       t        |g d       t        j                  t        d      5  t        dd      j                  |       }t	        |       d d d        y # 1 sw Y   y xY w)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,KE4uq!f%tY'v,KE4uo.tY' aQqAGGJFv,KE4uq!f%taV$v,KE4uq!f%taV$v,KE4uq!f%taV$ aQqANTTUVWFv,KE4ul+taV$v,KE4ul+taV$ aQ!<BB1EFv,KE4uq!f%tY'v,KE4uo.tY' 
z)C	D  !399!<V  s   (IIc            
         t         j                  j                  d      } t        ddd      \  }}| j	                  ddd      }t               t        d      t               t        d      t               t               t        dd      g}t        |d      D ]3  \  }}t        t               d	d
dgi|d      }t        |||||d|i       5 y )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IDAq[[Ar"F 	#A:C <CC 	
("\?$CD	
 	!qHh=O	
	
rZ   c                  F     G d d      } t         | dd            dk(  sJ y )Nc                       e Zd ZddZd Zy)%test_build_repr.<locals>.MockSplitterNc                 .    || _         || _        || _        y r@   )r  r  r  )selfr  r  r  s       rE   __init__z.test_build_repr.<locals>.MockSplitter.__init__  s    DFDFDFrZ   c                     t        |       S r@   )r    )r  s    rE   __repr__z.test_build_repr.<locals>.MockSplitter.__repr__  s    t$$rZ   )r   N)rB   
__module____qualname__r  r  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           	           | d      }dggdg}}t        j                  t        d      5  t        t	        |||dg             d d d        y # 1 sw Y   y xY w)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    s]     
d	#BC51#qA	4
 + 	VB1aS)*+ + +s   AAc                     dgg\  } t        j                  t        d      5  t        | d       d d d        dgdgdgg} t        j                  t        d      5  t        | d       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)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   A2A>2A;>Bc                      t               } dggdg}}t        j                  t        d      5  t	        | j                  ||             d d d        y # 1 sw Y   y xY w)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    sN    	BC51#qA	z)V	W RXXa^  s   AAc                      t        d      } dgdggddg}}t        j                  t        d      5  t	        | j                  ||             d d d        y # 1 sw Y   y xY w)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    s[    	QBC!:1vqA	R
  	RXXa^  s   AA Klassc                 z    t        j                  t        d      5   | ddd       d d d        y # 1 sw Y   y xY w)Nz$has no effect since shuffle is Falsere   rI   Fr   r  )rs   rt   ru   )r  s    rE   test_random_state_shuffle_falser    s4    
 
z)O	P 0aQ/0 0 0s   1:zcv, expected{   r  r`   c                 $    t        |       |k(  sJ y r@   )r"   )r   rI  s     rE   test_yields_constant_splitsr    s    L #2&(222rZ   r   c                     t        | d      sJ | j                         }| t        v r|j                  j                  d   du s"J | t
        v r|j                  j                  rJ t        |dg       y)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    sp     2-...&&(H	_~~&&x0D888	!	!>>****Hwi8rZ   c                 `    | t         v rt        | d      sJ y| t        v rt        | d      rJ yy)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    s?     
_r.///	!	!223333 
"rZ   c                    d| j                   j                   }d}t        j                  j	                  d      }|j                  dd|df      }|j                  dd|f      }|j                  dd|f      }t        j                  t        |      5  | j                  |||	       d d d        y # 1 sw Y   y xY w)
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	- &
Af%& & &s   B44B=c                     d}t        j                  t        |      5  | j                  t               d d d        y # 1 sw Y   y xY w)Nz+missing 1 required positional argument: 'y're   )rs   rt   r   rV   rW   )r   r   s     rE   "test_stratified_splitter_without_yr  0  s7     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!  r/  r8  rC  rF  rL  ro   rP  rf  rr  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  rN  r
  r.  r8  r<  rD  rH  rL  r\  r^  ra  rc  ri  rq  rx  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   BGGBKBIIbMQBHH12BHH12BHH:;BHH=>(@ 
[[''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#$#$  BHHaS1WsQw&'BHH9:BJJc
S#Jc
;<	
 BHHaS1WsQw&'BHH9:BJJ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## )-/'  
 	yryy'"''!*hbhhqk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 }]2Sr3r72ST	9 U	9 }]2Sr3r72ST4 U4 1s;
& <
& 
$=W*Xr3r7*X  O 3T 3T0 +Ys   (g g<g$