
    Pi'                       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jO        d          ZP ejQ        d          dz  ZR ejS        g d           ejS        g d           ejS        g d            ejS        g d!          g dg d"fZT e            ZUe	jV        W                    d#          ZXd$ ZYd% ZZd& Z[dd'Z\d( Z]d) Z^d* Z_d+ Z`d, Zae	jV        b                    d-d.d/g          e	jV        b                    d0g d1          e	jV        b                    d2e%e$g          d3                                     Zce	jV        b                    d-d.d/g          e	jV        b                    d0g d4          e	jV        b                    d2e%e$g          d5                                     Zdd6 Zee	jV        b                    d2e%e$g          d7             Zfd8 Zge	jV        b                    d2ee%e$g          d9             Zhd: Zid; Zjd< Zkd= Zld> Zme	jV        b                    d? ejS        dgd@z  dgd@z  z              ejS        g dA           ejn        ddgddgddgg          f ejS        dgdBz  dgdCz  z              ejS        g dD           ejn        dEdFgdEdFgdEdFgg          fg          dG             ZodH Zpe	jV        b                    dIg dJ          e	jV        b                    dKg dL          dM                         ZqdN Zre	jV        b                    dOe#e&g          e	jV        b                    dPg dQ          dR                         Zse	jV        b                    dPg dS          dT             ZtdU ZudV ZvdW ZwdX ZxdY ZydZ Zzd[ Z{d\ Z|d] Z}d^ Z~d_ Zd` Zda Zdb Ze	jV        b                    dce!e"g          dd             Zde Zdf Zdg Zdh Zdi Ze	jV        b                    dPg dj          dk             Ze	jV        b                    dl e7            e5m          e	jV        b                    dndod/ ej         ejO        d@           ej        dp          f          fdqf          dr                         Ze	jV        b                    dseD          dt             Zdu Zdv Ze	jV        b                    dweDeEz   eFz             dx             Zdy Zdz Ze	jV        b                    d{g d|          d}             Zd~ Zd Zd Zd Zd Ze	jV        b                    d2ee$g          e	jV        b                    d-d/d.g          d                         Zd Zd Zd Zd Zd Ze@d             Zd Ze	jV        b                    de#ee&f          d             Zd Zd Zd Ze	jV        b                    dee%e$ef          d             Ze	jV        b                    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j                            d                    d.f e%d/ej                            d                    d.f e!d          d.f e!ej                            d                    d.f e"d          d.f e"ej                            d                    d.f e#d          d.f e#ej                            d                    d.f ed          d.f eej                            d                    d.f e&d          d.f e&ej                            d                    d.f          d             Ze	jV        b                    deMd eMD             m          d             Ze	jV        b                    deMd eMD             m          d             Ze	jV        b                    deIem          d             Ze	jV        b                    deNd eND             m          d             ZdS )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              #   .   K   | ]}|j         j        V  d S N)	__class____name__).0splitters     |/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sklearn/model_selection/tests/test_split.py	<genexpr>rF   V   s(      WW88-6WWWWWW    
   r<   r<   r<   r<   r5   r5   r5      rJ   rJ   rJ   rJ   r   r   r   r<   r<   r<   r5   r5   r5   rJ   rJ   rJ   r   r<   r5   rJ   r   r<   r5   rJ   r   r<   r5   rJ   r   r<   r5   r<   r<   r5   r5   r5   rJ   rJ   rJ      rN   rN   rN   rN   rN   rN   rN   1rP   rP   rP   2rQ   rQ   3rR   rR   rR   rR   z0error:The groups parameter:UserWarning:sklearn.*c                     | j         j        t          v r|                     |||          S |                     ||          S )Ngroups)rA   rB   GROUP_SPLITTER_NAMESsplit)rD   XyrU   s       rE   _splitrZ   q   s@    "&:::~~a6~222~~a###rG   c                     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 ]\  }\  }}||         |                    |||          k    sJ t           j                            t#          t%          ||||                    t#          t%          ||||                               t%          ||||          D ]M\  }} t          j        |          j        j        dk    sJ t          j        |           j        j        dk    sJ N|t-          |          k    sJ d}!t/          j        t2          |!          5  |	                    d ||           d d d            n# 1 swxY w Y   t/          j        t2          |!          5  |
                    d ||           d d d            d S # 1 swxY w Y   d S )NrN   r5   rH   r<   rJ               )r<   r5   rJ   rN   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listrZ   asarraydtypekindreprpytestraises
ValueError)"	n_samplesn_unique_groupsn_splitsr7   n_shuffle_splitsrX   X_1drY   rU   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22A8LLL!!D
AXlll##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DD 	
Aq&))**DD!V1L1L,M,M	
 	
 	
 ""aF33 	6 	6KE4:e$$*/36666:d##).#55555 $r((""""" 2C	z	-	-	- * *q&)))* * * * * * * * * * * * * * *	z	-	-	- * *q&)))* * * * * * * * * * * * * * * * * *s$   5JJ J?K$$K(+K(c                  ,   d} t           j                            d          }|                    dd| df          }|                    dd| f          }|                    dd          }|                    dd| df          }|                    dd| f          }t                      t          d          t                      t                      t                      t                      t                      t                      t          d	
          t                      t                      t!          d          t#          d          t%                      t'          |          g}|D ]}t)          t+          ||||                     t)          t+          ||||                     	 t)          t+          ||||                     d# t,          $ r4}	d}
d                    |
          }|t1          |	          v sJ Y d }	~	d }	~	ww xY wd S )N   r<   r   rJ   r5   sizer6   r8   r9   r=   rx   )	test_foldrT   )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   rZ   ru   formatstr)rv   rngrX   rY   y_2dy_multilabelrU   	splittersrD   eallowed_target_typesr   s               rE   	test_2d_yr      s   I
)


"
"CAq	1~..AAq	|,,A99RD;;q!9a.;99L[[AYL[11FA!!---###A&)))I"  
! 
!VHa6222333VHaf555666	!!\&AAABBBB 	! 	! 	!#; CJJ$ C #a&&=========	!
! 
!s   2 G
H*HHc                    t          |           t          |          }} |                     |          t                      k    sJ |5|                     |          t          t          |                    k    sJ d S d S r@   )setintersectionunionrange)r   r   rv   s      rE   check_valid_splitr      s}    e**c$ii4E d##suu,,,,{{4  Ci(8(8$9$99999 99rG   c                 l   t          |          }|                     |||          |k    sJ t                      }d}|                     |||          D ]1\  }}	t	          ||	|           |dz  }|                    |	           2||k    sJ |"|t          t          |                    k    sJ d S d S )Nr   )rv   r<   )r4   rk   r   rW   r   updater   )
r   rX   rY   rU   expected_n_splitsrv   collected_test_samples
iterationsr   r   s
             rE   check_cv_coverager      s    QI??1a((,===== UUJxx1f-- , ,t%;;;;a
%%d++++ *****%U9-=-=)>)>>>>> >>rG   c                  J   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                              |           f t          j        g d          }t          d          }t          j        t          d          5  t          |                    ||                     d d d            n# 1 swxY w Y   t          d          }t          j        t          |                    }t          j        t          d          5  t          |                    |||                     d d d            n# 1 swxY w Y   t          j                    5  t          j        d           t!          |||d d           d d d            n# 1 swxY w Y   t          j                    5  t          j        d           t!          ||||d           d d d            n# 1 swxY w Y   t          j        g d          }t          j        t                    5  t          |                    ||                     d d d            n# 1 swxY w Y   t          j        t                    5  t          |                    ||                     d d d            n# 1 swxY w Y   t          j        t                    5  t	          d           d d d            n# 1 swxY w Y   t          j        t                    5  t	          d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d           d d d            n# 1 swxY w Y   t          j        t                    5  t	          d           d d d            n# 1 swxY w Y   t          j        t                    5  t	          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          d           d d d            n# 1 swxY w Y   t          j        t$                    5  t	          dd            d d d            d S # 1 swxY w Y   d S )Nr<   r5   rJ   rN   r\   r]   r^   r_   	   rH   )rJ   rJ   r   r   rJ   zThe least populated classre   ignorerU   r   )rJ   rJ   r   r   r5   r   z>k-fold cross-validation requires at least one train/test split      ?       @rx   shuffle)rg   rh   ru   nextr   rW   r   rs   warnsWarningr   arangelenwarningscatch_warningssimplefilterr   rt   	TypeError)X1X2rY   skf_3sgkf_3naive_groupserror_strings          rE   test_kfold_valueerrorsr     s%
   	Aq6Aq6Aq6*	+	+B	Aq6Aq6Aq6Aq6Ar7;	<	<BuQxx~~b))** 	"""##AAE	g%@	A	A	A ! !U[[Q   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! "!$$F9SVV$$L	g%@	A	A	A 0 0V\\"a..///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
	 	"	" J Jh'''%QtqIIIIJ J J J J J J J J J J J J J J 
	 	"	" S Sh'''&"aPQRRRRS S S S S S S S S S S S S S S 	"""##A	z	"	" ! !U[[Q   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	z	"	" " "V\\"a  !!!" " " " " " " " " " " " " " " 
