
    >[g!                       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l3m4Z4m5Z5m6Z6 ddl3m7Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z? ddl@mAZA ddlBmCZCmDZDmEZE ddlFmGZG  e        e%        e'        e        ed       e#        e&d       e g d       e!        e"       g
ZH e        ed       e$        e        e       gZI eJd eID              ZKeHeIz   ZL e%        e&        e"       gZM ej                  d      ZO ej                  d      dz  ZQ ej                  g d       ej                  g d       ej                  g d        ej                  g d!      g dg d"fZS e       ZTe	j                  j                  d#      ZWd$ ZXd% ZYd& ZZdd'Z[d( Z\d) Z]d* Z^d+ Z_d, Z`e	j                  j                  d-d.d/g      e	j                  j                  d0g d1      e	j                  j                  d2e%e$g      d3                      Zbe	j                  j                  d-d.d/g      e	j                  j                  d0g d4      e	j                  j                  d2e%e$g      d5                      Zcd6 Zde	j                  j                  d2e%e$g      d7        Zed8 Zfe	j                  j                  d2ee%e$g      d9        Zgd: Zhd; Zid< Zjd= Zkd> Zle	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        Zne	j                  j                  dHg dI      e	j                  j                  dJg dK      dL               ZodM Zpe	j                  j                  dNe#e&g      e	j                  j                  dOg dP      dQ               Zqe	j                  j                  dOg dR      dS        ZrdT ZsdU ZtdV ZudW ZvdX ZwdY ZxdZ Zyd[ Zzd\ Z{d] Z|d^ Z}d_ Z~d` Zda Ze	j                  j                  dbe!e"g      dc        Zdd Zde Zdf Zdg Zdh Ze	j                  j                  dOg di      dj        Ze	j                  j                  dk e6             e	j                  j                  dldmd/ ej                   ej                  d@       ej                  dn      f      fdof      dp               Ze	j                  j                  dqeC      dr        Zds Zdt Ze	j                  j                  dueCeDz   eEz         dv        Zdw Zdx Ze	j                  j                  dyg dz      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jH                  jK                  d            d.f e%d/ejH                  jK                  d            d.f e!d      d.f e!ejH                  jK                  d            d.f e"d      d.f e"ejH                  jK                  d            d.f e#d      d.f e#ejH                  jK                  d            d.f ed      d.f eejH                  jK                  d            d.f e&d      d.f e&ejH                  jK                  d            d.f      d        Ze	j                  j                  deLeLD  cg c]
  }  e|        c}       d        Ze	j                  j                  deLeLD  cg c]
  }  e|        c}       d        Ze	j                  j                  deHe      d        Ze	j                  j                  deMeMD  cg c]
  }  e|        c}       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)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;   r4   r4   r;   n_groupsc              #   H   K   | ]  }|j                   j                    y wN)	__class____name__).0splitters     c/var/www/html/bid-api/venv/lib/python3.12/site-packages/sklearn/model_selection/tests/test_split.py	<genexpr>rE   U   s     W88--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                     | j                   j                  t        v r| j                  |||      S | j                  ||      S )Ngroups)r@   rA   GROUP_SPLITTER_NAMESsplit)rC   XyrS   s       rD   _splitrX   p   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)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_a 	
 &#r3dBD9
	
=B" !#rq!V'DDDD 	

Aq&)*DD!V1L,M	
 ""aF3KE4::e$**//3666::d#))..#555 4
 $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   rH   r4   sizer5   r7   r8   r<   rw   )	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      st   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   ru   s      rD   check_valid_splitr      s\    e*c$i4E d#su,,,{{4 Ci(8$9999 rY   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   )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??1a(,==== UJxx1f-t%;a
