Ë
    ÷Q(h~q  ã                   ó¤	  — d dl mZ d dlZd dlZd dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ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 d d	lmZmZ d d
l m!Z!m"Z"  G d„ de«      Z# G d„ de«      Z$ejJ                  jM                  d«      ejJ                  jM                  d«      ejJ                  jM                  d«      ejJ                  jO                  deef«      ejJ                  jO                  dd«      d„ «       «       «       «       «       Z(ejJ                  jO                  deef«      ejJ                  jO                  dddddddg d¢g d¢fddddddg d ¢g d!¢fdd"ddddg d¢g d#¢fdd"ddddg d¢g d#¢fg«      d$„ «       «       Z)ejJ                  jO                  deef«      ejJ                  jO                  d%d&d'd(dd)d*gfd+d'd(dd+d,gfd&d-ddd)gfd.d'd(d(d/d0gfd.d1d(d(d/d0gfd.d0d(d(d/d0gfd.d2d(d(d3d2gfd.d4d(d(d5d6gfd.d7d(d(d8d7gfd.d*d(d(d)d*gfd.d+ddd)gfd.d)ddd)gfg«      d9„ «       «       Z*ejJ                  jO                  deef«      ejJ                  jO                  d:g d;¢«      d<„ «       «       Z+ejJ                  jO                  deef«      d=„ «       Z,ejJ                  jO                  d>g d?¢«      d@„ «       Z-ejJ                  jO                  dAdBdd(gid(fdB edd«      idCfg«      dD„ «       Z.ejJ                  jO                  deef«      ejJ                  jO                  dEdFdGidHfdBd8dIœdJfd'dKdLœdMfdNdOdPœdQfdR ed¬S«      idTfdR e«       idTfg«      dU„ «       «       Z/ejJ                  jO                  dEd.d.dVœdWfg«      dX„ «       Z0ejJ                  jO                  dYg dZ¢«      d[„ «       Z1ejJ                  jO                  d\d]«      d^„ «       Z2ejJ                  jO                  d_dd d`gfd(d dBd`gfdd g da¢fdCd g da¢fdddbgfd(ddcdbgfdCddcdbgfdd(ddgfdCd(g de¢fg	«      df„ «       Z3ejJ                  jO                  deef«      dg„ «       Z4ejJ                  jO                  deef«      dh„ «       Z5ejJ                  jO                  deef«      di„ «       Z6ejJ                  jO                  djeeg«      dk„ «       Z7ejJ                  jO                  djeeg«      dl„ «       Z8dm„ Z9y)né    )ÚceilN)ÚexponÚnormÚrandint)Úmake_classification)ÚDummyClassifier)Úenable_halving_search_cv)
Ú
GroupKFoldÚGroupShuffleSplitÚHalvingGridSearchCVÚHalvingRandomSearchCVÚKFoldÚLeaveOneGroupOutÚLeavePGroupsOutÚShuffleSplitÚStratifiedKFoldÚStratifiedShuffleSplit)Ú_SubsampleMetaSplitterÚ_top_k)Úcheck_cv_results_array_typesÚcheck_cv_results_keys)ÚSVCÚ	LinearSVCc            	       óÐ   ‡— e Zd ZU dZi ej
                  ¥ e ed«       ed«      dz   «      D � ��ci c]  }t        |«      d“Œ c}}} ¥Ze	e
d<   	 d	ˆfd„	Zd
ˆfd„	ZˆxZS c c}}} w )ÚFastClassifierz“Dummy classifier that accepts parameters a, b, ... z.

    These parameter don't affect the predictions and are useful for fast
    grid searching.ÚaÚzé   Úno_validationÚ_parameter_constraintsc                 ó*   •— t         ‰| �  |||¬«       y ©N)ÚstrategyÚrandom_stateÚconstant)ÚsuperÚ__init__)Úselfr#   r$   r%   ÚkwargsÚ	__class__s        €ús/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/model_selection/tests/test_successive_halving.pyr'   zFastClassifier.__init__0   s   ø€ ô 	‰ÑØ¨LÀ8ð 	õ 	
ó    c                 ó�   •— t         ‰| �  |¬«      }t        t        d«      t        d«      dz   «      D ]  }d|t	        |«      <   Œ |S )N)Údeepr   r   r   Úwhatever)r&   Ú
get_paramsÚrangeÚordÚchr)r(   r.   ÚparamsÚcharr*   s       €r+   r0   zFastClassifier.get_params7   sJ   ø€ Ü‘Ñ#¨Ð#Ó.ˆÜœ#˜c›(¤C¨£H¨q¡LÓ1ò 	+ˆDØ *ˆF”3�t“9Òð	+àˆr,   )Ú
stratifiedNN)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r1   r2   r3   ÚdictÚ__annotations__r'   r0   Ú__classcell__)Ú.0Úkeyr3   r*   s   000@r+   r   r   !   s~   ø… ñð$Ø
×
0Ñ
0ð$ñ ™S ›X¡s¨3£x°!¡|Ó4÷
ð 
àô �‹H�oÑ%ô
ð$Ð˜Dó ð BFõ
÷ñ ùô
s   ²A!
r   c                   óB   ‡ — e Zd Z	 	 	 	 	 	 	 dˆ fd„	Zˆ fd„Zˆ fd„Zˆ xZS )ÚSometimesFailClassifierc                 ób   •— || _         || _        || _        || _        t        ‰| �  |||¬«       y r"   )Úfail_fitÚfail_predictÚn_estimatorsr   r&   r'   )	r(   r#   r$   r%   rE   rC   rD   r   r*   s	           €r+   r'   z SometimesFailClassifier.__init__?   s<   ø€ ð !ˆŒØ(ˆÔØ(ˆÔØˆŒä‰ÑØ¨LÀ8ð 	õ 	
r,   c                 óR   •— | j                   rt        d«      ‚t        ‰| �  ||«      S )Nzfitting failed)rC   Ú	Exceptionr&   Úfit)r(   ÚXÚyr*   s      €r+   rH   zSometimesFailClassifier.fitR   s'   ø€ Ø�=Š=ÜÐ,Ó-Ð-Ü‰w‰{˜1˜aÓ Ð r,   c                 óP   •— | j                   rt        d«      ‚t        ‰| �  |«      S )Nzpredict failed)rD   rG   r&   Úpredict)r(   rI   r*   s     €r+   rL   zSometimesFailClassifier.predictW   s'   ø€ Ø×ÒÜÐ,Ó-Ð-Ü‰w‰˜qÓ!Ð!r,   )r6   NNé
   FFr   )r7   r8   r9   r'   rH   rL   r=   )r*   s   @r+   rA   rA   >   s.   ø„ ð ØØØØØØ