z	"	"  a              	z	"	"  a              SL	z	6	6	6                	z	6	6	6                	z	6	6	6    Q                             	z	6	6	6    Q                              
z	"	"  c


              	z	"	"  c


              	z	"	"                	z	"	"                	z	"	" " "S!!!" " " " " " " " " " " " " " "	z	"	" " "S!!!" " " " " " " " " " " " " " " 
y	!	! ( (q$''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (sV  0$C  C$'C$6%E''E+.E+)F::F>F>)HHH$I77I;>I;$KKK/LLL/MMM3NNN5OOO7PPP9QQQ9RRR9SSS9TTT9UUU9VVV9WWW9XXXc                  2   t          j        d          } t          d          }t          || d d d           t          j        d          }t          d          }t          ||d d d           dt          d                              |          k    sJ d S )N   rJ   )rY   rU   r      r\   )rg   onesr   r   rk   )r   r}   r   s      rE   test_kfold_indicesr   [  s    	B	qBb"TQGGGG 
B	qBb"TQGGGG a%%b))))))))rG   c                  p   ddgddgddgddgd	d
gg} t          d                              | d d                   }t          |          \  }}t          |ddg           t          |ddg           t          |          \  }}t          |ddg           t          |ddg           t          d                              |           }t          |          \  }}t          |g d           t          |ddg           t          |          \  }}t          |ddg           t          |g d           d S )Nr<   r5   rJ   rN   r\   r]   r^   r_   r   rH   r   r   r   r<   r5   )r   rW   r   r.   )r   splitsr   r   s       rE   test_kfold_no_shuffler   k  s>   a&1a&1a&1a&1b'	2B1XX^^BssG$$Fv,,KE4taV$$$uq!f%%%v,,KE4taV$$$uq!f%%%1XX^^BFv,,KE4tYYY'''uq!f%%%v,,KE4taV$$$uiii(((((rG   c            	      L   t          j        d          g d}} t          d                              | |          }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                              | |          }t	          |          \  }}t          |g d	           t          |g d
           t	          |          \  }}t          |g d
           t          |g d	           dt          d                              | |          k    sJ t          j        d          } g d}g d}t           j                            t          t          d                              | |                    t          t          d                              | |                               g d}t          j
        |          } t           j                            t          t          d                              | |                    t          t          d                              | |                               d S )NrN   )r<   r<   r   r   r5   r   r<   rJ   r^   )r<   r<   r<   r   r   r   r   )r   r<   rJ   rN   )r5   r\   r]   r\   )rP   rP   rP   0r   r   r   )r   r<   r   r<   r   r<   r   r<   )rg   r   r   rW   r   r.   rk   rl   rm   rn   	ones_liker   )rX   rY   r   r   r   y1y2s          rE    test_stratified_kfold_no_shuffler     sv    71::|||qAQ%%a++Fv,,KE4taV$$$uq!f%%%v,,KE4taV$$$uq!f%%%71::,,,qAQ%%a++Fv,,KE4t\\\***uiii(((v,,KE4tYYY'''ulll+++ ""//1555555 	

A	,	,	,B			BJ_Q%%a,,--tOA4F4F4L4LQPR4S4S/T/T  
 	!  A
QAJ_Q%%a++,,d588>>!Q3G3G.H.H    rG   r   FTk)rN   r\   r]   r^   r_   r   rH   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
           |	                    t          |                     t          j
        |          dk    sJ d S )N  rN   皙?r   {Gz?r<   {Gz?ra   r   rT   {Gz?atol)rg   r   rh   intr   r   bincountrZ   r,   appendptp)r   r   r   rv   rX   rY   rU   distr
test_sizesra   r~   r   r   s                rE   test_stratified_kfold_ratiosr     s    I
	A
	
c$"####D9$%%
%	&#D9$%%
%	&	 	A Ys1vvFKNNSVV#EJ&-44AL
%g
>
>
>Cc1a777 % %tAeH--E

:EMMMMAdG,,s4yy8%dKKKK#d))$$$$6*""""""rG   )rN   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    sJ +d S )
Nd   r5   r   r   r   r<   r   c                 b    sd nd}d t           |          |           D             S )Nr   c                 P    g | ]#\  }}t          |          t          |          f$S  )rn   )rC   r   r   s      rE   
<listcomp>zNtest_stratified_kfold_label_invariance.<locals>.get_splits.<locals>.<listcomp>  s=     
 
 
t %[[$t**%
 
 
rG   r   rT   )rZ   )rY   ra   rX   rU   r   r   r   s     rE   
get_splitsz:test_stratified_kfold_label_invariance.<locals>.get_splits  s^    #*1tt
 
%alGDDD	     
 
 
 	
rG   r   )rg   rh   r   r   r   r   r   take)r   r   r   rv   rY   r   splits_basepermy_permsplits_permrX   rU   s   ```       @@rE   &test_stratified_kfold_label_invariancer     s-   
 I
	
c$"####D9$%%
%	&#D9$%%
%	&	 	A
 	AAYs1vvF

 

 

 

 

 

 

 

 

 *Q--KYYY'' * *q!! j((k)))))* *rG   c                  @   t          dd          D ]} t          d                              t          j        |                     }d |D             }t          j        |          t          j        |          z
  dk    sJ t          j        |          | k    sJ d S )N   r   r\   rX   c                 2    g | ]\  }}t          |          S r   r   rC   _r   s      rE   r   z&test_kfold_balance.<locals>.<listcomp>  s"    ---wq$T---rG   r<   )r   r   rW   rg   r   maxminsum)rd   r}   sizess      rE   test_kfold_balancer    s    2r]] " "1XX^^bgajj^))--"---uu-!3333ve}}!!!!!" "rG   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	 |D             }t          j        |          t          j        |          z
  dk    sJ t          j        |          |k    sJ d S )
Nr   r   rJ   r<      TFr   r   c                 2    g | ]\  }}t          |          S r   r   r  s      rE   r   z0test_stratifiedkfold_balance.<locals>.<listcomp>  s"    22271dSYY222rG   )	rg   r   r   r   r   rZ   r  r  r  )	r   rX   rY   rU   r   r   rd   r~   r  s	            rE   test_stratifiedkfold_balancer    s   
 	A	
a1#(AYs1vvF  & &U1g&&&r2 	& 	&AQrrUAbqbE6"1":66C22c222EF5MMBF5MM1a77776%==A%%%%%	&& &rG   c                  @   t          d          } t          ddd          }t          ddd          }t          j        d          }t          j        d          }t	          |                     |          |                    |          |                    |                    D ]b\  \  }}\  }}\  }	}
t          |||	fd          D ]:\  }}t          t          j        ||                    t          |          k    sJ ;d||<   ct          |          dk    sJ d S )NrJ   Tr   r   ra   r<   ,  r5   )
r   rg   r   zerosrj   rW   r   r   intersect1dr  )r}   kf2kf3rX   	all_foldstr1te1tr2te2tr3te3tr_atr_bs                rE   test_shuffle_kfoldr    s   	qB
4a
0
0
0C
4a
0
0
0C
AI.1
SYYq\\399Q<</ /  *
cJS#
c 'S#:: 	? 	?JD$r~dD1122c#hh>>>>> 	# y>>S      rG   c                 n   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                            t          t          ||||                    t          t          ||||                                | ddt           j        	                    d          	          }t          ||f||f||f          D ]}t          t          |g|R  t          |g|R            D ]\\  \  }	}
\  }	}t          j        t                    5  t           j                            |
|           d d d            n# 1 swxY w Y   ]d S )
N   r   r^   r<   r_      rJ   Tr  )rg   r   r   r   rl   rm   rn   rZ   r   r   rj   rs   rt   AssertionErrorr.   )r   rX   rY   groups_1r   r   groups_2r}   datar  test_atest_bs               rE   2test_shuffle_kfold_stratifiedkfold_reproducibilityr(    s   
A	
a1#'AyQ  H	B
qA37	ByR!!H 
q$Q	/	/	/BJVB1h''(($vb!Q/I/I*J*J   
q$RY-B-B1-E-E	F	F	FBQGaWx&:;; > >(+F2,=,=,=,=vb?P4?P?P?P(Q(Q 	> 	>$KQ!V
 ~.. > >
--ff===> > > > > > > > > > > > > > >	>> >s   ;!F((F,/F,c                     t          j        d          } dgdz  dgdz  z   }t          ddd          }t          ddd          }t          |                    | |          |                    | |                    D ]-\  \  }}\  }}t          |          t          |          k    s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          d
 |                    ||          D                       }	t          d |                    ||          D                       }
|	|
k    sJ d S )N(   r      r<   r\   Tr  r   rH   c                 8    g | ]}t          |d                    S r<   tuplerC   ss     rE   r   z0test_shuffle_stratifiedkfold.<locals>.<listcomp>Q  "    ===ad===rG   c                 8    g | ]}t          |d                    S r-  r.  r0  s     rE   r   z0test_shuffle_stratifiedkfold.<locals>.<listcomp>R  r2  rG   )	rg   r   r   rj   rW   r   r   r   sorted)X_40rY   kf0kf1r  test0test1rX   r  	test_set1	test_set2s              rE   test_shuffle_stratifiedkfoldr<  ?  s~    72;;D	
bA38A
!T
:
:
:C
!T
:
:
:C"%ciia&8&8#))D!:L:L"M"M ( (
EJQ5zzSZZ'''''c441EEEE
 		"A	
a1#'A
!T
:
:
:C
!T
:
:
:C==SYYq!__===>>I==SYYq!__===>>I	!!!!!!rG   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          }fd	|                    | d           D             }fd
|                    | d           D             }t          ||          D ]\  }}||k    s
J d            t          || |d           t          || |d           d S )Nr*  r   r+  r<   rJ   rN   Tr  c                 @    g | ]\  }}t          |                   S r   r   rC   r  test_idxrU   s      rE   r   z+test_shuffle_groupkfold.<locals>.<listcomp>`  7       "-!XF8  rG   c                 @    g | ]\  }}t          |                   S r   r?  r@  s      rE   r   z+test_shuffle_groupkfold.<locals>.<listcomp>c  rB  rG   z6Test groups should differ with different random states)r   )rg   r   r   r   rW   rj   r   )	rX   rY   gkf0gkf1test_groups0test_groups1g0g1rU   s	           @rE   test_shuffle_groupkfoldrJ  V  sC    	A	
bA38AYr]]aFaA666DaA666D   15AtV1L1L  L   15AtV1L1L  L lL11 R RBRxxxQxxxx dAq&A>>>>dAq&A>>>>>>rG   c                     t           j        d d         t           j        d d         }} t          dd          }d}t	          |d          }t          || ||                                          }d	|k    sJ |d
k    sJ t	          |dd          }t          || ||                                          }|d	k    sJ t	          |dd          }t          || ||                                          }|d	k    sJ t          |          }t          || ||                                          }d|k    sJ |d
k    sJ d S )NiX  rH   g{Gzt?)CgammarJ   Fr   r   gq=
ףp?皙?Tr   r  r<   gGz?)digitsr%  targetr#   r   r   meanr   )rX   rY   modelrx   r   
mean_scores         rE   1test_kfold_can_detect_dependent_samples_on_digitsrU  n  sy    ;ttfmDSD1qA"E"""EH	%	0	0	0B 144499;;J* 
xA	6	6	6B 144499;;J	xA	6	6	6B 144499;;J 
	"	"B 144499;;J*rG   c                     t          d          } t          j        dgdz  dgdz  z             }t          j        |                              dd          }t          j        d          }t          j        |          t          |          z  }g }|                     |||          D ]\  }}t          j	        ||         ||                   j
        dk    sJ t          t          j        ||                   t          |          z  |d	
           t          t          j        ||                   t          |          z  |d	
           |                    t          |                     t          j        |          dk    sJ d S )NrJ   r   r<   r]   r      r   )r<   r5   rJ   rN   r\   r]   r<   r<   r5   r5   rJ   rJ   rN   rN   r\   r\   r]   r]   r   r   )r   rg   rh   r   r   ro   r   r   rW   r  r   r,   r   r   )r   rY   rX   rU   r   r   r   r   s           rE   #test_stratified_group_kfold_trivialrX    sa   +++D
!qA38#$$A
QA&&AZNOOFKNNSVV#EJzz!Q// % %t~fUmVD\::?1DDDDAeH--E

:EMMMMAdG,,s4yy8%dKKKK#d))$$$$6*""""""rG   c                     t          d          } t          j        dgdz  dgdz  z             }t          j        |                              dd          }t          j        g d          }t          j        d	d
gddgddgg          }g }t          |                     |||          |          D ]\  \  }}}t          j        ||         ||                   j	        dk    sJ t          j
        ||                   t          |          z  }	t          |	|d           |                    t          |                     t          j        |          dk    sJ d S )NrJ   r   r<   r]   r   rW  r   )r<   r5   rJ   rJ   rN   rN   r<   r<   r5   r5   rJ   rN   r\   r\   r\   r]   r]   r]   g-?gsh|??gZd;O?gZd;O?r8   MbP?r   )r   rg   rh   r   r   ro   rj   rW   r  r   r   r   r,   r   r   )
r   rY   rX   rU   expectedr   r   r   expect_dist
split_dists
             rE   'test_stratified_group_kfold_approximater^    sY     +++D
!qA38#$$A
QA&&AXLLLMMFzE5>E5>C:FGGHJ&)$**Q6*B*BH&M&M % %"{~fUmVD\::?1DDDD[4))CII5

Ke<<<<#d))$$$$6*""""""rG   zy, groups, expectedr]   )r<   r<   r5   r5   rJ   rJ   rN   rN   r\   r\   r]   r]   r   rJ   )r<   r<   r<   r5   r5   r5   rJ   rJ   rJ   rN   r\   r]         ?      ?c                    t          d          }t          j        |                               dd          }t	          |                    || |          |          D ]p\  \  }}}t          j        ||         ||                   j        dk    sJ t          j        | |                   t          |          z  }t          ||d           qd S )NrJ   r   r   r<   r   rZ  r   )r   rg   r   r   rj   rW   r  r   r   r   r,   )	rY   rU   r[  r   rX   r   r   r\  r]  s	            rE   .test_stratified_group_kfold_homogeneous_groupsrb    s       +++D
QA&&A&)$**Q6*B*BH&M&M = ="{~fUmVD\::?1DDDD[4))CII5

Ke<<<<<	= =rG   c                  (   t          j        dgdz  dgdz  z             } t          j        t          |           df          }t          j        g d          }t          j        ddg          }d}t          |          D ]}t          d	d
|          }g }|                    || |          D ]\  }}	t          j        ||         ||	                   j	        dk    sJ t          t          j        | |                   t          |          z  |d           t          t          j        | |	                   t          |	          z  |d           |                    t          |	                     t          j        |          dk    sJ d S )Nr   rW  r<   r]   )r<   r<   rJ   rJ   rJ   rN   r\   r\   r\   r\   r^   r^   r5   r5   r]   r]   r_   r_   gUUUUUU?UUUUUU?r   rJ   Trx   r   ra   g:0yE>r   )rg   rh   r   r   ro   r   r   rW   r  r   r,   r   r   r   )
rY   rX   rU   expected_class_ratiosn_itersseedr   r   r   r   s
             rE   <test_stratified_group_kfold_shuffle_preserves_stratificationri    s    	!rQC!G#$$A
QA XLLLMMFJ'9:: Gg ' '#Q4PPP
::aF33 
	) 
	)KE4>&->>CqHHHHAeH%%E

24IPT    AdG$$s4yy02Gd    c$ii((((vj!!Q&&&&&' 'rG   	cls_distr))g?333333?)g333333?ffffff?)皙?rO  )rO  rm  r>   )r\   r   F   c                 `   d}t          |          }t          |          }t          j                            d          }d}|                    d||           }t          j        |                              dd          }|                    ||          }	|                    |||		          }
|                    |||		          }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 d S )Nr\   r   r   r   r5   )r   r7   r   r<   rT   )qk)r   r   rg   r   r   choicer   r   rW   rj   r  r   r   r   r   entropy)rj  r>   rx   r   gkfr   n_pointsrY   rX   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_kfoldr    s   
 H222D
