a
    h!                 &   @   sP	  d Z ddlZddlZddlmZmZmZ ddlZddl	Z	ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6 ddl3m7Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z? ddl@mAZA ddlBmCZCmDZDmEZE ddlFmGZG e e% e' e edde# e&dde g de! e" g
ZHe edde$ e e gZIeJdd eID ZKeHeI ZLe% e& e" gZMeNdZOePdd ZQeRg deRg d eRg d!eRg d"g dg d#fZSe ZTe	jUVd$ZWd%d& ZXd'd( ZYd)d* ZZdd+d,Z[d-d. Z\d/d0 Z]d1d2 Z^d3d4 Z_d5d6 Z`e	jUad7d8d9ge	jUad:g d;e	jUad<e%e$gd=d> Zbe	jUad7d8d9ge	jUad:g d?e	jUad<e%e$gd@dA ZcdBdC Zde	jUad<e%e$gdDdE ZedFdG Zfe	jUad<ee%e$gdHdI ZgdJdK ZhdLdM ZidNdO ZjdPdQ ZkdRdS Zle	jUadTeRdgdU dgdU  eRg dVemddgddgddggfeRdgdW dgdX  eRg dYemdZd[gdZd[gdZd[ggfgd\d] Zne	jUad^g d_e	jUad`g dadbdc Zoddde Zpe	jUadfe#e&ge	jUadgg dhdidj Zqe	jUadgg dkdldm Zrdndo Zsdpdq Ztdrds Zudtdu Zvdvdw Zwdxdy Zxdzd{ Zyd|d} Zzd~d Z{dd Z|dd Z}dd Z~dd Zdd Ze	jUade!e"gdd Zdd Zdd Zdd Zdd Zdd Ze	jUadgg ddd Ze	jUade6 e	jUaddd9eeNdUedffdfdd Ze	jUadeCdd Zdd Zdd Ze	jUadeCeD eE dd Zdd Zdd Ze	jUadg ddd Zdd Zdd Zdd Zdd Zdd Ze	jUad<ee$ge	jUad7d9d8gdd Zdd Zdd ZddĄ ZddƄ ZddȄ Ze?ddʄ Zdd̄ Ze	jUade#ee&fddτ Zddф Zddӄ ZddՄ Ze	jUadee%e$efdd؄ Ze	jUade d9fed9ddۍd9fe% d9fe%d9ddۍd9fe$d9ddۍd9fe$ d9fe!dd܍d9fe"dd܍d9fe#dd܍d9fedd܍d9fe&dd܍d9fe d9fed9ddۍd9fe' d9fe d9fe d9feddd9feddd9fed9ddۍd8fed9ddۍd8fe%d9ejddۍd8fe%d9ejddۍd8fe!dd܍d8fe!ejdd܍d8fe"dd܍d8fe"ejdd܍d8fe#dd܍d8fe#ejdd܍d8fedd܍d8feejdd܍d8fe&dd܍d8fe&ejdd܍d8fg ddބ Ze	jUjadeLdd eLD ddd Ze	jUjadeLdd eLD ddd Ze	jUjadeHeddd Ze	jUjadeMdd eMD ddd ZdS )zTest the split module    N)combinationscombinations_with_replacementpermutations)stats)issparse)comb)config_context)load_digitsmake_classification)DummyClassifier)GridSearchCV
GroupKFoldGroupShuffleSplitKFoldLeaveOneGroupOutLeaveOneOutLeavePGroupsOut	LeavePOutPredefinedSplitRepeatedKFoldRepeatedStratifiedKFoldShuffleSplitStratifiedGroupKFoldStratifiedKFoldStratifiedShuffleSplitTimeSeriesSplitcheck_cvcross_val_scoretrain_test_split)_build_repr_validate_shuffle_split_yields_constant_splits)SVC)assert_request_is_empty)_convert_to_numpyget_namespace)yield_namespace_device_dtype_combinationsdevice)MockDataFrame)assert_allcloseassert_array_almost_equalassert_array_equalignore_warnings)_array_api_for_tests)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERS)_num_samples   p      ?	test_size   r:   r3   r3   r:   n_groupsc                 c   s   | ]}|j jV  qd S N)	__class____name__).0splitter rB   d/var/www/html/assistant/venv/lib/python3.9/site-packages/sklearn/model_selection/tests/test_split.py	<genexpr>U       rD   
   r:   r:   r:   r:   r3   r3   r3      rH   rH   rH   rH   r   r   r   r:   r:   r:   r3   r3   r3   rH   rH   rH   r   r:   r3   rH   r   r:   r3   rH   r   r:   r3   rH   r   r:   r3   r:   r:   r3   r3   r3   rH   rH   rH      rL   rL   rL   rL   rL   rL   rL   1rN   rN   rN   2rO   rO   3rP   rP   rP   rP   z0error:The groups parameter:UserWarning:sklearn.*c                 C   s,   | j jtv r| j|||dS | ||S d S )Ngroups)r>   r?   GROUP_SPLITTER_NAMESsplit)rA   XyrR   rB   rB   rC   _splitp   s    rW   c            "      C   sX  d} d}d}d}d}t ddgddgddgdd	gg}t g d
}t g d}t g d
}t }	t|}
t|}t|}t }t|}tdd}t	g d}t
|}d}d}d}d}d}d}d}d}d}| t| ||||t|||d|g	}tt|	|
|||||||g	|||||||||g	D ]\}\}}|| ||||ksJJ t jtt||||tt|||| t||||D ]:\}} t |jjdksJ t | jjdksJ q|t|ks"J q"d}!tjt|!d |	d || W d    n1 s0    Y  tjt|!d |
d || W d    n1 sJ0    Y  d S )NrL   r3   rF   r:   rH               )r:   r3   rH   rL   r9   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listrW   asarraydtypekindreprpytestraises
ValueError)"	n_samplesZn_unique_groupsn_splitsr5   Zn_shuffle_splitsrU   ZX_1drV   rR   ZlooZlpokfskfloloZloposspssgkfZloo_reprZlpo_reprZkf_reprZskf_reprZ	lolo_reprZ	lopo_reprZss_reprZps_reprZ	sgkf_reprZn_splits_expectedr`   cvZcv_reprtraintestmsgrB   rB   rC   (test_cross_validator_with_default_paramsw   s    "
 .r~   c                  C   sR  d} t jd}|jdd| dfd}|jdd| fd}|dd}|jdd| dfd}|jdd| fd}t tddt t t	 t
 t t td	d
