Ë
    ÷Q(hÛ! ã                   óÊ  — d Z ddlZddlZddlmZmZmZ ddlZddl	Z	ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6 ddl3m7Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z? ddl@mAZA ddlBmCZCmDZDmEZE ddlFmGZG  e«        e%«        e'«        e«        ed¬«       e#«        e&d¬«       e g d¢«       e!«        e"«       g
ZH e«        ed¬«       e$«        e«        e«       gZI eJd„ eID «       «      ZKeHeIz   ZL e%«        e&«        e"«       gZM ejœ                  d«      ZO ej                   d«      dz  ZQ ej¤                  g d¢«       ej¤                  g d¢«       ej¤                  g d ¢«       ej¤                  g d!¢«      g d¢g d"¢fZS e«       ZTe	jª                  j­                  d#«      ZWd$„ ZXd%„ ZYd&„ ZZd›d'„Z[d(„ Z\d)„ Z]d*„ Z^d+„ Z_d,„ Z`e	jª                  jÃ                  d-d.d/g«      e	jª                  jÃ                  d0g d1¢«      e	jª                  jÃ                  d2e%e$g«      d3„ «       «       «       Zbe	jª                  jÃ                  d-d.d/g«      e	jª                  jÃ                  d0g d4¢«      e	jª                  jÃ                  d2e%e$g«      d5„ «       «       «       Zcd6„ Zde	jª                  jÃ                  d2e%e$g«      d7„ «       Zed8„ Zfe	jª                  jÃ                  d2ee%e$g«      d9„ «       Zgd:„ Zhd;„ Zid<„ Zjd=„ Zkd>„ Zle	jª                  jÃ                  d? ej¤                  dgd@z  dgd@z  z   «       ej¤                  g dA¢«       ejÚ                  ddgddgddgg«      f ej¤                  dgdBz  dgdCz  z   «       ej¤                  g dD¢«       ejÚ                  dEdFgdEdFgdEdFgg«      fg«      dG„ «       Zne	jª                  jÃ                  dHg dI¢«      e	jª                  jÃ                  dJg dK¢«      dL„ «       «       ZodM„ Zpe	jª                  jÃ                  dNe#e&g«      e	jª                  jÃ                  dOg dP¢«      dQ„ «       «       Zqe	jª                  jÃ                  dOg dR¢«      dS„ «       ZrdT„ ZsdU„ ZtdV„ ZudW„ ZvdX„ ZwdY„ ZxdZ„ Zyd[„ Zzd\„ Z{d]„ Z|d^„ Z}d_„ Z~d`„ Zda„ Z€e	jª                  jÃ                  dbe!e"g«      dc„ «       Z�dd„ Z‚de„ Zƒdf„ Z„dg„ Z…dh„ Z†e	jª                  jÃ                  dOg di¢«      dj„ «       Z‡e	jª                  jÃ                  dk e6«       «      e	jª                  jÃ                  dldmd/ e�j                   ejœ                  d@«       e�j                  dn«      f«      fdof«      dp„ «       «       ZŠe	jª                  jÃ                  dqeC«      dr„ «       Z‹ds„ ZŒdt„ Z�e	jª                  jÃ                  dueCeDz   eEz   «      dv„ «       ZŽdw„ Z�dx„ Z�e	jª                  jÃ                  dyg dz¢«      d{„ «       Z‘d|„ Z’d}„ Z“d~„ Z”d„ Z•d€„ Z–e	jª                  jÃ                  d2ee$g«      e	jª                  jÃ                  d-d/d.g«      d�„ «       «       Z—d‚„ Z˜dƒ„ Z™d„„ Zšd…„ Z›d†„ Zœe?d‡„ «       Z�dˆ„ Zže	jª                  jÃ                  d‰e#ee&f«      dŠ„ «       ZŸd‹„ Z dŒ„ Z¡d�„ Z¢e	jª                  jÃ                  dŽee%e$ef«      d�„ «       Z£e	jª                  jÃ                  d�g  e«       d/f‘ ed/d‘¬’«      d/f‘ e%«       d/f‘ e%d/d‘¬’«      d/f‘ e$d/d‘¬’«      d/f‘ e$«       d/f‘ e!d‘¬“«      d/f‘ e"d‘¬“«      d/f‘ e#d‘¬“«      d/f‘ ed‘¬“«      d/f‘ e&d‘¬“«      d/f‘ e«       d/f‘ ed/d‘¬’«      d/f‘ e'«       d/f‘ e«       d/f‘ e«       d/f‘ ed¬«      d/f‘ ed¬«      d/f‘ ed/d¬’«      d.f‘ ed/d¬’«      d.f‘ e%d/e�jH                  �jK                  d«      ¬’«      d.f‘ e%d/e�jH                  �jK                  d«      ¬’«      d.f‘ e!d¬“«      d.f‘ e!e�jH                  �jK                  d«      ¬“«      d.f‘ e"d¬“«      d.f‘ e"e�jH                  �jK                  d«      ¬“«      d.f‘ e#d¬“«      d.f‘ e#e�jH                  �jK                  d«      ¬“«      d.f‘ ed¬“«      d.f‘ ee�jH                  �jK                  d«      ¬“«      d.f‘ e&d¬“«      d.f‘ e&e�jH                  �jK                  d«      ¬“«      d.f‘«      d”„ «       Z¦e	jª                  jÃ                  d•eLeLD � cg c]
  }  e§| «      ‘Œ c} ¬–«      d—„ «       Z¨e	jª                  jÃ                  d•eLeLD � cg c]
  }  e§| «      ‘Œ c} ¬–«      d˜„ «       Z©e	jª                  jÃ                  d•eHe§¬–«      d™„ «       Zªe	jª                  jÃ                  d•eMeMD � cg c]
  }  e§| «      ‘Œ c} ¬–«      dš„ «       Z«yc c} w c c} w c c} w )œzTest the split moduleé    N)ÚcombinationsÚcombinations_with_replacementÚpermutations)Ústats)Úissparse)Úcomb)Úconfig_context)Úload_digitsÚmake_classification)ÚDummyClassifier)ÚGridSearchCVÚ
GroupKFoldÚGroupShuffleSplitÚKFoldÚLeaveOneGroupOutÚLeaveOneOutÚLeavePGroupsOutÚ	LeavePOutÚPredefinedSplitÚRepeatedKFoldÚRepeatedStratifiedKFoldÚShuffleSplitÚStratifiedGroupKFoldÚStratifiedKFoldÚStratifiedShuffleSplitÚTimeSeriesSplitÚcheck_cvÚcross_val_scoreÚtrain_test_split)Ú_build_reprÚ_validate_shuffle_splitÚ_yields_constant_splits)ÚSVC)Úassert_request_is_empty)Ú_convert_to_numpyÚget_namespaceÚ)yield_namespace_device_dtype_combinations©Údevice)ÚMockDataFrame)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equalÚignore_warnings)Ú_array_api_for_tests)ÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERS)Ú_num_samplesé   ©Úpç      à?©Ú	test_size©é   r;   r4   r4   r;   ©Ún_groupsc              #   óH   K  — | ]  }|j                   j                  –— Œ y ­w©N)Ú	__class__Ú__name__)Ú.0Úsplitters     úf/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/model_selection/tests/test_split.pyú	<genexpr>rE   U   s   è ø€ ÒW¸8˜8×-Ñ-×6Õ6ÑWùs   ‚ "é
   ©r;   r;   r;   r;   r4   r4   r4   é   rH   rH   rH   rH   ©r   r   r   r;   r;   r;   r4   r4   r4   rH   rH   rH   ©r   r;   r4   rH   r   r;   r4   rH   r   r;   r4   rH   r   r;   r4   ©r;   r;   r4   r4   r4   rH   rH   rH   é   rL   rL   rL   rL   rL   rL   rL   ©Ú1rN   rN   rN   Ú2rO   rO   Ú3rP   rP   rP   rP   z0error:The groups parameter:UserWarning:sklearn.*c                 ó†   — | j                   j                  t        v r| j                  |||¬«      S | j                  ||«      S )N©Úgroups)r@   rA   ÚGROUP_SPLITTER_NAMESÚsplit)rC   ÚXÚyrS   s       rD   Ú_splitrX   p   s=   € Ø×Ñ×"Ñ"Ô&:Ñ:Ø�~‰~˜a ¨6ˆ~Ó2Ð2à�~‰~˜a Ó#Ð#ó    c                  óP  — d} d}d}d}d}t        j                  ddgddgddgdd	gg«      }t        j                  g d
¢«      }t        j                  g d¢«      }t        j                  g d
¢«      }t        «       }	t        |«      }
t	        |«      }t        |«      }t        «       }t        |«      }t        d¬«      }t        g d¢«      }t        |«      }d}d}d}d}d}d}d}d}d}| t        | |«      |||t        ||«      |d|g	}t        t        |	|
|||||||g	|||||||||g	«      «      D ]ï  \  }\  }}||   |j                  |||«      k(  sJ ‚t         j                  j!                  t#        t%        ||||«      «      t#        t%        ||||«      «      «       t%        ||||«      D ]a  \  }} t        j&                  |«      j(                  j*                  dk(  sJ ‚t        j&                  | «      j(                  j*                  dk(  rŒaJ ‚ |t-        |«      k(  rŒïJ ‚ d}!t/        j0                  t2        |!¬«      5  |	j                  d ||«       d d d «       t/        j0                  t2        |!¬«      5  |
j                  d ||«       d d d «       y # 1 sw Y   ŒAxY w# 1 sw Y   y xY w)NrL   r4   rF   r;   rH   é   é   é   é   )r;   r4   rH   rL   r:   r   ©Úrandom_statezLeaveOneOut()zLeavePOut(p=2)z3KFold(n_splits=2, random_state=None, shuffle=False)z=StratifiedKFold(n_splits=2, random_state=None, shuffle=False)úLeaveOneGroupOut()úLeavePGroupsOut(n_groups=2)zJShuffleSplit(n_splits=10, random_state=0, test_size=None, train_size=None)z.PredefinedSplit(test_fold=array([1, 1, 2, 2]))zBStratifiedGroupKFold(n_splits=2, random_state=None, shuffle=False)Úiz%The 'X' parameter should not be None.©Úmatch)ÚnpÚarrayr   r   r   r   r   r   r   r   r   r   Ú	enumerateÚzipÚget_n_splitsÚtestingÚassert_equalÚlistrX   ÚasarrayÚdtypeÚkindÚreprÚpytestÚraisesÚ
ValueError)"Ú	n_samplesÚn_unique_groupsÚn_splitsr6   Ún_shuffle_splitsrV   ÚX_1drW   rS   ÚlooÚlpoÚkfÚskfÚloloÚlopoÚssÚpsÚsgkfÚloo_reprÚlpo_reprÚkf_reprÚskf_reprÚ	lolo_reprÚ	lopo_reprÚss_reprÚps_reprÚ	sgkf_reprÚn_splits_expectedrc   ÚcvÚcv_reprÚtrainÚtestÚmsgs"                                     rD   Ú(test_cross_validator_with_default_paramsr’   w   sÎ  € Ø€IØ€OØ€HØ	€AØÐä
�‰�1�a�&˜1˜a˜& 1 a &¨1¨a¨&Ð1Ó2€AÜ�8‰8’LÓ!€DÜ
�‰’Ó€AÜ�X‰X’lÓ#€FÜ
‹-€CÜ
�A‹,€CÜ	ˆx‹€BÜ
˜(Ó
#€CÜÓ€DÜ˜1Ó€DÜ	 1Ô	%€BÜ	šÓ	&€BÜ Ó)€Dà€HØ€HØC€GØN€HØ$€IØ-€IàTð ð ?€GØT€Ið 	ÜˆY˜ÓØØØÜˆ_˜aÓ ØØ	Øð
Ðô &ÜØ�#�r˜3  d¨B°°DÐ9àØØØØØØØØð
ó	
óò #Ñˆ‰=ˆB�ð" ! Ñ# r§¡°q¸!¸VÓ'DÒDÐDÐDô 	�
‰
×ÑÜ”˜˜A˜q &Ó)Ó*¬D´¸¸DÀ!ÀVÓ1LÓ,Mô	
ô " " a¨¨FÓ3ò 	6‰KˆE�4Ü—:‘:˜eÓ$×*Ñ*×/Ñ/°3Ò6Ð6Ð6Ü—:‘:˜dÓ#×)Ñ)×.Ñ.°#Ó5Ð5Ð5ð	6ð
 œ$˜r›(Ó"Ð"Ð"ð=#ðB 2€CÜ	�‰”z¨Ô	-ñ *Ø×Ñ˜˜q &Ô)÷*ä	�‰”z¨Ô	-ñ *Ø×Ñ˜˜q &Ô)÷*ð *÷*ð *ú÷*ð *ús   È<JÉ3JÊJÊJ%c                  óL  — d} t         j                  j                  d«      }|j                  dd| df¬«      }|j                  dd| f¬«      }|j	                  dd«      }|j                  dd| df¬«      }|j                  dd| f¬«      }t        «       t        d¬«      t        «       t        «       t        «       t        «       t        «       t        «       t        d	¬
«      t        «       t        «       t!        d¬«      t#        d¬«      t%        «       t'        |¬«      g}|D ]K  }t)        t+        ||||¬«      «       t)        t+        ||||¬«      «       	 t)        t+        ||||¬«      «       ŒM y # t,        $ r,}	d}
dj/                  |
«      }|t1        |	«      v sJ ‚Y d }	~	Œd }	~	ww xY w)Né   r;   r   rH   r4   ©Úsizeéÿÿÿÿr5   r7   r8   r<   ©rw   )Ú	test_foldrR   )ÚbinaryÚ
multiclassz/Supported target types are: {}. Got 'multilabel)rf   ÚrandomÚRandomStateÚrandintÚreshaper   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rm   rX   rt   ÚformatÚstr)ru   ÚrngrV   rW   Úy_2dÚy_multilabelrS   Ú	splittersrC   ÚeÚallowed_target_typesr‘   s               rD   Ú	test_2d_yr¨   Ì   sy  € à€IÜ
�)‰)×
Ñ
 Ó
"€CØ�‰�A�q 	¨1˜~ˆÓ.€AØ�‰�A�q 	˜|ˆÓ,€AØ�9‰9�R˜Ó€DØ—;‘;˜q !¨9°a¨.�;Ó9€LØ�[‰[˜˜A Y Lˆ[Ó1€Fä‹Ü�AŒÜ‹ÜÓÜ‹ÜÓ!ÜÓÜ‹Ü¨Ô-ÜÓÜÓÜ Ô#Ü˜AÔÜÓÜ &Ô)ð€Ið" ò 
!ˆÜŒV�H˜a ¨6Ô2Ô3ÜŒV�H˜a ¨fÔ5Ô6ð	!Ü”˜ ! \¸&ÔAÕBñ	
!øô
 ò 	!Ø#;Ð ØC×JÑJØ$óˆCð œ#˜a›&‘=Ð •=ûð	!ús   ÅE.Å.	F#Å7"FÆF#c                 óÂ   — t        | «      t        |«      }} | j                  |«      t        «       k(  sJ ‚|�)| j                  |«      t        t        |«      «      k(  sJ ‚y y r?   )ÚsetÚintersectionÚunionÚrange)r�   r�   ru   s      rD   Úcheck_valid_splitr®   ó   s\   € ä�e“*œc $›iˆ4€Eð ×Ñ˜dÓ#¤s£uÒ,Ð,Ð,àÐà�{‰{˜4Ó ¤C¬¨iÓ(8Ó$9Ò9Ð9Ñ9ð rY   c                 ó&  — t        |«      }| j                  |||«      |k(  sJ ‚t        «       }d}| j                  |||«      D ])  \  }}	t	        ||	|¬«       |dz  }|j                  |	«       Œ+ ||k(  sJ ‚|�|t        t        |«      «      k(  sJ ‚y y )Nr   )ru   r;   )r3   rj   rª   rU   r®   Úupdater­   )