h
'
'
'C
)


"
"CH

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

8X&&AAq++J		!Qq	))IIH25j)2L2L ; ;.Y!X~a
mQy\::?1DDDD[9..Y?
K(,,s8}}<	U]:)<<<<	EM)	::::IH      rG   c                     t          dd                              t                    } t          dd                              t                    }t          t          j        d          d                              t                    }t          dd                              t                    }t          | |||          D ]\  }}}}t          |d         |d                    t          |d         |d                    t          |d         |d                    t          |d         |d                    t          |d         |d                    t          |d         |d                    d S )Nrm  r   r:   ra   r5   r<   )r   rW   rX   rg   int32rj   r.   )ss1ss2ss3ss4t1t2t3t4s           rE   test_shuffle_splitr    sL   
1
5
5
5
;
;A
>
>C

3
3
3
9
9!
<
<C
!1
=
=
=
C
CA
F
FC

3
3
3
9
9!
<
<Cc3S11 ) )BB2a5"Q%(((2a5"Q%(((2a5"Q%(((2a5"Q%(((2a5"Q%(((2a5"Q%(((() )rG   split_classztrain_size, exp_train, exp_test))Nr   r<   r_   r_   r5   rO  r_   r5   c                 
   t          j        d          }t          j        d          }t           | |                              ||                    \  }}t	          |          |k    sJ t	          |          |k    sJ d S NrH   
train_size)rg   r   r   rW   r   )r  r  	exp_trainexp_testrX   rY   X_trainX_tests           rE   $test_shuffle_split_default_test_sizer  !  s     	A
A;;*===CCAqIIJJOGVw<<9$$$$v;;(""""""rG   ))Nr_   r5   )r^   r^   rJ   )rl  r^   rJ   c                 2   t          j        d          }t          j        d          }t          d          }t          t	          |                               |||                    \  }}t          |          |k    sJ t          |          |k    sJ d S r  )rg   r   r   r   r   rW   r   )r  r  r  rX   rY   rU   r  r  s           rE   *test_group_shuffle_split_default_test_sizer  1  s     	A
A2YYF,
CCCII!QPVWWXXOGVw<<9$$$$v;;(""""""rG   c                     t          j        d          } t          j        g d          }t          j        t
                    5  t          t          dd                              | |                     d d d            n# 1 swxY w Y   t          j        t
                    5  t          t          dd                              | |                     d d d            n# 1 swxY w Y   t          j        t
                    5  t          t          ddd                              | |                     d d d            n# 1 swxY w Y   t          j        d          } t          j        g d	          }t          j        t
                    5  t          t          d
                              | |                     d d d            n# 1 swxY w Y   t          j        t
                    5  t          t          d                              | |                     d d d            d S # 1 swxY w Y   d S )Nr^   )r   r<   r<   r<   r5   r5   r5   rJ   rm  r9   r5   r:   r  r   )	r   r   r   r<   r<   r<   r5   r5   r5   r  )	rg   r   ro   rs   rt   ru   r   r   rW   rX   rY   s     rE   "test_stratified_shuffle_split_initr  A  se   
	!A

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

