Ë
    íì�iÏ' ã                   óØ  — d Z ddlZddlZddlmZmZmZ ddlZddl	Z	ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7 ddl3m8Z9 ddl:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@ ddlAmBZB ddlCmDZDmEZEmFZF ddlGmHZH  e«        e%«        e'«        e«        ed¬«       e#«        e&d¬«       e g d¢«       e!«        e"«       g
ZI e«        ed¬«       e$«        e«        e«       gZJ eKd„ eJD «       «      ZLeIeJz   ZM e%«        e&«        e"«       gZN ejž                  d«      ZP ej¢                  d«      dz  ZR ej¦                  g d¢«       ej¦                  g d¢«       ej¦                  g d ¢«       ej¦                  g d!¢«      g d¢g d"¢fZT e«       ZUe	j¬                  j¯                  d#«      ZXd$„ ZYd%„ ZZd&„ Z[dœd'„Z\d(„ Z]d)„ Z^d*„ Z_d+„ Z`d,„ Zae	j¬                  jÅ                  d-d.d/g«      e	j¬                  jÅ                  d0g d1¢«      e	j¬                  jÅ                  d2e%e$g«      d3„ «       «       «       Zce	j¬                  jÅ                  d-d.d/g«      e	j¬                  jÅ                  d0g d4¢«      e	j¬                  jÅ                  d2e%e$g«      d5„ «       «       «       Zdd6„ Zee	j¬                  jÅ                  d2e%e$g«      d7„ «       Zfd8„ Zge	j¬                  jÅ                  d2ee%e$g«      d9„ «       Zhd:„ Zid;„ Zjd<„ Zkd=„ Zld>„ Zme	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„ «       ZodH„ Zpe	j¬                  jÅ                  dIg dJ¢«      e	j¬                  jÅ                  dKg dL¢«      dM„ «       «       ZqdN„ Zre	j¬                  jÅ                  dOe#e&g«      e	j¬                  jÅ                  dPg dQ¢«      dR„ «       «       Zse	j¬                  jÅ                  dPg dS¢«      dT„ «       ZtdU„ ZudV„ ZvdW„ ZwdX„ ZxdY„ ZydZ„ Zzd[„ Z{d\„ Z|d]„ Z}d^„ Z~d_„ Zd`„ Z€da„ Z�db„ Z‚e	j¬                  jÅ                  dce!e"g«      dd„ «       Zƒde„ Z„df„ Z…dg„ Z†dh„ Z‡di„ Zˆe	j¬                  jÅ                  dPg dj¢«      dk„ «       Z‰e	j¬                  jÅ                  dl e7«       e5¬m«      e	j¬                  jÅ                  dndod/ e�j                   ejž                  d@«       e�j                  dp«      f«      fdqf«      dr„ «       «       ZŒe	j¬                  jÅ                  dseD«      dt„ «       Z�du„ ZŽdv„ Z�e	j¬                  jÅ                  dweDeEz   eFz   «      dx„ «       Z�dy„ Z‘dz„ Z’e	j¬                  jÅ                  d{g d|¢«      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�jL                  �jO                  d«      ¬”«      d.f‘ e%d/e�jL                  �jO                  d«      ¬”«      d.f‘ e!d¬•«      d.f‘ e!e�jL                  �jO                  d«      ¬•«      d.f‘ e"d¬•«      d.f‘ e"e�jL                  �jO                  d«      ¬•«      d.f‘ e#d¬•«      d.f‘ e#e�jL                  �jO                  d«      ¬•«      d.f‘ ed¬•«      d.f‘ ee�jL                  �jO                  d«      ¬•«      d.f‘ e&d¬•«      d.f‘ e&e�jL                  �jO                  d«      ¬•«      d.f‘«      d–„ «       Z¨e	j¬                  jÅ                  d—eMeMD � cg c]
  }  e©| «      ‘Œ c} ¬m«      d˜„ «       Zªe	j¬                  jÅ                  d—eMeMD � cg c]
  }  e©| «      ‘Œ c} ¬m«      d™„ «       Z«e	j¬                  jÅ                  d—eIe©¬m«      dš„ «       Z¬e	j¬                  jÅ                  d—eNeND � cg c]
  }  e©| «      ‘Œ c} ¬m«      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_device_dtype_idsÚget_namespaceÚ)yield_namespace_device_dtype_combinations©Údevice)ÚMockDataFrame)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equalÚignore_warnings)Ú_array_api_for_tests)ÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERS)Ú_num_samplesé   ©Úpç      à?©Ú	test_size©é   r<   r5   r5   r<   ©Ún_groupsc              #   óH   K  — | ]  }|j                   j                  –— Œ y ­w©N)Ú	__class__Ú__name__)Ú.0Úsplitters     ú�/var/www/ITT-ServiceAPI-Services/ITT-Document-Scan/mrzscanner/mrzenv/lib/python3.12/site-packages/sklearn/model_selection/tests/test_split.pyú	<genexpr>rF   V   s   è ø€ ÒW¸8˜8×-Ñ-×6Õ6ÑWùs   ‚ "é
   ©r<   r<   r<   r<   r5   r5   r5   é   rI   rI   rI   rI   ©r   r   r   r<   r<   r<   r5   r5   r5   rI   rI   rI   ©r   r<   r5   rI   r   r<   r5   rI   r   r<   r5   rI   r   r<   r5   ©r<   r<   r5   r5   r5   rI   rI   rI   é   rM   rM   rM   rM   rM   rM   rM   ©Ú1rO   rO   rO   Ú2rP   rP   Ú3rQ   rQ   rQ   rQ   z0error:The groups parameter:UserWarning:sklearn.*c                 ó†   — | j                   j                  t        v r| j                  |||¬«      S | j                  ||«      S )N©Úgroups)rA   rB   ÚGROUP_SPLITTER_NAMESÚsplit)rD   ÚXÚyrT   s       rE   Ú_splitrY   q   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)NrM   r5   rG   r<   rI   é   é   é   é   )r<   r5   rI   rM   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ÚlistrY   ÚasarrayÚdtypeÚkindÚreprÚpytestÚraisesÚ