õ
ô&!÷
"ð "r,   rA   z+ignore::sklearn.exceptions.FitFailedWarningz!ignore:Scoring failed:UserWarningz%ignore:One or more of the:UserWarningÚHalvingSearchÚfail_at)rH   rL   c           	      óø  — d}t        |d¬«      \  }} | t        «       d|› �ddgdt        d«      id	d
dd¬«      }|j                  ||«       |j                  d|› �   rJ ‚|j
                  d   }|j
                  d   }t        j                  |«      j                  «       sJ ‚t        j                  |t        j                  |«         «      }|j                  d   dk(  sJ ‚|d   |k\  j                  «       sJ ‚y)z\Check the selection of the best scores in presence of failure represented by
    NaN values.éè  r   ©Ú	n_samplesr$   Úfail_FTr   é   rE   é   r   é   )ÚresourceÚmax_resourcesÚmin_resourcesÚfactorÚmean_test_scoreÚrank_test_scoreN)r   rA   r1   rH   Úbest_params_Úcv_results_ÚnpÚisnanÚanyÚuniqueÚshapeÚall)	rN   rO   rS   rI   rJ   ÚsearchÚscoresÚranksÚunique_nan_rankss	            r+   Útest_nan_handlingrj   ]   s  € ð €IÜ¨ÀÔC�D€A€qáÜÓ!Ø��	Ð	˜U D˜M¨3´°a³Ð9ØØØØô€Fð ‡J�Jˆq�!Ôð ×"Ñ" U¨7¨)Ð#4Ò5Ð5Ð5Ø×ÑÐ 1Ñ2€FØ×ÑÐ0Ñ1€Eô �8‰8�FÓ×ÑÔ!Ð!Ð!ä—y‘y ¤r§x¡x°Ó'7Ñ!8Ó9Ðà×!Ñ! !Ñ$¨Ò)Ð)Ð)à˜QÑ 5Ñ(×-Ñ-Ô/Ð/Ñ/r,   ÚEstzÄaggressive_elimination,max_resources,expected_n_iterations,expected_n_required_iterations,expected_n_possible_iterations,expected_n_remaining_candidates,expected_n_candidates,expected_n_resources,TÚlimitedé   rU   r   )é<   é   é   rU   )ro   ro   rn   é´   F)rn   ro   rp   )ro   rn   rq   Ú	unlimited)é%   éo   éM  éç  c	                 óJ  — d}	t        |	d¬«      \  }
}dt        t        d«      «      dœ}t        «       }|dk(  rd}n|	} | ||||d	¬
«      }|j	                  d¬«       | t
        u r|j	                  dd¬«       |j                  |
|«       |j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚t        |j                  d   |j                  z  «      |j                  k(  sJ ‚y )NrQ   r   rR   ©Úl1Úl2é   ©r   Úbrl   rq   rU   )Úaggressive_eliminationrY   r[   T)Úverbosern   Úexhaust©Ún_candidatesrZ   éÿÿÿÿ)r   Úlistr1   r   Ú
set_paramsr   rH   Ún_iterations_Ún_required_iterations_Ún_possible_iterations_Ún_resources_Ún_candidates_Ún_remaining_candidates_r   r[   )rk   r~   rY   Úexpected_n_iterationsÚexpected_n_required_iterationsÚexpected_n_possible_iterationsÚexpected_n_remaining_candidatesÚexpected_n_candidatesÚexpected_n_resourcesrS   rI   rJ   Ú
param_gridÚbase_estimatorÚshs                  r+   Útest_aggressive_eliminationr•   ƒ   s>  € ðR €IÜ¨ÀÔC�D€A€qØ#¬$¬u°R«y«/Ñ:€JÜ#Ó%€Nà˜	Ò!Ø‰à!ˆá	ØØØ5Ø#Øô
€Bð ‡M�M˜$€MÔà
Ô#Ñ#à
�‰ 6¸ˆÔCà‡F�Fˆ1ˆa„Là×ÑÐ4Ò4Ð4Ð4Ø×$Ñ$Ð(FÒFÐFÐFØ×$Ñ$Ð(FÒFÐFÐFØ�?‰?Ð2Ò2Ð2Ð2Ø×ÑÐ4Ò4Ð4Ð4Ø×%Ñ%Ð)HÒHÐHÐHÜ�× Ñ  Ñ$ r§y¡yÑ0Ó1°R×5OÑ5OÒOÐOÑOr,   zfmin_resources,max_resources,expected_n_iterations,expected_n_possible_iterations,expected_n_resources,ÚsmallestÚautorW   ro   rn   é2   é–   r{   r€   ru   rv   rQ   iX  éÈ   iW  éÇ   iU  i,  éd   c                 óÆ  — d}t        |d¬«      \  }}ddgg d¢dœ}	t        «       }
 | |