t t tddtddt t|dg}|D ]}tt||||d tt||||d ztt||||d W q tyJ }	 z,d}
d|
}|t|	v s6J W Y d }	~	qd }	~	0 0 qd S )N   r:   r   rH   r3   sizer4   r6   r7   r;   rs   )Z	test_foldrQ   )binaryZ
multiclassz/Supported target types are: {}. Got 'multilabel)rc   randomRandomStaterandintreshaper   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rj   rW   rq   formatstr)rr   rngrU   rV   Zy_2dy_multilabelrR   Z	splittersrA   eZallowed_target_typesr}   rB   rB   rC   	test_2d_y   sD    r   c                 C   sL   t | t | } }| |t  ks&J |d urH| |t t|ksHJ d S r=   )setintersectionunionrange)r{   r|   rr   rB   rB   rC   check_valid_split   s    r   c           
      C   s   t |}| ||||ksJ t }d}| |||D ](\}}	t||	|d |d7 }||	 q6||kslJ |d ur|tt|ksJ d S )Nr   )rr   r:   )r2   rg   r   rT   r   updater   )
rz   rU   rV   rR   expected_n_splitsrr   Zcollected_test_samplesZ
iterationsr{   r|   rB   rB   rC   check_cv_coverage   s    r   c                  C   s  t ddgddgddgg} t ddgddgddgddgd	d
gg}tttd| f t g d}td}tjt	dd  t||| W d    n1 s0    Y  t
d}t t|}tjt	dd" t|||| W d    n1 s0    Y  t , td t|||d dd W d    n1 s>0    Y  t , td t||||dd W d    n1 s0    Y  t g d}tt  t||| W d    n1 s0    Y  tt  t||| W d    n1 s
0    Y  tt td W d    n1 s>0    Y  tt td W d    n1 sr0    Y  d}tjt|d td W d    n1 s0    Y  tjt|d td W d    n1 s0    Y  tjt|d t
d W d    n1 s0    Y  tjt|d t
d W d    n1 sV0    Y  tt td W d    n1 s0    Y  tt td W d    n1 s0    Y  tt td W d    n1 s0    Y  tt td W d    n1 s&0    Y  tt t
d W d    n1 sZ0    Y  tt t
d W d    n1 s0    Y  tt tdd d W d    n1 s0    Y  d S )Nr:   r3   rH   rL   rX   rY   rZ   r[   	   rF   )rH   rH   r   r   rH   zThe least populated classra   ignorerR   r   )rH   rH   r   r   r3   r   z>k-fold cross-validation requires at least one train/test split      ?       @rs   shuffle)rc   rd   rq   nextr   rT   r   ro   warnsWarningr   arangelenwarningscatch_warningssimplefilterr   rp   	TypeError)X1X2rV   Zskf_3Zsgkf_3Znaive_groupsZerror_stringrB   rB   rC   test_kfold_valueerrors  sb    (.0

2

200((((((((((((r   c                  C   sb   t d} td}t|| d d dd t d}td}t||d d dd dtd|ks^J d S )N   rH   )rV   rR   r      rX   )rc   onesr   r   rg   )r   rt   r   rB   rB   rC   test_kfold_indicesZ  s    

r   c                  C   s   ddgddgddgddgd	d
gg} t d| d d }t|\}}t|ddg t|ddg t|\}}t|ddg t|ddg t d| }t|\}}t|g d t|ddg t|\}}t|ddg t|g d d S )Nr:   r3   rH   rL   rX   rY   rZ   r[   r   rF   r   r   r   r:   r3   )r   rT   r   r,   )r   splitsr{   r|   rB   rB   rC   test_kfold_no_shufflej  s    "r   c                  C   s  t dg d } }td| |}t|\}}t|ddg t|ddg t|\}}t|ddg t|ddg t 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 d} g d}g d}t jt	td| |t	td| | g d}t 
|} t jt	td| |t	td| | d S )NrL   )r:   r:   r   r   r3   r   r:   rH   rZ   )r:   r:   r:   r   r   r   r   )r   r:   rH   rL   )r3   rX   rY   rX   )rN   rN   rN   0r   r   r   )r   r:   r   r:   r   r:   r   r:   )rc   r   r   rT   r   r,   rg   rh   ri   rj   	ones_liker   )rU   rV   r   r{   r|   y1y2rB   rB   rC    test_stratified_kfold_no_shuffle  s8    
$
$r   r   FTk)rL   rX   rY   rZ   r[   r   rF   kfoldc                 C   s  d}t |}t dgtd|  dgtd|   dgtd|   }t t|}t |t| }g }|svd nd}	|| |	|d}
t|
|||d	D ]V\}}tt || t| |d
d tt || t| |d
d |	t| qt 
|dksJ d S )N  rL   皙?r   {Gz?r:   {Gz?r]   r   rQ   {Gz?Zatol)rc   r   rd   intr   r   bincountrW   r*   appendptp)r   r   r   rr   rU   rV   rR   distr
test_sizesr]   ru   r{   r|   rB   rB   rC   test_stratified_kfold_ratios  s&    
  r   )rL   rY   rZ   c           
         s   d}t dgtd|  dgtd|   dgtd|   }t t| t t| fdd	}||}tg d
D ]$}t ||}||}	|	|ksJ qd S )Nd   r3   r   r   r   r:   r   c                    s0   sd nd}dd t |d | dD S )Nr   c                 S   s    g | ]\}}t |t |fqS rB   )rj   )r@   r{   r|   rB   rB   rC   
<listcomp>  s   zNtest_stratified_kfold_label_invariance.<locals>.get_splits.<locals>.<listcomp>r   rQ   )rW   )rV   r]   rU   rR   r   r   r   rB   rC   
get_splits  s    z:test_stratified_kfold_label_invariance.<locals>.get_splitsr   )rc   rd   r   r   r   r   r   Ztake)
r   r   r   rr   rV   r   Zsplits_basepermZy_permZsplits_permrB   r   rC   &test_stratified_kfold_label_invariance  s     r   c                  C   sf   t ddD ]V} tdjt| d}dd |D }t|t| dksNJ t|| ks
J q
d S )N   r   rX   rU   c                 S   s   g | ]\}}t |qS rB   r   r@   _r|   rB   rB   rC   r     rE   z&test_kfold_balance.<locals>.<listcomp>r:   )r   r   rT   rc   r   maxminsum)r`   rt   sizesrB   rB   rC   test_kfold_balance  s
    r   c           	   	   C   s   t d}dgd dgd  }t t|}dD ]}| d|d}tddD ]f}t||d | |d | |d | }d	d
 |D }t |t | dksJ t ||ksJJ qJq0d S )Nr   r   rH   r:      TFr   r   c                 S   s   g | ]\}}t |qS rB   r   r   rB   rB   rC   r     rE   z0test_stratifiedkfold_balance.<locals>.<listcomp>)	rc   r   r   r   r   rW   r   r   r   )	r   rU   rV   rR   r   rz   r`   ru   r   rB   rB   rC   test_stratifiedkfold_balance  s    
