
    _nd9                       d Z ddlZddlZddlZddlZddlmZmZm	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 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 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 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$ 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) 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. dd"l/m0Z0 dd#l1m2Z2 dd$l1m3Z3 dd%l1m4Z4 dd&l5m6Z6 dd'l5m7Z7 dd(l8m9Z9  ej:        d)          Z; ej<        d)          d*z  Z= e ej>        d+                    Z? ej@        g d,           ej@        g d-           ej@        g d.           ej@        g d/          g d,g d0fZA e6            ZBed1             ZCd2 ZDdd3ZEd4 ZFd5 ZGd6 ZHd7 ZId8 ZJejK        L                    d9d:d;g          ejK        L                    d<g d=          ejK        L                    d>ee.g          d?                                     ZMejK        L                    d9d:d;g          ejK        L                    d<g d@          ejK        L                    d>ee.g          dA                                     ZNdB ZOejK        L                    d>ee.g          dC             ZPdD ZQejK        L                    d>eee.g          dE             ZRdF ZSdG ZTdH ZUdI ZVejK        L                    dJ ej@        dgdKz  dLgdKz  z              ej@        g dM           ejW        dNdNgdNdNgdNdNgg          f ej@        dgdOz  dLgdPz  z              ej@        g dQ           ejW        dRdSgdRdSgdRdSgg          fg          dT             ZXejK        L                    dUg dV          ejK        L                    dWg dX          dY                         ZYdZ ZZejK        L                    d[e%e'g          ejK        L                    d\g d]          d^                         Z[ejK        L                    d\g d_          d`             Z\eda             Z]db Z^dc Z_dd Z`de Zadf Zbdg Zcdh Zddi Zedj Zfdk Zgdl Zhdm Ziedn             ZjejK        L                    doe,e-g          dp             Zkdq Zldr Zmds Zndt Zodu ZpejK        L                    dvg dw          dx             ZqejK        L                    dvg dy          dz             ZrejK        L                    d\g d{          d|             Zsd} Ztd~ Zued             Zvd Zwd Zxd ZyejK        L                    dg d          d             Zzd Z{d Z|d Z}d Z~d ZejK        L                    d>ee.g          d             Zd Zd Zd Zd Zd Zd Zd ZejK        L                    de%e&e'f          d             Zd Zd Zd ZejK        L                    deee.f          d             ZejK        L                    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;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             ZdS )zTest the split module    N)
coo_matrix
csc_matrix
csr_matrix)stats)comb)combinations)combinations_with_replacement)permutations)assert_allclose)assert_array_almost_equal)assert_array_equal)ignore_warnings)_num_samples)MockDataFrame)cross_val_score)KFold)StratifiedKFold)
GroupKFold)TimeSeriesSplit)LeaveOneOut)LeaveOneGroupOut)	LeavePOut)LeavePGroupsOut)ShuffleSplit)GroupShuffleSplit)StratifiedShuffleSplit)PredefinedSplit)check_cv)train_test_split)GridSearchCV)RepeatedKFold)RepeatedStratifiedKFold)StratifiedGroupKFold)DummyClassifier)_validate_shuffle_split_build_repr_yields_constant_splits)load_digits)make_classification)SVC
            r1   r1   r1   r.   r.   r.      r2   r2   r2   r2   r   r   r   r1   r1   r1   r.   r.   r.   r2   r2   r2   r   r1   r.   r2   r   r1   r.   r2   r   r1   r.   r2   r   r1   r.   r1   r1   r.   r.   r.   r2   r2   r2      r6   r6   r6   r6   r6   r6   r6   1r8   r8   r8   2r9   r9   3r:   r:   r:   r:   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#          |                    |||                               |                    |||          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 )Nr6   r.   r-   r1   r2   r/            )r1   r.   r2   r6   )r1   r1   r.   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listsplitasarraydtypekindreprpytestraises
ValueError)"	n_samplesn_unique_groupsn_splitspn_shuffle_splitsXX_1dygroupsloolpokfskflololoposspssgkfloo_reprlpo_reprkf_reprskf_repr	lolo_repr	lopo_reprss_reprps_repr	sgkf_reprn_splits_expectedrC   cvcv_reprtraintestmsgs"                                     Hlib/python3.11/site-packages/sklearn/model_selection/tests/test_split.py(test_cross_validator_with_default_paramsrx   A   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 	
!Q''(($rxxa/H/H*I*I	
 	
 	
 88Aq&11 	6 	6KE4:e$$*/36666:d##).#55555 $r((""""" 2C	z	-	-	- * *q&)))* * * * * * * * * * * * * * *	z	-	-	- * *q&)))* * * * * * * * * * * * * * * * * *s$   J**J.1J.K55K9<K9c                  D   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)          |                    |||                     p# t,          $ r4}	d}
d                    |
          }|t1          |	          v sJ Y d }	~	d }	~	ww xY wd S )N   r1   r   r2   r.   )sizerY         ?	test_sizen_groupsrX   )	test_fold)binary