r�   rV   rW   rS   Úexpected_n_splitsru   Úcollected_test_samplesÚ
iterationsr�   r�   s
             rD   Úcheck_cv_coverager´   ÿ   s«   € Ü˜Q“€Ià�?‰?˜1˜a Ó(Ð,=Ò=Ð=Ð=ä ›UÐØ€JØ—x‘x  1 fÓ-ò ,‰ˆˆtÜ˜% °Õ;Ø�a‰ˆ
Ø×%Ñ% dÕ+ð,ð Ð*Ò*Ð*Ð*ØÐØ%¬¬U°9Ó-=Ó)>Ò>Ð>Ñ>ð rY   c                  ó&  — t        j                  ddgddgddgg«      } t        j                  ddgddgddgddgd	d
gg«      }t        t        t	        d«      j                  | «      f t        j                  g d¢«      }t        d«      }t        j                  t        d¬«      5  t        |j                  ||«      «       d d d «       t        d«      }t        j                  t        |«      «      }t        j                  t        d¬«      5  t        |j                  |||«      «       d d d «       t        j                  «       5  t        j                  d«       t!        |||d d¬«       d d d «       t        j                  «       5  t        j                  d«       t!        ||||d¬«       d d d «       t        j                  g d¢«      }t        j"                  t        «      5  t        |j                  ||«      «       d d d «       t        j"                  t        «      5  t        |j                  ||«      «       d d d «       t        j"                  t        «      5  t	        d«       d d d «       t        j"                  t        «      5  t	        d«       d d d «       d}t        j"                  t        |¬«      5  t        d«       d d d «       t        j"                  t        |¬«      5  t        d«       d d d «       t        j"                  t        |¬«      5  t        d«       d d d «       t        j"                  t        |¬«      5  t        d«       d d d «       t        j"                  t        «      5  t	        d«       d d d «       t        j"                  t        «      5  t	        d«       d d d «       t        j"                  t        «      5  t        d«       d d d «       t        j"                  t        «      5  t        d«       d d d «       t        j"                  t        «      5  t        d«       d d d «       t        j"                  t        «      5  t        d«       d d d «       t        j"                  t$        «      5  t	        dd ¬«       d d d «       y # 1 sw Y   �ŒÞxY w# 1 sw Y   �Œ‚xY w# 1 sw Y   �ŒMxY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒÑxY w# 1 sw Y   �Œ¡xY w# 1 sw Y   �Œ�xY w# 1 sw Y   �ŒaxY w# 1 sw Y   �Œ=xY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒùxY w# 1 sw Y   �Œ×xY w# 1 sw Y   �Œ·xY w# 1 sw Y   �Œ—xY w# 1 sw Y   �ŒwxY w# 1 sw Y   �ŒWxY w# 1 sw Y   �Œ7xY w# 1 sw Y   �ŒxY w# 1 sw Y   y xY w)Nr;   r4   rH   rL   r[   r\   r]   r^   é	   rF   )rH   rH   r—   r—   rH   zThe least populated classrd   Úignore©rS   r±   )rH   rH   r—   r—   r4   r   z>k-fold cross-validation requires at least one train/test splitç      ø?ç       @©rw   Úshuffle)rf   rg   rt   Únextr   rU   r   rr   ÚwarnsÚWarningr   ÚarangeÚlenÚwarningsÚcatch_warningsÚsimplefilterr´   rs   Ú	TypeError)ÚX1ÚX2rW   Úskf_3Úsgkf_3Únaive_groupsÚerror_strings          rD   Útest_kfold_valueerrorsrÌ     s@  € Ü	�‰�A�q�6˜A˜q˜6 A q 6Ð*Ó	+€BÜ	�‰�A�q�6˜A˜q˜6 A q 6¨A¨q¨6°A°r°7Ð;Ó	<€Bä””u˜Q“x—~‘~ bÓ)Ñ*ô 	�‰Ò"Ó#€Aä˜AÓ€EÜ	�‰”gÐ%@Ô	Añ !ÜˆU�[‰[˜˜QÓÔ ÷!ô " !Ó$€FÜ—9‘9œS ›VÓ$€LÜ	�‰”gÐ%@Ô	Añ 0ÜˆV�\‰\˜"˜a Ó.Ô/÷0ô 
×	 Ñ	 Ó	"ñ JÜ×Ñ˜hÔ'Ü˜%  Q¨tÀqÕI÷Jô 
×	 Ñ	 Ó	"ñ SÜ×Ñ˜hÔ'Ü˜& " a°ÐPQÕR÷Sô 	�‰Ò"Ó#€Aä	�‰”zÓ	"ñ !ÜˆU�[‰[˜˜QÓÔ ÷!ä	�‰”zÓ	"ñ "ÜˆV�\‰\˜"˜aÓ Ô!÷"ô 
�‰”zÓ	"ñ ÜˆaŒ÷ä	�‰”zÓ	"ñ ÜˆaŒ÷àS€LÜ	�‰”z¨Ô	6ñ Ü˜Ô÷ä	�‰”z¨Ô	6ñ Ü˜Ô÷ä	�‰”z¨Ô	6ñ  Ü˜QÔ÷ ä	�‰”z¨Ô	6ñ  Ü˜QÔ÷ ô 
�‰”zÓ	"ñ ÜˆcŒ
÷ä	�‰”zÓ	"ñ ÜˆcŒ
÷ä	�‰”zÓ	"ñ Ü˜Ô÷ä	�‰”zÓ	"ñ Ü˜Ô÷ä	�‰”zÓ	"ñ "Ü˜SÔ!÷"ä	�‰”zÓ	"ñ "Ü˜SÔ!÷"ô 
�‰”yÓ	!ñ (Ü�q $Õ'÷(ð (÷u!ñ !ú÷
0ñ 0ú÷Jñ Jú÷Sñ Sú÷!ñ !ú÷"ñ "ú÷ñ ú÷ñ ú÷ñ ú÷ñ ú÷ ñ  ú÷ ñ  ú÷ñ ú÷ñ ú÷ñ ú÷ñ ú÷"ñ "ú÷"ñ "ú÷(ð (úsä   Â%RÄR*Å&R7Æ&SÇ&SÈ#SÉ S+ÊS8Ê>TË-TÌTÍT,Í8T9Î%UÏUÏ?U Ð,U-ÑU:ÒVÒR'Ò*R4Ò7SÓSÓSÓS(Ó+S5Ó8TÔTÔTÔT)Ô,T6Ô9UÕUÕUÕ U*Õ-U7Õ:VÖVc                  ó  — t        j                  d«      } t        d«      }t        || d d d¬«       t        j                  d«      }t        d«      }t        ||d d d¬«       dt        d«      j	                  |«      k(  sJ ‚y )Né   rH   )rW   rS   r±   é   r[   )rf   Úonesr   r´   rj   )rÆ   r|   rÇ   s      rD   Útest_kfold_indicesrÑ   Z  so   € ä	�‰�‹€BÜ	ˆq‹€BÜ�b˜" ¨TÀQÕGô 
�‰�‹€BÜ	ˆq‹€BÜ�b˜" ¨TÀQÕGð ”�a“×%Ñ% bÓ)Ò)Ð)Ñ)rY   c                  óä  — ddgddgddgddgd	d
gg} t        d«      j                  | d d «      }t        |«      \  }}t        |ddg«       t        |ddg«       t        |«      \  }}t        |ddg«       t        |ddg«       t        d«      j                  | «      }t        |«      \  }}t        |g d¢«       t        |ddg«       t        |«      \  }}t        |ddg«       t        |g d¢«       y )Nr;   r4   rH   rL   r[   r\   r]   r^   r¶   rF   r—   r   ©r   r;   r4   )r   rU   r½   r-   )rÇ   Úsplitsr�   r�   s       rD   Útest_kfold_no_shufflerÕ   j  sì   € àˆaˆ&�1�a�&˜1˜a˜& 1 a &¨1¨b¨'Ð	2€Bä�1‹X�^‰^˜B˜s ˜GÓ$€FÜ�v“,�K€Eˆ4Ü�t˜a ˜VÔ$Ü�u˜q !˜fÔ%ä�v“,�K€Eˆ4Ü�t˜a ˜VÔ$Ü�u˜q !˜fÔ%ä�1‹X�^‰^˜BÓ€FÜ�v“,�K€Eˆ4Ü�tšYÔ'Ü�u˜q !˜fÔ%ä�v“,�K€Eˆ4Ü�t˜a ˜VÔ$Ü�ušiÕ(rY   c            	      ó`  — t        j                  d«      g d¢}} t        d«      j                  | |«      }t	        |«      \  }}t        |ddg«       t        |ddg«       t	        |«      \  }}t        |ddg«       t        |ddg«       t        j                  d«      g d¢}} t        d«      j                  | |«      }t	        |«      \  }}t        |g d	¢«       t        |g d
¢«       t	        |«      \  }}t        |g d
¢«       t        |g d	¢«       dt        d«      j                  | |«      k(  sJ ‚t        j                  d«      } g d¢}g d¢}t         j                  j                  t        t        d«      j                  | |«      «      t        t        d«      j                  | |«      «      «       g d¢}t        j                  |«      } t         j                  j                  t        t        d«      j                  | |«      «      t        t        d«      j                  | |«      «      «       y )NrL   )r;   r;   r   r   r4   r   r;   rH   r]   )r;   r;   r;   r   r   r   r   )r   r;   rH   rL   )r4   r[   r\   r[   )rN   rN   rN   Ú0r×   r×   r×   )r   r;   r   r;   r   r;   r   r;   )rf   rÐ   r   rU   r½   r-   rj   rk   rl   rm   Ú	ones_liker   )rV   rW   rÔ   r�   r�   Úy1Úy2s          rD   Ú test_stratified_kfold_no_shufflerÛ   �  sÀ  € ô �7‰7�1‹:’|€q€AÜ˜QÓ×%Ñ% a¨Ó+€FÜ�v“,�K€Eˆ4Ü�t˜a ˜VÔ$Ü�u˜q !˜fÔ%ä�v“,�K€Eˆ4Ü�t˜a ˜VÔ$Ü�u˜q !˜fÔ%ä�7‰7�1‹:Ò,€q€AÜ˜QÓ×%Ñ% a¨Ó+€FÜ�v“,�K€Eˆ4Ü�tš\Ô*Ü�ušiÔ(ä�v“,�K€Eˆ4Ü�tšYÔ'Ü�ušlÔ+ð ” Ó"×/Ñ/°°1Ó5Ò5Ð5Ð5ô 	�‰�‹
€AÚ	,€BÚ	€BÜ‡J�J×ÑÜŒ_˜QÓ×%Ñ% a¨Ó,Ó-¬t´OÀAÓ4F×4LÑ4LÈQÐPRÓ4SÓ/Tôò
 	!€AÜ
�‰�Q‹€AÜ‡J�J×ÑÜŒ_˜QÓ×%Ñ% a¨Ó+Ó,¬d´5¸³8·>±>À!ÀQÓ3GÓ.HõrY   r¼   FTÚk)rL   r[   r\   r]   r^   r¶   rF   Úkfoldc                 óÂ  — d}t        j                  |«      }t        j                  dgt        d|z  «      z  dgt        d|z  «      z  z   dgt        d|z  «      z  z   «      }t        j                  t        |«      «      }t        j                  |«      t        |«      z  }g }|sd nd}	 || |	|¬«      }
t        |
|||¬	«      D ]  \  }}t        t        j                  ||   «      t        |«      z  |d
¬«       t        t        j                  ||   «      t        |«      z  |d
¬«       |j                  t        |«      «       Œ� t        j                  |«      dk  sJ ‚y )Néè  rL   çš™™™™™¹?r   ç{®Gázì?r;   ç{®Gáz„?©r`   r¼   rR   ç{®Gáz”?©Úatol)rf   rÐ   rg   ÚintrÀ   rÁ   ÚbincountrX   r+   ÚappendÚptp)rÜ   r¼   rÝ   ru   rV   rW   rS   ÚdistrÚ
test_sizesr`   r}   r�   r�   s                rD   Útest_stratified_kfold_ratiosrí   ¬  s>  € ð €IÜ
�‰�	Ó€AÜ
�‰Ø	
ˆŒc�$˜Ñ"Ó#Ñ#Øˆ#”�D˜9Ñ$Ó%Ñ
%ñ	&àˆ#”�D˜9Ñ$Ó%Ñ
%ñ	&ó	€Aô �Y‰Y”s˜1“vÓ€FÜ�K‰K˜‹NœS ›VÑ#€Eà€JÙ&‘4¨A€LÙ
� °gÔ
>€CÜ˜c 1 a°Ô7ò %‰ˆˆtÜœŸ™ A e¡HÓ-´°E³
Ñ:¸EÈÕMÜœŸ™ A d¡GÓ,¬s°4«yÑ8¸%ÀdÕKØ×Ñœ#˜d›)Õ$ð%ô �6‰6�*Ó Ò"Ð"Ñ"rY   )rL   r\   r]   c                 ó°  ‡ ‡‡‡
‡— d}t        j                  dgt        d|z  «      z  dgt        d|z  «      z  z   dgt        d|z  «      z  z   «      }t        j                  t	        |«      «      Š
t        j
                  t	        |«      «      Šˆ
ˆˆ ˆˆfd„} ||«      }t        g d	¢«      D ]'  }t        j                  ||«      } ||«      }	|	|k(  rŒ'J ‚ y )
Néd   r4   rà   r   rá   r;   râ   c                 óš   •— ‰sd nd}t         ‰‰|‰¬«      ‰| ‰¬«      D ��cg c]  \  }}t        |«      t        |«      f‘Œ c}}S c c}}w )Nr   rã   rR   )rX   rm   )	rW   r`   r�   r�   rV   rS   rÜ   rÝ   r¼   s	       €€€€€rD   Ú
get_splitsz:test_stratified_kfold_label_invariance.<locals>.get_splitsÖ  sY   ø€ Ù#*‘t°ˆô  &Ù�a l¸GÔDØØØô	 ÷
á��tô �%‹[œ$˜t›*Ò%ó
ð 	
ùó 
s   £ ArÓ   )rf   rg   rç   rÐ   rÁ   rÀ   r   Útake)rÜ   r¼   rÝ   ru   rW   rñ   Úsplits_baseÚpermÚy_permÚsplits_permrV   rS   s   ```       @@rD   Ú&test_stratified_kfold_label_invariancer÷   Ç  sÔ   ü€ ð
 €IÜ
�‰Ø	
ˆŒc�$˜Ñ"Ó#Ñ#Øˆ#”�D˜9Ñ$Ó%Ñ
%ñ	&àˆ#”�D˜9Ñ$Ó%Ñ
%ñ	&ó	€Aô
 	�‰”�A“‹€Aä�Y‰Y”s˜1“vÓ€F÷

ð 

ñ ˜Q“-€KÜšYÓ'ò *ˆÜ—‘˜˜qÓ!ˆÙ  Ó(ˆØ˜kÓ)Ð)Ð)ñ*rY   c                  ó\  — t        dd«      D ]—  } t        d«      j                  t        j                  | «      ¬«      }|D ��cg c]  \  }}t        |«      ‘Œ }}}t        j                  |«      t        j                  |«      z
  dk  sJ ‚t        j                  |«      | k(  rŒ—J ‚ y c c}}w )Né   rÏ   r[   ©rV   r;   )	r­   r   rU   rf   rÐ   rÁ   ÚmaxÚminÚsum)rc   r|   Ú_r�   Úsizess        rD   Útest_kfold_balancer   é  sŠ   € ä�2�r‹]ò "ˆÜ�1‹X�^‰^œbŸg™g a›jˆ^Ó)ˆØ*,×-™w˜q $”�T•Ð-ˆÑ-ä—‘�u“¤§¡ u£Ñ-°!Ò3Ð3Ð3Ü�v‰v�e‹} Ó!Ð!Ð!ñ"ùã-s   ÁB(c           
      óÐ  — t        j                  d«      }dgdz  dgdz  z   }t        j                  t        |«      «      }dD ]›  } | d|¬«      }t	        dd«      D ]€  }t        ||d | |d | |d | «      }|D ��	cg c]  \  }}	t        |	«      ‘Œ }
}}	t        j                  |
«      t        j                  |
«      z
  dk  sJ ‚t        j                  |
«      |k(  rŒ€J ‚ Œ� y c c}	}w )	NrÏ   r   rH   r;   é   ©TF©r¼   rù   )	rf   rÐ   rÀ   rÁ   r­   rX   rû   rü   rý   )rÝ   rV   rW   rS   r¼   r�   rc   r}   rþ   r�   rÿ   s              rD   Útest_stratifiedkfold_balancer  ó  sä   € ô
 	�‰�‹€AØ	
ˆˆa‰�1�#˜‘(Ñ€Aä�Y‰Y”s˜1“vÓ€Fà ò &ˆÙ�1˜gÔ&ˆÜ�r˜2“ò 	&ˆAÜ˜˜Q˜r ˜U A b q E¨6°"°1¨:Ó6ˆCØ.1×2¡7 1 d”S˜•YÐ2ˆEÑ2ä—F‘F˜5“M¤B§F¡F¨5£MÑ1°aÒ7Ð7Ð7Ü—6‘6˜%“= AÓ%Ð%Ð%ñ	&ñ&ùó 3s   Á;C"
c                  óð  — t        d«      } t        ddd¬«      }t        ddd¬«      }t        j                  d«      }t        j                  d«      }t	        | j                  |«      |j                  |«      |j                  |«      «      D ]X  \  \  }}\  }}\  }	}
t        |||	fd«      D ]2  \  }}t        t        j                  ||«      «      t        |«      k7  rŒ2J ‚ d||<   ŒZ t        |«      dk(  sJ ‚y )NrH   Tr   ©r¼   r`   r;   é,  r4   )
r   rf   rÐ   Úzerosri   rU   r   rÁ   Úintersect1drý   )r|   Úkf2Úkf3rV   Ú	all_foldsÚtr1Úte1Útr2Úte2Útr3Úte3Útr_aÚtr_bs                rD   Útest_shuffle_kfoldr    sê   € ä	ˆq‹€BÜ
�˜4¨aÔ
0€CÜ
�˜4¨aÔ
0€Cä
�‰�‹€Aä—‘˜“€IÜ.1Ø
�‰�‹�S—Y‘Y˜q“\ 3§9¡9¨Q£<ó/ò Ñ*‰
ˆˆc‘J�S˜#¡
  cô '¨¨S°# ¸Ó:ò 	?‰JˆD�$ä”r—~‘~ d¨DÓ1Ó2´c¸#³hÓ>Ð>Ð>ð	?ð
 ˆ	�#Šðô ˆy‹>˜SÒ Ð Ñ rY   c                 ó&  — t        j                  d«      }dgdz  dgdz  z   }t        j                  t        |«      «      }t        j                  d«      }dgdz  dgdz  z   }t        j                  t        |«      «      } | ddd¬	«      }t         j                  j                  t        t        ||||«      «      t        t        ||||«      «      «        | ddt         j                  j                  d«      ¬	«      }t        ||f||f||f«      D ]r  }t        t        |g|¢­Ž t        |g|¢­Ž «      D ]M  \  \  }	}