%%d+ . ****%U9-=)>>>> rY   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;   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[[Q  
B "!$F99SV$L	g%@	AV\\"a./ 
B 
	 	 	"h'%QtqI 
# 
	 	 	"h'&"aPQR 
# 	"#A	z	"U[[Q  
#	z	"V\\"a ! 
# 
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*&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   rH   )rW   rS   r      r[   )rf   onesr   r   rj   )r   r|   r   s      rD   test_kfold_indicesr   Z  so    	B	qBb"TQG 
B	qBb"TQG a%%b))))rY   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;   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,KE4taV$uq!f%v,KE4taV$uq!f%1X^^BFv,KE4tY'uq!f%v,KE4taV$ui(rY   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 )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:|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rY   r   FTk)rL   r[   r\   r]   r^   r   rF   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  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     s9    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)$ 8 66*"""rY   )rL   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   r4   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   rR   )rX   rm   )	rW   r`   r   r   rV   rS   r   r   r   s	       rD   
get_splitsz:test_stratified_kfold_label_invariance.<locals>.get_splits  sb    #*t  &alGD	 
 t %[$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'q! (k))) (rY   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[   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           
         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   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QrUAbqE6"1:6C.12c71dSYcE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 )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</*
cJS#
c 'S#:JD$r~~dD12c#h>>> ;
 	#/ y>S   rY   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^      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     sX   
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= /. )R < /.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   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.  >  sK    772;D	
bA38A
!T
:C
!T
:C"%ciia&8#))D!:L"M
EJQ5zSZ''' #N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;   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_groupkfoldr7  U  s    	A	
bA38AYYr]aFaA6DaA6D 26AtV1L1L+!XF81L   26AtV1L1L+!XF81L   lL1BRxQQQx 2 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  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_digitsrB  m  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*rY   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 )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_trivialrE    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)$ 0 66*"""rY   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 )NrH   r   r;   r\   r   rD  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_approximaterK    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)$ '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                 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 )NrH   r   r   r;   r   rG  r   )r   rf   r   r   ri   rU   r
  r   r   r   r+   )	rW   rS   rH  r   rV   r   r   rI  rJ  s	            rD   .test_stratified_group_kfold_homogeneous_groupsrO    s       +D
QA&A&)$**Q6*BH&M"{~~fUmVD\:??1DDD[[4)CI5

Ke<	 'NrY   	cls_distr))g?333333?)g333333?ffffff?)皙?r<  )r<  rS  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   r4   )r   r6   r   r;   rR   )qk)r   r   rf   r   r   choicer   r   rU   ri   r
  r   r   r   r   entropy)rP  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_kfoldre    sq   
 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)	:: 3M IH   rY   c                  D   t        dd      j                  t              } t        dd      j                  t              }t        t        j                  d      d      j                  t              }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 )NrS  r   r9   r`   r4   r;   )r   rU   rV   rf   int32r   ri   r-   )ss1ss2ss3ss4t1t2t3t4s           rD   test_shuffle_splitrq    s    
1
5
;
;A
>C

3
9
9!
<C
!1
=
C
CA
FC
Qa
8
>
>q
ACc3S1BB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                     t        j                  d      }t        j                  d      }t         | |      j                  ||            \  }}t	        |      |k(  sJ t	        |      |k(  sJ y NrF   
train_size)rf   r   r   rU   r   )rr  rx  	exp_trainexp_testrV   rW   X_trainX_tests           rD   $test_shuffle_split_default_test_sizer}    sb     	A
A;*=CCAqIJOGVw<9$$$v;("""rY   ))Nr^   r4   )r]   r]   rH   )rR  r]   rH   c                     t        j                  d      }t        j                  d      }t        d      }t        t	        |       j                  |||            \  }}t        |      |k(  sJ t        |      |k(  sJ y rv  )rf   r   r   r   r   rU   r   )rx  ry  rz  rV   rW   rS   r{  r|  s           rD   *test_group_shuffle_split_default_test_sizer    so     	A
A2YF,
CII!QPVWXOGVw<9$$$v;("""rY   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;   r4   r4   r4   rH   rS  r8   r4   r9   rx  r   )	r   r   r   r;   r;   r;   r4   r4   r4   rw  )	rf   r   rn   rr   rs   rt   r   r   rU   rV   rW   s     rD   "test_stratified_shuffle_split_initr  !  sT   
		!A


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