multiclassz/Supported target types are: {}. Got 'multilabel)rF   randomRandomStaterandintreshaper   r   r   r   r!   r"   r#   r   r   r   r   r   r   r   r   rM   rN   rU   formatstr)rV   rngr[   r]   y_2dy_multilabelr^   	splitterssplittereallowed_target_typesrv   s               rw   	test_2d_yr      s   I
)


"
"CAq	1~..AAq	|,,A99RD;;q!9a.;99L[[AYL[11FA!!---###A&)))I"  
! 
!X^^Aq&))***X^^AtV,,---	!<889999 	! 	! 	!#; CJJ$ C #a&&=========	!
! 
!s   :$G
H)*HHc                    t          |           t          |          }} |                     |          t                      k    sJ |5|                     |          t          t          |                    k    sJ d S d S N)setintersectionunionrange)rt   ru   rV   s      rw   check_valid_splitr      s}    e**c$ii4E d##suu,,,,{{4  Ci(8(8$9$99999 99    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   r1   )r   rJ   r   rN   r   updater   )
rr   r[   r]   r^   expected_n_splitsrV   collected_test_samples
iterationsrt   ru   s
             rw   check_cv_coverager      s    QI??1a((,===== UUJxx1f-- , ,t%;;;;a
%%d++++ *****%U9-=-=)>)>>>>> >>r   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 )Nr1   r.   r2   r6   r/   r<   r=   r>   	   r-   )r2   r2   r|   r|   r2   zThe least populated classrD   ignorer^   r   )r2   r2   r|   r|   r.   r   z>k-fold cross-validation requires at least one train/test split      ?       @rX   shuffle)rF   rG   rU   nextr   rN   r   rS   warnsWarningr#   arangelenwarningscatch_warningssimplefilterr   rT   	TypeError)X1X2r]   skf_3sgkf_3naive_groupserror_strings          rw   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   r2   )r]   r^   r      r/   )rF   onesr   r   rJ   )r   ra   r   s      rw   test_kfold_indicesr   %  s    	B	qBb"TQGGGG 
B	qBb"TQGGGG a%%b))))))))r   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 )Nr1   r.   r2   r6   r/   r<   r=   r>   r   r-   r|   r   r   r1   r.   )r   rN   r   r   )r   splitsrt   ru   s       rw   test_kfold_no_shuffler   5  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(((((r   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 )Nr6   )r1   r1   r   r   r.   r   r1   r2   r=   )r1   r1   r1   r   r   r   r   )r   r1   r2   r6   )r.   r/   r<   r/   )r8   r8   r8   0r   r   r   )r   r1   r   r1   r   r1   r   r1   )rF   r   r   rN   r   r   rJ   rK   rL   rM   	ones_liker   )r[   r]   r   rt   ru   y1y2s          rw    test_stratified_kfold_no_shuffler   L  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    r   r   FTk)r6   r/   r<   r=   r>   r   r-   kfoldc                 0   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}	 || |	|          }
|
                    |||	          D ]\  }}t          t          j        ||                   t          |          z  |d
           t          t          j        ||                   t          |          z  |d
           |	                    t          |                     t          j
        |          dk    sJ d S )N  r6   皙?r   {Gz?r1   {Gz?r@   r   r^   {Gz?atol)rF   r   rG   intr   r   bincountrN   r   appendptp)r   r   r   rV   r[   r]   r^   distr
test_sizesr@   rb   rt   ru   s                rw   test_stratified_kfold_ratiosr   w  s    I
	A
	
c$"####D9$%%
%	&#D9$%%
%	&	 	A Ys1vvFKNNSVV#EJ&-44AL
%g
>
>
>CyyAfy55 % %tAeH--E

:EMMMMAdG,,s4yy8%dKKKK#d))$$$$6*""""""r   )r6   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   r.   r   r   r   r1   r   c                 l    sd nd}d  |                               |           D             S )Nr   c                 P    g | ]#\  }}t          |          t          |          f$S  )rM   ).0rt   ru   s      rw   
<listcomp>zNtest_stratified_kfold_label_invariance.<locals>.get_splits.<locals>.<listcomp>  s=     
 
 
t %[[$t**%
 
 
r   r   r   )rN   )r]   r@   r[   r^   r   r   r   s     rw   
get_splitsz:test_stratified_kfold_label_invariance.<locals>.get_splits  s]    #*1tt
 