\  }	}t        j                  t        «      5  t         j                  j                  |
|«       d d d «       ŒO Œt y # 1 sw Y   Œ\xY w)
Né   r   r]   r;   r^   é   rH   Tr  )rf   rÐ   rÀ   rÁ   rk   rl   rm   rX   rœ   r�   ri   rr   rs   ÚAssertionErrorr-   )rÝ   rV   rW   Úgroups_1rÇ   rÚ   Úgroups_2r|   Údatarþ   Útest_aÚtest_bs               rD   Ú2test_shuffle_kfold_stratifiedkfold_reproducibilityr     sj  € ä
�‰�‹€AØ	
ˆˆa‰�1�#˜‘'Ñ€AÜ�y‰yœ˜Q›Ó €HÜ	�‰�‹€BØ
ˆˆq‰�A�3˜‘7Ñ	€BÜ�y‰yœ˜R›Ó!€Hñ 
ˆq˜$¨QÔ	/€Bä‡J�J×ÑÜŒV�B˜˜1˜hÓ'Ó(¬$¬v°b¸!¸QÀÓ/IÓ*Jôñ 
ˆq˜$¬R¯Y©Y×-BÑ-BÀ1Ó-EÔ	F€BÜ�Q˜�G˜a ˜W x°Ð&:Ó;ò >ˆä(+¬F°2Ð,=¸Ò,=¼vÀbÐ?PÈ4Ò?PÓ(Qò 	>Ñ$‰KˆQ�™˜!˜Vô
 —‘œ~Ó.ñ >Ü—
‘
×-Ñ-¨f°fÔ=÷>ð >ñ	>ñ>÷>ð >ús   Å!FÆFc            	      ó¸  — t        j                  d«      } dgdz  dgdz  z   }t        ddd¬«      }t        ddd¬«      }t        |j	                  | |«      |j	                  | |«      «      D ]$  \  \  }}\  }}t        |«      t        |«      k7  rŒ$J ‚ t        || |d d¬«       t        j                  d	«      }dgdz  dgdz  z   }t        ddd¬«      }t        ddd¬«      }t        |j	                  ||«      D �	cg c]  }	t        |	d   «      ‘Œ c}	«      }
t        |j	                  ||«      D �	cg c]  }	t        |	d   «      ‘Œ c}	«      }|
|k7  sJ ‚y c c}	w c c}	w )
Né(   r   é   r;   r[   Tr  r¸   rF   )
rf   rÐ   r   ri   rU   rª   r´   rÀ   ÚsortedÚtuple)ÚX_40rW   Úkf0Úkf1rþ   Útest0Útest1rV   r  ÚsÚ	test_set1Ú	test_set2s               rD   Útest_shuffle_stratifiedkfoldr.  >  sG  € ô �7‰7�2‹;€DØ	
ˆˆb‰�A�3˜‘8Ñ€AÜ
˜! T¸Ô
:€CÜ
˜! T¸Ô
:€CÜ"% c§i¡i°°aÓ&8¸#¿)¹)ÀDÈ!Ó:LÓ"Mò (Ñ‰
ˆˆE‘J�Q˜Ü�5‹zœS ›ZÓ'Ð'Ð'ð(ä�c˜4 ¨4À1ÕEô
 	�	‰	�"‹€AØ	
ˆˆa‰�1�#˜‘'Ñ€AÜ
˜! T¸Ô
:€CÜ
˜! T¸Ô
:€CÜ¨S¯Y©Y°q¸!«_Ö=¨œ˜a ™d�Ò=Ó>€IÜ¨S¯Y©Y°q¸!«_Ö=¨œ˜a ™d�Ò=Ó>€IØ˜	Ò!Ð!Ñ!ùò >ùÚ=s   Ã9EÄ.Ec                  ó  — t        j                  d«      } dgdz  dgdz  z   }t        j                  d«      dz  }t        ddd¬«      }t        ddd¬«      }|j	                  | d |«      D ��cg c]  \  }}t        ||   «      ‘Œ }}}|j	                  | d |«      D ��cg c]  \  }}t        ||   «      ‘Œ }}}t        ||«      D ]  \  }	}
|	|
k7  rŒJ d	«       ‚ t        || ||d¬
«       t        || ||d¬
«       y c c}}w c c}}w )Nr"  r   r#  r;   rH   rL   Tr  z6Test groups should differ with different random states)r±   )rf   rÐ   rÀ   r   rU   rª   ri   r´   )rV   rW   rS   Úgkf0Úgkf1rþ   Útest_idxÚtest_groups0Útest_groups1Úg0Úg1s              rD   Útest_shuffle_groupkfoldr7  U  s  € ô 	�‰�‹€AØ	
ˆˆb‰�A�3˜‘8Ñ€AÜ�Y‰Y�r‹]˜aÑ€FÜ�a °AÔ6€DÜ�a °AÔ6€Dð 26·±¸A¸tÀVÓ1L÷Ù"- ! XŒˆF�8ÑÕð€Lñ ð 26·±¸A¸tÀVÓ1L÷Ù"- ! XŒˆF�8ÑÕð€Lñ ô �l LÓ1ò R‰ˆˆBØ�R‹xÐQÐQÓQˆxðRô �d˜A˜q &¸AÕ>Ü�d˜A˜q &¸AÖ>ùóùós   Á-C:ÂD c                  ó  — t         j                  d d t         j                  d d }} t        dd¬«      }d}t	        |d¬«      }t        || ||¬«      j                  «       }d	|kD  sJ ‚|d
kD  sJ ‚t	        |dd¬«      }t        || ||¬«      j                  «       }|d	kD  sJ ‚t	        |dd¬«      }t        || ||¬«      j                  «       }|d	kD  sJ ‚t        |«      }t        || ||¬«      j                  «       }d|kD  sJ ‚|d
kD  sJ ‚y )NiX  rF   g{®Gázt?)ÚCÚgammarH   Fr»   ©r�   gq=
×£pí?çš™™™™™é?Tr   r  r;   g®Gázî?)Údigitsr  Útargetr#   r   r   Úmeanr   )rV   rW   Úmodelrw   r�   Ú
mean_scores         rD   Ú1test_kfold_can_detect_dependent_samples_on_digitsrB  m  s"  € ô �;‰;�t˜ÐœfŸm™m¨D¨SÐ1€q€AÜ�"˜EÔ"€Eà€Hä	˜¨%Ô	0€BÜ  ¨¨1°Ô4×9Ñ9Ó;€JØ�*ÒÐÐØ˜ÒÐÐô 
ˆx °AÔ	6€BÜ  ¨¨1°Ô4×9Ñ9Ó;€JØ˜ÒÐÐä	ˆx °AÔ	6€BÜ  ¨¨1°Ô4×9Ñ9Ó;€JØ˜ÒÐÐô 
˜Ó	"€BÜ  ¨¨1°Ô4×9Ñ9Ó;€JØ�*ÒÐÐØ˜ÒÐÑrY   c                  óÊ  — t        d¬«      } t        j                  dgdz  dgdz  z   «      }t        j                  |«      j	                  dd«      }t        j
                  d«      }t        j                  |«      t        |«      z  }g }| j                  |||«      D ]ª  \  }}t        j                  ||   ||   «      j                  dk(  sJ ‚t        t        j                  ||   «      t        |«      z  |d	¬
«       t        t        j                  ||   «      t        |«      z  |d	¬
«       |j                  t        |«      «       Œ¬ t        j                  |«      dk  sJ ‚y )NrH   r˜   r;   r\   r   é   r—   )r;   r4   rH   rL   r[   r\   r;   r;   r4   r4   rH   rH   rL   rL   r[   r[   r\   r\   rä   rå   )r   rf   rg   rØ   rŸ   rn   rè   rÁ   rU   r
  r–   r+   ré   rê   )r‚   rW   rV   rS   rë   rì   r�   r�   s           rD   Ú#test_stratified_group_kfold_trivialrE  ™  s%  € Ü¨Ô+€Dä
�‰�!��q‘˜A˜3 ™8Ñ#Ó$€AÜ
�‰�Q‹×Ñ  AÓ&€AÜ�Z‰ZÐNÓO€FÜ�K‰K˜‹NœS ›VÑ#€EØ€JØ—z‘z ! Q¨Ó/ò %‰ˆˆtä�~‰~˜f U™m¨V°D©\Ó:×?Ñ?À1ÒDÐDÐDäœŸ™ A e¡HÓ-´°E³
Ñ:¸EÈÕMÜœŸ™ A d¡GÓ,¬s°4«yÑ8¸%ÀdÕKØ×Ñœ#˜d›)Õ$ð%ô �6‰6�*Ó Ò"Ð"Ñ"rY   c                  ó†  — t        d¬«      } t        j                  dgdz  dgdz  z   «      }t        j                  |«      j	                  dd«      }t        j                  g d¢«      }t        j
                  d	d
gddgddgg«      }g }t        | j                  |||«      |«      D ]  \  \  }}}t        j                  ||   ||   «      j                  dk(  sJ ‚t        j                  ||   «      t        |«      z  }	t        |	|d¬«       |j                  t        |«      «       Œ� t        j                  |«      dk  sJ ‚y )NrH   r˜   r;   r\   r   rD  r—   )r;   r4   rH   rH   rL   rL   r;   r;   r4   r4   rH   rL   r[   r[   r[   r\   r\   r\   g-²�ï§ê?gsh‘í|?Å?gZd;ßOå?gZd;ßOÕ?r7   çü©ñÒMbP?rå   )r   rf   rg   rØ   rŸ   rn   ri   rU   r
  r–   rè   rÁ   r+   ré   rê   )
r‚   rW   rV   rS   Úexpectedrì   r�   r�   Úexpect_distÚ
split_dists
             rD   Ú'test_stratified_group_kfold_approximaterK  «  s!  € ô  ¨Ô+€DÜ
�‰�!��q‘˜A˜3 ™8Ñ#Ó$€AÜ
�‰�Q‹×Ñ  AÓ&€AÜ�X‰XÒLÓM€FÜ�z‰z˜E 5˜>¨E°5¨>¸CÀ¸:ÐFÓG€HØ€JÜ&)¨$¯*©*°Q¸¸6Ó*BÀHÓ&Mò %Ñ"‰ˆ��{ä�~‰~˜f U™m¨V°D©\Ó:×?Ñ?À1ÒDÐDÐDÜ—[‘[  4¡Ó)¬C°«IÑ5ˆ
Ü˜
 K°eÕ<Ø×Ñœ#˜d›)Õ$ð%ô �6‰6�*Ó Ò"Ð"Ñ"rY   zy, groups, expectedr\   )r;   r;   r4   r4   rH   rH   rL   rL   r[   r[   r\   r\   r¶   rH   )r;   r;   r;   r4   r4   r4   rH   rH   rH   rL   r[   r\   ç      è?ç      Ð?c                 óp  — t        d¬«      }t        j                  | «      j                  dd«      }t	        |j                  || |«      |«      D ]e  \  \  }}}t        j                  ||   ||   «      j                  dk(  sJ ‚t        j                  | |   «      t        |«      z  }t        ||d¬«       Œg y )NrH   r˜   r—   r;   r   rG  rå   )r   rf   rØ   rŸ   ri   rU   r
  r–   rè   rÁ   r+   )	rW   rS   rH  r‚   rV   r�   r�   rI  rJ  s	            rD   Ú.test_stratified_group_kfold_homogeneous_groupsrO  ½  s¢   € ô   ¨Ô+€DÜ
�‰�Q‹×Ñ  AÓ&€AÜ&)¨$¯*©*°Q¸¸6Ó*BÀHÓ&Mò =Ñ"‰ˆ��{ä�~‰~˜f U™m¨V°D©\Ó:×?Ñ?À1ÒDÐDÐDÜ—[‘[  4¡Ó)¬C°«IÑ5ˆ
Ü˜
 K°eÖ<ñ	=rY   Ú	cls_distr))gš™™™™™Ù?ç333333ã?)g333333Ó?çffffffæ?)çš™™™™™É?r<  )r<  rS  r=   )r[   r”   éF   c                 ó  — d}t        |¬«      }t        |¬«      }t        j                  j	                  d«      }d}|j                  d|| ¬«      }t        j                  |«      j                  dd«      }|j                  ||«      }	|j                  |||	¬	«      }
|j                  |||	¬	«      }d}d}t        |
|«      D ]²  \  \  }}\  }}t        j                  |	|   |	|   «      j                  dk(  sJ ‚t        j                  ||   «      t        |«      z  }t        j                  ||   «      t        |«      z  }|t        j                  || ¬
«      z  }|t        j                  || ¬
«      z  }Œ´ ||z  }||z  }||k  sJ ‚y )Nr[   r˜   r   rß   r4   )r–   r6   r—   r;   rR   )Úqk)r   r   rf   rœ   r�   ÚchoicerØ   rŸ   rU   ri   r
  r–   rè   rÁ   r   Úentropy)rP  r=   rw   r‚   Úgkfr¢   Ún_pointsrW   rV   ÚgÚ
sgkf_foldsÚ	gkf_foldsÚ	sgkf_entrÚgkf_entrÚ
sgkf_trainÚ	sgkf_testrþ   Úgkf_testÚ
sgkf_distrÚ	gkf_distrs                       rD   Ú/test_stratified_group_kfold_against_group_kfoldre  Ö  su  € ð
 €HÜ¨Ô2€DÜ
˜hÔ
'€CÜ
�)‰)×
Ñ
 Ó
"€CØ€HØ�
‰
�1˜8 yˆ
Ó1€AÜ
�‰�Q‹×Ñ  AÓ&€AØ�
‰
�8˜XÓ&€AØ—‘˜A˜q¨�Ó+€JØ—	‘	˜!˜Q q�	Ó)€IØ€IØ€HÜ25°jÀ)Ó2Lò ;Ñ.Ñˆ�Y¡ ! Xä�~‰~˜a 
™m¨Q¨y©\Ó:×?Ñ?À1ÒDÐDÐDÜ—[‘[  9¡Ó.´°Y³Ñ?ˆ
Ü—K‘K  (¡Ó,¬s°8«}Ñ<ˆ	Ø”U—]‘] :°)Ô<Ñ<ˆ	Ø”E—M‘M )°	Ô:Ñ:‰ð;ð �Ñ€IØ�Ñ€HØ˜Ò Ð Ñ rY   c                  óD  — t        dd¬«      j                  t        «      } t        dd¬«      j                  t        «      }t        t        j                  d«      d¬«      j                  t        «      }t        t        d«      d¬«      j                  t        «      }t        | |||«      D ]s  \  }}}}t        |d   |d   «       t        |d   |d   «       t        |d   |d   «       t        |d   |d   «       t        |d   |d   «       t        |d   |d   «       Œu y )NrS  r   ©r9   r`   r4   r;   )r   rU   rV   rf   Úint32rç   ri   r-   )Úss1Úss2Úss3Úss4Út1Út2Út3Út4s           rD   Útest_shuffle_splitrq  ó  sø   € Ü
 °1Ô
5×
;Ñ
;¼AÓ
>€CÜ
 °Ô
3×
9Ñ
9¼!Ó
<€CÜ
¤§¡¨!£¸1Ô
=×
CÑ
CÄAÓ
F€CÜ
¤ Q£°aÔ
8×
>Ñ
>¼qÓ
A€CÜ˜c 3¨¨SÓ1ò )‰ˆˆB��BÜ˜2˜a™5 " Q¡%Ô(Ü˜2˜a™5 " Q¡%Ô(Ü˜2˜a™5 " Q¡%Ô(Ü˜2˜a™5 " Q¡%Ô(Ü˜2˜a™5 " Q¡%Ô(Ü˜2˜a™5 " Q¡%Õ(ñ)rY   Úsplit_classztrain_size, exp_train, exp_test))Nr¶   r;   ©r^   r^   r4   ©r<  r^   r4   c                 óâ   — t        j                  d«      }t        j                  d«      }t         | |¬«      j                  ||«      «      \  }}t	        |«      |k(  sJ ‚t	        |«      |k(  sJ ‚y ©NrF   ©Ú
train_size)rf   rÐ   r½   rU   rÁ   )rr  rx  Ú	exp_trainÚexp_testrV   rW   ÚX_trainÚX_tests           rD   Ú$test_shuffle_split_default_test_sizer}    sb   € ô 	�‰�‹€AÜ
�‰�‹€Aä™;°*Ô=×CÑCÀAÀqÓIÓJ�O€GˆVäˆw‹<˜9Ò$Ð$Ð$Üˆv‹;˜(Ò"Ð"Ñ"rY   ))Nr^   r4   )r]   r]   rH   )rR  r]   rH   c                 ó   — t        j                  d«      }t        j                  d«      }t        d«      }t        t	        | ¬«      j                  |||«      «      \  }}t        |«      |k(  sJ ‚t        |«      |k(  sJ ‚y rv  )rf   rÐ   r­   r½   r   rU   rÁ   )rx  ry  rz  rV   rW   rS   r{  r|  s           rD   Ú*test_group_shuffle_split_default_test_sizer    so   € ô 	�‰�‹€AÜ
�‰�‹€AÜ�2‹Y€FäÔ,¸
ÔC×IÑIÈ!ÈQÐPVÓWÓX�O€GˆVäˆw‹<˜9Ò$Ð$Ð$Üˆv‹;˜(Ò"Ð"Ñ"rY   c                  óþ  — t        j                  d«      } t        j                  g d¢«      }t        j                  t
        «      5  t        t        dd¬«      j                  | |«      «       d d d «       t        j                  t
        «      5  t        t        dd¬«      j                  | |«      «       d d d «       t        j                  t
        «      5  t        t        ddd¬«      j                  | |«      «       d d d «       t        j                  d«      } t        j                  g d	¢«      }t        j                  t
        «      5  t        t        d¬
«      j                  | |«      «       d d d «       t        j                  t
        «      5  t        t        d¬«      j                  | |«      «       d d d «       y # 1 sw Y   �ŒVxY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒÞxY w# 1 sw Y   ŒwxY w# 1 sw Y   y xY w)Nr]   )r   r;   r;   r;   r4   r4   r4   rH   rS  r8   r4   ©r9   rx  r¶   )	r   r   r   r;   r;   r;   r4   r4   r4   rw  )	rf   rÀ   rn   rr   rs   rt   r½   r   rU   ©rV   rW   s     rD   Ú"test_stratified_shuffle_split_initrƒ  !  s‡  € Ü
�	‰	�!‹€AÜ
�
‰
Ò(Ó)€Aä	�‰”zÓ	"ñ CÜÔ# A°Ô5×;Ñ;¸A¸qÓAÔB÷Cô 
�‰”zÓ	"ñ AÜÔ# A°Ô3×9Ñ9¸!¸QÓ?Ô@÷Aô 
�‰”zÓ	"ñ OÜÔ# A°¸qÔA×GÑGÈÈ1ÓMÔN÷Oô 	�	‰	�!‹€AÜ
�
‰
Ò.Ó/€Aô 
�‰”zÓ	"ñ ?ÜÔ#¨qÔ1×7Ñ7¸¸1Ó=Ô>÷?ä	�‰”zÓ	"ñ >ÜÔ#¨aÔ0×6Ñ6°q¸!Ó<Ô=÷>ð >÷#Cñ Cú÷Añ Aú÷Oð Oú÷?ð ?ú÷>ð >ús<   Á'GÂ'GÃ(GÅ&G'Æ&G3ÇGÇGÇG$Ç'G0Ç3G<c                  ó  — t        j                  g d¢«      } d}d}t        d||d¬«      j                  t        j                  t        | «      «      | «      }|D ]%  \  }}t        |«      |k(  sJ ‚t        |«      |k(  rŒ%J ‚ y )NrJ   r[   rF   r\   r   )r9   rx  r`   )rf   rg   r   rU   rÐ   rÁ   )rW   r9   rx  Ússsr�   r�   s         rD   Ú0test_stratified_shuffle_split_respects_test_sizer†  :  s‚   € Ü
�‰Ò>Ó?€AØ€IØ€JÜ
 Ø	�Y¨:ÀAôç�eŒB�G‰G”C˜“F‹O˜QÓð ð ò &‰ˆˆtÜ�5‹z˜ZÒ'Ð'Ð'Ü�4‹y˜IÓ%Ð%Ð%ñ&rY   c                  ó  — t        j                  g d¢«      t        j                  g d¢«      t        j                  g d¢dz  «      t        j                  g d¢«      t        j                  dgdz  dgd	z  z   «      t        j                  t        d