...//A 
z	"	" ? ?#q111771==>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	z	"	" > >#a00066q!<<===> > > > > > > > > > > > > > > > > >sZ   3BB
B'3C&&C*-C*
4E

EE2GGG:2H99H= H=c                  *   t          j        g d          } d}d}t          d||d                              t          j        t          |                     |           }|D ]/\  }}t          |          |k    sJ t          |          |k    sJ 0d S )NrL   r\   rH   r]   r   )r:   r  ra   )rg   rh   r   rW   r   r   )rY   r:   r  sssr   r   s         rE   0test_stratified_shuffle_split_respects_test_sizer  Z  s    
>>>??AIJ
 	Y:A  eBGCFFOOQ   & &t5zzZ''''4yyI%%%%%& &rG   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        d
 t          d          D                       g dg dg} | D ]}t	          ddd                              t          j        t          |                    |          }t          j        |          }t          j	        dt          |          z            }t          |          |z
  }|D ]|\  }}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 S )NrI   rK   rL   r5   rM   r   i   r<   2   c                      g | ]}|gd |z   z  S )r   r   )rC   rd   s     rE   r   z6test_stratified_shuffle_split_iter.<locals>.<listcomp>m  s"    ;;;AsQw;;;rG   r   rO   r]   gQ?r   r  T)return_inverse)rg   rh   concatenater   r   rW   r   r   
asanyarrayceilr.   uniquer   floatr-   r   r  )	ysrY   r  r:   r  r   r   p_trainp_tests	            rE   "test_stratified_shuffle_split_iterr  f  s   
55566
55566
>>>BCC
AAABB
"qcBh&''
;;r;;;<<,,,DDD	
B  @ @$Q$QGGGMMGCFFOOQ
 
 M! GD3q66M**	VVi'
 	@ 	@KE4ry522BIag4F4FGGGk")AeHT"J"J"J1"MNNQVAeHR R G [1T74!H!H!H!KLLuAdGP P F &gvq999u::D		)QV3333u::++++t99	))))r~eT::B????	@@ @rG   c                  x   d} dfd}dD ]}t          j        |dz  ddgz            }t          d| z  d	          }dg|z  }dg|z  }d}|                    t          j        |          |
          D ]-\  }}	|dz  }||f||	ffD ]\  }
}|D ]}|
|xx         dz  cc<   .|k    sJ t          |d| z  dd| z  z
            \  }}t          |          |k    sJ t          |	          |k    sJ t          t          |                              |	                    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  } |||            |||           d S )Nr\   r   c                     dz  }t          j        |          }| D ]'}|                    |          }||k    s
J d            (d S )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_ok  sf     8O	[1%% 	 	E66%==D)###O $###	 	rG   )r]      r5   r   r<         ?rx   r:   ra   r  r  )rg   rh   r   rW   r   r!   r   r   r   r  r:   r  )n_foldsr  rv   rU   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    sg    GH	 	 	 	 	   5  5	9>aV344'wQ
 
 
 sYcIo!<<"')*<*<<GG 	% 	%KE4q O".!6d8K L % % % %BBKKK1$KKKK%% (****1w3#-;P
 
 
 5zzW$$$$4yyF""""3u::**40011Q6666y((3=00003v;;....<  A%%%%&MMI-	7^^i/
\:666[)4444A 5  5rG   c                     g ddz  ddgdz  z   } t          j        |           }t          ddd          }t          |                    || 	                    \  }}t          t          j        ||          g            t          t          j        ||          t          j        t          |                                d S )
Nr   r<   r5   rJ   rJ   rN   r\   r<   r8   r   r  r  )
rg   r   r   r   rW   r.   r  union1dr   r   )rY   rX   r  r   r   s        rE   4test_stratified_shuffle_split_overlap_train_test_bugr    s     	qAq6A:%A
QA
 !s
K
K
KCsyy1y**++KE4 r~eT22B777 rz%..	#a&&0A0ABBBBBrG   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	          |                    ||                     \  }}| |         }| |         }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    sJ -d S )Nr   r<   r8   r  r  )rg   rh   r   r   r   rW   r.   r  r  r   r   rR  )rY   rX   r  r   r   y_trainy_testexpected_ratios           rE   (test_stratified_shuffle_split_multilabelr    s{    	1a&1a&1a&1a&122
1a&1a&1a&1a&122 7 7 LOO$a3QOOO399qA9..//tE(4 	2>%66;;; 	2:eT22BIc!ff4E4EFFF 111a4))A!7!777771!6!666666)7 7rG   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	          |                    ||	                    \  }}||         }||         }t          j        |d d d
f                   }	|	t          j        |d d d
f                   k    sJ |	t          j        |d d d
f                   k    sJ d S )N)r<   r   r<   r   r   r<   rH   r   r8   r  r  rN   )rg   rh   r   r   r   rW   rR  )
row_with_many_zerosrow_with_many_onesrY   rX   r  r   r   r  r  r  s
             rE   4test_stratified_shuffle_split_multilabel_many_labelsr    s+    $))qcDj0999<"aS4Z/)));
%&+/A.BS.HHIIA
QA
 !s
K
K
KCsyy1y**++KE4hGtWF WQqqq!tW%%NRWWQQQT]333333RWVAAAqD\22222222rG   c                      t          j        dd          } g }g }t          t          dd                              t
                              D ]7\  }\  }}|                    |           |                    |           || |<   8t          |           }t          t          j	        |                     |
                                k    sJ t          |                                 \  }}t          ||           t          ||           d S )NrH   g      r\   Tr  )rg   fullri   r   rW   rX   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    GBEHG$-eAt.D.D.D.J.J1.M.M$N$N    Ix	"""x   h			Bry  BOO$5$55555RXXZZ(Hgx***w(((((rG   c                  >   t           D ]} t          j        t          |                     x}}d}d}t	          ||d          }t          |           |                    |||           |k    sJ t          j        |           }t          j        |           }|	                    |||           D ]h\  }}	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    sJ jd S )Nr]   rd  r   r  rT   r<   r  )test_groupsrg   r   r   r   rr   rk   r  ro   rW   anyisinr   r.   r  absround)groups_irX   rY   rx   r:   slol_uniquelr   r   l_train_uniquel_test_uniques               rE   test_group_shuffle_splitr    s    ! !H&&&A	IANNN 	S			 1X66(BBBB9X&&Jx  99Q(9;; 	 	KE4Yqx00NIag..Mvbgah>>?????vbgag~>>????? U8=1T7</169999 r~eT::B??? s=))E)c(mm2K,L,LLMMQRRRRRC''%yCMM0Q*R*RRSSWXXXXXX#	! !rG   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 ]n\  }\  }}t          t                    D ]O\  }}t          t          j        |                    }|dk    r|n
||dz
  z  dz  }	t          j        t          |                    x}
}|	                    |
||	          |	k    sJ t          j
        |          }|                    |
||	          D ]\  }}t          t          j        ||         ||                                                   g            t          |          t          |          z   t          |          k    sJ t          j        ||                   j        d
         s
J |            Qp| 	                    d d g d          dk    sJ | 	                    g d	          dk    sJ |	                    d d t          j        d                    dk    sJ |	                    t          j        d          	          dk    sJ t#          j        t&                    5  | 	                    d d dt          j        dg           d d d            n# 1 swxY w Y   t#          j        t&                    5  |	                    d d dt          j        dg           d d d            n# 1 swxY w Y   d}t#          j        t&          |          5  | 	                    d d d            d d d            n# 1 swxY w Y   t#          j        t&          |          5  |	                    d d d            d d d            d S # 1 swxY w Y   d S )Nr<   r=   r5   rb   zLeavePGroupsOut(n_groups=1)rc   rJ   zLeavePGroupsOut(n_groups=3)rT   r   )abcr  r  )r  皙?r  g333333?rN   r]   g        z*The 'groups' parameter should not be None.re   )r   r   rr   ri   r  r   rg   r  r   rk   ro   rW   r.   r  tolistshaper   rs   rt   ru   naninf)logolpgo_1lpgo_2jr   p_groups_outrd   r  r>   rx   rX   rY   
groups_arrr   r   r   s                   rE   test_leave_one_p_group_outr  6  s   Da(((Fa(((F ::-----<<88888<<88888+++,,0MMMMM!*T1I{VQK+P!Q!Q J JB$[11 	J 	JKAx29X..//H#/1#4#4xx(hQRl:SVW:WHGCMM***A ??1a?99XEEEEH--J  "xx1Xx>> J Jt"N:e#4j6FGGNNPPRT  
 5zzCII-X>>>> yD!1228;II\II;IJ	J2 T4)B)B)BCCqHHHH$8$8$899Q>>>>tT29Q<<88A====bill33q8888 
z	"	" : :$sBFC&8999: : : : : : : : : : : : : : :	z	"	" < <D$bfc(:;;;< < < < < < < < < < < < < < < 7C	z	-	-	- , ,$d+++, , , , , , , , , , , , , , ,	z	-	-	- . .D$---. . . . . . . . . . . . . . . . . .sH   %K==LL!%MMM:NN"%N"O))O-0O-c                     t          j        g d          } t          j        t          |                     }t          j        | d          }t	                                          ||           }t	                                          ||           }t          d                              ||           }t          d                              ||           }d|d d <   ||f||ffD ]A\  }}t          ||          D ]+\  \  }	}
\  }}t          |	|           t          |
|           ,Bdt          d          	                    ||| 	          k    sJ dt	                      	                    ||| 	          k    sJ d S )
N)r   r<   r5   r<   r<   r5   r   r   T)copyrT   r5   r=   r   rJ   )rY   rU   )
rg   rh   r   r   r   rW   r   rj   r.   rk   )rU   rX   groups_changingr   lolo_changinglplolplo_changingllollo_changingr   r   
train_chan	test_chans                rE   $test_leave_group_out_changing_groupsr  m  s    X...//F
FAhvD111O##Af#55D$&&,,Qv,>>MA&&&,,Qv,>>D#Q///55a5GGMOAAA#]3dM5JK 0 0\69#|6L6L 	0 	02MUD2J	uj111tY////	0
 +++88a8OOOOOO ""//Qv/FFFFFFFFrG   c                  v   t          j        g d          } t          j        t          |                     }t	          t                                          ||                     }g dddgfg dddgfg d	d
dgfg}|D ]7\  }}t          |          \  }}t          ||           t          ||           8d S )N)r5   r5   r   r   r<   r<   rT   )r   r<   rN   r\   r5   rJ   r  rN   r\   r5   rJ   rN   r\   r   r<   )	rg   rh   r   r   iterr   rW   r   r.   )rU   rX   r   expected_indicesexpected_trainexpected_testr   r   s           rE   %test_leave_group_out_order_dependencer    s     X((())F
FA"$$**1V*<<==F 
1v	1v	1v *: 0 0%6llt5.1114////0 0rG   c                     t          j        d          x} x}}t          j        d          }t	          j        t          |          5  t          t                      	                    | ||                     d d d            n# 1 swxY w Y   t          j        d          x} x}}t          j        d| d          }t	          j        t          |          5  t          t                      	                    | ||                     d d d            n# 1 swxY w Y   t          j        d          x} x}}t          j        d| d          }t	          j        t          |          5  t          t          d	
          	                    | ||                     d d d            n# 1 swxY w Y   t          j        d	          x} x}}t          j        d| d          }t	          j        t          |          5  t          t          d	
          	                    | ||                     d d d            d S # 1 swxY w Y   d S )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 presentrJ   r=   )rg   r   reescapers   rt   ru   r   r   rW   r   r   )rX   rY   rU   r   s       rE   :test_leave_one_p_group_out_error_on_fewer_number_of_groupsr    sL   WQZZAF
)2
3
3C	z	-	-	- 5 5%%aF334445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 WQZZAF
)	0V 	0 	0 	0 C 
z	-	-	- 5 5%%aF334445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 WQZZAF
)	)/	 	 	 C 
z	-	-	- > >_a(((..q!V<<===> > > > > > > > > > > > > > > Yq\\!A!F
)	)/	 	 	 C 
z	-	-	- > >_a(((..q!V<<===> > > > > > > > > > > > > > > > > >sH   1BB	B	1DDD.3F--F14F13II
Ic                     t           t          fD ]|} t          j        t                    5   | d           d d d            n# 1 swxY w Y   t          j        t                    5   | d           d d d            n# 1 swxY w Y   }d S )Nr   )	n_repeatsr   )r   r   rs   rt   ru   rN  s    rE   test_repeated_cv_value_errorsr    s   56  ]:&& 	 	BOOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:&& 	 	B	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s#   AA	
A	'B  B	B	
RepeatedCVc                     d\  }} | ||          }d                     |j        j                  }|t          |          k    sJ d S )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    s`    Hi*h)DDDKGNN&  tK00000000rG   c                     ddgddgddgddgd	d
gg} d}t          dd|          }t          d          D ]0}|                    |           }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            n# 1 swxY w Y   2d S )Nr<   r5   rJ   rN   r\   r]   r^   r_   r   rH   i{icrx   r  ra   )r   r<   rJ   r   )r5   rJ   rN   )r   r   rW   r   r.   rs   rt   StopIteration)rX   ra   rkfr  r   r   r   s          rE   &test_repeated_kfold_determinstic_splitr     s   
Q!Q!Q!Q!R1AL
al
K
K
KC 1XX  16llt51a&)))4+++6llt5))),,,4!Q(((6llt51a&)))4+++6llt5))),,,4!Q(((]=)) 	 	LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	% s   >EE	!E	c                  n    d} d}t          | |          }| |z  }||                                k    sJ d S NrJ   rN   r  )r   rk   )rx   r  r  r   s       rE   $test_get_n_splits_for_repeated_kfoldr#    sL    HI
Y
?
?
?C 9, 0 0 2 2222222rG   c                  n    d} d}t          | |          }| |z  }||                                k    sJ d S r"  )r   rk   )rx   r  rskfr   s       rE   /test_get_n_splits_for_repeated_stratified_kfoldr&    sL    HI"H	JJJD 9, 1 1 3 3333333rG   c                     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 ]1}|                    | |          }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            n# 1 swxY w Y   3d S )Nr<   r5   rJ   rN   r\   r]   r^   r_   r   rH   )r<   r<   r<   r   r   iqsr  )r   r5   rJ   )r   r<   rN   )r   r   rW   r   r.   rs   rt   r  )rX   rY   ra   r%  r  r   r   r   s           rE   1test_repeated_stratified_kfold_determinstic_splitr(    s   
Q!Q!Q!Q!R1AAL"AVVVD 1XX  Aq!!6llt51a&)))4+++6llt5))),,,4!Q(((6llt51a&)))4+++6llt5))),,,4!Q(((]=)) 	 	LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	% s   EE#	&E#	c            	      B   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            d S # 1 swxY w Y   d S )NrJ   r  r  rk  r  
wrong_typer9   r5   rN   )some_argument*   rH   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<   )r  r:   )rs   rt   ru   r   r   rg   float32r   r   rG   rE   test_train_test_split_errorsr/    s   
M*.///
M*.aSIIII
M*.aCTWXXXX
Ma*S//:c??    M*.aLQQQQ
M*.aARSTTTT
M)-uQxxsKKKK
M*.a%))DDD
M*.b		5SWXXXX	'
 
 
 @ @ 	rrQ????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   ' HHH))Nr^   rJ   r  r  c                     t          t          |           \  }}t          |          |k    sJ t          |          |k    sJ d S )Nr  )r   rX   r   )r  r  r  r  r  s        rE   'test_train_test_split_default_test_sizer1  4  sN     'qZ@@@OGVw<<9$$$$v;;(""""""rG   z#array_namespace, device, dtype_name)r  zshuffle,stratify)TNrN   )FNc                    t          ||          }t          j        d                              d          }t          j        d          }|                    |          }|                    ||          }	|                    |          }
|                    |
|          }t          ||d| |          \  }}}}t          d          5  ||                    |          }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 t          |          t          |	          k    sJ t          |          t          |          k    sJ t          |          t          |	          k    sJ t          |          t          |          k    sJ 	 d d d            n# 1 swxY w Y   |j
        |	j
        k    sJ |j
        |j
        k    sJ |j
        |	j
        k    sJ |j
        |j
        k    sJ t          t          ||
          |           t          t          ||
          |           d S )Nr   rH   rH   rH   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_namer5  rX   rY   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_splitrG  @  sW   " 
ov	6	6B
	#x((A
	"A88JD::d6:**D88JD::d6:**D3Caa84 4 40J	:y 
4	0	0	0 E E**X..KK"K7G$+A8
 8
 8
4
Iz9 Z((+}T/B/B1/EEEEEY''*mD.A.A!.DDDDDZ((+}T/B/B1/EEEEEY''*mD.A.A!.DDDDD  
++/?/E/EEEEE
++/?/E/EEEEE	**.>t.D.DDDDD	**.>t.D.DDDDDD)E E E E E E E E E E E E E E E, tz))))tz))))?dj((((?dj((((*,,,   )+++    s   E4IIIcoo_containerc                    t          j        d                              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          |||                                          }|\  }}}	}
}}t          |t                    sJ t          |t                    sJ t          j        d                              ddd	d
          }t          j        d                              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    sJ t          j        d          }dD ];}t          |d|          \  }}t          |ddg           t          |g d           <d S )Nr   r3  rH   r8   r  r   r  r\   rJ   r5   i  r^   r   )r^   r\   rJ   r5   r<   )rJ   r\   rJ   r5   )r^   r^   r   )rJ   r^   r   )r<   r<   r<   r<   r5   r5   r5   r5   )r5   rN   r`  r8   r_  )r5   rN   r5   rN   r]   )r:   r-  ra   )r5   rm  F)r   r:   r_   r   )r   r<   r5   rJ   rN   r\   r]   r^   )rg   r   r   r   r   r.   r  
isinstancern   r  rh   rj   r  )rH  rX   X_srY   rW   r  r  r  r  	X_s_trainX_s_testX_4dy_3dr:   exp_test_sizer   r   s                    rE   test_train_test_splitrQ    s   
	#x((A
-

C
	"A QTcBBBE',$GVWfv;;#g,,&&&&wqqq!t}gl333vaaad|Vb[111 QQXXZZ00E<A9GVY'6gt$$$$$fd##### 9^$$,,RAq99D9[!!))"a44DT4((E8>\))))8>\))))8>Z''''8>Z'''' 	)))**A$'(?(?(?$Q$Q 8 8 	=&QQ
 
 
t 4yyM))))4yy3u::%Q////veqj!!RVEQJ%7%777777 		"A < <	&q%9MMMt4!Q(((5":":":;;;;< <rG   c                      d} t          j        |           }|d| z  k    }t          |||d          }|\  }}}}|j        |j        z   | k    sJ |j        |j        z   | k    sJ dS )zCheck for integer overflow on 32-bit platforms.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20774
    i Gz?r`  )r-  r  N)rg   r   r   r   )
big_numberrX   rY   rW   r  r  r  r  s           rE   $test_train_test_split_32bit_overflowrU    s     J 		*A	TJAQA$???E',$GVWf<&+%3333<&+%333333rG   c                     t           g} 	 ddlm} |                     |           n# t          $ r Y nw xY w| D ]H} |t
                    }t          |          \  }}t          ||          sJ t          ||          sJ Id S )Nr   )	DataFrame)r+   pandasrW  r   ImportErrorrX   r   rJ  )typesrW  InputFeatureTypeX_dfr  r  s         rE   test_train_test_split_pandasr]    s    OE$$$$$$Y   ! 4 4""*400'#344444&"23333334 4s   & 
33sparse_containerc                     t          j        d                              d          } | |          }t          |          \  }}t	          |          r|j        dk    sJ t	          |          r|j        dk    sJ d S )Nr   r3  csr)rg   r   r   r   r   r   )r^  rX   rK  r  r  s        rE   test_train_test_split_sparsera    s     		#x((A

1

C&s++OGVG85!8!8!88F6 6 6 66 6 6rG   c                      t          t                    } t          |           \  }}t          |t                     sJ t          |t                     sJ t          |           \  }}d S r@   )r+   rX   r   rJ  )r\  r  r  X_train_arr
X_test_arrs        rE   !test_train_test_split_mock_pandasre    sb    D&t,,OGVg}-----fm,,,,,.t44KrG   c                     t          j        d          } dgdz  dgdz  z   }t          j        t          j        d          t          j        d          f          }|                                }dD ]}t          | ||r|nd d          \  }}}}t          | ||r|nd d          \  }	}
}}t          | ||r|nd d          \  }}}}t           j                            ||	           t           j                            ||           t           j                            ||           t           j                            ||           d S )	Nr^   rP   rN   r   rJ   r
  r   )r-  ra   )rg   r   hstackr  r  r   rl   rm   )rX   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_inputru    sg   


A
cUQY	B	BGAJJ,	-	-B	B! 2 2/?r(4BB10
 0
 0
,'8W 0@r(4BB10
 0
 0
,'8W 0@r(4BB10
 0
 0
,'8W 	
(333

(333

111

11112 2rG   ztest_size, train_size))r   N)r  N)r   gffffff?)Ny              ?)r   N)rH   N)r_   rJ   c                     t          j        t                    5  t          t	          | |                              t                               d d d            d S # 1 swxY w Y   d S )Nr  )rs   rt   ru   r   r   rW   rX   r  s     rE   test_shufflesplit_errorsrw  
  s    
 
z	"	" P P\I*EEEKKANNOOOP P P P P P P P P P P P P P P P P Ps   7AA"%A"c                      t          d          } t          d |                     t                    D             d |                     t                    D                        d S )N   r`   c                     g | ]\  }}|S r   r   rC   r  r  s      rE   r   z2test_shufflesplit_reproducible.<locals>.<listcomp>  s    222da222rG   c                     g | ]\  }}|S r   r   r{  s      rE   r   z2test_shufflesplit_reproducible.<locals>.<listcomp>  s    4O4O4O41aQ4O4O4OrG   )r   r.   rW   rX   )r   s    rE   test_shufflesplit_reproducibler}    s\     
2	&	&	&B22bhhqkk2224O4O288A;;4O4O4OPPPPPrG   c            	         t          dd          } t          j        d          }dgdz  dgdz  z   }t          j        t          j        d          t          j        d          f          }|                                }t          j                            t          | 	                    ||                    t          | 	                    ||                               t          j                            t          | 	                    ||                    t          | 	                    ||                               d S )	Nr5   r,  r  r^   rP   rN   r   rJ   )
r   rg   r   rg  r  r  rl   rm   rn   rW   )r  rX   r   r   rh  s        rE   &test_stratifiedshufflesplit_list_inputr    s    
 12
>
>
>C


A
cUQY	B	BGAJJ,	-	-B	BJD1b!1!122D1b9I9I4J4JKKKJD1b!1!122D1b9I9I4J4JKKKKKrG   c                     t          j        dt           j                                      dd          } t           j        | dd d f<   t          j        ddg| j        d         dz            }t          | |dd	
           d S )N   rp   rH   r   r5   r   r<   rm  r,  r  )rg   r   float64r   r  repeatr  r   r  s     rE    test_train_test_split_allow_nansr  &  sw    
	#RZ(((00R88AfAadG
	1a&!'!*q.))AQSr::::::rG   c            	         t          j        d          } t          dd          }t           j                            t          t          d                              |                     t          |                    |                                t          j        g d          }t          d|d          }t           j                            t          t          d                              | |                    t          |                    | |                               t          j        g d          }t          d|d          }t           j                            t          t          d                              | |                    t          |                    | |                               |
                    dd	          }t          d|d          }t           j                            t          t          d                              | |                    t          |                    | |                               t          j        t          t          d                              | |                    d
         t          t          d                              | |                    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                            t          t          d                              |                     t          |                    |                                t          j        d	dgd
dgd
d
gdd	gdd
gg          }t          d|d          }t           j                            t          t          d                              |                     t          |                    |                                t          j        t                    5  t          d           d d d            d S # 1 swxY w Y   d S )Nr   rJ   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   rN  )rg   r   r   rl   rm   rn   r   rW   rh   r   r   allr   rs   rt   ru   )rX   r   y_binaryy_multiclassy_multiclass_2dr   y_multioutputs          rE   test_check_cvr  .  s    


A	!	&	&	&B JDq!2!233T"((1++5F5FGGGx33344H	!X$	/	/	/BJ_Q%%a2233T"((1h:O:O5P5P   877788L	!\d	3	3	3BJ_Q%%a6677bhhq,>W>W9X9X   #**2q11O	!_	6	6	6BJ_Q%%a99::RXXa))**  
 v_Q%%a99::1=aq/2233A6	7    
 	

A8	|||\\\<<<N L 
!\d	3	3	3BJDq!2!233T"((1++5F5FGGGHq!fq!fq!fq!fq!fEFFM	!]t	4	4	4BJDq!2!233T"((1++5F5FGGG	z	"	"  F                 s   Q))Q-0Q-c            	          t                                          t          t                    } t	          |           }t
          j                            t          |                    t          t                              t          |                    t          t                                         t          dd                              t          t                    }t	          |          }t
          j                            t          |                    t          t                              t          |                    t          t                                         	 d}t
          j                            t          |                    t          t                              t          |                    t          t                                         n# t          $ r d}Y nw xY w|r
J d            d S )NTr   r  FzVIf the splits are randomized, successive calls to split should yield different results)
r   rW   rX   rY   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_wrapperr  \  s   ggmmAq!!Gw''O J_""1a(())40E0Ea0K0K+L+L  
 t!<<<BB1aHH!)*<!=!=J'--a3344'--a3344  
!

&&q!,,--+11!Q7788	
 	
 	
 	
  ! ! ! !  	C   s   'A8G   G/.G/c           	      `
   t           j                            |          }d}d}d}t          j        |          x}}d|z  }	|                    d||          }
||z  }t          t          j        |
                     t          j        |          }|sd n|} | |||          }t          |	                    |||
                    D ]\  }\  }}|||<   t          |          t          |
          k    sJ t          j        |          D ]+}|	t          t          ||k              |z
            k    sJ ,t          j        |
          D ]3}t          t          j        ||
|k                                 dk    sJ 4t          j        |
t                    }
|	                    |||
          D ]9\  }}t          t          j        |
|         |
|                             dk    sJ :t          j        g d	          }
t          t          j        |
                    }t          |
          }d}d|z  }	||z  }t          j        |          x}}t          j        |          }t          |	                    |||
                    D ]\  }\  }}|||<   t          |          t          |
          k    sJ |s@t          j        |          D ]+}|	t          t          ||k              |z
            k    sJ ,t!          j                    5  t!          j        d
t&                     t          j        |
          D ]3}t          t          j        ||
|k                                 dk    sJ 4	 d d d            n# 1 swxY w Y   t          j        |
t                    }
|	                    |||
          D ]9\  }}t          t          j        |
|         |
|                             dk    sJ : | |||          }t)          |	                    |||
                                                    }t-          |	                    |||
          |          D ]+\  \  }}\  }}t/          ||           t/          ||           ,t          j        g d          }
t          j        t          |
                    x}}t1          j        t4          d          5  t7          t9          d          	                    |||
                     d d d            d S # 1 swxY w Y   d S )Nr   r   r\   r  r   re  r<   r  )&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   rJ   r   )rg   r   r   r   r   r   r  r  ri   rW   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   rX   rY   	tolerancerU   ideal_n_groups_per_foldr  ra   lkfrd   r  r   groupr   lkf_copycv_itertrain1r9  train2test2s                             rE   test_group_kfoldr  }  s    )

 2
3
3C HIHGIA y I[[Hi00F'83	&HYE&>44,>L
%7
N
N
NC!#))Aq&"9"9::  9Atd u::V$$$$Yu K KCEQJ2I IJJJJJJJ 6"" ; ;29U6U?34455::::: Zf---FyyAv.. E Et2>&->>??1DDDDD X'	
 '	
 '	
) )FV 29V$$%%HFIHy I'83GIA HYE!#))Aq&"9"9::  9Atd u::V$$$$ O5!! 	O 	OAC
OO6M$M N NNNNNN 
	 	"	" ? ?h666Yv&& 	? 	?Eryv!78899Q>>>>>	?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Zf---FyyAv.. E Et2>&->>??1DDDDD uhlSSSH399Q6==??3344G,/q!V0L0Lg,V,V ) )(&%66***5%(((( Xooo&&FGCKK   A	z)P	Q	Q	Q 9 9Z###))!Q778889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s%   A#NN
N#3T##T'*T'c                     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                              |                      d d d            n# 1 swxY w Y   t	          d          }|                    | d d                   }t          |          \  }}t          |ddg           t          |ddg           t          |          \  }}t          |g d           t          |ddg           t	          d                              |           }t          |          \  }}t          |g d           t          |ddg           t          |          \  }}t          |g d           t          |ddg           t	          d                              |           }t          t          |                    }||	                                k    sJ |dk    sJ d S )Nr<   r5   rJ   rN   r\   r]   r^   r_   r   rH   r   rW     r	  z$Cannot have number of folds.*greaterre   r   r   r   r  r   r   r<   r5   rJ   rN   )
rs   rt   ru   r   r   rW   r.   r   rn   rk   )rX   tscvr   r   r   r  s         rE   test_time_series_cvr    sK   
Q!Q!Q!Q!R2r(RHEA 
z)O	P	P	P 3 3_a(((..q112223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1D ZZ#2#Fv,,KE4uq!f%%%taV$$$v,,KE4ulll+++taV$$$Q%%a((Fv,,KE4uiii(((taV$$$v,,KE4uooo...taV$$$ Q%%a((F$v,,''Od//111111as   1A00A47A4c                     t          | |          D ]h\  \  }}\  }}t          ||           t          |          |k    sJ t          t          |          |z
  d          }t          |||d                     id S )Nr   )rj   r.   r   r  )r   check_splitsmax_train_sizer   r   check_train
check_testsuffix_starts           rE   !_check_time_series_max_train_sizer  #  s    474M4M > >00Z4,,,;>11113u::6::;lmm(<====	> >rG   c                     t          j        d          } t          d                              |           }t          dd                              |           }t	          ||d           t          dd                              |           }t	          ||d           t          dd                              |           }t	          ||d           d S )N)r]   r<   rJ   r   )rx   r  )r  r5   r\   )rg   r  r   rW   r  )rX   r   r  s      rE   test_time_series_max_train_sizer  +  s    
Aa(((..q11F"Aa@@@FFqIIL%fl1MMMM #Aa@@@FFqIIL%fl1MMMM #Aa@@@FFqIIL%fl1MMMMMMrG   c                     t          j        d          } t          dd                              |           }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                              |           }t	          |          \  }}t          |g d           t          |ddg           t	          |          \  }}t          |g d           t          |ddg           t          j        t          d          5  t          dd
                              |           }t	          |           d d d            d S # 1 swxY w Y   d S )NrH   r<   rJ   )rx   r:   r   )r<   r5   rJ   r  rN   r\   r]   )r   r<   r5   rJ   rN   r\   r]   r^   r_   r   r5   rN   )rx   r:   r  r	  r]   r^   )rN   r\   r]   r^   r_   r   zToo many splits.*with test_sizere   r\   	rg   r  r   rW   r   r.   rs   rt   ru   rX   r   r   r   s       rE   test_time_series_test_sizer  :  s   
A a1555;;A>>Fv,,KE4uqc"""tYYY'''v,,KE4ulll+++tYYY'''v,,KE4u333444tYYY''' a1QGGGMMaPPFv,,KE4ulll+++taV$$$v,,KE4ulll+++taV$$$ 
z)J	K	K	K   !q999??BBV                 s   4GGGc                     t          j        d          } t          dd                              |           }t	          |          \  }}t          |ddg           t          |g d           t	          |          \  }}t          |g d           t          |g d           t          d	dd
                              |           }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                              |           }t	          |          \  }}t          |g d           t          |ddg           t	          |          \  }}t          |g d           t          |ddg           t          ddd	                              |           }t	          |          \  }}t          |ddg           t          |g d           t	          |          \  }}t          |g d           t          |g d           t          j        t          d          5  t          dd                              |           }t	          |           d d d            d S # 1 swxY w Y   d S )Nr  r5   )rx   gapr   r<   r  r  r  rJ   )rx   r  r  rN   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  ]  s8   