|	d||¬	«      }| t        u r|j                  d
¬«       |j	                  ||«       d}|j
                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚|dk(  r8|j                  |j
                  cxk(  rt        |j                  «      k(  sJ ‚ J ‚y y )NrQ   r   rR   r   rW   )r   rW   rU   r|   rU   )r[   rZ   rY   rV   ©r‚   r€   )
r   r   r   r…   rH   r†   r‡   rˆ   r‰   Úlen)rk   rZ   rY   rŒ   rŽ   r‘   rS   rI   rJ   r’   r“   r”   r�   s                r+   Útest_min_max_resourcesr    Î   s  € ðL €IÜ¨ÀÔC�D€A€qØ˜1�v¢IÑ.€JÜ#Ó%€Ná	ØØØØ#Ø#ô
€Bð Ô#Ñ#Ø
�‰ 1ˆÔ%à‡F�Fˆ1ˆa„Là%&Ð"Ø×ÑÐ4Ò4Ð4Ð4Ø×$Ñ$Ð(FÒFÐFÐFØ×$Ñ$Ð(FÒFÐFÐFØ�?‰?Ð2Ò2Ð2Ð2Ø˜	Ò!Ø×(Ñ(¨B×,<Ñ,<ÔTÄÀBÇOÁOÓ@TÒTÐTÑTÐTÑTð "r,   z2max_resources, n_iterations, n_possible_iterations)	)r—   é   é	   )é   r¡   r¢   )i¼  r¡   é   )é   r¡   r¤   )iÿ  r¡   rp   )é    rm   rm   )é   rU   rU   )é   rU   rU   )rm   r   r   c                 óL  — d}t        |d¬«      \  }}ddgt        t        d«      «      dœ}t        «       }d}	 | ||d|	|d¬«      }
| t        u r|
j                  d	¬
«       |
j                  ||«       |
j                  dk(  sJ ‚|
j                  |k(  sJ ‚|
j                  |k(  sJ ‚y )Nr£   r   rR   rW   rM   r|   rm   )Úcvr[   rY   rZ   ro   rž   r¡   )
r   r„   r1   r   r   r…   rH   r‡   r†   rˆ   )rk   rY   Ún_iterationsÚn_possible_iterationsrS   rI   rJ   r’   r“   r[   r”   s              r+   Útest_n_iterationsr­     s»   € ð( €IÜ¨ÀÔC�D€A€qØ˜1�v¤D¬¨r«£OÑ4€JÜ#Ó%€NØ€Fá	ØØØØØ#Øô
€Bð Ô#Ñ#Ø
�‰ 2ˆÔ&Ø‡F�Fˆ1ˆa„LØ×$Ñ$¨Ò)Ð)Ð)Ø×Ñ˜|Ò+Ð+Ð+Ø×$Ñ$Ð(=Ò=Ð=Ñ=r,   c                 óø  — d}t        |d¬«      \  }}ddgt        t        d«      «      dœ}t        «       } | ||dddd	¬
«      }|j	                  ||«       t        |j                  «      t        g d¢«      k(  sJ ‚t        |j                  d   |j                  d   |j                  d   «      D ]  \  }}}	||d   cxk(  r|	k(  rŒJ ‚ J ‚ t        j                  t        d¬«      5  t        ||ddd¬«      }|j	                  ||«       d d d «       t        j                  t        d¬«      5  ddgddgdd	gdœ}t        ||ddd¬«      }|j	                  ||«       d d d «       y # 1 sw Y   Œ\xY w# 1 sw Y   y xY w)NrQ   r   rR   r   rW   rM   r|   ÚcrU   )rª   rX   rY   r[   )r   rU   r¢   Ún_resourcesr4   Úparam_cz0Cannot use resource=1234 which is not supported ©ÚmatchÚ1234)rª   rX   rY   zSCannot use parameter c as the resource since it is part of the searched parameters.)r   r}   r¯   )r   r„   r1   r   rH   Úsetr‰   Úzipr_   ÚpytestÚraisesÚ
ValueErrorr   )
rk   rS   rI   rJ   r’   r“   r”   Úr_ir4   r±   s
             r+   Útest_resource_parameterr»   8  s�  € ð €IÜ¨ÀÔC�D€A€qØ˜1�v¤D¬¨r«£OÑ4€JÜ#Ó%€NÙ	ˆ^˜Z¨A¸È2ÐVWÔ	X€BØ‡F�Fˆ1ˆa„LÜˆr�‰Ó¤3¢y£>Ò1Ð1Ð1Ü #Ø
�‰�}Ñ%Ø
�‰�xÑ Ø
�‰�yÑ!ó!ò -ÑˆˆV�Wð
 �f˜S‘kÔ, WÓ,Ð,Ñ,Ð,Ð,ð-ô 