«      D � cg c]  } | gd| z   z  ‘Œ c} «      g d¢g d¢g}|D �]È  }t	        ddd¬«      j                  t        j                  t        |«      «      |«      }t        j                  |«      }t        j                  dt        |«      z  «      }t        |«      |z
  }|D �]A  \  }}t        t        j                  ||   «      t        j                  ||   «      «       t        j                  t        j                  ||   d¬«      d   «      t        t        ||   «      «      z  }t        j                  t        j                  ||   d¬«      d   «      t        t        ||   «      «      z  }	t        ||	d«       t        |«      t        |«      z   |j                  k(  sJ ‚t        |«      |k(  sJ ‚t        |«      |k(  sJ ‚t        t        j                   ||«      g «       �ŒD �ŒË y c c} w )NrG   rI   rJ   r4   rK   r—   i   r;   é2   rù   rï   rM   r\   g…ëQ¸Õ?r   rg  T)Úreturn_inverse)rf   rg   Úconcatenater­   r   rU   rÐ   rÁ   Ú
asanyarrayÚceilr-   Úuniquerè   Úfloatr,   r–   r
  )
rc   ÚysrW   r…  r9   rx  r�   r�   Úp_trainÚp_tests
             rD   Ú"test_stratified_shuffle_split_iterr’  F  s  € ä
�‰Ò5Ó6Ü
�‰Ò5Ó6Ü
�‰Ò>ÀÑBÓCÜ
�‰ÒAÓBÜ
�‰�"�˜‘˜q˜c B™hÑ&Ó'Ü
�‰´°r³Ö;¨A˜˜˜s Q™w›Ò;Ó<Ú,ÚDð	
€Bð ó @ˆÜ$ Q°$ÀQÔG×MÑMÜ�G‰G”C˜“F‹O˜Qó
ˆô �M‰M˜!Óˆô —G‘G˜D¤3 q£6™MÓ*ˆ	Ü˜“V˜iÑ'ˆ
Øó 	@‰KˆE�4ÜœrŸy™y¨¨5©Ó2´B·I±I¸aÀ¹gÓ4FÔGä—k‘k¤"§)¡)¨A¨e©HÀTÔ"JÈ1Ñ"MÓNÔQVÜ�A�e‘H“óRñ ˆGô —[‘[¤§¡¨1¨T©7À4Ô!HÈÑ!KÓLÌuÜ�A�d‘G“óPñ ˆFô & g¨v°qÔ9Ü�u“:¤ D£	Ñ)¨Q¯V©VÒ3Ð3Ð3Ü�u“: Ò+Ð+Ð+Ü�t“9 	Ò)Ð)Ð)ÜœrŸ~™~¨e°TÓ:¸BÖ?ò	@ñ@ùò <s   ÂJc                  ó  ‡— d} dŠˆfd„}dD �]y  }t        j                  |dz  ddgz  «      }t        ‰d| z  d¬	«      }dg|z  }dg|z  }d}|j                  t        j                  |«      |¬
«      D ].  \  }}	|dz  }||f||	ffD ]  \  }
}|D ]  }|
|xx   dz  cc<   Œ Œ Œ0 |‰k(  sJ ‚t        |d| z  dd| z  z
  ¬«      \  }}t        «      |k(  sJ ‚t        	«      |k(  sJ ‚t        t        |«      j                  |	«      «      dk(  sJ ‚t        j                  |«      }|j                  d| z  k(  sJ ‚||z   t        |«      k(  sJ ‚t        |«      dk(  sJ ‚t        |«      |z  }t        |«      |z  } |||«        |||«       �Œ| y )Nr[   rß   c                 ó„   •— d‰z  }t        j                  ‰|«      }| D ]  }|j                  |«      }||kD  rŒJ d«       ‚ y )Nçš™™™™™©?z=An index is not drawn with chance corresponding to even draws)r   ÚbinomÚpmf)Ú