A aQ///55a88Fv,,KE4uq!f%%%tYYY'''v,,KE4uooo...tYYY''' aQqAAAGGJJFv,,KE4uq!f%%%taV$$$v,,KE4uq!f%%%taV$$$v,,KE4uq!f%%%taV$$$ aQqANNNTTUVWWFv,,KE4ulll+++taV$$$v,,KE4ulll+++taV$$$ aQ!<<<BB1EEFv,,KE4uq!f%%%tYYY'''v,,KE4uooo...tYYY''' 
z)C	D	D	D   !33399!<<V                 s   *4K++K/2K/c            
         t           j                            d          } t          ddd          \  }}|                     ddd          }t                      t          d          t                      t          d          t                      t          d          t          dd          g}t          |d          D ]?\  }}t          t                      d	d
dgi|d          }t          |||||d|i           @d S )Nr   r   r5   )rv   	n_classesra   r\   r   rJ   )rx   ra   strategy
stratifiedmost_frequentraise)
param_gridr   error_scorerU   )rX   rY   rU   r   params)rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   rX   rY   rU   cvsinner_cvouter_cvgss           rE   test_nested_cvr    s,    )


"
"CqqIIIDAq[[Ar""F 	###Aa(((:::C <CCC 	
 	
("\?$CD	
 
 
 	!qHh=O	
 	
 	
 	
 	
	
 	
rG   c                  ^     G d d          } t           | dd                    dk    sJ d S )Nc                       e Zd ZddZd ZdS )%test_build_repr.<locals>.MockSplitterr   Nc                 0    || _         || _        || _        d S r@   )r  r  r  )selfr  r  r  s       rE   __init__z.test_build_repr.<locals>.MockSplitter.__init__  s    DFDFDFFFrG   c                      t          |           S r@   )r    )r  s    rE   __repr__z.test_build_repr.<locals>.MockSplitter.__repr__  s    t$$$rG   )r   N)rB   
__module____qualname__r  r  r   rG   rE   MockSplitterr    s7        	 	 	 	
	% 	% 	% 	% 	%rG   r  r\   r]   zMockSplitter(a=5, b=6, c=None))rr   )r  s    rE   test_build_reprr    sX    % % % % % % % % Q""##'GGGGGGGrG   