�‰ÜÐLô
ñ ô !Ø˜J¨1°vÈRô
ˆð 	�‰ˆq�!Œ÷ô 
�‰Üð*ô
ñ ð ˜q˜6¨¨A¨°a¸°VÑ<ˆ
Ü Ø˜J¨1°sÈ"ô
ˆð 	�‰ˆq�!Œ÷ð ÷ð ú÷ð ús   Ã&#E$Ä,/E0Å$E-Å0E9z2max_resources, n_candidates, expected_n_candidates))r¥   r€   é€   )r¦   r€   r¤   )r¦   r¤   r¤   )r¦   rp   rp   )r¦   r¢   r¢   c           	      óú   — d}t        |d¬«      \  }}t        t        dœ}t        «       }t        |||d| dd¬«      }|j	                  ||«       |j
                  d   |k(  sJ ‚|dk(  r|j                  d	   | k(  sJ ‚y y )
Nr£   r   rR   r|   rW   rm   )r‚   rª   rY   r[   rZ   r€   rƒ   )r   r   r   r   rH   rŠ   r‰   )	rY   r‚   r�   rS   rI   rJ   r’   r“   r”   s	            r+   Útest_random_searchr¾   `  s™   € ð €IÜ¨ÀÔC�D€A€qÜ¤$Ñ'€JÜ#Ó%€NÜ	ØØØ!ØØ#ØØô
€Bð ‡F�Fˆ1ˆa„LØ×Ñ˜AÑÐ"7Ò7Ð7Ð7Ø�yÒ ð �‰˜rÑ" mÒ3Ð3Ñ3ð !r,   z*param_distributions, expected_n_candidatesr   rM   c                 ó¤   — d}t        |d¬«      \  }}t        «       }t        || d¬«      }|j                  ||«       |j                  d   |k(  sJ ‚y )Nr£   r   rR   rM   rž   )r   r   r   rH   rŠ   )Úparam_distributionsr�   rS   rI   rJ   r“   r”   s          r+   Ú)test_random_search_discrete_distributionsrÁ   ƒ  sX   € ð" €IÜ¨ÀÔC�D€A€qÜ#Ó%€NÜ	˜~Ð/BÐQSÔ	T€BØ‡F�Fˆ1ˆa„LØ×Ñ˜AÑÐ"7Ò7Ð7Ñ7r,   zparams, expected_error_messagerX   Únot_a_parameterz:Cannot use resource=not_a_parameter which is not supported)rX   rY   z:Cannot use parameter a as the resource since it is part ofr}   )rY   rX   z:resource can only be 'n_samples' when max_resources='auto'é   é   )rZ   rY   z3min_resources_=15 is greater than max_resources_=14rª   )Úshufflezmust yield consistent foldsc                 óÖ   — t        «       }ddgi}t        d«      \  }} | ||fi |¤Ž}t        j                  t        |¬«      5  |j                  ||«       d d d «       y # 1 sw Y   y xY w©Nr   r   rœ   r²   )r   r   r·   r¸   r¹   rH   )rk   r4   Úexpected_error_messager“   r’   rI   rJ   r”   s           r+   Útest_input_errorsrÉ   œ  sg   € ô2 $Ó%€NØ˜�s�€JÜ˜sÓ#�D€A€qá	ˆ^˜ZÑ	2¨6Ñ	2€Bä	�‰”zÐ)?Ô	@ñ Ø
�‰ˆq�!Œ÷÷ ñ ús   ÁAÁA(r�   zcannot be both set to 'exhaust'c                 óÜ   — t        «       }ddgi}t        d«      \  }}t        ||fi | ¤Ž}t        j                  t
        |¬«      5  |j                  ||«       d d d «       y # 1 sw Y   y xY wrÇ   )r   r   r   r·   r¸   r¹   rH   )r4   rÈ   r“   r’   rI   rJ   r”   s          r+   Útest_input_errors_randomizedrË   ¿  sg   € ô $Ó%€NØ˜�s�€JÜ˜sÓ#�D€A€qä	˜~¨zÑ	D¸VÑ	D€Bä	�‰”zÐ)?Ô	@ñ Ø
�‰ˆq�!Œ÷÷ ñ ús   ÁA"Á"A+zAfraction, subsample_test, expected_train_size, expected_test_size))ç      à?Té(   rM   )rÌ   FrÍ   ro   )çš™™™™™É?Tr¨   rm   )rÎ   Fr¨   ro   c                 óœ  — d}t        |«      \  }}t        t        d«      | |d ¬«      }|j                  ||«      D ]�  \  }}	|j                  d   |k(  sJ ‚|	j                  d   |k(  sJ ‚|r1|j                  d   |	j                  d   z   t        || z  «      k(  rŒ_J ‚|	j                  d   ||j                  j                  «       z  k(  rŒ�J ‚ y )Nrœ   r¡   ©Úbase_cvÚfractionÚsubsample_testr$   r   )r   r   r   Úsplitrd   ÚintrÑ   Úget_n_splits)
rÒ   rÓ   Úexpected_train_sizeÚexpected_test_sizerS   rI   rJ   rª   ÚtrainÚtests
             r+   Útest_subsample_splitter_shapesrÛ   Õ  sØ   € ð €IÜ˜yÓ)�D€A€qÜ	Ü�a“ØØ%Øô	
€Bð —x‘x  1“~ò K‰ˆˆtØ�{‰{˜1‰~Ð!4Ò4Ð4Ð4Ø�z‰z˜!‰}Ð 2Ò2Ð2Ð2ÙØ—;‘;˜q‘> D§J¡J¨q¡MÑ1´S¸ÀXÑ9MÓ5NÓNÐNÐNà—:‘:˜a‘= I°·±×1HÑ1HÓ1JÑ$JÓJÐJÐJñKr,   rÓ   )TFc                 óÞ  — d}t        |«      \  }}t        t        d«      d| d ¬«      }t        |j	                  ||d ¬«      «      }t        |j	                  ||d ¬«      «      }t        ||«      D ]|  \  \  }}\  }	}
t        j                  ||	k(  «      rJ ‚| rt        j                  ||
k(  «      sŒAJ ‚t        j                  ||
k(  «      sJ ‚t        j                  ||   ||
   k(  «      rŒ|J ‚ y )Nrœ   r¡   rÌ   rÐ   ©Úgroups)r   r   r   r„   rÔ   r¶   r`   re   )rÓ   rS   rI   rJ   rª   Úfolds_aÚfolds_bÚtrain_aÚtest_aÚtrain_bÚtest_bs              r+   Ú#test_subsample_splitter_determinismrå   ö  sï   € ð €IÜ˜yÓ)�D€A€qÜ	Ü�a“ 3°~ÐTXô