ValueError)"Ú	n_samplesÚn_unique_groupsÚn_splitsr7   Ún_shuffle_splitsrW   ÚX_1drX   rT   ÚlooÚlpoÚkfÚskfÚloloÚlopoÚssÚpsÚsgkfÚloo_reprÚlpo_reprÚkf_reprÚskf_reprÚ	lolo_reprÚ	lopo_reprÚss_reprÚps_reprÚ	sgkf_reprÚn_splits_expectedrd   ÚcvÚcv_reprÚtrainÚtestÚmsgs"                                     rE   Ú(test_cross_validator_with_default_paramsr“   x   sÎ  € Ø€IØ€OØ€HØ	€AØÐä
�‰�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   rI   r5   ©Úsizeéÿÿÿÿr6   r8   r9   r=   ©rx   )Ú	test_foldrS   )ÚbinaryÚ
multiclassz/Supported target types are: {}. Got 'multilabel)rg   ÚrandomÚRandomStateÚrandintÚreshaper   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   rY   ru   ÚformatÚstr)rv   ÚrngrW   rX   Úy_2dÚy_multilabelrT   Ú	splittersrD   ÚeÚallowed_target_typesr’   s               rE   Ú	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‘   rv   s      rE   Úcheck_valid_splitr¯   ô   s\   € ä�e“*œc $›iˆ4€Eð ×Ñ˜dÓ#¤s£uÒ,Ð,Ð,àÐà�{‰{˜4Ó ¤C¬¨iÓ(8Ó$9Ò9Ð9Ñ9ð rZ   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   )rv   r<   )r4   rk   r«   rV   r¯   Úupdater®   )
rŽ   rW   rX   rT   Úexpected_n_splitsrv   Úcollected_test_samplesÚ
iterationsr�   r‘   s
             rE   Úcheck_cv_coveragerµ      s«   € Ü˜Q“€Ià�?‰?˜1˜a Ó(Ð,=Ò=Ð=Ð=ä ›UÐØ€JØ—x‘x  1 fÓ-ò ,‰ˆˆtÜ˜% °Õ;Ø�a‰ˆ
Ø×%Ñ% dÕ+ð,ð Ð*Ò*Ð*Ð*ØÐØ%¬¬U°9Ó-=Ó)>Ò>Ð>Ñ>ð rZ   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<   r5   rI   rM   r\   r]   r^   r_   é	   rG   )rI   rI   r˜   r˜   rI   zThe least populated classre   Úignore©rT   r²   )rI   rI   r˜   r˜   r5   r   z>k-fold cross-validation requires at least one train/test splitç      ø?ç       @©rx   Úshuffle)rg   rh   ru   Únextr   rV   r   rs   ÚwarnsÚWarningr   ÚarangeÚlenÚwarningsÚcatch_warningsÚsimplefilterrµ   rt   Ú	TypeError)ÚX1ÚX2rX   Úskf_3Úsgkf_3Únaive_groupsÚerror_strings          rE   Ú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é   rI   )rX   rT   r²   é   r\   )rg   Úonesr   rµ   rk   )rÇ   r}   rÈ   s      rE   Útest_kfold_indicesrÒ   [  so   € ä	�‰�‹€BÜ	ˆq‹€BÜ�b˜" ¨TÀQÕGô 
�‰�‹€BÜ	ˆq‹€BÜ�b˜" ¨TÀQÕGð ”�a“×%Ñ% bÓ)Ò)Ð)Ñ)rZ   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<   r5   rI   rM   r\   r]   r^   r_   r·   rG   r˜   r   ©r   r<   r5   )r   rV   r¾   r.   )rÈ   Úsplitsr�   r‘   s       rE   Útest_kfold_no_shufflerÖ   k  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Õ(rZ   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 )NrM   )r<   r<   r   r   r5   r   r<   rI   r^   )r<   r<   r<   r   r   r   r   )r   r<   rI   rM   )r5   r\   r]   r\   )rO   rO   rO   Ú0rØ   rØ   rØ   )r   r<   r   r<   r   r<   r   r<   )rg   rÑ   r   rV   r¾   r.   rk   rl   rm   rn   Ú	ones_liker   )rW   rX   rÕ   r�   r‘   Úy1Úy2s          rE   Ú 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õrZ   r½   FTÚk)rM   r\   r]   r^   r_   r·   rG   Ú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éè  rM   çš™™™™™¹?r   ç{®Gázì?r<   ç{®Gáz„?©ra   r½   rS   ç{®Gáz”?©Úatol)rg   rÑ   rh   ÚintrÁ   rÂ   ÚbincountrY   r,   ÚappendÚptp)rÝ   r½   rÞ   rv   rW   rX   rT   ÚdistrÚ
test_sizesra   r~   r�   r‘   s                rE   Ú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�*Ó Ò"Ð"Ñ"rZ   )rM   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   r5   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ä   rS   )rY   rn   )	rX   ra   r�   r‘   rW   rT   rÝ   rÞ   r½   s	       €€€€€rE   Ú
get_splitsz:test_stratified_kfold_label_invariance.<locals>.get_splits×  sY   ø€ Ù#*‘t°ˆô  &Ù�a l¸GÔDØØØô	 ÷
á��tô �%‹[œ$˜t›*Ò%ó
ð 	
ùó 
s   £ ArÔ   )rg   rh   rè   rÑ   rÂ   rÁ   r   Útake)rÝ   r½   rÞ   rv   rX   rò   Úsplits_baseÚpermÚy_permÚsplits_permrW   rT   s   ```       @@rE   Ú&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Ó)Ð)Ð)ñ*rZ   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\   ©rW   r<   )	r®   r   rV   rg   rÑ   rÂ   ÚmaxÚminÚsum)rd   r}   Ú_r‘   Úsizess        rE   Ú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   rI   r<   é   ©TF©r½   rú   )	rg   rÑ   rÁ   rÂ   r®   rY   rü   rý   rþ   )rÞ   rW   rX   rT   r½   rŽ   rd   r~   rÿ   r‘   r   s              rE   Ú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 )NrI   Tr   ©r½   ra   r<   é,  r5   )
r   rg   rÑ   Úzerosrj   rV   r   rÂ   Úintersect1drþ   )r}   Úkf2Úkf3rW   Ú	all_foldsÚtr1Úte1Útr2Úte2Útr3Úte3Útr_aÚtr_bs                rE   Ú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Ò Ð Ñ rZ   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_   é   rI   Tr  )rg   rÑ   rÁ   rÂ   rl   rm   rn   rY   r�   rž   rj   rs   rt   ÚAssertionErrorr.   )rÞ   rW   rX   Úgroups_1rÈ   rÛ   Úgroups_2r}   Údatarÿ   Útest_aÚtest_bs               rE   Ú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¹   rG   )
rg   rÑ   r   rj   rV   r«   rµ   rÁ   ÚsortedÚtuple)ÚX_40rX   Úkf0Úkf1rÿ   Útest0Útest1rW   r  ÚsÚ	test_set1Ú	test_set2s               rE   Ú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<   rI   rM   Tr  z6Test groups should differ with different random states)r²   )rg   rÑ   rÁ   r   rV   r«   rj   rµ   )rW   rX   rT   Úgkf0Úgkf1rÿ   Útest_idxÚtest_groups0Útest_groups1Úg0Úg1s              rE   Útest_shuffle_groupkfoldr8  V  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  rG   g{®Gázt?)ÚCÚgammarI   Fr¼   ©rŽ   gq=
×£pí?çš™™™™™é?Tr   r  r<   g®Gázî?)Údigitsr  Útargetr#   r   r   Úmeanr   )rW   rX   Úmodelrx   rŽ   Ú
mean_scores         rE   Ú1test_kfold_can_detect_dependent_samples_on_digitsrC  n  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Ø�*ÒÐÐØ˜ÒÐÑrZ   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 )NrI   r™   r<   r]   r   é   r˜   )r<   r5   rI   rM   r\   r]   r<   r<   r5   r5   rI   rI   rM   rM   r\   r\   r]   r]   rå   ræ   )r   rg   rh   rÙ   r    ro   ré   rÂ   rV   r  r—   r,   rê   rë   )rƒ   rX   rW   rT   rì   rí   r�   r‘   s           rE   Ú#test_stratified_group_kfold_trivialrF  š  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�*Ó Ò"Ð"Ñ"rZ   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 )NrI   r™   r<   r]   r   rE  r˜   )r<   r5   rI   rI   rM   rM   r<   r<   r5   r5   rI   rM   r\   r\   r\   r]   r]   r]   g-²�ï§ê?gsh‘í|?Å?gZd;ßOå?gZd;ßOÕ?r8   çü©ñÒMbP?ræ   )r   rg   rh   rÙ   r    ro   rj   rV   r  r—   ré   rÂ   r,   rê   rë   )
rƒ   rX   rW   rT   Úexpectedrí   r�   r‘   Úexpect_distÚ
split_dists
             rE   Ú'test_stratified_group_kfold_approximaterL  ¬  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�*Ó Ò"Ð"Ñ"rZ   zy, groups, expectedr]   )r<   r<   r5   r5   rI   rI   rM   rM   r\   r\   r]   r]   r·   rI   )r<   r<   r<   r5   r5   r5   rI   rI   rI   rM   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 )NrI   r™   r˜   r<   r   rH  ræ   )r   rg   rÙ   r    rj   rV   r  r—   ré   rÂ   r,   )	rX   rT   rI  rƒ   rW   r�   r‘   rJ  rK  s	            rE   Ú.test_stratified_group_kfold_homogeneous_groupsrP  ¾  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Ö<ñ	=rZ   c                  óØ  — t        j                  dgdz  dgdz  z   «      } t        j                  t        | «      df«      }t        j                  g d¢«      }t        j                  ddg«      }d}t        |«      D ]ì  }t        d	d
|¬«      }g }|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  rŒìJ ‚ y )Nr   rE  r<   r]   )r<   r<   rI   rI   rI   rM   r\   r\   r\   r\   r^   r^   r5   r5   r]   r]   r_   r_   gUUUUUUå?çUUUUUUÕ?rð   rI   T©rx   r½   ra   g:Œ0âŽyE>ræ   )rg   rh   rÑ   rÂ   ro   r®   r   rV   r  r—   r,   ré   rê   rë   )
rX   rW   rT   Úexpected_class_ratiosÚn_itersÚseedrƒ   rí   r�   r‘   s
             rE   Ú<test_stratified_group_kfold_shuffle_preserves_stratificationrW  ×  sN  € ô 	�‰�!��r‘˜Q˜C !™GÑ#Ó$€AÜ
�‰”�Q“˜�Ó€Aô �X‰XÒLÓM€FÜŸJ™J¨°Ð'9Ó:Ðð €GÜ�g“ò 'ˆÜ#¨Q¸È4ÔPˆØˆ
ØŸ:™: a¨¨FÓ3ò 
	)‰KˆE�4ä—>‘> &¨¡-°¸±Ó>×CÑCÀqÒHÐHÐHäÜ—‘˜A˜e™HÓ%¬¨E«
Ñ2Ð4IÐPTõô Ü—‘˜A˜d™GÓ$¤s¨4£yÑ0Ð2GÈdõð ×Ñœc $›iÕ(ð
	)ô �v‰v�jÓ! QÓ&Ð&Ð&ñ'rZ   Ú	cls_distr))gš™™™™™Ù?ç333333ã?)g333333Ó?çffffffæ?)çš™™™™™É?r=  )r=  r[  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à   r5   )r—   r7   r˜   r<   rS   )Úqk)r   r   rg   r�   rž   ÚchoicerÙ   r    rV   rj   r  r—   ré   rÂ   r   Úentropy)rX  r>   rx   rƒ   Úgkfr£   Ún_pointsrX   rW   ÚgÚ
sgkf_foldsÚ	gkf_foldsÚ	sgkf_entrÚgkf_entrÚ
sgkf_trainÚ	sgkf_testrÿ   Úgkf_testÚ
sgkf_distrÚ	gkf_distrs                       rE   Ú/test_stratified_group_kfold_against_group_kfoldrm  ö  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Ø˜Ò Ð Ñ rZ   c                  ó2  — t        dd¬«      j                  t        «      } t        dd¬«      j                  t        «      }t        t        j                  d«      d¬«      j                  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 )Nr[  r   ©r:   ra   r5   r<   )r   rV   rW   rg   Úint32rj   r.   )Úss1Úss2Úss3Úss4Út1Út2Út3Út4s           rE   Útest_shuffle_splitry    sô   € Ü
 °1Ô
5×
;Ñ
;¼AÓ
>€CÜ
 °Ô
3×
9Ñ
9¼!Ó
<€CÜ
¤§¡¨!£¸1Ô
=×
CÑ
CÄAÓ
F€CÜ
 °Ô
3×
9Ñ
9¼!Ó
<€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¡%Õ(ñ)rZ   Úsplit_classztrain_size, exp_train, exp_test))Nr·   r<   ©r_   r_   r5   ©r=  r_   r5   c                 óâ   — t        j                  d«      }t        j                  d«      }t         | |¬«      j                  ||«      «      \  }}t	        |«      |k(  sJ ‚t	        |«      |k(  sJ ‚y ©NrG   ©Ú
train_size)rg   rÑ   r¾   rV   rÂ   )rz  r€  Ú	exp_trainÚexp_testrW   rX   ÚX_trainÚX_tests           rE   Ú$test_shuffle_split_default_test_sizer…  !  sb   € ô 	�‰�‹€AÜ
�‰�‹€Aä™;°*Ô=×CÑCÀAÀqÓIÓJ�O€GˆVäˆw‹<˜9Ò$Ð$Ð$Üˆv‹;˜(Ò"Ð"Ñ"rZ   ))Nr_   r5   )r^   r^   rI   )rZ  r^   rI   c                 ó   — t        j                  d«      }t        j                  d«      }t        d«      }t        t	        | ¬«      j                  |||«      «      \  }}t        |«      |k(  sJ ‚t        |«      |k(  sJ ‚y r~  )rg   rÑ   r®   r¾   r   rV   rÂ   )r€  r�  r‚  rW   rX   rT   rƒ  r„  s           rE   Ú*test_group_shuffle_split_default_test_sizer‡  1  so   € ô 	�‰�‹€AÜ
�‰�‹€AÜ�2‹Y€FäÔ,¸
ÔC×IÑIÈ!ÈQÐPVÓWÓX�O€GˆVäˆw‹<˜9Ò$Ð$Ð$Üˆv‹;˜(Ò"Ð"Ñ"rZ   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<   r5   r5   r5   rI   r[  r9   r5   ©r:   r€  r·   )	r   r   r   r<   r<   r<   r5   r5   r5   r  )	rg   rÁ   ro   rs   rt   ru   r¾   r   rV   ©rW   rX   s     rE   Ú"test_stratified_shuffle_split_initr‹  A  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 )NrK   r\   rG   r]   r   )r:   r€  ra   )rg   rh   r   rV   rÑ   rÂ   )rX   r:   r€  Ússsr�   r‘   s         rE   Ú0test_stratified_shuffle_split_respects_test_sizerŽ  Z  s‚   € Ü
�‰Ò>Ó?€AØ€IØ€JÜ
 Ø	�Y¨:ÀAôç�eŒB�G‰G”C˜“F‹O˜QÓð ð ò &‰ˆˆtÜ�5‹z˜ZÒ'Ð'Ð'Ü�4‹y˜IÓ%Ð%Ð%ñ&rZ   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 )NrH   rJ   rK   r5   rL   r˜   i   r<   é2   rú   rð   rN   r]   g…ëQ¸Õ?r   ro  T)Úreturn_inverse)rg   rh   Úconcatenater®   r   rV   rÑ   rÂ   Ú
asanyarrayÚceilr.   Úuniqueré   Úfloatr-   r—   r  )
rd   ÚysrX   r�  r:   r€  r�   r‘   Úp_trainÚp_tests
             rE   Ú"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_countsr7   Ú	thresholdÚbfÚcountÚprobrx   s         €rE   Úassert_counts_are_okz@test_stratified_shuffle_split_even.<locals>.assert_counts_are_ok‘  sR   ø€ ð ˜8‘Oˆ	Ü�[‰[˜ 1Ó%ˆØò 	ˆEØ—6‘6˜%“=ˆDØ˜)Ó#ð ØOóÐ#ñ	rZ   )r]   é   r5   r   r<   ç      ð?©rx   r:   ra   rŠ  r‰  )rg   rh   r   rV   rÑ   r!   rÂ   r«   r¬   r•  r:   r–  )Ún_foldsr¥  rv   rT   rÕ   Útrain_countsÚtest_countsÚn_splits_actualr�   r‘   ÚcounterÚidsÚidÚn_trainÚn_testÚgroup_countsÚ	ex_test_pÚ
ex_train_prx   s                     @rE   Ú"test_stratified_shuffle_split_evenrµ  ‹  sß  ø€ ð €GØ€Hô	ð ó  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 5rZ   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<   r5   rI   rI   rM   r\   r<   r8   r   r¨  rŠ  )
rg   rÙ   r   r¾   rV   r.   r  Úunion1drÁ   rÂ   )rX   rW   r�  r�   r‘   s        rE   Ú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ÕBrZ   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<   r8   r¨  rŠ  )rg   rh   rÙ   r   r¾   rV   r.   r  r¸  rÁ   rÂ   r@  )rX   rW   r�  r�   r‘   Úy_trainÚy_testÚexpected_ratios           rE   Ú(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ñ)7rZ   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<   rG   rð   r8   r¨  rŠ  rM   )rg   rh   rÙ   r   r¾   rV   r@  )
Úrow_with_many_zerosÚrow_with_many_onesrX   rW   r�  r�   r‘   r»  r¼  r½  s
             rE   Ú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Ñ2rZ   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 )NrG   g      ð¿r\   Tr  )rg   Úfullri   r   rV   rW   rê   r   rÂ   r•  rk   rj   r.   )	ÚfoldsÚkf_trainÚkf_testrd   Ú	train_indÚtest_indr‚   Úps_trainÚps_tests	            rE   Ú%test_predefinedsplit_with_kfold_splitrÌ     sÅ   € ä�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 Õ(rZ   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]   rR  r   ro  rS   r<   r§  )Útest_groupsrg   rÑ   rÂ   r   rr   rk   r•  ro   rV   ÚanyÚisinr—   r.   r  ÚabsÚround)Úgroups_irW   rX   rx   r:   ÚsloÚl_uniqueÚlr�   r‘   Úl_train_uniqueÚl_test_uniques               rE   Ú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ò#	ñ!rZ   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=   r5   rb   zLeavePGroupsOut(n_groups=1)rc   rI   zLeavePGroupsOut(n_groups=3)rS   r   )ÚaÚbÚcrÜ  rÝ  )r§  çš™™™™™ñ?r§  g333333ó?rM   r]   g        z*The 'groups' parameter should not be None.re   )r   r   rr   ri   rÎ  rÂ   rg   r•  rÑ   rk   ro   rV   r.   r  ÚtolistÚshaperÁ   rs   rt   ru   ÚnanÚinf)ÚlogoÚlpgo_1Úlpgo_2ÚjrŽ   Úp_groups_outrd   rÓ  r>   rx   rW   rX   Ú
groups_arrr�   r‘   r’   s                   rE   Útest_leave_one_p_group_outré  6  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<   r5   r<   r<   r5   r   r   T)ÚcopyrS   r5   r=   r   rI   )rX   rT   )
rg   rh   rÑ   rÂ   r   rV   r   rj   r.   rk   )rT   rW   Úgroups_changingr   Úlolo_changingÚlploÚlplo_changingÚlloÚllo_changingr�   r‘   Ú
train_chanÚ	test_chans                rE   Ú$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ÑFrZ   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)r5   r5   r   r   r<   r<   rS   )r   r<   rM   r\   r5   rI   r·  rM   r\   ©r5   rI   rM   r\   r   r<   )	rg   rh   rÑ   rÂ   Úiterr   rV   r¾   r.   )rT   rW   rÕ   Úexpected_indicesÚexpected_trainÚexpected_testr�   r‘   s           rE   Ú%test_leave_group_out_order_dependencerû  ƒ  s¨   € ô �X‰XÒ(Ó)€FÜ
�‰”�F“Ó€AäÔ"Ó$×*Ñ*¨1°VÐ*Ó<Ó=€Fò 
˜˜1�vÐÚ	˜˜1�vÐÚ	˜˜1�vÐðÐð *:ò 0Ñ%ˆ˜Ü˜6“l‰ˆˆtÜ˜5 .Ô1Ü˜4 Õ/ñ0rZ   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)re   r<   z:The groups parameter contains fewer than 2 unique groups (z'). LeaveOneGroupOut expects at least 2.z^The groups parameter contains fewer than (or equal to) n_groups (3) numbers of unique groups (zR). LeavePGroupsOut expects that at least n_groups + 1 (4) unique groups be presentrI   r=   )rg   rÑ   ÚreÚescapers   rt   ru   r¾   r   rV   r   rÁ   )rW   rX   rT   r’   s       rE   Ú:test_leave_one_p_group_out_error_on_fewer_number_of_groupsrÿ  —  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   rs   rt   ru   r<  s    rE   Ú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)r5   r]   ©rx   r  z.{}(n_repeats=6, n_splits=2, random_state=None))r¡   rA   rB   rr   )r  rx   r  Úrepeated_cvÚrepeated_cv_reprs        rE   Útest_repeated_cv_reprr  Ã  sM   € àÑ€HˆiÙ h¸)ÔD€KØG×NÑNØ×Ñ×&Ñ&óÐð œt KÓ0Ò0Ð0Ñ0rZ   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<   r5   rI   rM   r\   r]   r^   r_   r·   rG   i{ic©rx   r  ra   )r   r<   rI   r   )r5   rI   rM   )r   r®   rV   r¾   r.   rs   rt   ÚStopIteration)rW   ra   Úrkfrÿ   rÕ   r�   r‘   s          rE   Ú&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 ©NrI   rM   r  )r   rk   )rx   r  r  r²   s       rE   Ú$test_get_n_splits_for_repeated_kfoldr  ê  s:   € Ø€HØ€IÜ
 °YÔ
?€CØ  9Ñ,ÐØ × 0Ñ 0Ó 2Ò2Ð2Ñ2rZ   c                  óZ   — d} d}t        | |¬«      }| |z  }||j                  «       k(  sJ ‚y r  )r   rk   )rx   r  Úrskfr²   s       rE   Ú/test_get_n_splits_for_repeated_stratified_kfoldr  ò  s:   € Ø€HØ€IÜ"¨HÀ	ÔJ€DØ  9Ñ,ÐØ × 1Ñ 1Ó 3Ò3Ð3Ñ3rZ   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<   r5   rI   rM   r\   r]   r^   r_   r·   rG   )r<   r<   r<   r   r   iq²ésr
  )r   r5   rI   )r   r<   rM   )r   r®   rV   r¾   r.   rs   rt   r  )rW   rX   ra   r  rÿ   rÕ   r�   r‘   s           rE   Ú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)NrI   rÞ  r  rY  r‰  Ú
wrong_typer9   r5   rM   )Úsome_argumenté*   rG   FT)r½   Ústratifyzrtrain_size=11 should be either positive and smaller than the number of samples 10 or a float in the \(0, 1\) rangere   rú   r<   )r€  r:   )rs   rt   ru   r   r®   rg   Úfloat32rÆ   © rZ   rE   Ú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^   rI   r{  r|  c                 ól   — t        t        | ¬«      \  }}t        |«      |k(  sJ ‚t        |«      |k(  sJ ‚y )Nr  )r   rW   rÂ   )r€  r�  r‚  rƒ  r„  s        rE   Ú'test_train_test_split_default_test_sizer  4  s8   € ô '¤q°ZÔ@�O€GˆVäˆw‹<˜9Ò$Ð$Ð$Üˆv‹;˜(Ò"Ð"Ñ"rZ   z#array_namespace, device, dtype_name)r®  zshuffle,stratify)TNrM   )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 ‚t        |«      t        |	«      k(  sJ ‚t        |«      t        |«      k(  sJ ‚t        |«      t        |	«      k(  sJ ‚t        |«      t        |«      k(  sJ ‚	 d d d «       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ð   ©rG   rG   rG   r)   r   )ra   r½   r  T)Úarray_api_dispatch)r½   r  ra   )Úxp)r0   rg   rÁ   r    Úastypero   r   r	   r'   Úarray_api_devicerp   r,   r%   )r½   r  Úarray_namespacer*   Ú
dtype_namer#  rW   rX   ÚX_npÚX_xpÚy_npÚy_xpÚ
X_train_npÚ	X_test_npÚ
y_train_npÚ	y_test_npÚstratify_xpÚ
X_train_xpÚ	X_test_xpÚ
y_train_xpÚ	y_test_xps                        rE   Útest_array_api_train_test_splitr5  @  sg  € ô" 
˜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ÒEÐEÐEÜ 
Ó+Ô/?ÀÓ/EÒEÐEÐEÜ 	Ó*Ô.>¸tÓ.DÒDÐDÐDÜ 	Ó*Ô.>¸tÓ.DÒDÐDÑD÷)Eð, ×Ñ˜tŸz™zÒ)Ð)Ð)Ø×Ñ˜tŸz™zÒ)Ð)Ð)Ø�?‰?˜dŸj™jÒ(Ð(Ð(Ø�?‰?˜dŸj™jÒ(Ð(Ð(äÜ˜*¨Ô,Øôô Ü˜)¨Ô+Øõ÷?Eð Eús   Â/D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!  rG   r8   r‰  r   r	  r\   rI   r5   i  r^   rú   )r^   r\   rI   r5   r<   )rI   r\   rI   r5   )r^   r^   rú   )rI   r^   rú   )r<   r<   r<   r<   r5   r5   r5   r5   )r5   rM   rN  r8   rM  )r5   rM   r5   rM   r]   )r:   r  ra   )r5   r[  F)r½   r:   r_   r·   )r   r<   r5   rI   rM   r\   r]   r^   )rg   rÁ   r    r   rÂ   r.   rß  Ú
isinstancern   rà  rh   rj   rþ   )r6  rW   ÚX_srX   rV   rƒ  r„  r»  r¼  Ú	X_s_trainÚX_s_testÚX_4dÚy_3dr:   Úexp_test_sizer�   r‘   s                    rE   Útest_train_test_splitr?  „  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Ò":Õ;ñ<rZ   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®ï?rN  )r  r€  N)rg   rÁ   r   r—   )Ú
big_numberrW   rX   rV   rƒ  r„  r»  r¼  s           rE   Ú$test_train_test_split_32bit_overflowrC  ´  s|   € ð €Jô 	�	‰	�*Ó€AØ	ˆT�JÑÑ€Aä˜Q ¨A¸$Ô?€EØ',Ñ$€GˆV�W˜fà�<‰<˜&Ÿ+™+Ñ%¨Ò3Ð3Ð3Ø�<‰<˜&Ÿ+™+Ñ%¨Ò3Ð3Ñ3rZ   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+   ÚpandasrE  rê   ÚImportErrorrW   r   r8  )ÚtypesrE  ÚInputFeatureTypeÚX_dfrƒ  r„  s         rE   Útest_train_test_split_pandasrK  Ë  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)rg   rÁ   r    r   r   r¡   )rL  rW   r9  rƒ  r„  s        rE   Útest_train_test_split_sparserO  Ü  si   € ô 	�	‰	�#‹×Ñ˜xÓ(€AÙ
˜1Ó
€CÜ& sÓ+�O€GˆVÜ�GÔ §¡°5Ò!8Ð8Ð8Ü�FÔ §¡°Ò 6Ð6Ð6Ð 6rZ   c                  ó¢   — t        t        «      } t        | «      \  }}t        |t         «      sJ ‚t        |t         «      sJ ‚t        | «      \  }}y r@   )r+   rW   r   r8  )rJ  rƒ  r„  ÚX_train_arrÚ
X_test_arrs        rE   Ú!test_train_test_split_mock_pandasrS  é  sI   € äœÓ€DÜ& tÓ,�O€GˆVÜ�gœ}Ô-Ð-Ð-Ü�fœmÔ,Ð,Ð,Ü.¨tÓ4Ñ€K‘rZ   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^   rO   rM   rØ   rI   r  r   )r  ra   )rg   rÑ   Úhstackr
  rß  r   rl   rm   )rW   rÚ   rÛ   Úy3r  ÚX_train1ÚX_test1Úy_train1Úy_test1ÚX_train2ÚX_test2Úy_train2Úy_test2ÚX_train3ÚX_test3Úy_train3Úy_test3s                    rE   Ú test_train_test_split_list_inputrc  ò  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ñ2rZ   ztest_size, train_size))r»   N)r§  N)rá   gffffffî?)Ny              ð?)rú   N)rG   N)r_   rI   c                 ó²   — t        j                  t        «      5  t        t	        | |¬«      j                  t        «      «       d d d «       y # 1 sw Y   y xY w)Nr‰  )rs   rt   ru   r¾   r   rV   rW   r‰  s     rE   Útest_shufflesplit_errorsre  
  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.   rV   rW   )r�   rÛ  rÜ  s      rE   Útest_shufflesplit_reproduciblerh    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 )	Nr5   r  ro  r^   rO   rM   rØ   rI   )
r   rg   rÑ   rU  r
  rß  rl   rm   rn   rV   )r�  rW   rÚ   rÛ   rV  s        rE   Ú&test_stratifiedshufflesplit_list_inputrj    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ÕKrZ   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éÈ   ©rp   rG   r˜   r5   r   r<   r[  r  ro  )rg   rÁ   Úfloat64r    rá  Úrepeatrà  r   rŠ  s     rE   Ú test_train_test_split_allow_nansrp  &  sb   € ä
�	‰	�#œRŸZ™ZÔ(×0Ñ0°°RÓ8€AÜ�f‰f€A€aŠ€d�GÜ
�	‰	�1�a�&˜!Ÿ'™' !™* q™.Ó)€AÜ�Q˜ S°rÖ:rZ   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·   rI   F)Ú
classifier)	r   r<   r   r<   r   r   r<   r<   r<   T)	r   r<   r   r<   r5   r<   r5   r   r5   r˜   r<   r   r\   )r   r   r   r   )r   r<   r<   r   )r   r   r   r<   )r<   r<   r   r<   )r   r   r<   r   r5   r   r<  )rg   rÑ   r   rl   rm   rn   r   rV   rh   r   r    Úallr¾   rs   rt   ru   )rW   rŽ   Úy_binaryÚy_multiclassÚy_multiclass_2dr¥   Úy_multioutputs          rE   Útest_check_cvrx  .  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   rV   rW   rX   r   rg   rl   rm   rn   r  )Úkf_iterÚkf_iter_wrappedÚkf_randomized_iterÚkf_randomized_iter_wrappedÚsplits_are_equals        rE   Útest_cv_iterable_wrapperr  \  s;  € Ü‹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   rS  r<   rm  )&ÚAlbertÚJeanÚBertrandÚMichelr‚  ÚFrancisÚRobertr„  ÚRachelÚLoisÚMichelleÚBernardÚMarionÚLaurar‚  r‡  ÚFranckÚJohnÚGaelÚAnnaÚAlixr†  r‹  ÚDavidÚTonyÚAbelÚBeckyÚMadmoodÚCaryÚMaryÚ	Alexandrer’  r…  ÚBarackÚAbdoulÚRashaÚXiÚSilviar¸   )r<   r<   r<   r5   r5   z%Cannot have number of splits.*greaterre   rI   r™   )rg   r�   rž   rÑ   rŸ   rÂ   r•  r
  ri   rV   rÑ  rþ   ro   Úobjectr  rh   rÃ   rÄ   rÅ   ÚFutureWarningrn   rß  rj   r.   rs   rt   ru   r¾   r   )rÞ   r½   Úglobal_random_seedr£   r>   rv   rx   rW   rX   Ú	tolerancerT   Úideal_n_groups_per_foldrÅ  ra   Úlkfrd   rÿ   r‘   Úgroupr�   Úlkf_copyÚcv_iterÚtrain1r+  Útrain2Útest2s                             rE   Ú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<   r5   rI   rM   r\   r]   r^   r_   r·   rG   rú   rE  é   r  z$Cannot have number of folds.*greaterre   r™   r˜   r   r·  rÔ   ©r   r<   r5   rI   rM   )
rs   rt   ru   r¾   r   rV   r.   rÂ   rn   rk   )rW   ÚtscvrÕ   r�   r‘   r¬  s         rE   Ú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   )rj   r.   rÂ   rü   )rÕ   Úcheck_splitsÚmax_train_sizer�   r‘   Úcheck_trainÚ
check_testÚsuffix_starts           rE   Ú!_check_time_series_max_train_sizer·  #  si   € Ü47¸ÀÓ4Mò >Ñ0‰ˆ�Ñ0˜ ZÜ˜4 Ô,Ü�;Ó >Ò1Ð1Ð1Üœ3˜u›:¨Ñ6¸Ó:ˆÜ˜;¨¨l¨mÐ(<Õ=ñ	>rZ   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<   rI   r™   )rx   r³  )r³  r5   r\   )rg   r
  r   rV   r·  )rW   rÕ   r²  s      rE   Ú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ÖMrZ   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©rG   r<   rI   )rx   r:   r   )r<   r5   rI   r·  ©rM   r\   r]   )r   r<   r5   rI   rM   r\   r]   ©r^   r_   r·   r5   rM   )rx   r:   r³  rö  r]   r^   )rM   r\   r]   r^   r_   r·   zToo many splits.*with test_sizere   r\   ©	rg   r
  r   rV   r¾   r.   rs   rt   ru   ©rW   rÕ   r�   r‘   s       rE   Ú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»  r5   )rx   Úgapr   r<   r¼  r®  r½  rI   )rx   rÂ  r³  rM   r\   r]   r^   r_   r·   )rx   rÂ  r³  r:   r·  rö  )rx   rÂ  r:   zToo many splits.*and gapre   r¾  r¿  s       rE   Útest_time_series_gaprÃ  ]  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        d¬«      t        dd¬«      g}t        |d«      D ]3  \  }}t        t        «       d	d
dgi|d¬«      }t        |||||d|i¬«       Œ5 y )Nr   r  r5   )rv   Ú	n_classesra   r\   r™   rI   )rx   ra   ÚstrategyÚ
stratifiedÚmost_frequentÚraise)Ú
param_gridrŽ   Úerror_scorerT   )rW   rX   rT   rŽ   Úparams)rg   r�   rž   r   rŸ   r   r   r   r   r   r   r   r   r   r   )r£   rW   rX   rT   ÚcvsÚinner_cvÚouter_cvÚgss           rE   Útest_nested_cvrÑ  –  sÔ   € ô �)‰)×
Ñ
 Ó
"€Cä¨°qÀqÔI�D€A€qØ�[‰[˜˜A˜rÓ"€Fô 	ÓÜ Ô#Ü‹Ü˜AÔÜÓÜ aÔ(Ü¨¸Ô:ð€Cô <¸CÀÓCò 	
Ñˆ�(ÜÜÓØ" \°?Ð$CÐDØØô	
ˆô 	Ø�!�q ¨H¸hÈÐ=Oö	
ñ	
rZ   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       rE   Ú__init__z.test_build_repr.<locals>.MockSplitter.__init__¶  s   € ØˆDŒFØˆDŒFØˆD�FrZ   c                 ó   — t        | «      S r@   )r    )rÖ  s    rE   Ú__repr__z.test_build_repr.<locals>.MockSplitter.__repr__»  s   € Ü˜tÓ$Ð$rZ   )r   N)rB   Ú
__module__Ú__qualname__r×  rÙ  r  rZ   rE   ÚMockSplitterrÔ  µ  s   „ ó	ó
	%rZ   rÜ  r\   r]   zMockSplitter(a=5, b=6, c=None))rr   )rÜ  s    rE   Útest_build_reprrÝ  ´  s)   € ÷%ñ %ô ‘˜Q Ó"Ó#Ð'GÒGÐGÑGrZ   Ú
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)NrA  r9   r<   r   ú[With n_samples=1, test_size=0.99 and train_size=None, the resulting train set will be emptyre   rS   )rs   rt   ru   r¾   rY   )rÞ  rŽ   rW   rX   s       rE   Ú!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à  re   rA  r9   z[With n_samples=3, test_size=0.67 and train_size=None, the resulting train set will be emptygq=
×£på?)rs   rt   ru   r   rû   s    rE   Ú$test_train_test_split_empty_trainsetrã  Ñ  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=1re   )r   rs   rt   ru   r¾   rV   ©rŽ   rW   rX   s      rE   Ú!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)Nr5   r6   r<   r   rI   z6p=2 must be strictly less than the number of samples=2re   )r   rs   rt   ru   r¾   rV   rå  s      rE   Ú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 Falsere   rI   Fr   r  )rs   rt   ru   )ré  s    rE   Ú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Ž   rI  s     rE   Útest_yields_constant_splitsrî    s   € ôL # 2Ó&¨(Ò2Ð2Ñ2rZ   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_routingrT   TrV   )ÚexcludeN)Úhasattrrð  ÚGROUP_SPLITTERSrV   ÚrequestsÚNO_GROUP_SPLITTERSr$   )rŽ   Úmetadatas     rE   Ú"test_splitter_get_metadata_routingr÷  +  sp   € ô �2Ð-Ô.Ð.Ð.Ø×&Ñ&Ó(€HØ	Œ_ÑØ�~‰~×&Ñ& xÑ0°DÑ8Ð8Ð8Ø	Ô!Ñ	!Ø—>‘>×*Ò*Ð*Ð*ä˜H¨w¨iÖ8rZ   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    rE   Útest_splitter_set_split_requestrú  8  s?   € ð 
Œ_ÑÜ�rÐ.Ô/Ð/Ñ/Ø	Ô!Ñ	!Ü˜2Ð2Ô3Ð3Ð3Ð3ð 
"rZ   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   rI   r5   r–   re   rS   )
rA   rB   rg   r�   rž   rŸ   rs   r¿   ÚUserWarningrV   )rŽ   r’   rv   r£   rW   rX   rT   s          rE   Ú)test_no_group_splitters_warns_with_groupsrý  A  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're   )rs   rt   rÆ   rV   rW   )rŽ   r’   s     rE   Ú"test_stratified_splitter_without_yrÿ  O  s7   € ð 8€CÜ	�‰”y¨Ô	,ñ Ø
�‰”Œ÷÷ ñ ús	   ž=½Ar@   )®Ú__doc__rý  rÃ   Ú	itertoolsr   r   r   Únumpyrg   rs   Úscipyr   Úscipy.sparser   Úscipy.specialr   Úsklearnr	   Úsklearn.datasetsr
   r   Úsklearn.dummyr   Úsklearn.model_selectionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úsklearn.model_selection._splitr    r!   r"   Úsklearn.svmr#   Ú%sklearn.tests.metadata_routing_commonr$   Úsklearn.utils._array_apir%   r&   r'   r(   r*   r%  Úsklearn.utils._mockingr+   Úsklearn.utils._testingr,   r-   r.   r/   Úsklearn.utils.estimator_checksr0   Úsklearn.utils.fixesr1   r2   r3   Úsklearn.utils.validationr4   rõ  ró  r«   rU   ÚALL_SPLITTERSÚSPLITTERS_REQUIRING_TARGETrÑ   rW   rÁ   rX   rh   rÎ  r>  ÚmarkÚfilterwarningsÚ
pytestmarkrY   r“   r©   r¯   rµ   rÍ   rÒ   rÖ   rÜ   Úparametrizerî   rø   r  r  r  r!  r/  r8  rC  rF  rL  ro   rP  rW  rm  ry  r…  r‡  r‹  rŽ  rš  rµ  r¹  r¾  rÂ  rÌ  rÙ  ré  rô  rû  rÿ  r  r  r  r  r  r  r  r  rU  r
  r5  r?  rC  rK  rO  rS  rc  re  rh  rj  rp  rx  r  r«  r°  r·  r¹  rÀ  rÃ  rÑ  rÝ  rá  rã  ræ  rè  rë  r�   rž   rî  r¢   r÷  rú  rý  rÿ  r<  s   0rE   ú<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óñ#óð#ð ‡�×ÑØ)Ù-Ó/Ø'ð ó ð
 ‡�×ÑØàØ	ˆ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"æ?g'