idx_countsr6   Ú	thresholdÚbfÚcountÚprobrw   s         €rD   Úassert_counts_are_okz@test_stratified_shuffle_split_even.<locals>.assert_counts_are_okq  sV   ø€ ð ˜8‘Oˆ	Ü�[‰[˜ 1Ó%ˆØò 	OˆEØ—6‘6˜%“=ˆDà�yÓ ðOàNóOØ ñ	OrY   )r\   é   r4   r   r;   ç      ð?©rw   r9   r`   r‚  r�  )rf   rg   r   rU   rÐ   r!   rÁ   rª   r«   r�  r9   rŽ  )Ún_foldsr�  ru   rS   rÔ   Útrain_countsÚtest_countsÚn_splits_actualr�   r�   ÚcounterÚidsÚidÚn_trainÚn_testÚgroup_countsÚ	ex_test_pÚ
ex_train_prw   s                     @rD   Ú"test_stratified_shuffle_split_evenr­  k  sà  ø€ ð €GØ€Hô	Oð ó  5ˆ	Ü—‘˜9¨™>¨a°¨VÑ3Ó4ˆÜ'Ø¨¨w©ÀQô
ˆð �s˜Y‘ˆØ�c˜I‘oˆØˆØ!Ÿ<™<¬"¯'©'°)Ó*<À˜<ÓGò 	%‰KˆE�4Ø˜qÑ ˆOØ".°Ð!6¸ÀdÐ8KÐ Lò %‘�˜Øò %�BØ˜B“K 1Ñ$”Kñ%ñ%ð	%ð
  (Ò*Ð*Ð*ä1Ø  w¡¸3À#ÈÁ-Ñ;Pô
‰ˆ�ô �5‹z˜WÒ$Ð$Ð$Ü�4‹y˜FÒ"Ð"Ð"Ü”3�u“:×*Ñ*¨4Ó0Ó1°QÒ6Ð6Ð6ä—y‘y Ó(ˆØ×Ñ 3¨¡=Ò0Ð0Ð0Ø˜Ñ¤3 v£;Ò.Ð.Ð.Ü�<Ó  AÒ%Ð%Ð%Ü˜&“M IÑ-ˆ	Ü˜7“^ iÑ/ˆ
á˜\¨:Ô6Ù˜[¨)Ö4ñA 5rY   c                  ó^  — g d¢dz  ddgdz  z   } t        j                  | «      }t        ddd¬«      }t        |j	                  || ¬	«      «      \  }}t        t        j                  ||«      g «       t        t        j                  ||«      t        j                  t        | «      «      «       y )
N©r   r;   r4   rH   rH   rL   r[   r;   r7   r   r   r‚  )
rf   rØ   r   r½   rU   r-   r
  Úunion1drÀ   rÁ   )rW   rV   r…  r�   r�   s        rD   Ú4test_stratified_shuffle_split_overlap_train_test_bugr±  Ÿ  sŒ   € ò 	�qÑ˜A˜q˜6 A™:Ñ%€AÜ
�‰�Q‹€Aä
 ¨!°sÈÔ
K€Cä�s—y‘y 1¨�yÓ*Ó+�K€Eˆ4ô ”r—~‘~ e¨TÓ2°BÔ7ô ”r—z‘z %¨Ó.´·	±	¼#¸a»&Ó0AÕBrY   c            	      ó¢  — t        j                  ddgddgddgddgg«      t        j                  ddgddgddgddgg«      fD �]	  } t        j                  | «      }t        ddd¬«      }t	        |j                  || ¬«      «      \  }}| |   }| |   }t        t        j                  ||«      g «       t        t        j                  ||«      t        j                  t        | «      «      «       t        j                  | d d …df   «      }|t        j                  |d d …df   «      k(  sJ ‚|t        j                  |d d …df   «      k(  r�Œ
J ‚ y )Nr   r;   r7   r   r‚  )rf   rg   rØ   r   r½   rU   r-   r
  r°  rÀ   rÁ   r?  )rW   rV   r…  r�   r�   Úy_trainÚy_testÚexpected_ratios           rD   Ú(test_stratified_shuffle_split_multilabelr¶  °  s:  € ô 	�‰�1�a�&˜1˜a˜& 1 a &¨1¨a¨&Ð1Ó2Ü
�‰�1�a�&˜1˜a˜& 1 a &¨1¨a¨&Ð1Ó2ðó 7ˆô �L‰L˜‹OˆÜ$¨a¸3ÈQÔOˆÜ˜3Ÿ9™9 q¨A˜9Ó.Ó/‰ˆˆtØ�E‘(ˆØ�4‘ˆô 	œ2Ÿ>™>¨%°Ó6¸Ô;ô 	œ2Ÿ:™: e¨TÓ2´B·I±I¼cÀ!»fÓ4EÔFô Ÿ™ ¢1 a 4¡Ó)ˆØ¤§¡¨²°A°©Ó!7Ò7Ð7Ð7Ø¤§¡¨²°1°©Ó!6Ô6Ð6Ð6ñ)7rY   c                  óØ  — g d¢dgdz  z   g d¢z   } g d¢dgdz  z   g d¢z   }t        j                  | gdz  |gdz  z   «      }t        j                  |«      }t        ddd¬«      }t	        |j                  ||¬	«      «      \  }}||   }||   }t        j                  |d d …d
f   «      }	|	t        j                  |d d …d
f   «      k(  sJ ‚|	t        j                  |d d …d
f   «      k(  sJ ‚y )N)r;   r   r;   r   rß   r;   rF   rï   r7   r   r‚  rL   )rf   rg   rØ   r   r½   rU   r?  )
Úrow_with_many_zerosÚrow_with_many_onesrW   rV   r…  r�   r�   r³  r´  rµ  s
             rD   Ú4test_stratified_shuffle_split_multilabel_many_labelsrº  É  só   € ò $ q c¨D¡jÑ0²9Ñ<ÐÚ" a S¨4¡ZÑ/²)Ñ;ÐÜ
�‰Ð%Ð&¨Ñ+Ð/AÐ.BÀSÑ.HÑHÓI€AÜ
�‰�Q‹€Aä
 ¨!°sÈÔ
K€CÜ�s—y‘y 1¨�yÓ*Ó+�K€Eˆ4Ø�‰h€GØˆt‰W€Fô —W‘W˜Qšq !˜t™WÓ%€NØœRŸW™W WªQ°¨T¡]Ó3Ò3Ð3Ð3ØœRŸW™W VªA¨q¨D¡\Ó2Ò2Ð2Ñ2rY   c                  óÈ  — t        j                  dd«      } g }g }t        t        dd¬«      j	                  t
        «      «      D ]/  \  }\  }}|j                  |«       |j                  |«       || |<   Œ1 t        | «      }t        t        j                  | «      «      |j                  «       k(  sJ ‚t        |j	                  «       Ž \  }}t        ||«       t        ||«       y )NrF   g      ð¿r[   Tr  )rf   Úfullrh   r   rU   rV   ré   r   rÁ   r�  rj   ri   r-   )	ÚfoldsÚkf_trainÚkf_testrc   Ú	train_indÚtest_indr�   Úps_trainÚps_tests	            rD   Ú%test_predefinedsplit_with_kfold_splitrÄ  à  sÅ   € ä�G‰G�B˜Ó€EØ€HØ€GÜ$-¬e°A¸tÔ.D×.JÑ.JÌ1Ó.MÓ$Nò Ñ ˆÑ ˆI�xØ�‰˜	Ô"Ø�‰�xÔ ØˆˆhŠðô 
˜Ó	€BäŒr�y‰y˜ÓÓ  B§O¡OÓ$5Ò5Ð5Ð5Ü˜RŸX™X›ZÐ(Ñ€HˆgÜ�x Ô*Ü�w Õ(rY   c                  óØ  — t         D �]à  } t        j                  t        | «      «      x}}d}d}t	        ||d¬«      }t        |«       |j                  ||| ¬«      |k(  sJ ‚t        j                  | «      }t        j                  | «      }|j                  ||| ¬«      D �]E  \  }}	t        j                  ||   «      }
t        j                  ||	   «      }t        j                  t        j                  ||   |«      «      rJ ‚t        j                  t        j                  ||	   |
«      «      rJ ‚||   j                  ||	   j                  z   |j                  k(  sJ ‚t        t        j                  ||	«      g «       t        t        |«      t!        |t        |«      z  «      z
  «      dk  sJ ‚t        t        |
«      t!        d|z
  t        |«      z  «      z
  «      dk  r�ŒFJ ‚ �Œã y )Nr\   gUUUUUUÕ?r   rg  rR   r;   rŸ  )Útest_groupsrf   rÐ   rÁ   r   rq   rj   r�  rn   rU   ÚanyÚisinr–   r-   r
  ÚabsÚround)Úgroups_irV   rW   rw   r9   ÚsloÚl_uniqueÚlr�   r�   Úl_train_uniqueÚl_test_uniques               rD   Útest_group_shuffle_splitrÑ  ñ  s¯  € Üó !ˆÜ—‘œ˜H›Ó&Ð&ˆˆAØˆØˆ	Ü °IÈAÔNˆô 	ˆSŒ	ð ×Ñ  1¨XÐÓ6¸(ÒBÐBÐBä—9‘9˜XÓ&ˆÜ�J‰J�xÓ ˆàŸ9™9 Q¨°(˜9Ó;ó 	‰KˆE�4äŸY™Y q¨¡xÓ0ˆNÜŸI™I a¨¡gÓ.ˆMÜ—v‘vœbŸg™g a¨¡h°Ó>Ô?Ð?Ð?Ü—v‘vœbŸg™g a¨¡g¨~Ó>Ô?Ð?Ð?ð �U‘8—=‘= 1 T¡7§<¡<Ñ/°1·6±6Ò9Ð9Ð9ô œrŸ~™~¨e°TÓ:¸BÔ?ô ”s˜=Ó)¬E°)¼cÀ(»mÑ2KÓ,LÑLÓMÐQRÒRÐRÐRä”C˜Ó'¬%°°y±ÄCÈÃMÑ0QÓ*RÑRÓSÐWXÔXðØXò#	ñ!rY   c            
      óö  — t        «       } t        d¬«      }t        d¬«      }t        | «      dk(  sJ ‚t        |«      dk(  sJ ‚t        |«      dk(  sJ ‚t        t        d¬«      «      dk(  sJ ‚t        | df|df|dff«      D �]A  \  }\  }}t        t        «      D �]%  \  }}t        t        j                  |«      «      }|dk(  r|n
||dz
  z  dz  }	t        j                  t        |«      «      x}
}|j                  |
||¬	«      |	k(  sJ ‚t        j                  |«      }|j                  |
||¬	«      D ]Š  \  }}t        t        j                  ||   ||   «      j                  «       g «       t        |«      t        |«      z   t        |«      k(  sJ ‚t        j                  ||   «      j                  d
   rŒ…J |«       ‚ �Œ( �ŒD | j                  d d g d¢«      dk(  sJ ‚| j                  g d¢¬	«      dk(  sJ ‚|j                  d d t        j                   d«      «      dk(  sJ ‚|j                  t        j                   d«      ¬	«      dk(  sJ ‚t#        j$                  t&        «      5  | j                  d d dt        j(                  dg«       d d d «       t#        j$                  t&        «      5  |j                  d d dt        j*                  dg«       d d d «       d}t#        j$                  t&        |¬«      5  | j                  d d d «       d d d «       t#        j$                  t&        |¬«      5  |j                  d d d «       d d d «       y # 1 sw Y   ŒÀxY w# 1 sw Y   Œ†xY w# 1 sw Y   ŒYxY w# 1 sw Y   y xY w)Nr;   r<   r4   ra   zLeavePGroupsOut(n_groups=1)rb   rH   zLeavePGroupsOut(n_groups=3)rR   r   )ÚaÚbÚcrÔ  rÕ  )rŸ  çš™™™™™ñ?rŸ  g333333ó?rL   r\   g        z*The 'groups' parameter should not be None.rd   )r   r   rq   rh   rÆ  rÁ   rf   r�  rÐ   rj   rn   rU   r-   r
  ÚtolistÚshaperÀ   rr   rs   rt   ÚnanÚinf)ÚlogoÚlpgo_1Úlpgo_2Újr�   Úp_groups_outrc   rË  r=   rw   rV   rW   Ú
groups_arrr�   r�   r‘   s                   rD   Útest_leave_one_p_group_outrá    sJ  € ÜÓ€DÜ aÔ(€FÜ aÔ(€Fô �‹:Ð-Ò-Ð-Ð-Ü�‹<Ð8Ò8Ð8Ð8Ü�‹<Ð8Ò8Ð8Ð8Ü”¨Ô+Ó,Ð0MÒMÐMÐMä!*¨T°1¨I¸À°{ÀVÈQÀKÐ+PÓ!Qó JÑˆÑˆB�Ü$¤[Ó1ó 	J‰KˆAˆxÜœ2Ÿ9™9 XÓ.Ó/ˆHØ#/°1Ò#4‘x¸(ÀhÐQRÁlÑ:SÐVWÑ:WˆHÜ—G‘GœC ›MÓ*Ð*ˆA�ð —?‘? 1 a°�?Ó9¸XÒEÐEÐEäŸ™ HÓ-ˆJð  "Ÿx™x¨¨1°X˜xÓ>ò J‘��tä"Ü—N‘N :¨eÑ#4°jÀÑ6FÓG×NÑNÓPÐRTôô
 ˜5“z¤C¨£IÑ-´°X³Ò>Ð>Ð>ô —y‘y ¨DÑ!1Ó2×8Ñ8¸Ó;ÐI¸\ÓIÐ;òJò	JðJð4 ×Ñ˜T 4Ò)BÓCÀqÒHÐHÐHØ×ÑÒ$8ÐÓ9¸QÒ>Ð>Ð>Ø×Ñ˜t T¬2¯9©9°Q«<Ó8¸AÒ=Ð=Ð=Ø×Ñ¤b§i¡i°£lÐÓ3°qÒ8Ð8Ð8ô 
�‰”zÓ	"ñ :Ø×Ñ˜$  s¬B¯F©F°CÐ&8Ô9÷:ä	�‰”zÓ	"ñ <Ø×Ñ˜D $¨¬b¯f©f°cÐ(:Ô;÷<ð 7€CÜ	�‰”z¨Ô	-ñ ,Ø×Ñ˜$  dÔ+÷,ä	�‰”z¨Ô	-ñ .Ø×Ñ˜D $¨Ô-÷.ð .÷:ð :ú÷<ð <ú÷,ð ,ú÷.ð .ús0   É'%MÊ-%MË7M#Ì.M/ÍMÍM Í#M,Í/M8c                  ó’  — t        j                  g d¢«      } t        j                  t        | «      «      }t        j                  | d¬«      }t	        «       j                  || ¬«      }t	        «       j                  || ¬«      }t        d¬«      j                  || ¬«      }t        d¬«      j                  || ¬«      }d|d d  ||f||ffD ]7  \  }}t        ||«      D ]#  \  \  }	}
\  }}t        |	|«       t        |
|«       Œ% Œ9 dt        d¬«      j                  ||| ¬	«      k(  sJ ‚dt	        «       j                  ||| ¬	«      k(  sJ ‚y )
N)r   r;   r4   r;   r;   r4   r   r   T)ÚcopyrR   r4   r<   r   rH   )rW   rS   )
rf   rg   rÐ   rÁ   r   rU   r   ri   r-   rj   )rS   rV   Úgroups_changingr~   Úlolo_changingÚlploÚlplo_changingÚlloÚllo_changingr�   r�   Ú
train_chanÚ	test_chans                rD   Ú$test_leave_group_out_changing_groupsrì  M  sI  € ô �X‰XÒ.Ó/€FÜ
�‰”�F“Ó€AÜ—h‘h˜v¨DÔ1€OÜÓ×#Ñ# A¨fÐ#Ó5€DÜ$Ó&×,Ñ,¨Q°vÐ,Ó>€MÜ AÔ&×,Ñ,¨Q°vÐ,Ó>€DÜ#¨QÔ/×5Ñ5°aÀÐ5ÓG€MØ€O‘AÐØ# ]Ð3°d¸MÐ5JÐKò 0Ñˆˆ\Ü69¸#¸|Ó6Lò 	0Ñ2‰MˆU�DÑ2˜J¨	Ü˜u jÔ1Ü˜t YÕ/ñ	0ð0ð ”¨Ô+×8Ñ8¸¸aÈÐ8ÓOÒOÐOÐOàÔ Ó"×/Ñ/°°Q¸vÐ/ÓFÒFÐFÑFrY   c                  óD  — t        j                  g d¢«      } t        j                  t        | «      «      }t	        t        «       j                  || ¬«      «      }g d¢ddgfg d¢ddgfg d	¢d
dgfg}|D ]+  \  }}t        |«      \  }}t        ||«       t        ||«       Œ- y )N)r4   r4   r   r   r;   r;   rR   )r   r;   rL   r[   r4   rH   r¯  rL   r[   ©r4   rH   rL   r[   r   r;   )	rf   rg   rÐ   rÁ   Úiterr   rU   r½   r-   )rS   rV   rÔ   Úexpected_indicesÚexpected_trainÚexpected_testr�   r�   s           rD   Ú%test_leave_group_out_order_dependenceró  c  s¨   € ô �X‰XÒ(Ó)€FÜ
�‰”�F“Ó€AäÔ"Ó$×*Ñ*¨1°VÐ*Ó<Ó=€Fò 
˜˜1�vÐÚ	˜˜1�vÐÚ	˜˜1�vÐðÐð *:ò 0Ñ%ˆ˜Ü˜6“l‰ˆˆtÜ˜5 .Ô1Ü˜4 Õ/ñ0rY   c                  ó8  — t        j                  d«      x} x}}t        j                  d«      }t	        j
                  t        |¬«      5  t        t        «       j                  | ||«      «       d d d «       t        j                  d«      x} x}}t        j                  d|› d�«      }t	        j
                  t        |¬«      5  t        t        «       j                  | ||«      «       d d d «       t        j                  d«      x} x}}t        j                  d|› d�«      }t	        j
                  t        |¬«      5  t        t        d	¬
«      j                  | ||«      «       d d d «       t        j                  d	«      x} x}}t        j                  d|› d�«      }t	        j
                  t        |¬«      5  t        t        d	¬
«      j                  | ||«      «       d d d «       y # 1 sw Y   �Œ}xY w# 1 sw Y   �ŒxY w# 1 sw Y   Œ xY w# 1 sw Y   y xY w)Nr   zFound array with 0 sample(s)rd   r;   z:The groups parameter contains fewer than 2 unique groups (z'). LeaveOneGroupOut expects at least 2.z^The groups parameter contains fewer than (or equal to) n_groups (3) numbers of unique groups (zR). LeavePGroupsOut expects that at least n_groups + 1 (4) unique groups be presentrH   r<   )rf   rÐ   ÚreÚescaperr   rs   rt   r½   r   rU   r   rÀ   )rV   rW   rS   r‘   s       rD   Ú:test_leave_one_p_group_out_error_on_fewer_number_of_groupsr÷  w  sÜ  € Ü—W‘W˜Q“ZÐ€AÐˆˆFÜ
�)‰)Ð2Ó
3€CÜ	�‰”z¨Ô	-ñ 5ÜÔÓ×%Ñ% a¨¨FÓ3Ô4÷5ô —W‘W˜Q“ZÐ€AÐˆˆFÜ
�)‰)Ø
DÀVÀHð M0ð 	0ó€Cô 
�‰”z¨Ô	-ñ 5ÜÔÓ×%Ñ% a¨¨FÓ3Ô4÷5ô —W‘W˜Q“ZÐ€AÐˆˆFÜ
�)‰)ð	)Ø)/¨ð 1ð	ó€Cô 
�‰”z¨Ô	-ñ >ÜŒ_ aÔ(×.Ñ.¨q°!°VÓ<Ô=÷>ô —Y‘Y˜q“\Ð!€AÐ!ˆˆFÜ
�)‰)ð	)Ø)/¨ð 1ð	ó€Cô 
�‰”z¨Ô	-ñ >ÜŒ_ aÔ(×.Ñ.¨q°!°VÓ<Ô=÷>ð >÷95ñ 5ú÷5ñ 5ú÷>ð >ú÷>ð >ús0   Á
%G*Ã%G7Ä>'HÆ:'HÇ*G4Ç7HÈHÈHc                  ó  — t         t        fD ]X  } t        j                  t        «      5   | d¬«       d d d «       t        j                  t        «      5   | d¬«       d d d «       ŒZ y # 1 sw Y   Œ7xY w# 1 sw Y   ŒqxY w)Nr   )Ú	n_repeatsr¹   )r   r   rr   rs   rt   r;  s    rD   Útest_repeated_cv_value_errorsrú  š  sm   € äÔ5Ð6ò ˆÜ�]‰]œ:Ó&ñ 	Ù˜�O÷	ä�]‰]œ:Ó&ñ 	Ù˜Õ÷	ð 	ñ÷	ð 	ú÷	ð 	ús   ©
A)Á
A5Á)A2	Á5A>	Ú
RepeatedCVc                 óŒ   — d\  }} | ||¬«      }dj                  |j                  j                  «      }|t        |«      k(  sJ ‚y )N)r4   r\   ©rw   rù  z.{}(n_repeats=6, n_splits=2, random_state=None))r    r@   rA   rq   )rû  rw   rù  Úrepeated_cvÚrepeated_cv_reprs        rD   Útest_repeated_cv_reprr   £  sM   € àÑ€HˆiÙ h¸)ÔD€KØG×NÑNØ×Ñ×&Ñ&óÐð œt KÓ0Ò0Ð0Ñ0rY   c                  óJ  — ddgddgddgddgd	d
gg} d}t        dd|¬«      }t        d«      D ]è  }|j                  | «      }t        |«      \  }}t	        |ddg«       t	        |g d¢«       t        |«      \  }}t	        |g d¢«       t	        |ddg«       t        |«      \  }}t	        |ddg«       t	        |g d¢«       t        |«      \  }}t	        |g d¢«       t	        |ddg«       t        j                  t        «      5  t        |«       d d d «       Œê y # 1 sw Y   ŒõxY w)Nr;   r4   rH   rL   r[   r\   r]   r^   r¶   rF   i{ic©rw   rù  r`   )r   r;   rH   r   )r4   rH   rL   )r   r­   rU   r½   r-   rr   rs   ÚStopIteration)rV   r`   Úrkfrþ   rÔ   r�   r�   s          rD   Ú&test_repeated_kfold_determinstic_splitr  ­  s  € Ø
ˆQˆ�!�Q�˜!˜Q˜ ! Q ¨!¨R¨Ð1€AØ€LÜ
 ¨a¸lÔ
K€Cô �1‹Xò ˆØ—‘˜1“ˆÜ˜6“l‰ˆˆtÜ˜5 1 a &Ô)Ü˜4¢Ô+ä˜6“l‰ˆˆtÜ˜5¢)Ô,Ü˜4 ! Q Ô(ä˜6“l‰ˆˆtÜ˜5 1 a &Ô)Ü˜4¢Ô+ä˜6“l‰ˆˆtÜ˜5¢)Ô,Ü˜4 ! Q Ô(ä�]‰]œ=Ó)ñ 	Ü�ŒL÷	ð 	ñ%÷$	ð 	ús   ÄDÄD"	c                  óZ   — d} d}t        | |¬«      }| |z  }||j                  «       k(  sJ ‚y ©NrH   rL   rý  )r   rj   )rw   rù  r  r±   s       rD   Ú$test_get_n_splits_for_repeated_kfoldr  Ê  s:   € Ø€HØ€IÜ
 °YÔ
?€CØ  9Ñ,ÐØ × 0Ñ 0Ó 2Ò2Ð2Ñ2rY   c                  óZ   — d} d}t        | |¬«      }| |z  }||j                  «       k(  sJ ‚y r  )r   rj   )rw   rù  Úrskfr±   s       rD   Ú/test_get_n_splits_for_repeated_stratified_kfoldr  Ò  s:   € Ø€HØ€IÜ"¨HÀ	ÔJ€DØ  9Ñ,ÐØ × 1Ñ 1Ó 3Ò3Ð3Ñ3rY   c                  óT  — ddgddgddgddgd	d
gg} g d¢}d}t        dd|¬«      }t        d«      D ]é  }|j                  | |«      }t        |«      \  }}t	        |ddg«       t	        |g d¢«       t        |«      \  }}t	        |g d¢«       t	        |ddg«       t        |«      \  }}t	        |ddg«       t	        |g d¢«       t        |«      \  }}t	        |g d¢«       t	        |ddg«       t        j                  t        «      5  t        |«       d d d «       Œë y # 1 sw Y   ŒöxY w)Nr;   r4   rH   rL   r[   r\   r]   r^   r¶   rF   )r;   r;   r;   r   r   iq²ésr  )r   r4   rH   )r   r;   rL   )r   r­   rU   r½   r-   rr   rs   r  )rV   rW   r`   r
  rþ   rÔ   r�   r�   s           rD   Ú1test_repeated_stratified_kfold_determinstic_splitr  Ú  s$  € Ø