€Bô �2—8‘8˜A˜q¨�8Ó.Ó/€GÜ�2—8‘8˜A˜q¨�8Ó.Ó/€Gä03°G¸WÓ0Eò 2Ñ,Ñˆ�&Ñ,˜G VÜ—6‘6˜' WÑ,Ô-Ð-Ð-áÜ—v‘v˜f¨Ñ.Õ/Ð/Ð/ä—6‘6˜& FÑ*Ô+Ð+Ð+Ü—6‘6˜!˜F™) q¨¡yÑ0Õ1Ð1Ð1ñ2r,   zk, itr, expectedr¯   )Údr}   r   r¯   ÚeÚfÚi)ÚgÚhré   c                 ól   — g d¢g d¢g d¢dœ}t        || |¬«      }t        j                  ||k(  «      sJ ‚y )N©	r   r   r   r   r   r   rW   rW   rW   ©	rm   rU   r¡   r   é   rM   r¡   rV   r¢   ©	r   r}   r¯   ræ   rç   rè   rê   rë   ré   ©Úiterr\   r4   )ÚkÚitr)r   r`   re   )ró   rô   ÚexpectedÚresultsÚgots        r+   Ú
test_top_krø     s:   € ò  ,Ú8Ú?ñ€Gô
 �˜A 3Ô