$ug     eAqe((	
 
 
 	
r   r   )rF   rG   r   r   r   r   r
   take)r   r   r   rV   r]   r   splits_basepermy_permsplits_permr[   r^   s   ```       @@rw   &test_stratified_kfold_label_invariancer     s-   
 I
	
c$"####D9$%%
%	&#D9$%%
%	&	 	A
 	AAYs1vvF
 
 
 
 
 
 
 
 
 *Q--KYYY'' * *q!! j((k)))))* *r   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/   r[   c                 2    g | ]\  }}t          |          S r   r   r   _ru   s      rw   r   z&test_kfold_balance.<locals>.<listcomp>  s"    ---wq$T---r   r1   )r   r   rN   rF   r   maxminsum)rC   ra   sizess      rw   test_kfold_balancer     s    2r]] " "1XX^^bgajj^))--"---uu-!3333ve}}!!!!!" "r   c           	         t          j        d          }dgdz  dgdz  z   }t          j        t          |                    }dD ]} | d|          }t	          dd          D ]}|                    |d |         |d |         |d |                   }d	 |D             }t          j        |          t          j        |          z
  dk    sJ t          j        |          |k    sJ d S )
Nr   r   r2   r1      TFr   r   c                 2    g | ]\  }}t          |          S r   r   r   s      rw   r   z0test_stratifiedkfold_balance.<locals>.<listcomp>  s"    22271dSYY222r   )	rF   r   r   r   r   rN   r   r   r   )	r   r[   r]   r^   r   rr   rC   rb   r   s	            rw   test_stratifiedkfold_balancer     s   
 	A	
a1#(AYs1vvF  & &U1g&&&r2 	& 	&A((1RaR5!BQB%44C22c222EF5MMBF5MM1a77776%==A%%%%%	&& &r   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 )Nr2   Tr   r   r@   r1   ,  r.   )
r   rF   r   zerosrI   rN   r   r   intersect1dr   )ra   kf2kf3r[   	all_foldstr1te1tr2te2tr3te3tr_atr_bs                rw   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      r   c           
      v   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          |                    |||                                | ddt           j        	                    d          	          }t          ||f||f||f          D ]}t           |j        |  |j        |           D ]\\  \  }	}
\  }	}t          j        t                    5  t           j                            |
|           d d d            n# 1 swxY w Y   ]d S )
N   r   r=   r1   r>      r2   Tr   )rF   r   r   r   rK   rL   rM   rN   r   r   rI   rS   rT   AssertionErrorr   )r   r[   r]   groups_1r   r   groups_2ra   datar   test_atest_bs               rw   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RXXaH%%&&RXXaH-E-E(F(F   
q$RY-B-B1-E-E	F	F	FBQGaWx&:;; > >(+HBHdOXRXt_(M(M 	> 	>$KQ!V
 ~.. > >
--ff===> > > > > > > > > > > > > > >	>> >s   ?!F,,F03F0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      r1   r/   Tr   r   r-   c                 8    g | ]}t          |d                    S r1   tupler   ss     rw   r   z0test_shuffle_stratifiedkfold.<locals>.<listcomp>  "    ===ad===r   c                 8    g | ]}t          |d                    S r  r  r  s     rw   r   z0test_shuffle_stratifiedkfold.<locals>.<listcomp>  r!  r   )	rF   r   r   rI   rN   r   r   r   sorted)X_40r]   kf0kf1r   test0test1r[   r  	test_set1	test_set2s              rw   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	!!!!!!r   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  r-   g{Gzt?)Cgammar2   Fr   rr   gq=
ףp?皙?Tr   r   r1   gGz?)digitsr  targetr,   r   r   meanr   )r[   r]   modelrX   rr   
mean_scores         rw   1test_kfold_can_detect_dependent_samples_on_digitsr6    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*r   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 )Nr2   r   r1   r<   r      r|   )r1   r.   r2   r6   r/   r<   r1   r1   r.   r.   r2   r2   r6   r6   r/   r/   r<   r<   r   r   )r#   rF   rG   r   r   rO   r   r   rN   r  r{   r   r   r   )rg   r]   r[   r^   r   r   rt   ru   s           rw   #test_stratified_group_kfold_trivialr9  I  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*""""""r   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 )Nr2   r   r1   r<   r   r8  r|   )r1   r.   r2   r2   r6   r6   r1   r1   r.   r.   r2   r6   r/   r/   r/   r<   r<   r<   g-?gsh|??gZd;O?gZd;O?r~   MbP?r   )r#   rF   rG   r   r   rO   rI   rN   r  r{   r   r   r   r   r   )
rg   r]   r[   r^   expectedr   rt   ru   expect_dist
split_dists
             rw   '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*""""""r   zy, groups, expectedr<   r1   )r1   r1   r.   r.   r2   r2   r6   r6   r/   r/   r<   r<   r~   r   r2   )r1   r1   r1   r.   r.   r.   r2   r2   r2   r6   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 )Nr2   r   r|   r1   r   r;  r   )r#   rF   r   r   rI   rN   r  r{   r   r   r   )	r]   r^   r<  rg   r[   rt   ru   r=  r>  s	            rw   .test_stratified_group_kfold_homogeneous_groupsrC  m  s       +++D
QA&&A&)$**Q6*B*BH&M&M = ="{~fUmVD\::?1DDDD[4))CII5

Ke<<<<<	= =r   	cls_distr))g?333333?)g333333?ffffff?)皙?r0  )r0  rG  r   )r/   rz   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   r.   )r{   rY   r|   r1   r   )qk)r#   r   rF   r   r   choicer   r   rN   rI   r  r{   r   r   r   entropy)rD  r   rX   rg   gkfr   n_pointsr]   r[   g
sgkf_folds	gkf_folds	sgkf_entrgkf_entr
sgkf_train	sgkf_testr   gkf_test
sgkf_distr	gkf_distrs                       rw   /test_stratified_group_kfold_against_group_kfoldrY    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      r   c                     t          dd                              t                    } t          dd                              t                    }t          t          j        d          d                              t                    }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 )NrG  r   r   r@   r.   r1   )r   rN   r[   rF   int32r   rI   r   )ss1ss2ss3ss4t1t2t3t4s           rw   test_shuffle_splitre    sR   
1
5
5
5
;
;A
>
>C

3
3
3
9
9!
<
<C
!1
=
=
=
C
CA
F
FC
Qa
8
8
8
>
>q
A
ACc3S11 ) )BB2a5"Q%(((2a5"Q%(((2a5"Q%(((2a5"Q%(((2a5"Q%(((2a5"Q%(((() )r   split_classztrain_size, exp_train, exp_test))Nr   r1   r>   r>   r.   r0  r>   r.   c                 
   t          j        d          }t          j        d          }t           | |                              ||                    \  }}t	          |          |k    sJ t	          |          |k    sJ d S Nr-   
train_size)rF   r   r   rN   r   )rf  rl  	exp_trainexp_testr[   r]   X_trainX_tests           rw   $test_shuffle_split_default_test_sizerq    s     	A
A;;*===CCAqIIJJOGVw<<9$$$$v;;(""""""r   ))Nr>   r.   )r=   r=   r2   )rF  r=   r2   c                 2   t          j        d          }t          j        d          }t          d          }t          t	          |                               |||                    \  }}t          |          |k    sJ t          |          |k    sJ d S rj  )rF   r   r   r   r   rN   r   )rl  rm  rn  r[   r]   r^   ro  rp  s           rw   *test_group_shuffle_split_default_test_sizers    s     	A
A2YYF,
CCCII!QPVWWXXOGVw<<9$$$$v;;(""""""r   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   r1   r1   r1   r.   r.   r.   r2   rG  r   r.   r   rl  r   )	r   r   r   r1   r1   r1   r.   r.   r.   rk  )	rF   r   rO   rS   rT   rU   r   r   rN   r[   r]   s     rw   "test_stratified_shuffle_split_initrw    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 )Nr4   r/   r-   r<   r   )r   rl  r@   )rF   rG   r   rN   r   r   )r]   r   rl  sssrt   ru   s         rw   0test_stratified_shuffle_split_respects_test_sizerz    s    
>>>??AIJ
 	Y:A  eBGCFFOOQ   & &t5zzZ''''4yyI%%%%%& &r   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        j                            ||          g            $d S )Nr0   r3   r4   r.   r5   r|   i   r1   2   c                      g | ]}|gd |z   z  S )r   r   )r   rC   s     rw   r   z6test_stratified_shuffle_split_iter.<locals>.<listcomp>  s"    ;;;AsQw;;;r   r   r7   r<   gQ?r   r[  T)return_inverse)rF   rG   concatenater   r   rN   r   r   
asanyarrayceilr   uniquer   floatr   r{   libarraysetopsr  )	ysr]   ry  r   rl  rt   ru   p_trainp_tests	            rw   "test_stratified_shuffle_split_iterr    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  P P$Q$QGGGMMGCFFOOQ
 
 M! GD3q66M**	VVi'
 	P 	P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	))))rv1==eTJJBOOOO	PP Pr   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_countsrY   	thresholdbfcountprobrX   s         rw   assert_counts_are_okz@test_stratified_shuffle_split_even.<locals>.assert_counts_are_ok"  sj     8O	[1%% 	O 	OE66%==Dy   N !   	O 	Or   )r<      r.   r   r1         ?rX   r   r@   rv  ru  )rF   rG   r   rN   r   r%   r   r   r   r  r   r  )n_foldsr  rV   r^   r   train_countstest_countsn_splits_actualrt   ru   counteridsidn_trainn_testgroup_counts	ex_test_p
ex_train_prX   s                     @rw   "test_stratified_shuffle_split_evenr    sl    GH	O 	O 	O 	O 	O   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  5r   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   r1   r.   r2   r2   r6   r/   r1   r~   r   r  rv  )
rF   r   r   r   rN   r   r  union1dr   r   )r]   r[   ry  rt   ru   s        rw   4test_stratified_shuffle_split_overlap_train_test_bugr  P  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Br   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   r1   r~   r  rv  )rF   rG   r   r   r   rN   r   r  r  r   r   r3  )r]   r[   ry  rt   ru   y_trainy_testexpected_ratios           rw   (test_stratified_shuffle_split_multilabelr  a  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 7r   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)r1   r   r1   r   r   r1   r-   r   r~   r  rv  r6   )rF   rG   r   r   r   rN   r3  )
row_with_many_zerosrow_with_many_onesr]   r[   ry  rt   ru   r  r  r  s
             rw   4test_stratified_shuffle_split_multilabel_many_labelsr  z  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2r   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 )Nr-   g      r/   Tr   )rF   fullrH   r   rN   r[   r   r   r   r  rJ   rI   r   )	foldskf_trainkf_testrC   	train_indtest_indrf   ps_trainps_tests	            rw   %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(((((r   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<   gUUUUUU?r   r[  r   r1   r  )test_groupsrF   r   r   r   rR   rJ   r  rO   rN   anyin1dr{   r   r  absround)groups_ir[   r]   rX   r   slol_uniquelrt   ru   l_train_uniquel_test_uniques               rw   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#	! !r   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 )Nr1   r   r.   rA   zLeavePGroupsOut(n_groups=1)rB   r2   zLeavePGroupsOut(n_groups=3)r   r   )abcr  r  )r  皙?r  333333?r6   r<           z*The 'groups' parameter should not be None.rD   )r   r   rR   rH   r  r   rF   r  r   rJ   rO   rN   r   r  tolistshaper   rS   rT   rU   naninf)logolpgo_1lpgo_2jrr   p_groups_outrC   r  r   rX   r[   r]   
groups_arrrt   ru   rv   s                   rw   test_leave_one_p_group_outr    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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   r1   r.   r1   r1   r.   r   r   T)copyr   r.   r   r   r2   )r]   r^   )
rF   rG   r   r   r   rN   r   rI   r   rJ   )r^   r[   groups_changingrc   lolo_changinglplolplo_changingllollo_changingrt   ru   
train_chan	test_chans                rw   $test_leave_group_out_changing_groupsr    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Fr   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)r.   r.   r   r   r1   r1   r   )r   r1   r6   r/   r.   r2   r  r6   r/   r.   r2   r6   r/   r   r1   )	rF   rG   r   r   iterr   rN   r   r   )r^   r[   r   expected_indicesexpected_trainexpected_testrt   ru   s           rw   %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 0r   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)rD   r1   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 presentr2   r   )rF   r   reescaperS   rT   rU   r   r   rN   r   r   )r[   r]   r^   rv   s       rw   :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   r/  s    rw   test_repeated_cv_value_errorsr  K  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)r.   r<   rX   r  z.{}(n_repeats=6, n_splits=2, random_state=None))r   	__class____name__rR   )r  rX   r  repeated_cvrepeated_cv_reprs        rw   test_repeated_cv_reprr  U  s`    Hi*h)DDDKGNN&  tK00000000r   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 )Nr1   r.   r2   r6   r/   r<   r=   r>   r   r-   i{icrX   r  r@   )r   r1   r2   r   )r.   r2   r6   )r!   r   rN   r   r   rS   rT   StopIteration)r[   r@   rkfr   r   rt   ru   s          rw   &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 Nr2   r6   r  )r!   rJ   )rX   r  r  r   s       rw   $test_get_n_splits_for_repeated_kfoldr  |  sL    HI
Y
?
?
?C 9, 0 0 2 2222222r   c                  n    d} d}t          | |          }| |z  }||                                k    sJ d S r  )r"   rJ   )rX   r  rskfr   s       rw   /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3r   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 )Nr1   r.   r2   r6   r/   r<   r=   r>   r   r-   )r1   r1   r1   r   r   iqsr  )r   r.   r2   )r   r1   r6   )r"   r   rN   r   r   rS   rT   r  )r[   r]   r@   r  r   r   rt   ru   s           rw   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 )Nr2   r  rk  rE  ru  
wrong_typer   r.   r6   )some_argument*   r-   FT)r   stratifyzrtrain_size=11 should be either positive and smaller than the number of samples 10 or a float in the \(0, 1\) rangerD   r   r1   rl  r   )rS   rT   rU   r   r   rF   float32r   r   r   rw   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ztrain_size,test_size))r  r0  )r  r0  )r  r0  )皙ɿr0  )r0  r  )r0  r  )r0  r  )r0  r  c                     t          j        t          d          5  t          t	          d          | |           d d d            d S # 1 swxY w Y   d S )Nz"should be .* in the \(0, 1\) rangerD   r-   r  rS   rT   rU   r   r   r  s     rw   $test_train_test_split_invalid_sizes1r    s     
z)N	O	O	O P PrzYOOOOP P P P P P P P P P P P P P P P P P    A		AA))r0  )r   r0  )r   r0  )r0  r  )r0  r   )r0  r   c                     t          j        t          d          5  t          t	          d          | |           d d d            d S # 1 swxY w Y   d S )Nz%should be either positive and smallerrD   r-   r  r  r  s     rw   $test_train_test_split_invalid_sizes2r    s    
 