&r   c                  C   s   t d} t dddd}t dddd}td}td}t| |||||D ]T\\}}\}}\}	}
t|||	fdD ]$\}}tt||t|ks|J q|d||< qVt	|dksJ d S )NrH   Tr   r   r]   r:   ,  r3   )
r   rc   r   zerosrf   rT   r   r   intersect1dr   )rt   kf2Zkf3rU   Z	all_foldsZtr1Zte1Ztr2Zte2Ztr3Zte3Ztr_aZtr_brB   rB   rC   test_shuffle_kfold  s    


r   c              
   C   s6  t d}dgd dgd  }t t|}t d}dgd dgd  }t t|}| dddd	}t jtt||||tt|||| | ddt j	dd	}t
||f||f||fD ]r}t
t|g|R  t|g|R  D ]J\\}	}
\}	}tt t j|
| W d    q1 s$0    Y  qqd S )
N   r   rZ   r:   r[      rH   Tr   )rc   r   r   r   rh   ri   rj   rW   r   r   rf   ro   rp   AssertionErrorr,   )r   rU   rV   Zgroups_1r   r   Zgroups_2rt   datar   Ztest_aZtest_brB   rB   rC   2test_shuffle_kfold_stratifiedkfold_reproducibility  s    

 2r   c                  C   s  t d} dgd dgd  }tdddd}tdddd}t|| ||| |D ]$\\}}\}}t|t|ksTJ qTt|| |d dd t d	}dgd dgd  }tdddd}tdddd}td
d |||D }	tdd |||D }
|	|
ksJ d S )N(   r      r:   rX   Tr   r   rF   c                 S   s   g | ]}t |d  qS r:   tupler@   srB   rB   rC   r   P  rE   z0test_shuffle_stratifiedkfold.<locals>.<listcomp>c                 S   s   g | ]}t |d  qS r   r   r   rB   rB   rC   r   Q  rE   )	rc   r   r   rf   rT   r   r   r   sorted)ZX_40rV   Zkf0Zkf1r   Ztest0test1rU   r   Z	test_set1Z	test_set2rB   rB   rC   test_shuffle_stratifiedkfold>  s    
*
r   c                     s   t d} dgd dgd  }t dd  tdddd}tdddd} fd	d
|| d  D } fdd
|| d  D }t||D ]\}}||ksJ dqt|| | dd t|| | dd d S )Nr   r   r   r:   rH   rL   Tr   c                    s   g | ]\}}t  | qS rB   r   r@   r   Ztest_idxrQ   rB   rC   r   _  s   z+test_shuffle_groupkfold.<locals>.<listcomp>c                    s   g | ]\}}t  | qS rB   r   r   rQ   rB   rC   r   b  s   z6Test groups should differ with different random states)r   )rc   r   r   r   rT   rf   r   )rU   rV   Zgkf0Zgkf1Ztest_groups0Ztest_groups1Zg0g1rB   rQ   rC   test_shuffle_groupkfoldU  s    


r   c                  C   s   t jd d t jd d  } }tddd}d}t|dd}t|| ||d }d	|ksZJ |d
ksfJ t|ddd}t|| ||d }|d	ksJ t|ddd}t|| ||d }|d	ksJ t|}t|| ||d }d|ksJ |d
ksJ d S )NiX  rF   g{Gzt?)CgammarH   Fr   rz   gq=
ףp?皙?Tr   r   r:   gGz?)digitsr   targetr"   r   r   meanr   )rU   rV   modelrs   rz   Z
mean_scorerB   rB   rC   1test_kfold_can_detect_dependent_samples_on_digitsm  s"    		r   c                  C   s   t dd} tdgd dgd  }t|dd}td}t|t| }g }| |||D ]t\}}t	|| || j
dksJ tt|| t| |d	d
 tt|| t| |d	d
 |t| qdt|dksJ d S )NrH   r   r:   rY   r      r   )r:   r3   rH   rL   rX   rY   r:   r:   r3   r3   rH   rH   rL   rL   rX   rX   rY   rY   r   r   )r   rc   rd   r   r   rk   r   r   rT   r   r   r*   r   r   )ry   rV   rU   rR   r   r   r{   r|   rB   rB   rC   #test_stratified_group_kfold_trivial  s    

  r   c            
      C   s   t dd} tdgd dgd  }t|dd}tg d}td	d
gddgddgg}g }t| ||||D ]\\\}}}t|| || j	dksJ t
|| t| }	t|	|dd |t| qxt|dksJ d S )NrH   r   r:   rY   r   r   r   )r:   r3   rH   rH   rL   rL   r:   r:   r3   r3   rH   rL   rX   rX   rX   rY   rY   rY   g-?gsh|??gZd;O?gZd;O?r6   MbP?r   )r   rc   rd   r   r   rk   rf   rT   r   r   r   r   r*   r   r   )
ry   rV   rU   rR   expectedr   r{   r|   expect_dist
split_distrB   rB   rC   'test_stratified_group_kfold_approximate  s    
 r  zy, groups, expectedrY   )r:   r:   r3   r3   rH   rH   rL   rL   rX   rX   rY   rY   r   rH   )r:   r:   r:   r3   r3   r3   rH   rH   rH   rL   rX   rY         ?      ?c           	      C   s   t dd}t| dd}t||| ||D ]N\\}}}t|| || jdksZJ t| | t	| }t
||dd q0d S )NrH   r   r   r:   r   r   r   )r   rc   r   r   rf   rT   r   r   r   r   r*   )	rV   rR   r   ry   rU   r{   r|   r   r  rB   rB   rC   .test_stratified_group_kfold_homogeneous_groups  s    
 r  	cls_distr))g?333333?)g333333?ffffff?)皙?r   )r   r	  r<   )rX   r   F   c                 C   s*  d}t |d}t|d}tjd}d}|jd|| d}t|dd}|||}	|j|||	d	}
|j|||	d	}d}d}t	|
|D ]~\\}}\}}t
|	| |	| jdksJ t|| t| }t|| t| }|tj|| d
7 }|tj|| d
7 }q|| }|| }||ks&J d S )NrX   r   r   r   r3   )r   r5   r   r:   rQ   )Zqk)r   r   rc   r   r   choicer   r   rT   rf   r   r   r   r   r   Zentropy)r  r<   rs   ry   Zgkfr   Zn_pointsrV   rU   gZ
sgkf_foldsZ	gkf_foldsZ	sgkf_entrZgkf_entrZ
sgkf_trainZ	sgkf_testr   Zgkf_testZ
sgkf_distrZ	gkf_distrrB   rB   rC   /test_stratified_group_kfold_against_group_kfold  s*    