ˆQˆ�!�Q�˜!˜Q˜ ! Q ¨!¨R¨Ð1€AÚ€AØ€LÜ"¨A¸ÈÔV€Dô �1‹Xò ˆØ—‘˜A˜qÓ!ˆÜ˜6“l‰ˆˆtÜ˜5 1 a &Ô)Ü˜4¢Ô+ä˜6“l‰ˆˆtÜ˜5¢)Ô,Ü˜4 ! Q Ô(ä˜6“l‰ˆˆtÜ˜5 1 a &Ô)Ü˜4¢Ô+ä˜6“l‰ˆˆtÜ˜5¢)Ô,Ü˜4 ! Q Ô(ä�]‰]œ=Ó)ñ 	Ü�ŒL÷	ð 	ñ%÷$	ð 	ús   ÄDÄD'	c            	      óÒ  — t        j                  t        t        «       t        j                  t        t        t	        d«      d¬«       t        j                  t        t        t	        d«      dd¬«       t        j                  t        t        t	        d«      t        j                  d«      t        j                  d«      ¬«       t        j                  t        t        t	        d«      d¬«       t        j                  t        t        t	        d«      dd	¬«       t        j                  t        t        t	        d«      d¬
«       t        j                  t        t        t	        d«      t	        d«      «       t        j                  t        t        t	        d«      dd¬«       t        j                  t        d¬«      5  t        t	        d«      dd¬«       d d d «       y # 1 sw Y   y xY w)NrH   rÖ  rw  rQ  r�  Ú
wrong_typer8   r4   rL   )Úsome_argumenté*   rF   FT)r¼   Ústratifyzrtrain_size=11 should be either positive and smaller than the number of samples 10 or a float in the \(0, 1\) rangerd   rù   r;   )rx  r9   )rr   rs   rt   r   r­   rf   Úfloat32rÅ   © rY   rD   Útest_train_test_split_errorsr  ø  s/  € Ü
‡M�M”*Ô.Ô/ä
‡M�M”*Ô.´°a³ÀSÕIä
‡M�M”*Ô.´°a³ÀCÐTWÕXÜ
‡M�MÜÜÜˆa‹Ü—*‘*˜S“/Ü—:‘:˜c“?õô ‡M�M”*Ô.´°a³ÀLÕQÜ
‡M�M”*Ô.´°a³ÀAÐRSÕTÜ
‡M�M”)Ô-¬u°Q«xÀsÕKÜ
‡M�M”*Ô.´°a³¼%À»)ÔDÜ
‡M�M”*Ô.´°b³	À5ÐSWÕXä	�‰Üð'ô
ñ @ô 	œ˜r›¨r¸QÕ?÷@÷ @ñ @ús   Æ<GÇG&))Nr]   rH   rs  rt  c                 ól   — t        t        | ¬«      \  }}t        |«      |k(  sJ ‚t        |«      |k(  sJ ‚y )Nrw  )r   rV   rÁ   )rx  ry  rz  r{  r|  s        rD   Ú'test_train_test_split_default_test_sizer    s8   € ô '¤q°ZÔ@�O€GˆVäˆw‹<˜9Ò$Ð$Ð$Üˆv‹;˜(Ò"Ð"Ñ"rY   z#array_namespace, device, dtype_namezshuffle,stratify)TNrL   )FNc                 óØ  — t        ||«      }t        j                  d«      j                  d«      }t        j                  d«      }|j	                  |«      }|j                  ||¬«      }	|j	                  |«      }
|j                  |
|¬«      }t        ||d| |¬«      \  }}}}t        d¬«      5  |�|j                  |«      }n|}t        |	|| |d¬	«      \  }}}}t        |«      d   t        |	«      d   k(  sJ ‚t        |«      d   t        |	«      d   k(  sJ ‚t        |«      d   t        |«      d   k(  sJ ‚t        |«      d   t        |«      d   k(  sJ ‚	 d d d «       t        «      t        |	«      k(  sJ ‚t        «      t        |«      k(  sJ ‚t        «      t        |	«      k(  sJ ‚t        «      t        |«      k(  sJ ‚|j                  |	j                  k(  sJ ‚|j                  |j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚|j                  |j                  k(  sJ ‚t        t        ||¬
«      |«       t        t        ||¬
«      |«       y # 1 sw Y   �Œ	xY w)Nrï   ©rF   rF   rF   r(   r   )r`   r¼   r  T)Úarray_api_dispatch)r¼   r  r`   )Úxp)r/   rf   rÀ   rŸ   Úastypern   r   r	   r&   Úarray_api_devicero   r+   r%   )r¼   r  Úarray_namespacer)   Ú
dtype_namer  rV   rW   ÚX_npÚX_xpÚy_npÚy_xpÚ
X_train_npÚ	X_test_npÚ
y_train_npÚ	y_test_npÚstratify_xpÚ
X_train_xpÚ	X_test_xpÚ
y_train_xpÚ	y_test_xps                        rD   Útest_array_api_train_test_splitr-     se  € ô 
˜o¨vÓ	6€Bä
�	‰	�#‹×Ñ˜xÓ(€AÜ
�	‰	�"‹€Aà�8‰8�JÓ€DØ�:‰:�d 6ˆ:Ó*€Dà�8‰8�JÓ€DØ�:‰:�d 6ˆ:Ó*€Dä3CØˆa˜a¨¸8ô4Ñ0€J�	˜: yô 
¨4Ô	0ñ EØÐØŸ*™* XÓ.‰Kà"ˆKÜ7GØ�$ °+ÈAô8
Ñ4ˆ
�I˜z¨9ô ˜ZÓ(¨Ñ+¬}¸TÓ/BÀ1Ñ/EÒEÐEÐEÜ˜YÓ'¨Ñ*¬m¸DÓ.AÀ!Ñ.DÒDÐDÐDÜ˜ZÓ(¨Ñ+¬}¸TÓ/BÀ1Ñ/EÒEÐEÐEÜ˜YÓ'¨Ñ*¬m¸DÓ.AÀ!Ñ.DÒDÐDÑD÷Eô" ˜JÓ'Ô+;¸DÓ+AÒAÐAÐAÜ˜JÓ'Ô+;¸DÓ+AÒAÐAÐAÜ˜IÓ&Ô*:¸4Ó*@Ò@Ð@Ð@Ü˜IÓ&Ô*:¸4Ó*@Ò@Ð@Ð@à×Ñ˜tŸz™zÒ)Ð)Ð)Ø×Ñ˜tŸz™zÒ)Ð)Ð)Ø�?‰?˜dŸj™jÒ(Ð(Ð(Ø�?‰?˜dŸj™jÒ(Ð(Ð(äÜ˜*¨Ô,Øôô Ü˜)¨Ô+Øõ÷?Eñ Eús   Â/B(IÉI)Úcoo_containerc                 ó  — t        j                  d«      j                  d«      } | |«      }t        j                  d«      }t        ||d d¬«      }|\  }}}}t	        |«      t	        |«      k(  sJ ‚t        |d d …df   |dz  «       t        |d d …df   |dz  «       t        |||j                  «       «      }|\  }}}	}
}}t        |t        «      sJ ‚t        |t        «      sJ ‚t        j                  d«      j                  ddd	d
«      }t        j                  d«      j                  ddd«      }t        ||«      }|d   j                  dk(  sJ ‚|d   j                  dk(  sJ ‚|d
   j                  dk(  sJ ‚|d	   j                  dk(  sJ ‚t        j                  g d¢«      }t        g d¢g d¢«      D ]  \  }}t        |||d¬«      \  }}t	        |«      |k(  sJ ‚t	        |«      t	        |«      z   t	        |«      k(  sJ ‚t        j                  |dk(  «      t        j                  |d
k(  «      k(  rŒJ ‚ t        j                  d«      }dD ]/  }t        |d|¬«      \  }}t        |ddg«       t        |g d¢«       Œ1 y )Nrï   r  rF   r7   r�  r   r  r[   rH   r4   i  r]   rù   )r]   r[   rH   r4   r;   )rH   r[   rH   r4   )r]   r]   rù   )rH   r]   rù   )r;   r;   r;   r;   r4   r4   r4   r4   )r4   rL   rM  r7   rL  )r4   rL   r4   rL   r\   )r9   r  r`   )r4   rS  F)r¼   r9   r^   r¶   )r   r;   r4   rH   rL   r[   r\   r]   )rf   rÀ   rŸ   r   rÁ   r-   r×  Ú
isinstancerm   rØ  rg   ri   rý   )r.  rV   ÚX_srW   rU   r{  r|  r³  r´  Ú	X_s_trainÚX_s_testÚX_4dÚy_3dr9   Úexp_test_sizer�   r�   s                    rD   Útest_train_test_splitr7  b  se  € ä
�	‰	�#‹×Ñ˜xÓ(€AÙ
˜Ó
€CÜ
�	‰	�"‹€Aô ˜Q ¨T¸cÔB€EØ',Ñ$€GˆV�W˜fÜˆv‹;œ#˜g›,Ò&Ð&Ð&ä�wšq !˜t‘} g°¡lÔ3Ü�vša ˜d‘| V¨b¡[Ô1ô ˜Q  Q§X¡X£ZÓ0€EØ<AÑ9€GˆV�Y ¨'°6Ü�gœtÔ$Ð$Ð$Ü�fœdÔ#Ð#Ð#ô �9‰9�^Ó$×,Ñ,¨R°°A°qÓ9€DÜ�9‰9�[Ó!×)Ñ)¨"¨a°Ó4€DÜ˜T 4Ó(€EØ�‰8�>‰>˜\Ò)Ð)Ð)Ø�‰8�>‰>˜\Ò)Ð)Ð)Ø�‰8�>‰>˜ZÒ'Ð'Ð'Ø�‰8�>‰>˜ZÒ'Ð'Ð'ô 	�‰Ò)Ó*€AÜ$'Ò(?ÂÓ$Qò 8Ñ ˆ	�=Ü&Ø˜¨Q¸Qô
‰ˆˆtô �4‹y˜MÒ)Ð)Ð)Ü�4‹yœ3˜u›:Ñ%¬¨Q«Ò/Ð/Ð/ä�v‰v�e˜q‘jÓ!¤R§V¡V¨E°Q©JÓ%7Ó7Ð7Ð7ð8ô 	�	‰	�"‹€AØò <ˆ	Ü& q°%À9ÔM‰ˆˆtÜ˜4 ! Q Ô(Ü˜5Ò":Õ;ñ<rY   c                  óæ   — d} t        j                  | «      }|d| z  kD  }t        |||d¬«      }|\  }}}}|j                  |j                  z   | k(  sJ ‚|j                  |j                  z   | k(  sJ ‚y)z�Check for integer overflow on 32-bit platforms.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20774
    i † ç®Gáz®ï?rM  )r  rx  N)rf   rÀ   r   r–   )Ú
big_numberrV   rW   rU   r{  r|  r³  r´  s           rD   Ú$test_train_test_split_32bit_overflowr;  ’  s|   € ð €Jô 	�	‰	�*Ó€AØ	ˆT�JÑÑ€Aä˜Q ¨A¸$Ô?€EØ',Ñ$€GˆV�W˜fà�<‰<˜&Ÿ+™+Ñ%¨Ò3Ð3Ð3Ø�<‰<˜&Ÿ+™+Ñ%¨Ò3Ð3Ñ3rY   c                  óÚ   — t         g} 	 ddlm} | j                  |«       | D ]8  } |t
        «      }t        |«      \  }}t        ||«      sJ ‚t        ||«      rŒ8J ‚ y # t        $ r Y ŒIw xY w)Nr   )Ú	DataFrame)r*   Úpandasr=  ré   ÚImportErrorrV   r   r0  )Útypesr=  ÚInputFeatureTypeÚX_dfr{  r|  s         rD   Útest_train_test_split_pandasrC  ©  s}   € äˆO€EðÝ$à�‰�YÔð "ò 4Ðá¤Ó"ˆÜ*¨4Ó0‰ˆ�Ü˜'Ð#3Ô4Ð4Ð4Ü˜&Ð"2Õ3Ð3Ð3ñ4øô ò Ùðús   ‰A Á	A*Á)A*Úsparse_containerc                 óè   — t        j                  d«      j                  d«      } | |«      }t        |«      \  }}t	        |«      r|j
                  dk(  sJ ‚t	        |«      r|j
                  dk(  sJ ‚y )Nrï   r  Úcsr)rf   rÀ   rŸ   r   r   r    )rD  rV   r1  r{  r|  s        rD   Útest_train_test_split_sparserG  º  si   € ô 	�	‰	�#‹×Ñ˜xÓ(€AÙ
˜1Ó
€CÜ& sÓ+�O€GˆVÜ�GÔ §¡°5Ò!8Ð8Ð8Ü�FÔ §¡°Ò 6Ð6Ð6Ð 6rY   c                  ó¢   — t        t        «      } t        | «      \  }}t        |t         «      sJ ‚t        |t         «      sJ ‚t        | «      \  }}y r?   )r*   rV   r   r0  )rB  r{  r|  ÚX_train_arrÚ
X_test_arrs        rD   Ú!test_train_test_split_mock_pandasrK  Ç  sI   € äœÓ€DÜ& tÓ,�O€GˆVÜ�gœ}Ô-Ð-Ð-Ü�fœmÔ,Ð,Ð,Ü.¨tÓ4Ñ€K‘rY   c                  ó€  — t        j                  d«      } dgdz  dgdz  z   }t        j                  t        j                  d«      t        j                  d«      f«      }|j	                  «       }dD ]Ê  }t        | ||r|nd d¬«      \  }}}}t        | ||r|nd d¬«      \  }	}
}}t        | ||r|nd d¬«      \  }}}}t         j                  j                  ||	«       t         j                  j                  ||«       t         j                  j                  ||«       t         j                  j                  ||«       ŒÌ y )	Nr]   rN   rL   r×   rH   r  r   )r  r`   )rf   rÐ   Úhstackr	  r×  r   rk   rl   )rV   rÙ   rÚ   Úy3r  ÚX_train1ÚX_test1Úy_train1Úy_test1ÚX_train2ÚX_test2Úy_train2Úy_test2ÚX_train3ÚX_test3Úy_train3Úy_test3s                    rD   Ú test_train_test_split_list_inputr[  Ð  s  € ä
�‰�‹
€AØ
ˆ�‰�c�U˜Q‘YÑ	€BÜ	�‰”B—G‘G˜A“J¤§¡¨£Ð,Ó	-€BØ	�‰‹€Bà!ò 2ˆÜ/?Øˆr¡(™B°À1ô0
Ñ,ˆ�'˜8 Wô 0@Øˆr¡(™B°À1ô0
Ñ,ˆ�'˜8 Wô 0@Øˆr¡(™B°À1ô0
Ñ,ˆ�'˜8 Wô 	�
‰
×Ñ ¨(Ô3Ü
�
‰
×Ñ ¨(Ô3Ü
�
‰
×Ñ ¨Ô1Ü
�
‰
×Ñ ¨Õ1ñ2rY   ztest_size, train_size))rº   N)rŸ  N)rà   gffffffî?)Ny              ð?)rù   N)rF   N)r^   rH   c                 ó²   — t        j                  t        «      5  t        t	        | |¬«      j                  t        «      «       d d d «       y # 1 sw Y   y xY w)Nr�  )rr   rs   rt   r½   r   rU   rV   r�  s     rD   Útest_shufflesplit_errorsr]  è  sC   € ô
 
�‰”zÓ	"ñ PÜŒ\ I¸*ÔE×KÑKÌAÓNÔO÷P÷ Pñ Pús   š*AÁAc            	      óä   — t        d¬«      } t        | j                  t        «      D ��cg c]  \  }}|‘Œ	 c}}| j                  t        «      D ��cg c]  \  }}|‘Œ	 c}}«       y c c}}w c c}}w )Né   r_   )r   r-   rU   rV   )r€   rÓ  rÔ  s      rD   Útest_shufflesplit_reproducibler`  ñ  sL   € ô 
 2Ô	&€BÜ b§h¡h¬q£k×2™d˜a šÓ2À2Ç8Á8ÌAÃ;×4O¹4¸1¸a²QÓ4OÕPùÓ2ùÓ4Os   ªA&
ÁA,c            	      óD  — t        dd¬«      } t        j                  d«      }dgdz  dgdz  z   }t        j                  t        j                  d«      t        j                  d«      f«      }|j                  «       }t        j                  j                  t        | j                  ||«      «      t        | j                  ||«      «      «       t        j                  j                  t        | j                  ||«      «      t        | j                  ||«      «      «       y )	Nr4   r  rg  r]   rN   rL   r×   rH   )
r   rf   rÐ   rM  r	  r×  rk   rl   rm   rU   )r…  rV   rÙ   rÚ   rN  s        rD   Ú&test_stratifiedshufflesplit_list_inputrb  ø  sÇ   € ä
 ¨1¸2Ô
>€CÜ
�‰�‹
€AØ
ˆ�‰�c�U˜Q‘YÑ	€BÜ	�‰”B—G‘G˜A“J¤§¡¨£Ð,Ó	-€BØ	�‰‹€Bä‡J�J×ÑœD §¡¨1¨bÓ!1Ó2´D¸¿¹À1ÀbÓ9IÓ4JÔKÜ‡J�J×ÑœD §¡¨1¨bÓ!1Ó2´D¸¿¹À1ÀbÓ9IÓ4JÕKrY   c                  ó
  — t        j                  dt         j                  ¬«      j                  dd«      } t         j                  | dd d …f<   t        j
                  ddg| j                  d   dz  «      }t        | |dd	¬
«       y )NéÈ   ©ro   rF   r—   r4   r   r;   rS  r  rg  )rf   rÀ   Úfloat64rŸ   rÙ  ÚrepeatrØ  r   r‚  s     rD   Ú test_train_test_split_allow_nansrh    sb   € ä
�	‰	�#œRŸZ™ZÔ(×0Ñ0°°RÓ8€AÜ�f‰f€A€aŠ€d�GÜ
�	‰	�1�a�&˜!Ÿ'™' !™* q™.Ó)€AÜ�Q˜ S°rÖ:rY   c            	      ó‚  — t        j                  d«      } t        dd¬«      }t         j                  j	                  t        t        d«      j                  | «      «      t        |j                  | «      «      «       t        j                  g d¢«      }t        d|d¬«      }t         j                  j	                  t        t        d«      j                  | |«      «      t        |j                  | |«      «      «       t        j                  g d¢«      }t        d|d¬«      }t         j                  j	                  t        t        d«      j                  | |«      «      t        |j                  | |«      «      «       |j                  dd	«      }t        d|d¬«      }t         j                  j	                  t        t        d«      j                  | |«      «      t        |j                  | |«      «      «       t        j                  t        t        d«      j                  | |«      «      d
   t        t        d«      j                  | |«      «      d
   k(  «      rJ ‚t        j                  d«      } t        j                  g d¢g d¢g d¢g d¢g d¢g«      }t        d|d¬«      }t         j                  j	                  t        t        d«      j                  | «      «      t        |j                  | «      «      «       t        j                  d	dgd