z)Q	R	R	R P PrzYOOOOP P P P P P P P P P P P P P P P P Pr  ))Nr=   r2   rg  rh  c                     t          t          |           \  }}t          |          |k    sJ t          |          |k    sJ d S )Nrk  )r   r[   r   )rl  rm  rn  ro  rp  s        rw   'test_train_test_split_default_test_sizer    sN     'qZ@@@OGVw<<9$$$$v;;(""""""r   c                     t          j        d                              d          } t          |           }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   r-   r-   r-   r~   ru  r   r   r/   r2   r.   i  r=   r   )r=   r/   r2   r.   r1   )r2   r/   r2   r.   )r=   r=   r   )r2   r=   r   )r1   r1   r1   r1   r.   r.   r.   r.   )r.   r6   rA  r~   r@  )r.   r6   r.   r6   r<   )r   r  r@   )r.   rG  F)r   r   r>   r   )r   r1   r.   r2   r6   r/   r<   r=   )rF   r   r   r   r   r   r   r  
isinstancerM   r  rG   rI   r   )r[   X_sr]   rN   ro  rp  r  r  	X_s_trainX_s_testX_4dy_3dr   exp_test_sizert   ru   s                   rw   test_train_test_splitr$    s   
	#x((A
Q--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":":":;;;;< <r   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?rA  )r  rl  N)rF   r   r   r{   )
big_numberr[   r]   rN   ro  rp  r  r  s           rw   $test_train_test_split_32bit_overflowr(    s     J 		*A	TJAQA$???E',$GVWf<&+%3333<&+%333333r   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   pandasr*  r   ImportErrorr[   r   r  )typesr*  InputFeatureTypeX_dfro  rp  s         rw   test_train_test_split_pandasr0  3  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c                     t          j        d                              d          } t          t          t
          g}|D ]M} ||           }t          |          \  }}t          |t                    sJ t          |t                    sJ Nd S )Nr   r  )rF   r   r   r   r   r   r   r  )r[   sparse_typesr.  r  ro  rp  s         rw   test_train_test_split_sparser3  E  s     		#x((A
J7L( . .q!!*3//':.....&*------	. .r   c                      t          t                    } t          |           \  }}t          |t                     sJ t          |t                     sJ t          |           \  }}d S r   )r   r[   r   r  )r/  ro  rp  X_train_arr
X_test_arrs        rw   !test_train_test_split_mock_pandasr7  Q  sb    D&t,,OGVg}-----fm,,,,,.t44Kr   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=   r8   r6   r   r2   r   r   )r  r@   )rF   r   hstackr   r  r   rK   rL   )r[   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                    rw    test_train_test_split_list_inputrG  Z  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 2r   ztest_size, train_size))r   N)r  N)r   gffffff?)Ny              ?)r   N)r-   N)r>   r2   c                     t          j        t                    5  t          t	          | |                              t                               d d d            d S # 1 swxY w Y   d S )Nru  )rS   rT   rU   r   r   rN   r[   ru  s     rw   test_shufflesplit_errorsrI  r  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   r   r  r  s      rw   r   z2test_shufflesplit_reproducible.<locals>.<listcomp>  s    222da222r   c                     g | ]\  }}|S r   r   rM  s      rw   r   z2test_shufflesplit_reproducible.<locals>.<listcomp>  s    4O4O4O41aQ4O4O4Or   )r   r   rN   r[   )re   s    rw   test_shufflesplit_reproduciblerO  {  s\     
2	&	&	&B22bhhqkk2224O4O288A;;4O4O4OPPPPPr   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 )	Nr.   r  r[  r=   r8   r6   r   r2   )
r   rF   r   r9  r   r  rK   rL   rM   rN   )ry  r[   r   r   r:  s        rw   &test_stratifiedshufflesplit_list_inputrQ    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Kr   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   r-   r|   r.   r   r1   rG  r  r[  )rF   r   float64r   r  repeatr  r   rv  s     rw    test_train_test_split_allow_nansrW    sw    
	#RZ(((00R88AfAadG
	1a&!'!*q.))AQSr::::::r   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   r2   F)
classifier)	r   r1   r   r1   r   r   r1   r1   r1   T)	r   r1   r   r1   r.   r1   r.   r   r.   r|   r1   r   r/   )r   r   r   r   )r   r1   r1   r   )r   r   r   r1   )r1   r1   r   r1   )r   r   r1   r   r.   rc   r/  )rF   r   r   rK   rL   rM   r   rN   rG   r   r   allr   rS   rT   rU   )r[   rr   y_binaryy_multiclassy_multiclass_2dr   y_multioutputs          rw   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   rN   r[   r]   r   rF   rK   rL   rM   r  )kf_iterkf_iter_wrappedkf_randomized_iterkf_randomized_iter_wrappedsplits_are_equals        rw   test_cv_iterable_wrapperrf    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           	      0
   t           j                            d          }d}d}d}t          j        |          x}}d|z  }|                    d||          }||z  }	t          t          j        |                     t          j        |          }
 | |          }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 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  r   r1   rT  )&AlbertJeanBertrandMichelri  FrancisRobertrk  RachelLoisMichelleBernardMarionLaurari  rn  FranckJohnGaelAnnaAlixrm  rr  DavidTonyAbelBeckyMadmoodCaryMary	Alexandrery  rl  BarackAbdoulRashaXiSilviar   )r1   r1   r1   r.   r.   z%Cannot have number of splits.*greaterrD   r2   )rF   r   r   r   r   r   r  r   rH   rN   r  r   rO   objectr  rG   r   r   r   FutureWarningrM   r  rI   r   rS   rT   rU   r   r   )r   r   r   rV   rX   r[   r]   	tolerancer^   ideal_n_groups_per_foldr  lkfrC   r   ru   grouprt   cv_itertrain1r(  train2test2s                         rw   test_group_kfoldr    s   
)