r  c                  C   s   t dddt} t dddt}t tdddt}t tdddt}t| |||D ]x\}}}}t|d |d  t|d |d  t|d |d  t|d |d  t|d |d  t|d |d  q`d S )Nr	  r   r8   r]   r3   r:   )r   rT   rU   rc   Zint32r   rf   r,   )Zss1Zss2Zss3Zss4t1t2Zt3Zt4rB   rB   rC   test_shuffle_split  s    r  split_classztrain_size, exp_train, exp_test))Nr   r:   r[   r[   r3   r   r[   r3   c                 C   sR   t d}t d}t| |d||\}}t||ks>J t||ksNJ d S NrF   
train_size)rc   r   r   rT   r   )r  r  	exp_trainexp_testrU   rV   X_trainX_testrB   rB   rC   $test_shuffle_split_default_test_size  s
    

r  ))Nr[   r3   )rZ   rZ   rH   )r  rZ   rH   c                 C   s\   t d}t d}td}tt| d|||\}}t||ksHJ t||ksXJ d S r  )rc   r   r   r   r   rT   r   )r  r  r  rU   rV   rR   r  r  rB   rB   rC   *test_group_shuffle_split_default_test_size  s    

r  c                  C   s  t d} t g d}tt( ttddd| | W d    n1 sP0    Y  tt( ttddd| | W d    n1 s0    Y  tt* ttdddd| | W d    n1 s0    Y  t d} t g d	}tt& ttdd
| | W d    n1 s00    Y  tt& ttdd| | W d    n1 sr0    Y  d S )NrZ   )r   r:   r:   r:   r3   r3   r3   rH   r	  r7   r3   r8   r  r   )	r   r   r   r:   r:   r:   r3   r3   r3   r  )	rc   r   rk   ro   rp   rq   r   r   rT   rU   rV   rB   rB   rC   "test_stratified_shuffle_split_init!  s    
668
6r   c                  C   sj   t g d} d}d}td||ddt t| | }|D ](\}}t||ksTJ t||ks<J q<d S )NrJ   rX   rF   rY   r   )r8   r  r]   )rc   rd   r   rT   r   r   )rV   r8   r  sssr{   r|   rB   rB   rC   0test_stratified_shuffle_split_respects_test_size:  s    r"  c            	   
   C   s  t g dt g dt g dd t g dt dgd dgd	  t d
d tdD g dg dg} | D ].}tddddt t||}t |}t 	dt| }t|| }|D ]\}}t
t || t ||  t t j|| ddd tt||  }t t j|| ddd tt||  }t||d t|t| |jksnJ t||ksJ t||ksJ t
t ||g  qqvd S )NrG   rI   rJ   r3   rK   r   i   r:   2   c                 S   s   g | ]}|gd |  qS )r   rB   )r@   r`   rB   rB   rC   r   M  rE   z6test_stratified_shuffle_split_iter.<locals>.<listcomp>r   rM   rY   gQ?r   r  T)Zreturn_inverse)rc   rd   Zconcatenater   r   rT   r   r   Z
asanyarrayceilr,   uniquer   floatr+   r   r   )	ZysrV   r!  r8   r  r{   r|   Zp_trainZp_testrB   rB   rC   "test_stratified_shuffle_split_iterF  s:    



r'  c                     s  d} d  fdd}dD ]x}t |d ddg }t d	|  dd
}dg| }dg| }d}|jt ||dD ]D\}}	|d7 }||f||	ffD ]"\}
}|D ]}|
|  d7  < qqqr| ksJ t|d	|  d	d	|   d\}}t||ksJ t|	|ksJ tt||	dks J t 	|}|j
d	|  ks>J || t|ksTJ t|dksfJ t|| }t|| }||| ||| qd S )NrX   r   c                    s<   d  }t  |}| D ]}||}||ksJ dqd S )N皙?z=An index is not drawn with chance corresponding to even draws)r   ZbinomZpmf)Z
idx_countsr5   	thresholdbfcountZprobr   rB   rC   assert_counts_are_okq  s    
z@test_stratified_shuffle_split_even.<locals>.assert_counts_are_ok)rY      r3   r   r:         ?rs   r8   r]   r  r  )rc   rd   r   rT   r   r    r   r   r   r%  r8   r&  )Zn_foldsr,  rr   rR   r   Ztrain_countsZtest_countsn_splits_actualr{   r|   counteridsidZn_trainZn_testZgroup_countsZ	ex_test_pZ
ex_train_prB   r   rC   "test_stratified_shuffle_split_evenk  s>    






r4  c                  C   sx   g dd ddgd  } t | }tdddd}t|j|| d	\}}tt ||g  tt ||t t	|  d S )
Nr   r:   r3   rH   rH   rL   rX   r:   r6   r   r/  r  )
rc   r   r   r   rT   r,   r   union1dr   r   )rV   rU   r!  r{   r|   rB   rB   rC   4test_stratified_shuffle_split_overlap_train_test_bug  s    
r7  c                  C   s  t ddgddgddgddggt ddgddgddgddggfD ]} t | }tdddd}t|j|| d\}}| | }| | }tt ||g  tt ||t 	t
|  t | d d df }|t |d d df ksJ |t |d d df ksDJ qDd S )Nr   r:   r6   r/  r  )rc   rd   r   r   r   rT   r,   r   r6  r   r   r   )rV   rU   r!  r{   r|   y_trainy_testexpected_ratiorB   rB   rC   (test_stratified_shuffle_split_multilabel  s      
r;  c            
      C   s   g ddgd  g d } g ddgd  g d }t | gd |gd  }t |}tdddd}t|j||d	\}}|| }|| }t |d d d