CVSplitterc           	           | d          }dggdg}}t          j        t          d          5  t          t	          |||dg                     d d d            d S # 1 swxY w Y   d S )NrS  r9   r<   r   [With n_samples=1, test_size=0.99 and train_size=None, the resulting train set will be emptyre   rT   )rs   rt   ru   r   rZ   )r  r   rX   rY   s       rE   !test_shuffle_split_empty_trainsetr    s     
d	#	#	#BC51#qA	4
 
 
 + + 	VB1aS)))***+ + + + + + + + + + + + + + + + + +s   "AA"%A"c                  4   dgg\  } t          j        t          d          5  t          | d           d d d            n# 1 swxY w Y   dgdgdgg} t          j        t          d          5  t          | d           d d d            d S # 1 swxY w Y   d S )Nr<   r  re   rS  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    sA   C5DQ	4
 
 
 , , 	d++++, , , , , , , , , , , , , , , qcA3A	4
 
 
 , , 	d++++, , , , , , , , , , , , , , , , , ,s#   A  AA.BBBc                      t                      } dggdg}}t          j        t          d          5  t	          |                     ||                     d d d            d S # 1 swxY w Y   d S )Nr<   r   z+Cannot perform LeaveOneOut with n_samples=1re   )r   rs   rt   ru   r   rW   r   rX   rY   s      rE   !test_leave_one_out_empty_trainsetr    s    	BC51#qA	z)V	W	W	W  RXXa^^                 s   $A""A&)A&c                      t          d          } dgdggddg}}t          j        t          d          5  t	          |                     ||                     d d d            d S # 1 swxY w Y   d S )Nr5   r6   r<   r   rJ   z6p=2 must be strictly less than the number of samples=2re   )r   rs   rt   ru   r   rW   r  s      rE   test_leave_p_out_empty_trainsetr    s    	QBC!:1vqA	R
 
 
   	RXXa^^                 s   $A''A+.A+Klassc                     t          j        t          d          5   | ddd           d d d            d S # 1 swxY w Y   d S )Nz$has no effect since shuffle is Falsere   rJ   Fr   r  )rs   rt   ru   )r  s    rE   test_random_state_shuffle_falser     s    
 