'€CÜ�6‰6�#˜‘/Ô"Ð"Ñ"r,   c                 óê  ‡— t        j                  d«      }t        j                  j	                  d«      Šd}t        |d¬«      \  }}dt        t        d«      «      dœ}t        «       }ˆfd„} | ||d	|¬
«      }| t        u r|j                  dd¬«       |j                  ||«       t        |j                  d   t        j                  «      sJ ‚t        |j                  d   t        j                  «      sJ ‚|j                  |j                  «      }	t!        |	d   j#                  «       «      t!        |	«      k(  sJ ‚|	d   j%                  t&        «      |	d<   |	j)                  ddd¬«      }
|j+                  |
«      }|j,                  }t        |dz
  «      D ]¨  }||   }|||dz      z  |k(  j/                  «       sJ ‚| ||dz      z  }| | z  }|j1                  «       |j2                  |dz      k(  sJ ‚|
|   j5                  |«      j7                  «       }|
|   j5                  |«      j9                  «       }||k  rŒ¨J ‚ |	d   j7                  «       }|	|	d   |k(     d   j;                  «       }|	d   j;                  «       }|j<                  |	j>                  |   d   k(  sJ ‚|	j>                  |   d   |	j>                  |   d   k  sJ ‚|	j>                  |   d   |	j>                  |   d   k7  sJ ‚y )NÚpandasr   rQ   rR   rx   r{   r|   c                 ó$   •— ‰j                  «       S )N)Úrand)ÚestrI   rJ   Úrngs      €r+   Úscorerztest_cv_results.<locals>.scorer=  s   ø€ Ø�x‰x‹zÐr,   rW   )r[   Úscoringrn   r€   r�   rò   r°   r\   r4   Ú
params_str)ÚindexÚcolumnsÚvaluesr   ) r·   Úimportorskipr`   ÚrandomÚRandomStater   r„   r1   r   r   r…   rH   Ú
isinstancer_   ÚndarrayÚ	DataFramerŸ   rc   ÚapplyÚstrÚpivotÚisnar†   re   ÚsumrŠ   ÚwhereÚmaxÚminÚidxmaxr^   Úiloc)rk   ÚpdrS   rI   rJ   r’   r“   rÿ   r”   Úcv_results_dfÚtableÚnan_maskÚn_iterÚitÚalready_discarded_maskÚdiscarded_now_maskÚ	kept_maskÚdiscarded_max_scoreÚkept_min_scoreÚ	last_iterÚidx_best_last_iterÚidx_best_all_itersrþ   s                         @r+   Útest_cv_resultsr#  -  s,  ø€ ô
 
×	Ñ	˜XÓ	&€Bä
�)‰)×
Ñ
 Ó
"€Cà€IÜ¨ÀÔC�D€A€qØ#¬$¬u°R«y«/Ñ:€JÜ#Ó%€Nôñ 
ˆ^˜Z°¸6Ô	B€BØ
Ô#Ñ#à
�‰ 6¸ˆÔCà‡F�Fˆ1ˆa„Lô �b—n‘n VÑ,¬b¯j©jÔ9Ð9Ð9Ü�b—n‘n ]Ñ3´R·Z±ZÔ@Ð@Ð@à—L‘L §¡Ó0€Mô ˆ}Ð.Ñ/×6Ñ6Ó8Ó9¼SÀÓ=OÒOÐOÐOà"/°Ñ"9×"?Ñ"?ÄÓ"D€M�,ÑØ×ÑØ FÐ3Dð  ó €Eð& �w‰w�u‹~€HØ×Ñ€FÜ�F˜Q‘JÓò 4ˆØ!)¨"¡Ðð
 # X¨b°1©fÑ%5Ñ5Ð9OÑOß
‰#‹%ðð 	ð ð
 5Ð4°xÀÀQÁÑ7GÑGÐØ+Ð+Ð/AÐ.AÑAˆ	Ø�}‰}‹ "×"2Ñ"2°2¸±6Ñ":Ò:Ð:Ð:ð $ B™iŸo™oÐ.@ÓA×EÑEÓGÐØ˜r™Ÿ™¨Ó3×7Ñ7Ó9ˆØ" ^Ó3Ð3Ð3ð%4ð4 ˜fÑ%×)Ñ)Ó+€IØ& }°VÑ'<À	Ñ'IÑJØñç�fƒhð ð 'Ð'8Ñ9×@Ñ@ÓBÐà�?‰?˜m×0Ñ0Ð1CÑDÀXÑNÒNÐNÐNà×ÑÐ-Ñ.Ð/@ÑAØ
×
Ñ
Ð/Ñ
0Ð1BÑ
Cò	Dðð	Dð 	×ÑÐ-Ñ.¨xÑ8Ø×ÑÐ0Ñ1°(Ñ;ò	<ðñ	<r,   c                 ó|  ‡‡‡— t        j                  d«      }g Šg Šg Š G ˆˆˆfd„dt        «      }d}d}t        |d¬«      \  }}dt	        t        d	«      «      d
œ} |«       } | ||d|dd¬«      }	| t        u r|	j                  dd¬«       |	j                  ||«       t        ‰«      t        ‰«      k(  sJ ‚t        ‰‰«      D �
�cg c]
  \  }
}|
|z   ‘Œ }}
}|d d |…   }‰d d |…   Š|j                  |	j                  «      }t        ‰«      t        |«      cxk(  rt        |«      k(  sJ ‚ J ‚t        j                  |d¬«      \  }}|	j                  |k(  j!                  «       sJ ‚|	j"                  |k(  j!                  «       sJ ‚|d   ‰k(  j!                  «       sJ ‚|d   |k(  j!                  «       sJ ‚y c c}}
w )Nrú   c                   ó:   •‡ — e Zd Zˆ ˆfd„Zˆ ˆfd„Zˆ ˆfd„Zˆ xZS )ú=test_base_estimator_inputs.<locals>.FastClassifierBookKeepingc                 ó`   •— ‰j                  |j                  d   «       t        ‰| �  ||«      S ©Nr   )Úappendrd   r&   rH   )r(   rI   rJ   r*   Úpassed_n_samples_fits      €€r+   rH   zAtest_base_estimator_inputs.<locals>.FastClassifierBookKeeping.fit�  s*   ø€ Ø ×'Ñ'¨¯©°©
Ô3Ü‘7‘;˜q !Ó$Ð$r,   c                 ó^   •— ‰j                  |j                  d   «       t        ‰| �  |«      S r(  )r)  rd   r&   rL   )r(   rI   r*   Úpassed_n_samples_predicts     €€r+   rL   zEtest_base_estimator_inputs.<locals>.FastClassifierBookKeeping.predict¡  s(   ø€ Ø$×+Ñ+¨A¯G©G°A©JÔ7Ü‘7‘? 1Ó%Ð%r,   c                 óD   •— ‰j                  |«       t        ‰| �  di |¤ŽS )N© )r)  r&   r…   )r(   r4   r*   Úpassed_paramss     €€r+   r…   zHtest_base_estimator_inputs.<locals>.FastClassifierBookKeeping.set_params¥  s$   ø€ Ø× Ñ  Ô(Ü‘7Ñ%Ñ/¨Ñ/Ð/r,   )r7   r8   r9   rH   rL   r…   r=   )r*   r*  r,  r/  s   @€€€r+   ÚFastClassifierBookKeepingr&  œ  s   ù„ õ	%õ	&÷	0ñ 	0r,   r0  r£   rW   r   rR   rx   r{   r|   F)r[   rª   Úreturn_train_scoreÚrefitrn   r€   r�   T)Úreturn_countsr4   r°   )r·   r  r   r   r„   r1   r   r…   rH   rŸ   r¶   r
  r_   r`   rc   r‰   re   rŠ   )rk   r  r0  rS   Ún_splitsrI   rJ   r’   r“   r”   ÚxÚpassed_n_samplesr  ÚuniquesÚcountsr*  r,  r/  s                  @@@r+   Útest_base_estimator_inputsr9  ’  sÜ  ú€ ô 
×	Ñ	˜XÓ	&€BàÐØ!ÐØ€M÷0ð 0¤Nô 0ð €IØ€HÜ¨ÀÔC�D€A€qØ#¬$¬u°R«y«/Ñ:€JÙ.Ó0€Ná	ØØØØØ Øô
€Bð Ô#Ñ#à
�‰ 6¸ˆÔCà‡F�Fˆ1ˆa„LäÐ#Ó$¬Ð,DÓ(EÒEÐEÐEäÐ 4Ð6NÓO÷Ù�1�aˆˆA‹ðÐñ ð (©
¨(¨
Ñ3ÐØ!¡* H *Ñ-€Mà—L‘L §¡Ó0€Mäˆ}Ó¤Ð%5Ó!6ÔL¼#¸mÓ:LÒLÐLÑLÐLÐLä—i‘iÐ 0ÀÔE�O€GˆVØ�O‰O˜wÑ&×+Ñ+Ô-Ð-Ð-Ø×Ñ Ñ&×+Ñ+Ô-Ð-Ð-à˜(Ñ# }Ñ4×9Ñ9Ô;Ð;Ð;Ø˜-Ñ(Ð,<Ñ<×AÑAÔCÐCÑCùó)s   ÃF8c                 óL  — t         j                  j                  d«      }t        ddd¬«      \  }}|j	                  ddd«      }t        d¬«      }ddgi}t        «       t        d«      t        d¬	«      t        d¬«      g}d
}|D ]X  }	 | |||	d¬«      }
t        j                  t        |¬«      5  |
j                  ||«       d d d «       |
j                  |||¬«       ŒZ t        «       t        d¬«      g}|D ]  }	 | |||	¬«      }
|
j                  ||«       Œ! y # 1 sw Y   ŒZxY w)Nr   r˜   rW   )rS   Ú	n_classesr$   rU   )r$   ÚCr   )r4  z*The 'groups' parameter should not be None.)rª   r$   r²   rÝ   )rª   )r`   r  r  r   r   r   r   r   r
   r   r·   r¸   r¹   rH   r   r   )rk   rþ   rI   rJ   rÞ   ÚclfÚgridÚ	group_cvsÚ	error_msgrª   ÚgsÚnon_group_cvss               r+   Útest_groups_supportrC  Õ  s  € ô
 �)‰)×