f }	|	t |d d d
f ksJ |	t |d d d
f ksJ d S )N)r:   r   r:   r   r   r:   rF   r   r6   r/  r  rL   )rc   rd   r   r   r   rT   r   )
Zrow_with_many_zerosZrow_with_many_onesrV   rU   r!  r{   r|   r8  r9  r:  rB   rB   rC   4test_stratified_shuffle_split_multilabel_many_labels  s    
r<  c            	      C   s   t dd} g }g }ttdddtD ](\}\}}|| || || |< q*t| }tt 	| |
 ksvJ t|  \}}t|| t|| d S )NrF   g      rX   Tr   )rc   fullre   r   rT   rU   r   r   r   r%  rg   rf   r,   )	foldsZkf_trainZkf_testr`   Z	train_indZtest_indrx   Zps_trainZps_testrB   rB   rC   %test_predefinedsplit_with_kfold_split  s    "



r?  c                  C   sT  t D ]H} tt|  }}d}d}t||dd}t| |j||| d|ksRJ t| }t| }|j	||| dD ]\}}	t|| }
t||	 }t
t|| |rJ t
t||	 |
rJ || j||	 j |jksJ tt||	g  tt|t|t|  dks$J tt|
td| t|  dksvJ qvqd S )NrY   gUUUUUU?r   r  rQ   r:   r.  )test_groupsrc   r   r   r   rn   rg   r%  rk   rT   anyisinr   r,   r   absround)groups_irU   rV   rs   r8   ZsloZl_uniquelr{   r|   Zl_train_uniqueZl_test_uniquerB   rB   rC   test_group_shuffle_split  s&    


&"rG  c               	   C   s  t  } tdd}tdd}t| dks*J t|dks:J t|dksJJ ttdddks`J t| df|df|dffD ]\}\}}ttD ]\}}tt|}|dkr|n||d  d }	tt| }
}|j	|
||d	|	ksJ t
|}|j|
||d	D ]d\}}tt|| ||  g  t|t| t|ksHJ t|| jd
 sJ |qqqz| 	d d g ddksJ | j	g dd	dksJ |	d d tddksJ |j	tdd	dksJ tt& | 	d d dtjdg W d    n1 s0    Y  tt& |	d d dtjdg W d    n1 sX0    Y  d}tjt|d | 	d d d  W d    n1 s0    Y  tjt|d |	d d d  W d    n1 s0    Y  d S )Nr:   r;   r3   r^   zLeavePGroupsOut(n_groups=1)r_   rH   zLeavePGroupsOut(n_groups=3)rQ   r   )abcrI  rJ  )r.  皙?r.  g333333?rL   rY   g        z*The 'groups' parameter should not be None.ra   )r   r   rn   re   r@  r   rc   r%  r   rg   rk   rT   r,   r   tolistshaper   ro   rp   rq   naninf)ZlogoZlpgo_1Zlpgo_2jrz   Zp_groups_outr`   rE  r<   rs   rU   rV   Z
groups_arrr{   r|   r}   rB   rB   rC   test_leave_one_p_group_out  sB    

&
&66.rQ  c                  C   s  t g d} t t| }t j| dd}t j|| d}t j|| d}tddj|| d}tddj|| d}d|d d < ||f||ffD ]8\}}t||D ]$\\}	}
\}}t|	| t|
| qqdtddj	||| d	ksJ dt j	||| d	ksJ d S )
N)r   r:   r3   r:   r:   r3   r   r   T)copyrQ   r3   r;   r   rH   )rV   rR   )
rc   rd   r   r   r   rT   r   rf   r,   rg   )rR   rU   Zgroups_changingrv   Zlolo_changingZlploZlplo_changingZlloZllo_changingr{   r|   Z
train_chanZ	test_chanrB   rB   rC   $test_leave_group_out_changing_groupsM  s    
rS  c                  C   s   t g d} t t| }tt j|| d}g dddgfg dddgfg d	d
dgfg}|D ](\}}t|\}}t|| t|| qbd S )N)r3   r3   r   r   r:   r:   rQ   )r   r:   rL   rX   r3   rH   r5  rL   rX   r3   rH   rL   rX   r   r:   )	rc   rd   r   r   iterr   rT   r   r,   )rR   rU   r   Zexpected_indicesZexpected_trainZexpected_testr{   r|   rB   rB   rC   %test_leave_group_out_order_dependencec  s    
rV  c                  C   s  t d }  }}td}tjt|d$ tt 	| || W d    n1 sT0    Y  t d }  }}td| d}tjt|d$ tt 	| || W d    n1 s0    Y  t d }  }}td| d}tjt|d( tt
d	d
	| || W d    n1 s&0    Y  t d	 }  }}td| d}tjt|d( tt
d	d
	| || W d    n1 s0    Y  d S )Nr   zFound array with 0 sample(s)ra   r:   z:The groups parameter contains fewer than 2 unique groups (z'). LeaveOneGroupOut expects at least 2.z^The groups parameter contains fewer than (or equal to) n_groups (3) numbers of unique groups (zR). LeavePGroupsOut expects that at least n_groups + 1 (4) unique groups be presentrH   r;   )rc   r   reescapero   rp   rq   r   r   rT   r   r   )rU   rV   rR   r}   rB   rB   rC   :test_leave_one_p_group_out_error_on_fewer_number_of_groupsw  s4    
2
28rY  c               	   C   sz   t tfD ]l} tt | dd W d    n1 s60    Y  tt | dd W d    q1 sj0    Y  qd S )Nr   )	n_repeatsr   )r   r   ro   rp   rq   r   rB   rB   rC   test_repeated_cv_value_errors  s
    (r[  
RepeatedCVc                 C   s6   d\}}| ||d}d |jj}|t|ks2J d S )N)r3   rY   rs   rZ  z.{}(n_repeats=6, n_splits=2, random_state=None))r   r>   r?   rn   )r\  rs   rZ  Zrepeated_cvZrepeated_cv_reprrB   rB   rC   test_repeated_cv_repr  s    r^  c               	   C   s$  ddgddgddgddgd	d
gg} d}t dd|d}tdD ]}|| }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t t| W d    q<1 s0    Y  q<d S )Nr:   r3   rH   rL   rX   rY   rZ   r[   r   rF   i{icrs   rZ  r]   )r   r:   rH   r   )r3   rH   rL   )r   r   rT   r   r,   ro   rp   StopIteration)rU   r]   rkfr   r   r{   r|   rB   rB   rC   &test_repeated_kfold_determinstic_split  s&    "
rb  c                  C   s0   d} d}t | |d}| | }|| ks,J d S NrH   rL   r]  )r   rg   )rs   rZ  ra  r   rB   rB   rC   $test_get_n_splits_for_repeated_kfold  s
    rd  c                  C   s0   d} d}t | |d}| | }|| ks,J d S rc  )r   rg   )rs   rZ  rskfr   rB   rB   rC   /test_get_n_splits_for_repeated_stratified_kfold  s
    rf  c               	   C   s.  ddgddgddgddgd	d
gg} g d}d}t dd|d}tdD ]}|| |}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t t| W d    qD1 s0    Y  qDd S )Nr:   r3   rH   rL   rX   rY   rZ   r[   r   rF   )r:   r:   r:   r   r   iqsr_  )r   r3   rH   )r   r:   rL   )r   r   rT   r   r,   ro   rp   r`  )rU   rV   r]   re  r   r   r{   r|   rB   rB   rC   1test_repeated_stratified_kfold_determinstic_split  s(    "rg  c                   C   s  t tt t jtttddd t jtttdddd t jtttdtdtdd t jtttddd t jtttddd	d t jtttddd
 t tttdtd t jtttdddd t jtdd" ttdddd W d    n1 s
0    Y  d S )NrH   rK  r  r  r  Z
wrong_typer7   r3   rL   )Zsome_argument*   rF   FT)r   stratifyzrtrain_size=11 should be either positive and smaller than the number of samples 10 or a float in the \(0, 1\) rangera   r   r:   )r  r8   )ro   rp   rq   r   r   rc   Zfloat32r   rB   rB   rB   rC   test_train_test_split_errors  s(    rj  ))NrZ   rH   r  r  c                 C   s4   t t| d\}}t||ks J t||ks0J d S )Nr  )r   rU   r   )r  r  r  r  r  rB   rB   rC   'test_train_test_split_default_test_size  s    rk  z#array_namespace, device, dtype_namezshuffle,stratify)TNrL   )FNc                 C   s  t ||}tdd}td}||}|j||d}	||}
|j|
|d}t||d| |d\}}}}tdd |d ur||}n|}t|	|| |dd	\}}}}t|d t|	d ksJ t|d t|	d ksJ t|d t|d ksJ t|d t|d ks J W d    n1 s60    Y  t	|t	|	ksVJ t	|t	|kslJ t	|t	|	ksJ t	|t	|ksJ |j
|	j
ksJ |j
|j
ksJ |j
|	j
ksJ |j
|j
ksJ tt||d
| tt||d
| d S )Nr   rF   rF   rF   r'   r   )r]   r   ri  T)Zarray_api_dispatch)r   ri  r]   )xp)r.   rc   r   r   Zastyperk   r   r   r%   array_api_devicerl   r*   r$   )r   ri  Zarray_namespacer(   Z
dtype_namerm  rU   rV   ZX_npZX_xpZy_npZy_xpZ
X_train_npZ	X_test_npZ
y_train_npZ	y_test_npZstratify_xpZ
X_train_xpZ	X_test_xpZ
y_train_xpZ	y_test_xprB   rB   rC   test_array_api_train_test_split   sJ    