"
"C HIHGIA y I[[Hi00F'83	&HYE
%
"
"
"C!#))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$$$$Yu K KCEQJ2I IJJJJJJJ 
	 	"	" ? ?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 399Q6==??3344G,/		!Q0G0G,Q,Q ) )(&%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#M99M= M=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 )Nr1   r.   r2   r6   r/   r<   r=   r>   r   r-   r   r8     r   z$Cannot have number of folds.*greaterrD   r   r|   r   r  r   r   r1   r.   r2   r6   )
rS   rT   rU   r   r   rN   r   r   rM   rJ   )r[   tscvr   rt   ru   r  s         rw   test_time_series_cvr  a  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   )rI   r   r   r   )r   check_splitsmax_train_sizert   ru   check_train
check_testsuffix_starts           rw   !_check_time_series_max_train_sizer    s    474M4M > >00Z4,,,;>11113u::6::;lmm(<====	> >r   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<   r1   r2   r   )rX   r  )r  r.   r/   )rF   r   r   rN   r  )r[   r   r  s      rw   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Mr   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r-   r1   r2   )rX   r   r   )r1   r.   r2   r  r6   r/   r<   )r   r1   r.   r2   r6   r/   r<   r=   r>   r   r.   r6   )rX   r   r  r  r<   r=   )r6   r/   r<   r=   r>   r   zToo many splits.*with test_sizerD   r/   	rF   r   r   rN   r   r   rS   rT   rU   r[   r   rt   ru   s       rw   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  r.   )rX   gapr   r1   r  r  r  r2   )rX   r  r  r6   r/   r<   r=   r>   r   )rX   r  r  r   r  r  )rX   r  r   zToo many splits.*and gaprD   r  r  s       rw   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          d          g}t          |d          D ]?\  }}t          t                      dd	d
gi|d          }t          |||||d|i           @d S )Nr   r  r.   )rV   	n_classesr@   r/   r   r2   strategy
stratifiedmost_frequentraise)
param_gridrr   error_scorer^   )r[   r]   r^   rr   
fit_params)rF   r   r   r+   r   r   r   r   r	   r    r$   r   )r   r[   r]   r^   cvsinner_cvouter_cvgss           rw   test_nested_cvr    s    
)