Ñ
 Ó
"€Cä¨°qÀqÔI�D€A€qØ�[‰[˜˜A˜rÓ"€Fä
 Ô
#€CØ�!�ˆ:€Dô 	ÓÜ˜ÓÜ˜AÔÜ qÔ)ð	€Ið =€IØò $ˆÙ��d˜r°Ô2ˆÜ�]‰]œ:¨YÔ7ñ 	Ø�F‰F�1�aŒL÷	à
�‰ˆq�!˜FˆÕ#ð	$ô %Ó&Ô(>ÈAÔ(NÐO€MØò ˆÙ��d˜rÔ"ˆà
�‰ˆq�!�ñ÷	ð 	ús   Â.DÄD#	ÚSearchCVc                 ó
  — t        «       }ddgi}t        j                  d«      j                  dd«      } | ||d¬«      }d}t	        j
                  t        |¬«      5  |j                  |g «       d	d	d	«       y	# 1 sw Y   y	xY w)
zBCheck that we raise an error if the minimum resources is set to 0.r   r   r   rU   r–   )rZ   z;min_resources_=0: you might have passed an empty dataset X.r²   N)r   r`   ÚemptyÚreshaper·   r¸   r¹   rH   )rD  r“   r’   rI   rf   Úerr_msgs         r+   Útest_min_resources_nullrI  ö  su   € ô $Ó%€NØ˜�s�€JÜ
�‰�‹×Ñ˜A˜qÓ!€Aá�n jÀ
ÔK€FàK€GÜ	�‰”z¨Ô	1ñ Ø�
‰
�1�bÔ÷÷ ñ ús   ÁA9Á9Bc                 óÂ   — t        j                  g d¢«      t        j                  g d¢«      t        j                  g d¢«      dœ}| j                  dd|«      }|dk(  sJ ‚y)z3Check the selection strategy of the halving search.rí   rî   rð   rñ   Nr¤   )r`   ÚarrayÚ_select_best_index)rD  rö   Ú
best_indexs      r+   Útest_select_best_indexrN    sT   € ô —‘Ò4Ó5ÜŸ8™8Ò$AÓBÜ—(‘(ÒHÓIñ€Gð ×,Ñ,¨T°4¸ÓA€JØ˜Š?Ð‰?r,   c                  óÔ  ‡	— t        ddd¬«      \  } }dgt        d¬«      t        d¬«      d	œd
gddgdœg}d}d}d}t        t        «       d|dd¬«      }|j	                  | |«       t        |j                  «      }|j                  Š	t        ‰	||||«       dddddœ}t        ||||«       t        ˆ	fd„t        |«      D «       «      sJ ‚t        ˆ	fd„t        |«      D «       «      sJ ‚y)zqCheck the behaviour of the `HalvingRandomSearchCV` with `param_distribution`
    being a list of dictionary.
    r™   rm   é*   )rS   Ú