>

ro  coo_containerc                 C   s   t dd}| |}t d}t||d dd}|\}}}}t|t|ksRJ t|d d df |d  t|d d df |d  t||| }|\}}}	}
}}t|tsJ t|tsJ t dddd	d
}t dddd}t||}|d j	dks
J |d j	dksJ |d
 j	dks2J |d	 j	dksFJ t 
g d}tg dg dD ]p\}}t|||dd\}}t||ksJ t|t| t|ksJ t |dkt |d
kksfJ qft d}dD ]4}t|d|d\}}t|ddg t|g d qd S )Nr   rl  rF   r6   r  r   r   rX   rH   r3   i  rZ   r   )rZ   rX   rH   r3   r:   )rH   rX   rH   r3   )rZ   rZ   r   )rH   rZ   r   )r:   r:   r:   r:   r3   r3   r3   r3   )r3   rL   r  r6   r  )r3   rL   r3   rL   rY   )r8   ri  r]   )r3   r	  F)r   r8   r[   r   )r   r:   r3   rH   rL   rX   rY   rZ   )rc   r   r   r   r   r,   rL  
isinstancerj   rM  rd   rf   r   )rp  rU   X_srV   rT   r  r  r8  r9  Z	X_s_trainZX_s_testZX_4dZy_3dr8   Zexp_test_sizer{   r|   rB   rB   rC   test_train_test_splitb  s@    


&
rs  c                  C   sb   d} t | }|d|  k}t|||dd}|\}}}}|j|j | ksJJ |j|j | ks^J dS )zCheck for integer overflow on 32-bit platforms.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20774
    i Gz?r  )ri  r  N)rc   r   r   r   )Z
big_numberrU   rV   rT   r  r  r8  r9  rB   rB   rC   $test_train_test_split_32bit_overflow  s    	
ru  c                  C   sr   t g} zddlm} | | W n ty2   Y n0 | D ]4}|t}t|\}}t||s^J t||s8J q8d S )Nr   )	DataFrame)r)   Zpandasrv  r   ImportErrorrU   r   rq  )typesrv  ZInputFeatureTypeX_dfr  r  rB   rB   rC   test_train_test_split_pandas  s    rz  sparse_containerc                 C   sT   t dd}| |}t|\}}t|r6|jdks:J t|rL|jdksPJ d S )Nr   rl  Zcsr)rc   r   r   r   r   r   )r{  rU   rr  r  r  rB   rB   rC   test_train_test_split_sparse  s
    r|  c                  C   s@   t t} t| \}}t|t s"J t|t s0J t| \}}d S r=   )r)   rU   r   rq  )ry  r  r  ZX_train_arrZ
X_test_arrrB   rB   rC   !test_train_test_split_mock_pandas  s
    r}  c                  C   s   t d} dgd dgd  }t t dt df}| }dD ]}t| ||rV|nd dd\}}}}t| ||rv|nd dd\}	}
}}t| ||r|nd dd\}}}}t j||	 t j|| t j|| t j|| qDd S )	NrZ   rN   rL   r   rH   r   r   )ri  r]   )rc   r   hstackr   rL  r   rh   ri   )rU   r   r   y3ri  ZX_train1ZX_test1Zy_train1Zy_test1ZX_train2ZX_test2Zy_train2Zy_test2ZX_train3ZX_test3Zy_train3Zy_test3rB   rB   rC    test_train_test_split_list_input  s$    
r  ztest_size, train_size))r   N)r.  N)r   gffffff?)Ny              ?)r   N)rF   N)r[   rH   c                 C   sD   t t& tt| |dt W d    n1 s60    Y  d S )Nr  )ro   rp   rq   r   r   rT   rU   r  rB   rB   rC   test_shufflesplit_errors  s    r  c                  C   s8   t dd} tdd | tD dd | tD  d S )N   r\   c                 S   s   g | ]\}}|qS rB   rB   )r@   rH  rI  rB   rB   rC   r     rE   z2test_shufflesplit_reproducible.<locals>.<listcomp>)r   r,   rT   rU   )rw   rB   rB   rC   test_shufflesplit_reproducible  s    
r  c                  C   s   t ddd} td}dgd dgd  }ttdtdf}| }tjt| 	||t| 	|| tjt| 	||t| 	|| d S )	Nr3   rh  r  rZ   rN   rL   r   rH   )
r   rc   r   r~  r   rL  rh   ri   rj   rT   )r!  rU   r   r   r  rB   rB   rC   &test_stratifiedshufflesplit_list_input  s    
&r  c                  C   sX   t jdt jddd} t j| dd d f< t ddg| jd d }t| |dd	d
 d S )N   rl   rF   r   r3   r   r:   r	  rh  r  )rc   r   Zfloat64r   rN  repeatrM  r   r  rB   rB   rC    test_train_test_split_allow_nans  s    r  c                  C   sD  t d} tddd}t jttd| t||  t g d}td|dd}t jtt	d| |t|| | t g d}td|dd}t jtt	d| |t|| | |