z)O	P	P	P 0 0aQ////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   8<<zcv, expected{   r  r`   c                 0    t          |           |k    sJ d S r@   )r"   )r   r[  s     rE   test_yields_constant_splitsr    s$    L #2&&(222222rG   r   c                 ,    g | ]}t          |          S r   r   rC   r   s     rE   r   r   +      2S2S2Sr3r772S2S2SrG   c                     t          | d          sJ |                                 }| t          v r|j        j        d         du sJ n| t
          v r|j        j        rJ t          |dg           dS )z>Check get_metadata_routing returns the correct MetadataRouter.get_metadata_routingrU   TrW   )excludeN)hasattrr	  GROUP_SPLITTERSrW   requestsNO_GROUP_SPLITTERSr$   )r   metadatas     rE   "test_splitter_get_metadata_routingr  +  s     2-.....&&((H	_~&x0D88888	!	!	!>****Hwi888888rG   c                 ,    g | ]}t          |          S r   r  r  s     rE   r   r   8  r  rG   c                 z    | t           v rt          | d          sJ dS | t          v rt          | d          rJ dS dS )zJCheck set_split_request is defined for group splitters and not for others.set_split_requestN)r  r  r  rN  s    rE   test_splitter_set_split_requestr  8  s]     
_r.///////	!	!	!2233333 
"	!33rG   c                    d| j         j         }d}t          j                            d          }|                    dd|df          }|                    dd|f          }|                    dd|f          }t          j        t          |          5  | 	                    |||	           d d d            d S # 1 swxY w Y   d S )
Nz#The groups parameter is ignored by r   r<   r   rJ   r5   r   re   rT   )
rA   rB   rg   r   r   r   rs   r   UserWarningrW   )r   r   rv   r   rX   rY   rU   s          rE   )test_no_group_splitters_warns_with_groupsr  A  s   
G0E
G
GCI
)