dgd
d
gdd	gdd
gg«      }t        d|d¬«      }t         j                  j	                  t        t        d«      j                  | «      «      t        |j                  | «      «      «       t        j                  t        «      5  t        d¬«       d d d «       y # 1 sw Y   y xY w)Nr¶   rH   F)Ú
classifier)	r   r;   r   r;   r   r   r;   r;   r;   T)	r   r;   r   r;   r4   r;   r4   r   r4   r—   r;   r   r[   )r   r   r   r   )r   r;   r;   r   )r   r   r   r;   )r;   r;   r   r;   )r   r   r;   r   r4   r~   r;  )rf   rÐ   r   rk   rl   rm   r   rU   rg   r   rŸ   Úallr½   rr   rs   rt   )rV   r�   Úy_binaryÚy_multiclassÚy_multiclass_2dr¤   Úy_multioutputs          rD   Útest_check_cvrp    sÆ  € Ü
�‰�‹
€AÜ	�! Ô	&€Bô ‡J�J×ÑœD¤ q£§¡°Ó!2Ó3´T¸"¿(¹(À1»+Ó5FÔGä�x‰xÒ3Ó4€HÜ	�!�X¨$Ô	/€BÜ‡J�J×ÑÜŒ_˜QÓ×%Ñ% a¨Ó2Ó3´T¸"¿(¹(À1ÀhÓ:OÓ5Pôô —8‘8Ò7Ó8€LÜ	�!�\¨dÔ	3€BÜ‡J�J×ÑÜŒ_˜QÓ×%Ñ% a¨Ó6Ó7¼¸b¿h¹hÀqÈ,Ó>WÓ9Xôð #×*Ñ*¨2¨qÓ1€OÜ	�!�_°Ô	6€BÜ‡J�J×ÑÜŒ_˜QÓ×%Ñ% a¨Ó9Ó:ÜˆR�X‰X�a˜Ó)Ó*ôô
 �v‰vÜŒ_˜QÓ×%Ñ% a¨Ó9Ó:¸1Ñ=Ü”�a“—‘˜q /Ó2Ó3°AÑ6ñ	7ôð ð ô
 	�‰�‹
€AÜ—8‘8Ú	’|¢\²<ÂÐNó€Lô 
�!�\¨dÔ	3€BÜ‡J�J×ÑœD¤ q£§¡°Ó!2Ó3´T¸"¿(¹(À1»+Ó5FÔGä—H‘H˜q !˜f q¨! f¨q°!¨f°q¸!°f¸qÀ!¸fÐEÓF€MÜ	�!�]¨tÔ	4€BÜ‡J�J×ÑœD¤ q£§¡°Ó!2Ó3´T¸"¿(¹(À1»+Ó5FÔGä	�‰”zÓ	"ñ Ü�FÕ÷÷ ñ ús   ÎN5Î5N>c            	      óD  — t        «       j                  t        t        «      } t	        | «      }t
        j                  j                  t        |j                  t        t        «      «      t        |j                  t        t        «      «      «       t        dd¬«      j                  t        t        «      }t	        |«      }t
        j                  j                  t        |j                  t        t        «      «      t        |j                  t        t        «      «      «       	 d}t
        j                  j                  t        |j                  t        t        «      «      t        |j                  t        t        «      «      «       |rJ d«       ‚y # t        $ r d}Y Œw xY w)NTr   r  FzVIf the splits are randomized, successive calls to split should yield different results)
r   rU   rV   rW   r   rf   rk   rl   rm   r  )Úkf_iterÚkf_iter_wrappedÚkf_randomized_iterÚkf_randomized_iter_wrappedÚsplits_are_equals        rD   Útest_cv_iterable_wrapperrw  :  s;  € Ü‹g�m‰mœAœqÓ!€GÜ˜wÓ'€Oô ‡J�J×ÑÜˆ_×"Ñ"¤1¤aÓ(Ó)¬4°×0EÑ0EÄaÌÓ0KÓ+Lôô
  t¸!Ô<×BÑBÄ1ÄaÓHÐÜ!)Ð*<Ó!=Ðä‡J�J×ÑÜÐ'×-Ñ-¬a´Ó3Ó4ÜÐ'×-Ñ-¬a´Ó3Ó4ôð
!ØÐÜ
�
‰
×ÑÜ�×&Ñ&¤q¬!Ó,Ó-ÜÐ+×1Ñ1´!´QÓ7Ó8ô	
ñ  ð ð	CóÐÐøô ò !Ø Òð!ús   Ä#A$F ÆFÆFc           	      óJ	  — t         j                  j                  |«      }d}d}d}t        j                  |«      x}}d|z  }	|j	                  d||«      }
||z  }t        t        j                  |
«      «       t        j                  |«      }|sd n|} | |||¬«      }t        |j                  |||
«      «      D ]  \  }\  }}|||<   Œ t        |«      t        |
«      k(  sJ ‚t        j                  |«      D ]!  }|	t        t        ||k(  «      |z
  «      k\  rŒ!J ‚ t        j                  |
«      D ]+  }t        t        j                  ||
|k(     «      «      dk(  rŒ+J ‚ t        j                  |
t        ¬«      }
|j                  |||
«      D ]/  \  }}t        t        j                  |
|   |
|   «      «      dk(  rŒ/J ‚ t        j                  g d	¢«      }
t        t        j                  |
«      «      }t        |
«      }d}d|z  }	||z  }t        j                  |«      x}}t        j                  |«      }t        |j                  |||
«      «      D ]  \  }\  }}|||<   Œ t        |«      t        |
«      k(  sJ ‚|s9t        j                  |«      D ]!  }|	t        t        ||k(  «      |z
  «      k\  rŒ!J ‚ t!        j"                  «       5  t!        j$                  d
t&        «       t        j                  |
«      D ]+  }t        t        j                  ||
|k(     «      «      dk(  rŒ+J ‚ 	 d d d «       t        j                  |
t        ¬«      }
|j                  |||
«      D ]/  \  }}t        t        j                  |
|   |
|   «      «      dk(  rŒ/J ‚  | |||¬«      }t)        |j                  |||
j+                  «       «      «      }t-        |j                  |||
«      |«      D ]#  \  \  }}\  }}t/        ||«       t/        ||«       Œ% t        j                  g d¢«      }
t        j                  t        |
«      «      x}}t1        j2                  t4        d¬«      5  t7        t9        d¬«      j                  |||
«      «       d d d «       y # 1 sw Y   �ŒdxY w# 1 sw Y   y xY w)Nr  rß   r[   r•  r   )rw   r¼   r`   r;   re  )&ÚAlbertÚJeanÚBertrandÚMichelrz  ÚFrancisÚRobertr|  ÚRachelÚLoisÚMichelleÚBernardÚMarionÚLaurarz  r  ÚFranckÚJohnÚGaelÚAnnaÚAlixr~  rƒ  ÚDavidÚTonyÚAbelÚBeckyÚMadmoodÚCaryÚMaryÚ	AlexandrerŠ  r}  ÚBarackÚAbdoulÚRashaÚXiÚSilviar·   )r;   r;   r;   r4   r4   z%Cannot have number of splits.*greaterrd   rH   r˜   )rf   rœ   r�   rÐ   rž   rÁ   r�  r	  rh   rU   rÉ  rý   rn   Úobjectr
  rg   rÂ   rÃ   rÄ   ÚFutureWarningrm   r×  ri   r-   rr   rs   rt   r½   r   )rÝ   r¼   Úglobal_random_seedr¢   r=   ru   rw   rV   rW   Ú	tolerancerS   Úideal_n_groups_per_foldr½  r`   Úlkfrc   rþ   r�   Úgroupr�   Úlkf_copyÚcv_iterÚtrain1r*  Útrain2Útest2s                             rD   Útest_group_kfoldr£  [  s[  € ô �)‰)×
Ñ
Ð 2Ó
3€Cð €HØ€IØ€Hä�G‰G�IÓÐ€Aˆð �yÑ €IØ�[‰[˜˜H iÓ0€Fà'¨8Ñ3ÐäŒ�	‰	�&ÓÔä�H‰H�YÓ€EÙ&‘4Ð,>€LÙ
˜¨7ÀÔ
N€CÜ! #§)¡)¨A¨q°&Ó"9Ó:ò ‰ˆ‰9ˆAˆtØˆˆdŠðô ˆu‹:œ˜V›Ò$Ð$Ð$Ü�Y‰Y�uÓò KˆØœC¤ E¨Q¡J£Ð2IÑ IÓJÓJÐJÐJðKô —‘˜6Ó"ò ;ˆÜ”2—9‘9˜U 6¨U¡?Ñ3Ó4Ó5¸Ó:Ð:Ð:ð;ô �Z‰Z˜¤fÔ-€FØ—y‘y  A vÓ.ò E‰ˆˆtÜ”2—>‘> &¨¡-°¸±Ó>Ó?À1ÓDÐDÐDðEô �X‰Xò'	
ó)€FôV ”2—9‘9˜VÓ$Ó%€HÜ�F“€IØ€HØ�yÑ €IØ'¨8Ñ3Ðä�G‰G�IÓÐ€Aˆô �H‰H�YÓ€EÜ! #§)¡)¨A¨q°&Ó"9Ó:ò ‰ˆ‰9ˆAˆtØˆˆdŠðô ˆu‹:œ˜V›Ò$Ð$Ð$ÙÜ—‘˜5Ó!ò 	OˆAØ¤¤C¨°©
£OÐ6MÑ$MÓ NÓNÐNÐNð	Oô 
×	 Ñ	 Ó	"ñ ?Ü×Ñ˜h¬Ô6Ü—Y‘Y˜vÓ&ò 	?ˆEÜ”r—y‘y  v°¡Ñ!7Ó8Ó9¸QÓ>Ð>Ð>ñ	?÷?ô �Z‰Z˜¤fÔ-€FØ—y‘y  A vÓ.ò E‰ˆˆtÜ”2—>‘> &¨¡-°¸±Ó>Ó?À1ÓDÐDÐDðEñ
 ˜h°ÀlÔS€HÜ�3—9‘9˜Q  6§=¡=£?Ó3Ó4€GÜ,/°·±¸qÀ!ÀVÓ0LÈgÓ,Vò )Ñ(‰ˆ�™˜& %Ü˜6 6Ô*Ü˜5 %Õ(ð)ô
 �X‰X’oÓ&€FÜ�G‰G”C˜“KÓ Ð €AˆÜ	�‰”zÐ)PÔ	Qñ 9ÜŒZ Ô#×)Ñ)¨!¨Q°Ó7Ô8÷9ð 9÷+?ñ ?ú÷*9ð 9ús   ËARÌ&RÑ'RÒRÒR"c                  ó2  — ddgddgddgddgd	d
gddgddgg} t        j                  t        d¬«      5  t        t	        d¬«      j                  | «      «       d d d «       t	        d«      }|j                  | d d «      }t        |«      \  }}t        |ddg«       t        |ddg«       t        |«      \  }}t        |g d¢«       t        |ddg«       t	        d«      j                  | «      }t        |«      \  }}t        |g d¢«       t        |ddg«       t        |«      \  }}t        |g d¢«       t        |ddg«       t	        d«      j                  | «      }t        t        |«      «      }||j                  «       k(  sJ ‚|dk(  sJ ‚y # 1 sw Y   �Œ6xY w)Nr;   r4   rH   rL   r[   r\   r]   r^   r¶   rF   rù   rD  é   r  z$Cannot have number of folds.*greaterrd   r˜   r—   r   r¯  rÓ   ©r   r;   r4   rH   rL   )
rr   rs   rt   r½   r   rU   r-   rÁ   rm   rj   )rV   ÚtscvrÔ   r�   r�   r¤  s         rD   Útest_time_series_cvr¨  Ü  s‰  € Ø
ˆQˆ�!�Q�˜!˜Q˜ ! Q ¨!¨R¨°2°r°(¸RÀ¸HÐE€Aô 
�‰”zÐ)OÔ	Pñ 3ÜŒ_ aÔ(×.Ñ.¨qÓ1Ô2÷3ô ˜1Ó€Dð �Z‰Z˜˜#˜2˜Ó€FÜ�v“,�K€Eˆ4Ü�u˜q !˜fÔ%Ü�t˜a ˜VÔ$ä�v“,�K€Eˆ4Ü�ušlÔ+Ü�t˜a ˜VÔ$ä˜QÓ×%Ñ% aÓ(€Fä�v“,�K€Eˆ4Ü�ušiÔ(Ü�t˜a ˜VÔ$ä�v“,�K€Eˆ4Ü�ušoÔ.Ü�t˜a ˜VÔ$ô ˜QÓ×%Ñ% aÓ(€FÜœ$˜v›,Ó'€OØ˜d×/Ñ/Ó1Ò1Ð1Ð1Ø˜aÒÐÑ÷=3ñ 3ús   ³%FÆFc                 ó¾   — t        | |«      D ]N  \  \  }}\  }}t        ||«       t        |«      |k  sJ ‚t        t        |«      |z
  d«      }t        |||d  «       ŒP y )Nr   )ri   r-   rÁ   rû   )rÔ   Úcheck_splitsÚmax_train_sizer�   r�   Úcheck_trainÚ
check_testÚsuffix_starts           rD   Ú!_check_time_series_max_train_sizer¯    si   € Ü47¸ÀÓ4Mò >Ñ0‰ˆ�Ñ0˜ ZÜ˜4 Ô,Ü�;Ó >Ò1Ð1Ð1Üœ3˜u›:¨Ñ6¸Ó:ˆÜ˜;¨¨l¨mÐ(<Õ=ñ	>rY   c                  ó`  — t        j                  d«      } t        d¬«      j                  | «      }t        dd¬«      j                  | «      }t	        ||d¬«       t        dd¬«      j                  | «      }t	        ||d¬«       t        dd¬«      j                  | «      }t	        ||d¬«       y )N)r\   r;   rH   r˜   )rw   r«  )r«  r4   r[   )rf   r	  r   rU   r¯  )rV   rÔ   rª  s      rD   Útest_time_series_max_train_sizer±  	  s’   € Ü
�‰�Ó€AÜ aÔ(×.Ñ.¨qÓ1€FÜ"¨A¸aÔ@×FÑFÀqÓI€LÜ% f¨lÈ1ÕMô #¨A¸aÔ@×FÑFÀqÓI€LÜ% f¨lÈ1ÕMô #¨A¸aÔ@×FÑFÀqÓI€LÜ% f¨lÈ1ÖMrY   c                  óð  — t        j                  d«      } t        dd¬«      j                  | «      }t	        |«      \  }}t        |dg«       t        |g d¢«       t	        |«      \  }}t        |g d¢«       t        |g d¢«       t	        |«      \  }}t        |g d¢«       t        |g d	¢«       t        d
d
d¬«      j                  | «      }t	        |«      \  }}t        |g d¢«       t        |ddg«       t	        |«      \  }}t        |g d¢«       t        |ddg«       t        j                  t        d¬«      5  t        dd
¬«      j                  | «      }t	        |«       d d d «       y # 1 sw Y   y xY w)N©rF   r;   rH   )rw   r9   r   )r;   r4   rH   r¯  ©rL   r[   r\   )r   r;   r4   rH   rL   r[   r\   ©r]   r^   r¶   r4   rL   )rw   r9   r«  rî  r\   r]   )rL   r[   r\   r]   r^   r¶   zToo many splits.*with test_sizerd   r[   ©	rf   r	  r   rU   r½   r-   rr   rs   rt   ©rV   rÔ   r�   r�   s       rD   Útest_time_series_test_sizer¸    s8  € Ü
�‰�Ó€Aô  a°1Ô5×;Ñ;¸AÓ>€Fä�v“,�K€Eˆ4Ü�u˜q˜cÔ"Ü�tšYÔ'ä�v“,�K€Eˆ4Ü�ušlÔ+Ü�tšYÔ'ä�v“,�K€Eˆ4Ü�uÒ3Ô4Ü�tšYÔ'ô  a°1ÀQÔG×MÑMÈaÓP€Fä�v“,�K€Eˆ4Ü�ušlÔ+Ü�t˜a ˜VÔ$ä�v“,�K€Eˆ4Ü�ušlÔ+Ü�t˜a ˜VÔ$ô 
�‰”zÐ)JÔ	Kñ Ü ¨!°qÔ9×?Ñ?ÀÓBˆÜˆVŒ÷÷ ñ ús   Ä;(E,Å,E5c                  ó¸  — t        j                  d«      } t        dd¬«      j                  | «      }t	        |«      \  }}t        |ddg«       t        |g d¢«       t	        |«      \  }}t        |g d¢«       t        |g d¢«       t        d	dd¬
«      j                  | «      }t	        |«      \  }}t        |ddg«       t        |ddg«       t	        |«      \  }}t        |dd	g«       t        |ddg«       t	        |«      \  }}t        |ddg«       t        |ddg«       t        dddd¬«      j                  | «      }t	        |«      \  }}t        |g d¢«       t        |ddg«       t	        |«      \  }}t        |g d¢«       t        |ddg«       t        ddd	¬«      j                  | «      }t	        |«      \  }}t        |ddg«       t        |g d¢«       t	        |«      \  }}t        |g d¢«       t        |g d¢«       t        j                  t        d¬«      5  t        dd¬«      j                  | «      }t	        |«       d d d «       y # 1 sw Y   y xY w)Nr³  r4   )rw   Úgapr   r;   r´  r¦  rµ  rH   )rw   rº  r«  rL   r[   r\   r]   r^   r¶   )rw   rº  r«  r9   r¯  rî  )rw   rº  r9   zToo many splits.*and gaprd   r¶  r·  s       rD   Útest_time_series_gapr»  ;  s  € Ü
�‰�Ó€Aô  a¨QÔ/×5Ñ5°aÓ8€Fä�v“,�K€Eˆ4Ü�u˜q !˜fÔ%Ü�tšYÔ'ä�v“,�K€Eˆ4Ü�ušoÔ.Ü�tšYÔ'ô  a¨Q¸qÔA×GÑGÈÓJ€Fä�v“,�K€Eˆ4Ü�u˜q !˜fÔ%Ü�t˜a ˜VÔ$ä�v“,�K€Eˆ4Ü�u˜q !˜fÔ%Ü�t˜a ˜VÔ$ä�v“,�K€Eˆ4Ü�u˜q !˜fÔ%Ü�t˜a ˜VÔ$ô  a¨Q¸qÈAÔN×TÑTÐUVÓW€Fä�v“,�K€Eˆ4Ü�ušlÔ+Ü�t˜a ˜VÔ$ä�v“,�K€Eˆ4Ü�ušlÔ+Ü�t˜a ˜VÔ$ô  a¨Q¸!Ô<×BÑBÀ1ÓE€Fä�v“,�K€Eˆ4Ü�u˜q !˜fÔ%Ü�tšYÔ'ä�v“,�K€Eˆ4Ü�ušoÔ.Ü�tšYÔ'ô 
�‰”zÐ)CÔ	Dñ Ü ¨!°Ô3×9Ñ9¸!Ó<ˆÜˆVŒ÷÷ ñ ús   È(IÉIc            
      óž  — t         j                  j                  d«      } t        ddd¬«      \  }}| j	                  ddd«      }t        «       t        d¬«      t        «       t        d¬«      t        «       t        «       t        dd¬«      g}t        |d«      D ]3  \  }}t        t        «       d	d