dd	}td|dd}t jtt	d| |t|| | t tt	d| |d
 ttd| |d
 krHJ t d} t g dg dg dg dg dg}td|dd}t jttd| t||  t d	dgd
dgd
d
gdd	gdd
gg}td|dd}t jttd| t||  tt tdd W d    n1 s60    Y  d S )Nr   rH   F)
classifier)	r   r:   r   r:   r   r   r:   r:   r:   T)	r   r:   r   r:   r3   r:   r3   r   r3   r   r:   r   rX   )r   r   r   r   )r   r:   r:   r   )r   r   r   r:   )r:   r:   r   r:   )r   r   r:   r   r3   rv   r   )rc   r   r   rh   ri   rj   r   rT   rd   r   r   allr   ro   rp   rq   )rU   rz   Zy_binaryZy_multiclassZy_multiclass_2dr   Zy_multioutputrB   rB   rC   test_check_cv  sF    
&  

 &(&r  c                  C   s   t  tt} t| }tjt|ttt|tt t dddtt}t|}tjt|ttt|tt z.d}tjt|ttt|tt W n t	y   d}Y n0 |rJ dd S )NTr   r   FzVIf the splits are randomized, successive calls to split should yield different results)
r   rT   rU   rV   r   rc   rh   ri   rj   r   )Zkf_iterZkf_iter_wrappedZkf_randomized_iterZkf_randomized_iter_wrappedZsplits_are_equalrB   rB   rC   test_cv_iterable_wrapper:  s,    
r  c                 C   s  t j|}d}d}d}t | }}d| }	|d||}
|| }tt |
 t |}|sdd n|}| |||d}t|	|||
D ]\}\}}|||< qt|t|
ksJ t |D ] }|	t
t||k| ksJ qt |
D ]"}tt ||
|k dksJ qt j|
td}
|	|||
D ],\}}tt |
| |
| dks(J q(t g d	}
tt |
}t|
}d}d| }	|| }t | }}t |}t|	|||
D ]\}\}}|||< qt|t|
ksJ |st |D ]$}|	t
t||k| ksJ qt N td
t t |
D ]&}tt ||
|k dks<J q<W d    n1 sz0    Y  t j|
td}
|	|||
D ],\}}tt |
| |
| dksJ q| |||d}t|	|||
 }t|	|||