./A 
z	"#q1771=> 
#	z	"#a066q!<= 
#	"# 
#	" 
#	" 
#	" 
#	"	"	"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 )NrJ   r[   rF   r\   r   )r9   rx  r`   )rf   rg   r   rU   r   r   )rW   r9   rx  sssr   r   s         rD   0test_stratified_shuffle_split_respects_test_sizer  :  s}    
>?AIJ
 	Y:AeBGGCFOQ  t5zZ'''4yI%%% rY   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 )NrG   rI   rJ   r4   rK   r   i   r;   2   r   r   rM   r\   gQ?r   rg  T)return_inverse)rf   rg   concatenater   r   rU   r   r   
asanyarrayceilr-   uniquer   floatr,   r   r
  )
rc   ysrW   r  r9   rx  r   r   p_trainp_tests
             rD   "test_stratified_shuffle_split_iterr  F  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_countsr6   	thresholdbfcountprobrw   s         rD   assert_counts_are_okz@test_stratified_shuffle_split_even.<locals>.assert_counts_are_okq  sO     8O	[[1%E66%=Dy ON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  k  s    GH	O 	9>aV34'wQ
 sYcIo!<<"'')*<<GKE4q O".!6d8K LBBK1$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                  ^   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;   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syy1y*+KE4 r~~eT2B7 rzz%.		#a&0ABrY   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;   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    s5    	1a&1a&1a&1a&12
1a&1a&1a&1a&12 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)rY   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;   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syy1y*+KE4hGtWF WWQq!tW%NRWWWQT]3333RWWVAqD\2222rY   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 )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  Ix	"x h %O 
	Bryy BOO$5555RXXZ(Hgx*w(rY   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   rg  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	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# <  rY   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<   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    s   Da(Fa(F :----<8888<8888+,0MMMM!*T1I{VQK+P!QB$[1KAx299X./H#/1#4x(hQRl:SVW:WHGGCM**A ??1a?9XEEEH-J  "xx1Xx>t"NN:e#4j6FGNNPRT
 5zCI-X>>> yyD!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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;   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  M  sA    XX./F
FAhhvD1O##Af#5D$&,,Qv,>MA&,,Qv,>D#Q/55a5GMOA#]3dM5JK\69#|6L2MUD2J	uj1tY/ 7M L +88a8OOOO "//Qv/FFFFrY   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)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  c  s     XX()F
FA"$**1V*<=F 
1v	1v	1v *:%6lt5.14/ *:rY   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)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  w  s   WWQZAF
))2
3C	z	-%%aF34 
. WWQZAF
))
DVH M0 	0C 
z	-%%aF34 
. WWQZAF
))	))/ 1	C 
z	-_a(..q!V<= 
. YYq\!A!F
))	))/ 1	C 
z	-_a(..q!V<= 
.	-9 
.	- 
.	- 
.	- 
.	-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   rr   rs   rt   r;  s    rD   test_repeated_cv_value_errorsr    sT    56]]:&O ']]:& '& 7&&&&s   
A)
A5)A2	5A>	
RepeatedCVc                     d\  }} | ||      }dj                  |j                  j                        }|t        |      k(  sJ y )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     sM    Hih)DKGNN&& tK0000rY   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;   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_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 NrH   rL   r  )r   rj   )rw   r  r  r   s       rD   $test_get_n_splits_for_repeated_kfoldr    s:    HI
Y
?C 9, 0 0 2222rY   c                  Z    d} d}t        | |      }| |z  }||j                         k(  sJ y r  )r   rj   )rw   r  rskfr   s       rD   /test_get_n_splits_for_repeated_stratified_kfoldr    s:    HI"H	JD 9, 1 1 3333rY   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;   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   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)NrH   r  rw  rQ  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;   )rx  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   <GG&))Nr]   rH   rs  rt  c                 l    t        t        |       \  }}t        |      |k(  sJ t        |      |k(  sJ y )Nrw  )r   rV   r   )rx  ry  rz  r{  r|  s        rD   'test_train_test_split_default_test_sizer    s8     'qZ@OGVw<9$$$v;("""rY   z#array_namespace, device, dtype_namezshuffle,stratify)TNrL   )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   rF   rF   rF   r(   r   )r`   r   r  T)array_api_dispatch)r   r  r`   )xp)r/   rf   r   r   astypern   r   r	   r&   array_api_devicero   r+   r%   )r   r  array_namespacer)   
dtype_namer  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_splitr-     sZ    
ov	6B
		#x(A
		"A88JD::d6:*D88JD::d6:*D3Caa8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 
1" J'+;D+AAAAJ'+;D+AAAAI&*:4*@@@@I&*:4*@@@@tzz)))tzz)))??djj(((??djj(((*, )+? 
1	0s   /B(II)coo_containerc                    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  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   rM  r7   rL  )r4   rL   r4   rL   r\   )r9   r  r`   )r4   rS  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   )r.  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_splitr7  b  s\   
		#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 	=&QQ
t 4yM)))4y3u:%Q///vveqj!RVVEQJ%7777 %R 			"A	&q%9Mt4!Q(5":; rY   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?rM  )r  rx  N)rf   r   r   r   )
big_numberrV   rW   rU   r{  r|  r  r  s           rD   $test_train_test_split_32bit_overflowr;    s|     J 			*A	TJAQA$?E',$GVWf<<&++%333<<&++%333rY   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   ImportErrorrV   r   r0  )typesr=  InputFeatureTypeX_dfr{  r|  s         rD   test_train_test_split_pandasrC    sx    OE$Y ""*40'#3444&"2333 "  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)rf   r   r   r   r   r   )rD  rV   r1  r{  r|  s        rD   test_train_test_split_sparserG    si     			#x(A
1
C&s+OGVG5!888F 666 6rY   c                      t        t              } t        |       \  }}t        |t               sJ t        |t               sJ t        |       \  }}y r?   )r*   rV   r   r0  )rB  r{  r|  X_train_arr
X_test_arrs        rD   !test_train_test_split_mock_pandasrK    sI    D&t,OGVg}---fm,,,.t4KrY   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]   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_inputr[    s   

A
cUQY	B	BGGAJ,	-B	B!/?r(B10
,'8W 0@r(B10
,'8W 0@r(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                     t        j                  t              5  t        t	        | |      j                  t                     d d d        y # 1 sw Y   y xY w)Nr  )rr   rs   rt   r   r   rU   rV   r  s     rD   test_shufflesplit_errorsr]    s6    
 
z	"\I*EKKANO 
#	"	"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-   rU   rV   )r   r  r  s      rD   test_shufflesplit_reproducibler`    sT     
2	&Bbhhqk2kdak2288A;4O;41aQ;4O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 )	Nr4   r  rg  r]   rN   rL   r   rH   )
r   rf   r   rM  r	  r  rk   rl   rm   rU   )r  rV   r   r   rN  s        rD   &test_stratifiedshufflesplit_list_inputrb    s    
 12
>C

A
cUQY	B	BGGAJ,	-B	BJJD1b!12D1b9I4JKJJD1b!12D1b9I4JKrY   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   ro   rF   r   r4   r   r;   rS  r  rg  )rf   r   float64r   r  repeatr  r   r  s     rD    test_train_test_split_allow_nansrh    sb    
		#RZZ(00R8AffAadG
		1a&!''!*q.)AQSr:rY   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   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   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_multioutputs          rD   test_check_cvrp    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   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_wrapperrw  :  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   )rw   r   r`   r;   re  )&AlbertJeanBertrandMichelrz  FrancisRobertr|  RachelLoisMichelleBernardMarionLaurarz  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   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[[Hi0F'83		&HHYE&4,>L
7
NC!#))Aq&"9:9Atd ; u:V$$$YYuCEQJ2I IJJJJ  6"299U6U?345::: # ZZf-FyyAv.t2>>&->?1DDD / XX'	
)FV 299V$%HFIHy I'83GGIA HHYE!#))Aq&"9:9Atd ; u:V$$$5!AC
O6M$M NNNN " 
	 	 	"h6YYv&Eryyv!789Q>>> ' 
# ZZf-FyyAv.t2>>&->?1DDD /
 hlSH399Q6==?34G,/q!V0Lg,V(&%66*5%( -W
 XXo&FGGCK  A	z)P	QZ#))!Q78 
R	Q+ 
#	"* 
R	Qs   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;   r4   rH   rL   r[   r\   r]   r^   r   rF   r   rD     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    s   
Q!Q!Q!Q!R2r(RHEA 
z)O	P_a(..q12 
Q 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= 
Q	Ps   %FFc                     t        | |      D ]N  \  \  }}\  }}t        ||       t        |      |k  sJ t        t        |      |z
  d      }t        |||d         P y )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    se    474M00Z4,;>1113u:6:;lm(<=	 5NrY   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;   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%fl1M #Aa@FFqIL%fl1M #Aa@FFqIL%fl1MrY   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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    s0   
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 
L	K	Ks   ;(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  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,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 
E	D	Ds   (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  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  t  s     ))


"CqqIDAq[[Ar"F 	#A:C <CC("\?$CD	
 	!qHh=O	
 DrY   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       rD   __init__z.test_build_repr.<locals>.MockSplitter.__init__  s    DFDFDFrY   c                     t        |       S r?   )r    )r  s    rD   __repr__z.test_build_repr.<locals>.MockSplitter.__repr__  s    t$$rY   )r   N)rA   
__module____qualname__r  r  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           	           | 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)Nr9  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    sX     
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  rd   r9  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   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=1rd   )r   rr   rs   rt   r   rU   r   rV   rW   s      rD   !test_leave_one_out_empty_trainsetr    sF    	BC51#qA	z)V	WRXXa^ 
X	W	Ws   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)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    sV    	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 Falserd   rH   Fr   r  )rr   rs   rt   )r  s    rD   test_random_state_shuffle_falser    s,    
 
z)O	PaQ/ 
Q	P	Ps   1:zcv, expected{   r  r_   c                 $    t        |       |k(  sJ y r?   )r"   )r   rH  s     rD   test_yields_constant_splitsr    s    L #2&(222rY   r   )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_routingrS   TrU   )excludeN)hasattrr  GROUP_SPLITTERSrU   requestsNO_GROUP_SPLITTERSr$   )r   metadatas     rD   "test_splitter_get_metadata_routingr  	  sp     2-...&&(H	_~~&&x0D888	!	!>>****Hwi8rY   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    rD   test_splitter_set_split_requestr    s?     
_r.///	!	!223333 
"rY   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   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	-
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'rd   )rr   rs   r   rU   rV   )r   r   s     rD   "test_stratified_splitter_without_yr  -  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.  r7  rB  rE  rK  rn   rO  re  rq  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  rM  r	  r-  r7  r;  rC  rG  rK  r[  r]  r`  rb  rh  rp  rw  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   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## )+T+V 	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 }]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   $gg8g 