dgi|d¬«      }t        |||||d|i¬«       Œ5 y )Nr   r  r4   )ru   Ú	n_classesr`   r[   r˜   rH   )rw   r`   ÚstrategyÚ
stratifiedÚmost_frequentÚraise)Ú
param_gridr�   Úerror_scorerS   )rV   rW   rS   r�   Úparams)rf   rœ   r�   r   rž   r   r   r   r   r   r   r   r   r   r   )r¢   rV   rW   rS   ÚcvsÚinner_cvÚouter_cvÚgss           rD   Útest_nested_cvrÉ  t  sÒ   € ô �)‰)×
Ñ
 Ó
"€Cä¨°qÀqÔI�D€A€qØ�[‰[˜˜A˜rÓ"€Fô 	ÓÜ Ô#Ü‹Ü˜AÔÜÓÜÓÜ¨¸Ô:ð€Cô <¸CÀÓCò 	
Ñˆ�(ÜÜÓØ" \°?Ð$CÐDØØô	
ˆô 	Ø�!�q ¨H¸hÈÐ=Oö	
ñ	
rY   c                  óF   —  G d„ d«      } t         | dd«      «      dk(  sJ ‚y )Nc                   ó   — e Zd Zdd„Zd„ Zy)ú%test_build_repr.<locals>.MockSplitterNc                 ó.   — || _         || _        || _        y r?   )rÓ  rÔ  rÕ  )ÚselfrÓ  rÔ  rÕ  s       rD   Ú__init__z.test_build_repr.<locals>.MockSplitter.__init__”  s   € ØˆDŒFØˆDŒFØˆD�FrY   c                 ó   — t        | «      S r?   )r    )rÎ  s    rD   Ú__repr__z.test_build_repr.<locals>.MockSplitter.__repr__™  s   € Ü˜tÓ$Ð$rY   )r   N)rA   Ú
__module__Ú__qualname__rÏ  rÑ  r  rY   rD   ÚMockSplitterrÌ  “  s   „ ó	ó
	%rY   rÔ  r[   r\   zMockSplitter(a=5, b=6, c=None))rq   )rÔ  s    rD   Útest_build_reprrÕ  ’  s)   € ÷%ñ %ô ‘˜Q Ó"Ó#Ð'GÒGÐGÑGrY   Ú
CVSplitterc           	      ó¶   —  | d¬«      }dggdg}}t        j                  t        d¬«      5  t        t	        |||dg¬«      «       d d d «       y # 1 sw Y   y xY w)Nr9  r8   r;   r   ú[With n_samples=1, test_size=0.99 and train_size=None, the resulting train set will be emptyrd   rR   )rr   rs   rt   r½   rX   )rÖ  r�   rV   rW   s       rD   Ú!test_shuffle_split_empty_trainsetrÙ  Ÿ  s]   € ñ 
˜dÔ	#€BØˆCˆ5�1�#€q€AÜ	�‰Üð4ô
ñ +ô 	ŒV�B˜˜1 a SÔ)Ô*÷+÷ +ñ +ús   ¬AÁAc                  ó  — dgg\  } t        j                  t        d¬«      5  t        | d¬«       d d d «       dgdgdgg} t        j                  t        d¬«      5  t        | d¬«       d d d «       y # 1 sw Y   ŒCxY w# 1 sw Y   y xY w)Nr;   rØ  rd   r9  r8   z[With n_samples=3, test_size=0.67 and train_size=None, the resulting train set will be emptygq=
×£på?)rr   rs   rt   r   rú   s    rD   Ú$test_train_test_split_empty_trainsetrÛ  ¯  s�   € ØˆCˆ5�D€QÜ	�‰Üð4ô
ñ ,ô 	˜ dÕ+÷,ð ˆˆqˆc�A�3ˆ€AÜ	�‰Üð4ô
ñ ,ô 	˜ dÕ+÷,ð ,÷,ð ,ú÷,ð ,ús   ¢A2ÁA>Á2A;Á>Bc                  ó¼   — t        «       } dggdg}}t        j                  t        d¬«      5  t	        | j                  ||«      «       d d d «       y # 1 sw Y   y xY w)Nr;   r   z+Cannot perform LeaveOneOut with n_samples=1rd   )r   rr   rs   rt   r½   rU   ©r�   rV   rW   s      rD   Ú!test_leave_one_out_empty_trainsetrÞ  Å  sN   € ä	‹€BØˆCˆ5�1�#€q€AÜ	�‰”zÐ)VÔ	Wñ ÜˆR�X‰X�a˜‹^Ô÷÷ ñ ús   ­AÁAc                  óÆ   — t        d¬«      } dgdggddg}}t        j                  t        d¬«      5  t	        | j                  ||«      «       d d d «       y # 1 sw Y   y xY w)Nr4   r5   r;   r   rH   z6p=2 must be strictly less than the number of samples=2rd   )r   rr   rs   rt   r½   rU   rÝ  s      rD   Útest_leave_p_out_empty_trainsetrà  Í  s[   € ä	�QŒ€BØˆC�!�ˆ:˜˜1�v€q€AÜ	�‰ÜÐRô
ñ ô 	ˆR�X‰X�a˜‹^Ô÷÷ ñ ús   ²AÁA ÚKlassc                 óz   — t        j                  t        d¬«      5   | ddd¬«       d d d «       y # 1 sw Y   y xY w)Nz$has no effect since shuffle is Falserd   rH   Fr   r  )rr   rs   rt   )rá  s    rD   Útest_random_state_shuffle_falserã  ×  s4   € ô
 
�‰”zÐ)OÔ	Pñ 0Ùˆa˜¨QÕ/÷0÷ 0ñ 0ús   œ1±:zcv, expectedé{   r  r_   c                 ó$   — t        | «      |k(  sJ ‚y r?   )r"   )r�   rH  s     rD   Útest_yields_constant_splitsræ  à  s   € ôL # 2Ó&¨(Ò2Ð2Ñ2rY   r�   )r¦  c                 óæ   — t        | d«      sJ ‚| j                  «       }| t        v r|j                  j                  d   du s"J ‚| t
        v r|j                  j                  rJ ‚t        |dg¬«       y)z>Check get_metadata_routing returns the correct MetadataRouter.Úget_metadata_routingrS   TrU   )ÚexcludeN)Úhasattrrè  ÚGROUP_SPLITTERSrU   ÚrequestsÚNO_GROUP_SPLITTERSr$   )r�   Úmetadatas     rD   Ú"test_splitter_get_metadata_routingrï  	  sp   € ô �2Ð-Ô.Ð.Ð.Ø×&Ñ&Ó(€HØ	Œ_ÑØ�~‰~×&Ñ& xÑ0°DÑ8Ð8Ð8Ø	Ô!Ñ	!Ø—>‘>×*Ò*Ð*Ð*ä˜H¨w¨iÖ8rY   c                 ó`   — | t         v rt        | d«      sJ ‚y| t        v rt        | d«      rJ ‚yy)zJCheck set_split_request is defined for group splitters and not for others.Úset_split_requestN)rë  rê  rí  r;  s    rD   Útest_splitter_set_split_requestrò    s?   € ð 
Œ_ÑÜ�rÐ.Ô/Ð/Ñ/Ø	Ô!Ñ	!Ü˜2Ð2Ô3Ð3Ð3Ð3ð 
"rY   c                 ó€  — d| j                   j                  › �}d}t        j                  j	                  d«      }|j                  dd|df¬«      }|j                  dd|f¬«      }|j                  dd|f¬«      }t        j                  t        |¬«      5  | j                  |||¬	«       d d d «       y # 1 sw Y   y xY w)
Nz#The groups parameter is ignored by r”   r;   r   rH   r4   r•   rd   rR   )
r@   rA   rf   rœ   r�   rž   rr   r¾   ÚUserWarningrU   )r�   r‘   ru   r¢   rV   rW   rS   s          rD   Ú)test_no_group_splitters_warns_with_groupsrõ    s«   € à/°·±×0EÑ0EÐ/FÐ
G€Cà€IÜ
�)‰)×
Ñ
 Ó
"€CØ�‰�A�q 	¨1˜~ˆÓ.€AØ�‰�A�q 	˜|ˆÓ,€AØ�[‰[˜˜A Y Lˆ[Ó1€Fä	�‰”k¨Ô	-ñ &Ø
�‰��A˜fˆÔ%÷&÷ &ñ &ús   ÂB4Â4B=c                 ó’   — d}t        j                  t        |¬«      5  | j                  t        «       d d d «       y # 1 sw Y   y xY w)Nz+missing 1 required positional argument: 'y'rd   )rr   rs   rÅ   rU   rV   )r�   r‘   s     rD   Ú"test_stratified_splitter_without_yr÷  -  s7   € ð 8€CÜ	�‰”y¨Ô	,ñ Ø
�‰”Œ÷÷ ñ ús	   ž=½Ar?   )¬Ú__doc__rõ  rÂ   Ú	itertoolsr   r   r   Únumpyrf   rr   Úscipyr   Úscipy.sparser   Úscipy.specialr   Úsklearnr	   Úsklearn.datasetsr
   r   Úsklearn.dummyr   Úsklearn.model_selectionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úsklearn.model_selection._splitr    r!   r"   Úsklearn.svmr#   Ú%sklearn.tests.metadata_routing_commonr$   Úsklearn.utils._array_apir%   r&   r'   r)   r  Úsklearn.utils._mockingr*   Úsklearn.utils._testingr+   r,   r-   r.   Úsklearn.utils.estimator_checksr/   Úsklearn.utils.fixesr0   r1   r2   Úsklearn.utils.validationr3   rí  rë  rª   rT   ÚALL_SPLITTERSÚSPLITTERS_REQUIRING_TARGETrÐ   rV   rÀ   rW   rg   rÆ  r=  ÚmarkÚfilterwarningsÚ
pytestmarkrX   r’   r¨   r®   r´   rÌ   rÑ   rÕ   rÛ   Úparametrizerí   r÷   r   r  r  r   r.  r7  rB  rE  rK  rn   rO  re  rq  r}  r  rƒ  r†  r’  r­  r±  r¶  rº  rÄ  rÑ  rá  rì  ró  r÷  rú  r   r  r  r  r  r  r  rM  r	  r-  r7  r;  rC  rG  rK  r[  r]  r`  rb  rh  rp  rw  r£  r¨  r¯  r±  r¸  r»  rÉ  rÕ  rÙ  rÛ  rÞ  rà  rã  rœ   r�   ræ  r¡   rï  rò  rõ  r÷  r;  s   0rD   ú<module>r     s¯  ðÙ ã 	Û ß OÑ Oã Û Ý Ý !Ý å "ß =Ý )÷÷ ÷ ÷ ÷ ñ ÷*ñ õ
 Ý I÷ñ õ
õ 1÷ó õ÷ OÑ NÝ 1ñ 
ƒGÙÓÙÓÙƒMÙ�„NÙƒNÙ SÔ)Ù’LÓ!ÙƒOÙÓðÐ ñ ƒLÙ˜QÔÙÓÙÓÙÓð€ñ ÑWÀÔWÓWÐ à" _Ñ4€ñ ÓÙÓÙÓðÐ ð €B‡G�GˆBƒK€Ø€B‡I�IˆbƒM�QÑ€à€B‡H�HÒ1Ó2Ø€B‡H�HÒ1Ó2Ø€B‡H�HÒ:Ó;Ø€B‡H�HÒ=Ó>Ú(Ú@ð€ñ 
‹€à�[‰[×'Ñ'Ø6ó€
ò
$òR*òj$!óN	:ò?ò$F(òR*ò )ò.(ðV ‡�×Ñ˜ U¨D MÓ2Ø‡�×Ñ˜Ò4Ó5Ø‡�×Ñ˜ ?Ð4HÐ"IÓJñ#ó Kó 6ó 3ð#ð0 ‡�×Ñ˜ U¨D MÓ2Ø‡�×Ñ˜šiÓ(Ø‡�×Ñ˜ ?Ð4HÐ"IÓJñ*ó Kó )ó 3ð*ò>"ð ‡�×Ñ˜ ?Ð4HÐ"IÓJñ&ó Kð&ò&!ð. ‡�×Ñ˜ 5¨/Ð;OÐ"PÓQñ>ó Rð>ò>"ò.?ò0)òX#ò$#ð$ ‡�×ÑØð ˆB�H‰H�a�S˜1‘W ˜s Q™wÑ&Ó'ØˆB�H‰HÒ9Ó:ØˆB�J‰J˜˜c˜
 S¨# J°°c°
Ð;Ó<ð	
ð ˆB�H‰H�a�S˜1‘W ˜s Q™wÑ&Ó'ØˆB�H‰HÒ9Ó:ØˆB�J‰J˜˜t˜ t¨T l°T¸4°LÐAÓBð	
ðóñ=óð=ð ‡�×Ñ˜Ò&VÓWØ‡�×Ñ˜¢[Ó1ñ!ó 2ó Xð!ò6)ð ‡�×Ñ˜¨Ð7MÐ(NÓOØ‡�×ÑØ%Ò'Móñ	#óó Pð	#ð ‡�×ÑØ%Ò'Móñ
#óð
#ò>ò2	&ò"@òJ15òhCò"7ò23ò.)ò""òJ4.ònGò,0ò( >òFð ‡�×Ñ˜¨Ð7NÐ'OÓPñ1ó Qð1òò:3ò4òò<@ð8 ‡�×ÑØ%Ò'Móñ#óð#ð ‡�×ÑØ)Ñ+TÓ+Vóð ‡�×ÑØàØ	ˆyˆr�yŠy˜'˜"Ÿ'™' !›* h b§h¢h¨q£kÐ2Ó3Ð4àð	óñ3óóð3ðl ‡�×Ñ˜¨.Ó9ñ,<ó :ð,<ò^4ò.4ð" ‡�×ÑØ˜¨Ñ7¸.ÑHóñ7óð7ò5ò2ð0 ‡�×ÑØÚWóñPó	ðPò
Qò	Lò;ò+ò\ðB ‡�×Ñ˜ :Ð/CÐ"DÓEØ‡�×Ñ˜ T¨5 MÓ2ñ|9ó 3ó Fð|9ò~" òJ>òNò òF6ðr ñ
ó ð
ò:
Hð ‡�×ÑØ�<Ð!2Ð4JÐKóñ
+óð
+ò,ò,òð ‡�×ÑØˆe�_Ð&:¸JÐGóñ0óð0ð ‡�×ÑØð!Ù	‹�$ˆð!á	�t¨#Ô	.°Ð5ð!ñ 
Ó	˜DÐ!ð!ñ 
 °CÔ	8¸$Ð?ð	!ñ
 
 d¸Ô	=¸tÐDð!ñ 
Ó	 Ð&ð!ñ 
 CÔ	(¨$Ð/ð!ñ 
!¨cÔ	2°DÐ9ð!ñ 
 3Ô	'¨Ð.ð!ñ 
¨Ô	,¨dÐ3ð!ñ 
 ¨SÔ	1°4Ð8ð!ñ 
‹�tÐð!ñ 
˜D¨sÔ	3°TÐ:ð!ñ 
Ó	˜DÐ!ð!ñ 
‹˜Ðð!ñ  
Ó	˜TÐ"ð!!ñ" 
 !Ô	$ dÐ+ð#!ñ$ 
�QŒ˜Ðð%!ñ& 
�t¨$Ô	/°Ð7ð'!ñ( 
�t¨$Ô	/°Ð7ð)!ñ* 
 °B·I²I×4IÒ4IÈ!Ó4LÔ	MÈuÐUð+!ñ, 
 °B·I²I×4IÒ4IÈ!Ó4LÔ	MÈuÐUð-!ñ. 
 DÔ	)¨5Ð1ð/!ñ0 
 B§I¢I×$9Ò$9¸!Ó$<Ô	=¸uÐEð1!ñ2 
!¨dÔ	3°UÐ;ð3!ñ4 
!¨b¯iªi×.CÒ.CÀAÓ.FÔ	GÈÐOð5!ñ6 
 4Ô	(¨%Ð0ð7!ñ8 
 2§9¢9×#8Ò#8¸Ó#;Ô	<¸eÐDð9!ñ: 
¨Ô	-¨uÐ5ð;!ñ< 
¨¯	ª	×(=Ò(=¸aÓ(@Ô	AÀ5ÐIð=!ñ> 
 ¨TÔ	2°EÐ:ð?!ñ@ 
 ¨R¯YªY×-BÒ-BÀ1Ó-EÔ	FÈÐNðA!ó$ñJ3óK$ðJ3ð ‡�×Ñ˜˜}À]Ö2S¸r±3°rµ7Ò2SÐÓTñ	9ó Uð	9ð ‡�×Ñ˜˜}À]Ö2S¸r±3°rµ7Ò2SÐÓTñ4ó Uð4ð ‡�×Ñ˜Ð1°sÐÓ;ñ
&ó <ð
&ð ‡�×ÑØÐ
$Ð=WÖ*X°r©3¨r­7Ò*Xð ó ñóñùòO 3Tùò 3Tùò0 +Ys   ä$gågæ8g 