|D ]&\\}}\}}t|| t|| qt g d}
t t|
 }}tjtdd( ttdd	|||
 W d    n1 s0    Y  d S )Nr   r   rX   r(  r   )rs   r   r]   r:   r  )&ZAlbertJeanZBertrandMichelr  FrancisRobertr  RachelZLoisZMichelleZBernardMarionZLaurar  r  ZFranckZJohnZGaelZAnnaZAlixr  r  DavidZTonyZAbelZBeckyZMadmoodZCaryZMaryZ	Alexandrer  r  ZBarackZAbdoulZRashaXiZSilviar   )r:   r:   r:   r3   r3   z%Cannot have number of splits.*greaterra   rH   r   )rc   r   r   r   r   r   r%  r   re   rT   rC  r   rk   objectr   rd   r   r   r   FutureWarningrj   rL  rf   r,   ro   rp   rq   r   r   )r   r   Zglobal_random_seedr   r<   rr   rs   rU   rV   Z	tolerancerR   Zideal_n_groups_per_foldr>  r]   Zlkfr`   r   r|   groupr{   Zlkf_copyZcv_iterZtrain1r   train2Ztest2rB   rB   rC   test_group_kfold[  sl    

 &+
"
D&$
r  c                  C   sv  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d$ ttdd|  W d    n1 sf0    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sdJ |dksrJ d S )Nr:   r3   rH   rL   rX   rY   rZ   r[   r   rF   r   r      r   z$Cannot have number of folds.*greaterra   r   r   r   r5  r   r   r:   r3   rH   rL   )
ro   rp   rq   r   r   rT   r,   r   rj   rg   )rU   Ztscvr   r{   r|   r0  rB   rB   rC   test_time_series_cv  s,    .2r  c                 C   s^   t | |D ]N\\}}\}}t|| t||ks4J tt|| d}t|||d   q
d S )Nr   )rf   r,   r   r   )r   check_splitsmax_train_sizer{   r|   Zcheck_trainZ
check_testZsuffix_startrB   rB   rC   !_check_time_series_max_train_size  s
    
r  c                  C   s~   t d} tdd| }tddd| }t||dd tddd| }t||dd tddd| }t||dd d S )N)rY   r:   rH   r   )rs   r  )r  r3   rX   )rc   r   r   rT   r  )rU   r   r  rB   rB   rC   test_time_series_max_train_size	  s    
r  c                  C   sD  t d} td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d| }t|\}}t|g d t|ddg t|\}}t|g d t|ddg tjtdd* tdd
d| }t| W d    n1 s60    Y  d S )NrF   r:   rH   )rs   r8   r   )r:   r3   rH   r5  rL   rX   rY   )r   r:   r3   rH   rL   rX   rY   rZ   r[   r   r3   rL   )rs   r8   r  rT  rY   rZ   )rL   rX   rY   rZ   r[   r   zToo many splits.*with test_sizera   rX   	rc   r   r   rT   r   r,   ro   rp   rq   rU   r   r{   r|   rB   rB   rC   test_time_series_test_size  s*    
r  c                  C   s  t d} tddd| }t|\}}t|ddg t|g d t|\}}t|g d t|g d td	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d| }t|\}}t|g d t|ddg t|\}}t|g d t|ddg tddd	d| }t|\}}t|ddg t|g d t|\}}t|g d t|g d tjtdd* tddd| }t| W d    n1 s0    Y  d S )Nr  r3   )rs   gapr   r:   r  r  r  rH   )rs   r  r  rL   rX   rY   rZ   r[   r   )rs   r  r  r8   r5  rT  )rs   r  r8   zToo many splits.*and gapra   r  r  rB   rB   rC   test_time_series_gap;  sF    
r  c               
   C   s   t jd} tdddd\}}| ddd}t tddt tddt t	 t
dddg}t|dD ]:\}}tt d	d
dgi|dd}t|||||d|id qdd S )Nr   r   r3   )rr   Z	n_classesr]   rX   r   rH   )rs   r]   ZstrategyZ
stratifiedZmost_frequentraise)Z
param_gridrz   Zerror_scorerR   )rU   rV   rR   rz   params)rc   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   )r   rU   rV   rR   ZcvsZinner_cvZouter_cvgsrB   rB   rC   test_nested_cvt  s*    


r  c                  C   s(   G dd d} t | dddks$J d S )Nc                   @   s   e Zd ZdddZdd ZdS )z%test_build_repr.<locals>.MockSplitterr   Nc                 S   s   || _ || _|| _d S r=   )rH  rI  rJ  )selfrH  rI  rJ  rB   rB   rC   __init__  s    z.test_build_repr.<locals>.MockSplitter.__init__c                 S   s   t | S r=   )r   )r  rB   rB   rC   __repr__  s    z.test_build_repr.<locals>.MockSplitter.__repr__)r   N)r?   
__module____qualname__r  r  rB   rB   rB   rC   MockSplitter  s   
r  rX   rY   zMockSplitter(a=5, b=6, c=None))rn   )r  rB   rB   rC   test_build_repr  s    	r  
CVSplitterc                 C   sb   | dd}dggdg }}t jtdd& tt|||dgd W d    n1 sT0    Y  d S )Nrt  r7   r:   r   [With n_samples=1, test_size=0.99 and train_size=None, the resulting train set will be emptyra   rQ   )ro   rp   rq   r   rW   )r  rz   rU   rV   rB   rB   rC   !test_shuffle_split_empty_trainset  s    
r  c                  C   s   dgg\} t jtdd t| dd W d    n1 s:0    Y  dgdgdgg} t jtdd t| dd W d    n1 s0    Y  d S )Nr:   r  ra   rt  r7   z[With n_samples=3, test_size=0.67 and train_size=None, the resulting train set will be emptygq=
ףp?)ro   rp   rq   r   r   rB   rB   rC   $test_train_test_split_empty_trainset  s    
*r  c                  C   sX   t  } dggdg }}tjtdd  t| || W d    n1 sJ0    Y  d S )Nr:   r   z+Cannot perform LeaveOneOut with n_samples=1ra   )r   ro   rp   rq   r   rT   rz   rU   rV   rB   rB   rC   !test_leave_one_out_empty_trainset  s    r  c                  C   sb   t dd} dgdggddg }}tjtdd  t| || W d    n1 sT0    Y  d S )Nr3   r4   r:   r   rH   z6p=2 must be strictly less than the number of samples=2ra   )r   ro   rp   rq   r   rT   r  rB   rB   rC   test_leave_p_out_empty_trainset  s    
r  Klassc                 C   s@   t jtdd | dddd W d    n1 s20    Y  d S )Nz$has no effect since shuffle is Falsera   rH   Fr   r   )ro   rp   rq   )r  rB   rB   rC   test_random_state_shuffle_false  s    r  zcv, expected{   r   r\   c                 C   s   t | |ksJ d S r=   )r!   )rz   r   rB   rB   rC   test_yields_constant_splits  s    &r  rz   c                 C   s   g | ]}t |qS rB   r   r@   rz   rB   rB   rC   r   	  rE   r   )r2  c                 C   sZ   t | dsJ |  }| tv r4|jjd du sHJ n| tv rH|jjrHJ t|dgd dS )z>Check get_metadata_routing returns the correct MetadataRouter.get_metadata_routingrR   TrT   )excludeN)hasattrr  GROUP_SPLITTERSrT   requestsNO_GROUP_SPLITTERSr#   )rz   metadatarB   rB   rC   "test_splitter_get_metadata_routing	  s    r  c                 C   s   g | ]}t |qS rB   r  r  rB   rB   rC   r     rE   c                 C   s2   | t v rt| ds.J n| tv r.t| dr.J dS )zJCheck set_split_request is defined for group splitters and not for others.Zset_split_requestN)r  r  r  r   rB   rB   rC   test_splitter_set_split_request  s    r  c                 C   s   d| j j }d}tjd}|jdd|dfd}|jdd|fd}|jdd|fd}tjt|d  | j	|||d	 W d    n1 s0    Y  d S )
Nz#The groups parameter is ignored by r   r:   r   rH   r3   r   ra   rQ   )
r>   r?   rc   r   r   r   ro   r   UserWarningrT   )rz   r}   rr   r   rU   rV   rR   rB   rB   rC   )test_no_group_splitters_warns_with_groups  s    r  c                 C   s   g | ]}t |qS rB   r  r  rB   rB   rC   r   .  rE   c                 C   s@   d}t jt|d | t W d    n1 s20    Y  d S )Nz+missing 1 required positional argument: 'y'ra   )ro   rp   r   rT   rU   )rz   r}   rB   rB   rC   "test_stratified_splitter_without_y-  s    r  )N)__doc__rW  r   	itertoolsr   r   r   numpyrc   ro   Zscipyr   Zscipy.sparser   Zscipy.specialr   Zsklearnr   Zsklearn.datasetsr	   r
   Zsklearn.dummyr   Zsklearn.model_selectionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsklearn.model_selection._splitr   r    r!   Zsklearn.svmr"   Z%sklearn.tests.metadata_routing_commonr#   Zsklearn.utils._array_apir$   r%   r&   r(   rn  Zsklearn.utils._mockingr)   Zsklearn.utils._testingr*   r+   r,   r-   Zsklearn.utils.estimator_checksr.   Zsklearn.utils.fixesr/   r0   r1   Zsklearn.utils.validationr2   r  r  r   rS   ZALL_SPLITTERSZSPLITTERS_REQUIRING_TARGETr   rU   r   rV   rd   r@  r   markfilterwarningsZ
pytestmarkrW   r~   r   r   r   r   r   r   r   Zparametrizer   r   r   r   r   r   r   r   r   r   r  rk   r  r  r  r  r  r   r"  r'  r4  r7  r;  r<  r?  rG  rQ  rS  rV  rY  r[  r^  rb  rd  rf  rg  rj  rk  r~  r   ro  rs  ru  rz  r|  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r   r  r  rB   rB   rB   rC   <module>   s  T

U'
I+


,


%4%7#	
	
		6
/

	
.!%#9




%