"
"CAq	1~..AAq	|,,A[[AYL[11F	k	-	-	- & &
Af%%%& & & & & & & & & & & & & & & & & &s   B>>CCc                 ,    g | ]}t          |          S r   r  r  s     rE   r   r   P  s    *X*X*Xr3r77*X*X*XrG   c                     d}t          j        t          |          5  |                     t                     d d d            d S # 1 swxY w Y   d S )Nz+missing 1 required positional argument: 'y're   )rs   rt   r   rW   rX   )r   r   s     rE   "test_stratified_splitter_without_yr  O  s     8C	y	,	,	,  
                 s   AA
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*   r7  sklearn.utils._mockingr+   sklearn.utils._testingr,   r-   r.   r/   sklearn.utils.estimator_checksr0   sklearn.utils.fixesr1   r2   r3   sklearn.utils.validationr4   r  r  r   rV   ALL_SPLITTERSSPLITTERS_REQUIRING_TARGETr   rX   r   rY   rh   r  rP  markfilterwarnings
pytestmarkrZ   r   r   r   r   r   r   r   r   parametrizer   r   r  r  r  r(  r<  rJ  rU  rX  r^  ro   rb  ri  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r&  r(  r/  r1  rg  r  rG  rQ  rU  r]  ra  re  ru  rw  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  r  r   r  r  r   rG   rE   <module>r4     sO     				  O O O O O O O O O O            ! ! ! ! ! !       " " " " " " = = = = = = = = ) ) ) ) ) )                                         *         
       I I I I I I                 1 0 0 0 0 0                 O N N N N N N N N N 1 1 1 1 1 1 
EGGOOKMMINNNLNNS)))OLLL!!MOO  JLLOQ sWWWWWWW "_4 O  BGBKKBIbMMQBH11122BH11122BH:::;;BH===>>(((@@@ 
[''6 

$ $ $R* R* R*j$! $! $!N	: 	: 	: 	:? ? ?$F( F( F(R* * * ) ) ).( ( (V UDM2244455?4H"IJJ# # KJ 65 32#0 UDM22iii((?4H"IJJ* * KJ )( 32*>" " " ?4H"IJJ& & KJ&&! ! !. 5/;O"PQQ> > RQ>>" " ".? ? ?0) ) )X# # #$# # #$  BHaS1WsQw&''BH999::BJc
S#Jc
;<<	
 BHaS1WsQw&''BH999::BJttTlT4LABB	
 = = =' ' '> &V&V&VWW[[[11! ! 21 XW!6) ) ) 7M(NOO%'M'M'M 	# 	#  PO	# %'M'M'M 
# 
# 
#> > >2	& 	& 	&"@ "@ "@J15 15 15hC C C"7 7 723 3 3.) ) )"" " "J4. 4. 4.nG G G,0 0 0( >  >  >F   7N'OPP1 1 QP1  :3 3 34 4 4  <@ @ @8 %'M'M'M # # # )--//'   
 	yry'"'!**hbhqkk2334	 3 3  3l .99,< ,< :9,<^4 4 4.4 4 4" 7.H 7 7 75 5 52 2 20 WWW P P	 P
Q Q Q	L 	L 	L; ; ;+ + +\  B :/C"DEET5M22|9 |9 32 FE|9~"  "  " J> > >N N N     F6 6 6r 
 
 
:
H 
H 
H <!24JK 
+ 
+ 
+, , ,,     e_&:JG 0 0 0 !	$!	t#	.	.	.5! 
		D!! 
C	8	8	8$?	!
 
	d	=	=	=tD! 
			&! 
C	(	(	($/! 
!	 c	2	2	2D9! 
3	'	'	'.! 
		,	,	,d3! 
 	S	1	1	148! 
t! 
Ds	3	3	3T:! 
		D!! 
!  
			T"!!" 
!	$	$	$d+#!$ 
Q%!& 
t$	/	/	/7'!( 
t$	/	/	/7)!* 
BI4I4I!4L4L	M	M	MuU+!, 
BI4I4I!4L4L	M	M	MuU-!. 
D	)	)	)51/!0 
BI$9$9!$<$<	=	=	=uE1!2 
!	 d	3	3	3U;3!4 
!	 bi.C.CA.F.F	G	G	GO5!6 
4	(	(	(%07!8 
29#8#8#;#;	<	<	<eD9!: 
		-	-	-u5;!< 
		(=(=a(@(@	A	A	A5I=!> 
 	T	2	2	2E:?!@ 
 	RY-B-B1-E-E	F	F	FNA!$ $J3 3K$ $J3 }2S2S]2S2S2STT	9 	9 UT	9 }2S2S]2S2S2STT4 4 UT4 1s;;
& 
& <;
& 
$*X*X=W*X*X*X       rG   