"
"CqqIIIDAq[[Ar""F 	###AC <CCC 	
 	
("\?$CD	
 
 
 	!qH(FAS	
 	
 	
 	
 	
	
 	
r   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       rw   __init__z.test_build_repr.<locals>.MockSplitter.__init__  s    DFDFDFFFr   c                      t          |           S r   r&   )r  s    rw   __repr__z.test_build_repr.<locals>.MockSplitter.__repr__  s    t$$$r   )r   N)r  
__module____qualname__r  r  r   r   rw   MockSplitterr    s7        	 	 	 	
	% 	% 	% 	% 	%r   r  r/   r<   zMockSplitter(a=5, b=6, c=None))rR   )r  s    rw   test_build_reprr    sX    % % % % % % % % Q""##'GGGGGGGr   
CVSplitterc                      | d          }dggdg}}t          j        t          d          5  t          |                    ||dg                     d d d            d S # 1 swxY w Y   d S )Nr&  r   r1   r   [With n_samples=1, test_size=0.99 and train_size=None, the resulting train set will be emptyrD   r   )rS   rT   rU   r   rN   )r  rr   r[   r]   s       rw   !test_shuffle_split_empty_trainsetr    s     
d	#	#	#BC51#qA	4
 
 
 ) ) 	RXXaA3X''((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )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 )Nr1   r  rD   r&  r   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    rw   $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 )Nr1   r   z+Cannot perform LeaveOneOut with n_samples=1rD   )r   rS   rT   rU   r   rN   rr   r[   r]   s      rw   !test_leave_one_out_empty_trainsetr  E  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g                     d d d            d S # 1 swxY w Y   d S )	Nr.   r}   r1   r   r2   z6p=2 must be strictly less than the number of samples=2rD   r   )r   rS   rT   rU   r   rN   r  s      rw   test_leave_p_out_empty_trainsetr  M  s    	QBC!:1vqA	R
 
 
 , , 	RXXaAq6X**+++, , , , , , , , , , , , , , , , , ,s   (A++A/2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 FalserD   r2   Fr   r   )rS   rT   rU   )r  s    rw   test_random_state_shuffle_falser  W  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?   r   r}   c                 0    t          |           |k    sJ d S r   r(   )rr   r<  s     rw   test_yields_constant_splitsr  ^  s$    J #2&&(222222r   r   )__doc__r   rS   r  numpyrF   scipy.sparser   r   r   scipyr   scipy.specialr   	itertoolsr   r	   r
   sklearn.utils._testingr   r   r   r   sklearn.utils.validationr   sklearn.utils._mockingr   sklearn.model_selectionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   sklearn.dummyr$   sklearn.model_selection._splitr%   r'   r)   sklearn.datasetsr*   r+   sklearn.svmr,   r   r[   r   r]   eyeP_sparserG   r  r1  rx   r   r   r   r   r   r   r   markparametrizer   r   r   r   r  r  r+  r6  r9  r?  rO   rC  rY  re  rq  rs  rw  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r$  r(  r0  r3  r7  rG  rI  rO  rQ  rW  r_  rf  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r   r   rw   <module>r     sj       				     ; ; ; ; ; ; ; ; ; ;             " " " " " " 3 3 3 3 3 3 " " " " " " 2 2 2 2 2 2 < < < < < < 5 5 5 5 5 5 2 2 2 2 2 2 1 1 1 1 1 1 0 0 0 0 0 0 3 3 3 3 3 3 ) ) ) ) ) ) 3 3 3 3 3 3 . . . . . . 3 3 3 3 3 3 / / / / / / 4 4 4 4 4 4 - - - - - - 3 3 3 3 3 3 0 0 0 0 0 0 5 5 5 5 5 5 : : : : : : 3 3 3 3 3 3 , , , , , , 4 4 4 4 4 4 0 0 0 0 0 0 1 1 1 1 1 1 ; ; ; ; ; ; 8 8 8 8 8 8 ) ) ) ) ) ) B B B B B B 6 6 6 6 6 6 B B B B B B ( ( ( ( ( ( 0 0 0 0 0 0      BGBKKBIbMMQ:fbfQii  BH11122BH11122BH:::;;BH===>>(((@@@ 
 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*8" " " ?4H"IJJ& & KJ&&! ! !. 5/;O"PQQ> > RQ>>" " ".) ) )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	& 	& 	&"P "P "P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 	 	 	 P P P
 FFF P P	 P
 %'M'M'M # # #,< ,< ,<^4 4 4. 4 4 4"	. 	. 	.5 5 52 2 20 WWW P P	 P
Q Q Q	L 	L 	L; ; ;+ + +\  B :/C"DEEx9 x9 FEx9v"  "  " J> > >N N N     F6 6 6r
 
 
2
H 
H 
H <!24JK 
) 
) 
), , ,,  , , , 5/;O"PQQ0 0 RQ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  
		D!  
  
			T"   
!	$	$	$d+! " 
Q# $ 
t$	/	/	/7% & 
t$	/	/	/7' ( 
BI4I4I!4L4L	M	M	MuU) * 
BI4I4I!4L4L	M	M	MuU+ , 
D	)	)	)51- . 
BI$9$9!$<$<	=	=	=uE/ 0 
!	 d	3	3	3U;1 2 
!	 bi.C.CA.F.F	G	G	GO3 4 
4	(	(	(%05 6 
29#8#8#;#;	<	<	<eD7 8 
		-	-	-u59 : 
		(=(=a(@(@	A	A	A5I; < 
 	T	2	2	2E:= > 
 	RY-B-B1-E-E	F	F	FN? # #H3 3I# #H3 3 3r   