n_featuresr$   ÚrbfrM   )Úscalegš™™™™™¹?)Úkernelr<  ÚgammaÚpolyrW   rU   )rT  Údegree)Úparam_CÚparam_degreeÚparam_gammaÚparam_kernel)r\   Úmean_train_scorer]   Úsplit0_test_scoreÚsplit1_test_scoreÚsplit2_test_scoreÚsplit0_train_scoreÚsplit1_train_scoreÚsplit2_train_scoreÚstd_test_scoreÚstd_train_scoreÚmean_fit_timeÚstd_fit_timeÚmean_score_timeÚstd_score_time)r°   rò   Tr   )rª   rÀ   r1  r$   rè   ré   ÚOc              3   óª   •K  — | ]J  }‰d    |   dk(  r=‰d   j                   |   xr' ‰d   j                   |   xr ‰d   j                   |    –— ŒL y­w)r[  rV  rX  rZ  rY  N©Úmask©r>   ré   Ú
cv_resultss     €r+   ú	<genexpr>z;test_halving_random_search_list_of_dicts.<locals>.<genexpr>G  su   øè ø€ ò ð Ø�nÑ% aÑ(¨FÒ2ð �yÑ!×&Ñ& qÑ)ò 7Ø˜=Ñ)×.Ñ.¨qÑ1ò7à˜~Ñ.×3Ñ3°AÑ6Ð6ó7ñùs   ƒAAc              3   ó¬   •K  — | ]K  }‰d    |   dk(  r>‰d   j                   |    xr' ‰d   j                   |    xr ‰d   j                   |   –— ŒM y­w)r[  rR  rX  rZ  rY  Nrk  rm  s     €r+   ro  z;test_halving_random_search_list_of_dicts.<locals>.<genexpr>P  sx   øè ø€ ò ð Ø�nÑ% aÑ(¨EÒ1ð ˜9Ñ%×*Ñ*¨1Ñ-Ð-ò 3Ø˜}Ñ-×2Ñ2°1Ñ5Ð5ò3à˜>Ñ*×/Ñ/°Ñ2ó3ñùs   ƒAAN)r   r   r   r   rH   r  rŠ   r_   r   r   re   r1   )
rI   rJ   r4   Ú
param_keysÚ
score_keysÚ
extra_keysrf   r‚   Úexpected_cv_results_kindsrn  s
            @r+   Ú(test_halving_random_search_list_of_dictsru    s#  ø€ ô ¨¸ÈÔL�D€A€qð �7¤¨R¤¼5ÀsÔ;KÑLØ�8¨¨1 vÑ.ð€Fð€Jð€Jð" )€Jä"Ü‹�!¨ÀDÐWXô€Fð ‡J�Jˆq�!ÔÜ�v×+Ñ+Ó,€LØ×#Ñ#€Jä˜* j°*¸lÈJÔWàØØØñ	!Ðô !Ø�
˜JÐ(Aôô ó ô �|Ó$ôô ð ð ô ó ô �|Ó$ôô ð ñ r,   ):Úmathr   Únumpyr`   r·   Úscipy.statsr   r   r   Úsklearn.datasetsr   Úsklearn.dummyr   Úsklearn.experimentalr	   Úsklearn.model_selectionr
   r   r   r   r   r   r   r   r   r   Ú2sklearn.model_selection._search_successive_halvingr   r   Ú)sklearn.model_selection.tests.test_searchr   r   Úsklearn.svmr   r   r   rA   ÚmarkÚfilterwarningsÚparametrizerj   r•   r    r­   r»   r¾   rÁ   rÉ   rË   rÛ   rå   rø   r#  r9  rC  rI  rN  ru  r.  r,   r+   ú<module>rƒ     sv  ðÝ ã Û ß ,Ñ ,å 0Ý )Ý 9÷÷ ÷ ÷÷÷ 'ô�_ô ô:"˜oô "ð> ‡�×ÑÐIÓJØ‡�×ÑÐ?Ó@Ø‡�×ÑÐCÓDØ‡�×Ñ˜Ð+>Ð@UÐ*VÓWØ‡�×Ñ˜Ð$6Ó7ñ0ó 8ó Xó Eó Aó Kð
0ðB ‡�×Ñ˜Ð!4Ð6KÐ LÓMØ‡�×Ñð	 ð 
ˆy˜!˜Q  1¢nÒ6GÐHð 
�	˜1˜a  A¢{²MÐBð 
ˆ{˜A˜q ! QªÒ8KÐLØ	�˜Q  1 aªÒ9LÐMðóñ6,Pó7ó Nð8,Pð^ ‡�×Ñ˜Ð!4Ð6KÐ LÓMØ‡�×Ñð	 ð 
�V˜Q  B¨ 8Ð,à	ˆV�Q˜˜B ˜9Ð%à	�R˜˜A ˜tÐ$à	�F˜A˜q 3¨ *Ð-Ø	�D˜!˜Q  c 
Ð+Ø	�C˜˜A  S˜zÐ*Ø	�C˜˜A  S˜zÐ*Ø	�C˜˜A  S˜zÐ*Ø	�C˜˜A  S˜zÐ*Ø	�B˜˜1˜r 2˜hÐ'Ø	�B˜˜1˜r˜dÐ#Ø	�B˜˜1˜r˜dÐ#ð!óñ6!Uó7ó Nð8!UðH ‡�×Ñ˜Ð!6Ð8KÐ LÓMØ‡�×ÑØ8òóñ>óó Nð >ð4 ‡�×Ñ˜Ð!6Ð8KÐ LÓMñ$ó Nð$ðN ‡�×ÑØ8òó	ñ4ó	ð4ð2 ‡�×ÑØ0à
��1ˆvˆ˜ÐØ
‰w�q˜!‹}Ð	˜rÐ"ðóñ8óð8ð$ ‡�×Ñ˜Ð!4Ð6KÐ LÓMØ‡�×ÑØ$ð Ð*Ð+ØHð	
ð
 ¨sÑ3ØHð	
ð
 %°#Ñ6ØHð	
ð
 !°2Ñ6ØAð	
ð ‘˜dÔ#Ð	$Ð&CÐDØ
‘“Ð	Ð!>Ð?ð%óñ.ó/ó Nð0ð ‡�×ÑØ$ð '¸ÑCØ-ð	
ðóñ
óð
ð ‡�×ÑØGòóñKóðKð0 ‡�×ÑÐ)¨=Ó9ñ2ó :ð2ð< ‡�×ÑØà	
ˆA�ˆuˆØ	
ˆA��SˆzÐØ	
ˆAÒ#Ð$Ø	ˆQÒ$Ð%Ø	
ˆA�ˆuˆØ	
ˆA��SˆzÐØ	ˆQ��c�
ÐØ	
ˆA�ˆuˆØ	ˆQ’Ð ð
óñ#óð#ð ‡�×Ñ˜Ð!6Ð8KÐ LÓMñaó NðaðH ‡�×Ñ˜Ð!4Ð6KÐ LÓMñ?Dó Nð?DðD ‡�×Ñ˜Ð!4Ð6KÐ LÓMñó Nðð@ ‡�×Ñ˜Ð&;Ð=PÐ%QÓRñ
ó Sð
ð ‡�×Ñ˜Ð&9Ð;PÐ%QÓRñ
ó Sð
óFr,   