o
    \i                    @   s  d Z ddlZddlZddlZddlZddlmZmZ 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ZddlZddlmZmZmZ dd	lmZ dd
lmZmZmZmZ ddlm Z  ddl!m"Z" ddl#m$Z$m%Z%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA ddlBmCZC ddlDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQ ddlRmSZSmTZT ddlUmVZV ddlWmXZX ddlYmZZZm[Z[m\Z\ ddl]m^Z^m_Z_ ddl`maZambZbmcZcmdZd ddlemfZfmgZg dd lhmiZimjZjmkZk dd!llmmZmmnZn dd"lompZpmqZq dd#lrmsZsmtZt dd$lumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZ dd%lmZ dd&lmZ dd'lmZ G d(d) d)eeZG d*d+ d+egZed,d,gd-d,gd.d.gd/d.ggZeg d0Zd1d2 Zejd3eLe	eMd4d5gejd6ded7fd8dgidged9fd8died:fgd;d< Zd=d> Zd?d@ ZdAdB ZejdCeEeNgdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZejdZed[d\ ZejdZed]d^ Zd_d` Zdadb ZG dcdd ddeZejdedfdg Zdhdi Zdjdk Zejdld,d/gejdmeNeEgdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zd.ddZdd Zdd ZejdeEddd.d4giifeNdd.d4gid/dfgdd Zdd Zdd Zdd Zdd ZejdmeNem ddd4gideEem ddd4gidgdd Zdd ZejdeEe7 dg dideNe8 dg didgdd ZejdmeNe\ddddd4giddeEe\ddddd4giddgdd Zdd Zdd Zejddd Zdd Zdd Zdd Zdd Zdd ZG dd deZdd ZddÄ Zddń ZddǄ ZddɄ Zdd˄ Zdd̈́ Zddτ Zddф Zddӄ ZddՄ Zddׄ ZejdddgejdeEddg dڢiifeNdg dڢiddfgdd݄ Zdd߄ Zdd Zdd Zdd Zdd Zdd Zdd Zejdddgdd Zdd Zdd ZejdeEdddgifeNded.difgdd ZejdeEdddgifeNdeddifgdd ZejdejdCeEeNgejdewevgdd Zejdddgd d ZejdeEdfeNdfeHdfgdd Zdd Zdd ZejdeEdfeNdfgedd	d
d ZejdeEdfeNdfeHdfgdd Zdd Zdd Zdd Zejjdeq epdejdCeEeNgdd Zea Zeb Zejjed/dedZded< ded.< ejdejd8d.id8d/igdejed.d/gfgddejd.ddd/dېdd8digdejeg d fd!ejjeg d"g d#d$fgd%dejd8d.gd/gdggid8d.gd/ggigdejjd.gd/gdggd.gd/ggged&fgd'dejd8did8digdefgd(dejd8eid8eigdejjeeged&fgd)dgd*d+ Zd,d- ZdS (/  zTest the search module    N)IterableSized)partial)StringIO)chainproduct)GeneratorType)	bernoulliexponuniform)config_context)BaseEstimatorClassifierMixincloneis_classifier)KMeans)ColumnTransformer)
make_blobsmake_classificationmake_multilabel_classification)LinearDiscriminantAnalysis)DummyClassifier)HistGradientBoostingClassifier)FitFailedWarning)enable_halving_search_cv)TfidfVectorizer)SimpleImputer)LinearRegressionLogisticRegressionRidgeSGDClassifier)accuracy_scoreconfusion_matrixf1_scoremake_scorerr2_scorerecall_scoreroc_auc_score)euclidean_distances)GridSearchCV
GroupKFoldGroupShuffleSplitHalvingGridSearchCVKFoldLeaveOneGroupOutLeavePGroupsOutParameterGridParameterSamplerRandomizedSearchCVStratifiedKFoldStratifiedShuffleSplittrain_test_split)BaseSearchCV"_yield_masked_array_for_each_param)OneTimeSplitter)ComplementNB)KernelDensityKNeighborsClassifierLocalOutlierFactor)Pipelinemake_pipeline)OneHotEncoderOrdinalEncoderSplineTransformerStandardScaler)SVC	LinearSVC)ConsumingScorer	_Registrycheck_recorded_metadata)DecisionTreeClassifierDecisionTreeRegressor)_get_namespace_device_dtype_ids)yield_namespace_device_dtype_combinations)CheckingClassifierMockDataFrame)
MinimalClassifierMinimalRegressorMinimalTransformer_array_api_for_testsassert_allcloseassert_allclose_dense_sparseassert_almost_equalassert_array_almost_equalassert_array_equalset_random_state)_enforce_estimator_tags_y)CSR_CONTAINERS)_num_samplesc                   @   sb   e Zd ZdZdddZdd Zdd Zd	d
 Zdd ZeZ	eZ
eZdddZdddZdd ZdS )MockClassifierz8Dummy classifier to test the parameter search algorithmsr   c                 C   
   || _ d S N	foo_param)selfr_    ra   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/model_selection/tests/test_search.py__init__p      
zMockClassifier.__init__c                 C   s$   t |t |ks
J t|| _| S r]   )lennpuniqueclasses_r`   XYra   ra   rb   fits   s   zMockClassifier.fitc                 C   s
   |j d S Nr   shape)r`   Tra   ra   rb   predictx   rd   zMockClassifier.predictc                 C   s
   || j  S r]   r^   r`   rj   ra   ra   rb   	transform{   rd   zMockClassifier.transformc                 C   s
   || j  S r]   r^   rr   ra   ra   rb   inverse_transform~   rd   z MockClassifier.inverse_transformNc                 C   s   | j dkr	d}|S d}|S )N         ?        r^   )r`   rj   rk   scorera   ra   rb   rx      s
   
zMockClassifier.scoreFc                 C   s
   d| j iS Nr_   r^   )r`   deepra   ra   rb   
get_params   rd   zMockClassifier.get_paramsc                 K   s   |d | _ | S ry   r^   )r`   paramsra   ra   rb   
set_params   s   
zMockClassifier.set_params)r   NN)F)__name__
__module____qualname____doc__rc   rl   rq   rs   rt   predict_probapredict_log_probadecision_functionrx   r{   r}   ra   ra   ra   rb   r[   m   s    


r[   c                   @   s   e Zd ZdZedd ZdS )LinearSVCNoScorez0A LinearSVC classifier that has no score method.c                 C   s   t r]   )AttributeErrorr`   ra   ra   rb   rx         zLinearSVCNoScore.scoreN)r   r   r   r   propertyrx   ra   ra   ra   rb   r      s    r   ru      )ru   ru   r   r   c                    s*   t   fddtt D ksJ d S )Nc                    s   g | ]} | qS ra   ra   .0igridra   rb   
<listcomp>       z3assert_grid_iter_equals_getitem.<locals>.<listcomp>)listrangere   r   ra   r   rb   assert_grid_iter_equals_getitem   s   *r   klass
   n_iterz input, error_type, error_messagez1Parameter .* a dict or a list, got: 0 of type intfooz Parameter .* is not a dict \(0\)z}Parameter (grid|distribution) for parameter 'foo' (is not|needs to be) (a list or a numpy array|iterable or a distribution).*c                 C   s<   t j||d | | W d    d S 1 sw   Y  d S )Nmatch)pytestraises)r   input
error_typeerror_messagera   ra   rb   test_validate_parameter_input   s   
"r   c                  C   s  dg di} t | }t|tsJ t|tsJ t|dks J t| ddgg dd}t |}t|dks9J tdD ]}td	d
 |D }|tdd
 t|d |d D ks\J q=t| t i }t|dksmJ t	|i gksvJ t| t
t |d  W d    n1 sw   Y  t dddgii ddgig}t|dksJ t	|ddiddii ddigksJ t| d S )Nr   ru   r      r      r   )hamspameggsr   bar   c                 s   s$    | ]}t tt|  V  qd S r]   )tupler   sorteditemsr   pra   ra   rb   	<genexpr>   s   " z&test_parameter_grid.<locals>.<genexpr>c                 s   s     | ]\}}d |d|fV  qdS )r   r   Nra   )r   xyra   ra   rb   r      s    
r   ru   Cr         ?)r0   
isinstancer   r   re   r   r   setr   r   r   r   
IndexError)params1grid1params2grid2r   pointsempty	has_emptyra   ra   rb   test_parameter_grid   s4   

$r   c                  C   s   t  } t| dg diddd}tj}t t_|tt |t_|jj	dks'J t
|jd jg d |tt |t |t |t d|_tt |tt W d    d S 1 saw   Y  d S )Nr_   r   r   r   cvverboseparam_foo_paramsklearn)r[   r)   sysstdoutr   rl   rj   r   best_estimator_r_   rV   cv_results_datarx   r   r   rs   scoringr   r   
ValueError)clfgrid_search
old_stdoutra   ra   rb   test_grid_search   s    


"r   c                  C   s   t dt fg} dt t gi}t| |dd}|tt |jd }t|d ts+J t|d ts4J t	|d dr=J t	|d drFJ |d |j
usOJ |d |j
usXJ t	|d d drcJ t	|d d drnJ d S )N	regressorr   r   param_regressorr   ru   coef_)r=   r   r   r)   rl   rj   r   r   r   hasattrr   )pipe
param_gridr   regressor_resultsra   ra   rb   test_grid_search_pipeline_steps   s   
r   SearchCVc                 C   s  t ddd}t dgd dgd  }tddgd}| |d	g d
iddd}d}tjt|d |j||t 	dd W d    n1 sHw   Y  d}tjt|d |j||t 	dt 
dd W d    n1 spw   Y  |j||t 	dt 
dd d S )Nd   r   r      ru   r   r   )expected_fit_paramsr_   r   r   raiser   error_scorez0Expected fit parameter\(s\) \['eggs'\] not seen.r   )r   z)Fit parameter spam has length 1; expected)r   r   )rf   arangereshapearrayrL   r   r   AssertionErrorrl   oneszeros)r   rj   r   r   searchererr_msgra   ra   rb   test_SearchCV_with_fit_params  s    "r   c                  C   s   t dd} tddd\}}g d}tdd}t| d|idd}||| t|d|idd}||| |j|jks<J ||||||ksJJ t|d|i}tjt	d	d
 |dgg W d    d S 1 skw   Y  d S )Nr   random_stater   r   centers皙?ru   r   r   accuracyr   z
no scoringr   ru   )
rD   r   r   r)   rl   best_params_rx   r   r   	TypeError)r   rj   r   Csclf_no_scorer   grid_search_no_scorera   ra   rb   test_grid_search_no_score  s   

"r   c                  C   s   t ddddd\} }tdd}ddgi}t||d d	| |}t||d
d	| |}tt |dd	| |}t||dd	| |}|| |}|| |}	|| |}
|| |}|dk s_J |	dk seJ ||	kskJ t|	| t||
 d S )Nr   r   皙?r   	n_samples	n_classesflip_yr   r   r   r   r   r   roc_aucrv   )r   rD   r)   rl   r   rx   rT   )rj   r   r   r   search_no_scoringsearch_accuracysearch_no_score_method_auc
search_aucscore_no_scoringscore_accuracyscore_no_score_auc	score_aucra   ra   rb   test_grid_search_score_method1  s(   


r  c               	   C   s   t jd} tdddd\}}| ddd}tdd}ddgi}t tdtdd	t	 g}d
}|D ].}t
|||d}	tjt|d |	|| W d    n1 sRw   Y  |	j|||d q1t t g}
|
D ]}t
|||d}	|	|| qhd S )Nr      r   )r   r   r   r   r   r   ru   n_splitsz*The 'groups' parameter should not be None.r   r   groups)rf   randomRandomStater   randintrD   r.   r/   r*   r+   r)   r   r   r   rl   r3   r4   )rngrj   r   r  r   r   	group_cvs	error_msgr   gsnon_group_cvsra   ra   rb   test_grid_search_groupsM  s,   

r  c                  C   s   t ddd} t dgd dgd  }g d}ttddd|i}|| | t|jj	|j	 tt
 d	d
dgi}|| | t|drIJ ttddd|i}t|drZJ ttddd|idd}|| | t|drsJ d S )Nr   r   r   r   ru   r   r   r   alpharv          @rh   F)refit)rf   r   r   r   r)   rD   rl   rV   r   rh   r   r   )rj   r   r   r   ra   ra   rb   test_classes__propertyl  s   r  c                  C   sh   t  } t| ddgidd}|tt t|dsJ t| ddgiddd}|tt t|ds2J d S )Nr_   ru   r   r   r   r   )r   r   )r[   r)   rl   rj   r   r   r2   )r   r   random_searchra   ra   rb   test_trivial_cv_results_attr  s   r  c            	   
   C   s@  t  } d ddgfD ]g}t| dg diddd}|tt t|ds,t|d	r,t|d
s.J dD ]?}d| d}d| d}tjt|d}t	||t W d    n1 sWw   Y  t
|jjtseJ |t|jjv soJ q0q	d}dD ](}tjt|d t| i |ddddtt W d    n1 sw   Y  qud S )Nr   	precisionr_   r   Fr   r  r   r   best_index_r   )rq   r   r   rs   rt   zhas no attribute ''z`refit=False`. z9 is available only after refitting on the best parametersr   zIFor multi-metric scoring, the parameter refit must be set to a scorer key)Trecallr   )accprec)r  r   )r[   r)   rl   rj   r   r   r   r   r   getattrr   value	__cause__strr   )	r   r   r   fn_name	outer_msg	inner_msg	exec_infor  r  ra   ra   rb   test_no_refit  s>   
r,  c                  C   sn   t dddd\} }t }t|dddgi}tt || d d | W d    d S 1 s0w   Y  d S )	N   r   r   r   
n_featuresr   r   r   rv      )r   rD   r)   r   r   r   rl   )X_y_r   r   ra   ra   rb   test_grid_search_error  s   "r3  c                  C   sr   t dddd\} }dgdgdgd}td	d
}t||}|| | tdddd}|| | t|j|jj d S )Nr-  r   r   r.  rv   rbfr   )r   kernelgammaautor6  )r   rC   r)   rl   rV   
dual_coef_r   )r1  r2  
param_dictr   r   ra   ra   rb   test_grid_search_one_grid_point  s   

r;  c                  C   sB   t  } d }t| dtddidd}|tt |jjdksJ d S )Nr_   ru   r   r   r   )r[   r)   r   rl   rj   r   r   r_   )r   r   ra   ra   rb   /test_grid_search_when_param_grid_includes_range  s
   r<  c                  C   s  t dddd\} }ddi}tdd}td	}t||}tjt|d
 || | W d    n1 s4w   Y  dg i}t }td}t||}tjt	|d
 || | W d    n1 sbw   Y  ddi}tdd}td}t||}tjt|d
 || | W d    n1 sw   Y  dt
di}t }t||}tt	 || | W d    d S 1 sw   Y  d S )Nr   r   r   r.  r   ru   r7  r8  zParameter grid for parameter 'C' needs to be a list or a numpy array, but got 1 (of type int) instead. Single values need to be wrapped in a list with one element.r   zIParameter grid for parameter 'C' need to be a non-empty sequence, got: []z1,2,3zParameter grid for parameter 'C' needs to be a list or a numpy array, but got '1,2,3' (of type str) instead. Single values need to be wrapped in a list with one element.)r   r   )r   rC   reescaper)   r   r   r   rl   r   rf   r   )rj   r   r:  r   r  searchra   ra   rb   test_grid_search_bad_param_grid  sD   





"r@  csr_containerc           	      C   s   t dddd\}}t }t|dddgi}||d d |d d  ||dd  }|jj}| |}t }t|dddgi}||d d  |d d  ||dd  }|jj}t	||kd	kshJ ||ksnJ d S )
Nr-  r   r   r.  r   r   rv   r0  g?)
r   rD   r)   rl   rq   r   r   tocoorf   mean)	rA  r1  r2  r   r   y_predr   y_pred2C2ra   ra   rb   test_grid_search_sparse  s    rG  c                 C   sN  t dddd\}}t }t|dddgidd	}||d d
 |d d
  ||d
d  }|jj}| |}t }t|dddgidd	}||d d
 |d d
  ||d
d  }|jj}t|| ||ksjJ dd }	t|	dd}
t|dddgi|
d	}||d d
 |d d
  ||d
d  }|jj}||ksJ t|| d S )Nr-  r   r   r.  r   r   rv   f1r   r0  c                 S   s   t | | S r]   )r#   )y_true_y_pred_ra   ra   rb   f1_loss3  s   z0test_grid_search_sparse_scoring.<locals>.f1_lossF)greater_is_better)	r   rD   r)   rl   rq   r   r   rV   r$   )rA  r1  r2  r   r   rD  r   rE  rF  rK  F1Lossy_pred3C3ra   ra   rb   test_grid_search_sparse_scoring  s,   
rP  c            	      C   s   t dddd\} }t| d d | d d j}|d d }tdd}t|dd	d
gi}||| |jdks9J t| dd  | d d j}|dd  }||}t	||kdks^J t
t || | W d    d S 1 sww   Y  d S )Nr-  r   r   r.  r0  precomputedr5  r   r   rv   )r   rf   dotrp   rC   r)   rl   best_score_rq   rC  r   r   r   tolist)	r1  r2  K_trainy_trainr   r   K_testy_testrD  ra   ra   rb   #test_grid_search_precomputed_kernel@  s   

"rZ  c                  C   sl   t d} t d}tdd}t|dddgi}tt || | W d    d S 1 s/w   Y  d S )N)r      )r   rQ  rR  r   r   rv   )	rf   r   r   rC   r)   r   r   r   rl   )rV  rW  r   r   ra   ra   rb   3test_grid_search_precomputed_kernel_error_nonsquare]  s   


"r\  c                   @   s*   e Zd ZdZd	ddZdd Zdd ZdS )
BrokenClassifierz*Broken classifier that cannot be fit twiceNc                 C   r\   r]   	parameterr`   r_  ra   ra   rb   rc   k  rd   zBrokenClassifier.__init__c                 C   s   t | drJ d| _d S )Nhas_been_fit_T)r   ra  r`   rj   r   ra   ra   rb   rl   n  s   
zBrokenClassifier.fitc                 C      t |jd S rm   rf   r   ro   rr   ra   ra   rb   rq   r     zBrokenClassifier.predictr]   )r   r   r   r   rc   rl   rq   ra   ra   ra   rb   r]  h  s
    
r]  z1ignore::sklearn.exceptions.UndefinedMetricWarningc                  C   sX   t ddd} t dgd dgd  }tt dddgigddd	}|| | d S )
Nr   r   r   r   ru   r_  r  Tr   r  )rf   r   r   r   r)   r]  rl   )rj   r   r   ra   ra   rb   
test_refitv  s   rg  c                  C   sd   dd } t dddd\}}ttdddg d	id
| d}||| |jdks)J t|dr0J dS )z^
    Test refit=callable, which adds flexibility in identifying the
    "best" estimator.
    c                 S   sr   t dddd\}}ttdddg didd	d
}||| |jdks%J |j D ]}|| v s2J q*| d  S )z
        A dummy function tests `refit=callable` interface.
        Return the index of a model that has the least
        `mean_test_score`.
        r   r   *   r.  r   r   {Gz?r   ru   r  Trf  r   mean_test_score)r   r)   rD   rl   r  r   keysargmin)
cv_resultsrj   r   r   keyra   ra   rb   refit_callable  s   
z+test_refit_callable.<locals>.refit_callabler   r   rh  r.  r   r   ri  r  rf  r   rT  N)r   r)   rD   rl   r  r   )rp  rj   r   r   ra   ra   rb   test_refit_callable  s   
rq  c                  C   sx   dd } t dddd\}}ttdddd	d
gid| d}tjtdd ||| W d   dS 1 s5w   Y  dS )zb
    Test implementation catches the errors when 'best_index_' returns an
    invalid result.
    c                 S      dS )zT
        A dummy function tests when returned 'best_index_' is not integer.
        Nra   rn  ra   ra   rb   refit_callable_invalid_type     zEtest_refit_callable_invalid_type.<locals>.refit_callable_invalid_typer   r   rh  r.  r   r   r   ru   r  rf  z&best_index_ returned is not an integerr   N)r   r)   rD   r   r   r   rl   )rt  rj   r   r   ra   ra   rb    test_refit_callable_invalid_type  s   
"rv  out_bound_value	search_cvc                    s|    fdd}t dddd\}}|tdddd	d
gid|d}tjtdd ||| W d   dS 1 s7w   Y  dS )zg
    Test implementation catches the errors when 'best_index_' returns an
    out of bound result.
    c                    s    S )zV
        A dummy function tests when returned 'best_index_' is out of bounds.
        ra   rs  rw  ra   rb   refit_callable_out_bound  ru  z?test_refit_callable_out_bound.<locals>.refit_callable_out_boundr   r   rh  r.  r   r   r   ru   r  rf  zbest_index_ index out of ranger   N)r   rD   r   r   r   rl   )rw  rx  rz  rj   r   r   ra   ry  rb   test_refit_callable_out_bound  s   
"r{  c                  C   sr   dd } t dddd\}}ttdd}ttdd	d
g di|| d}||| |jdks0J t|dr7J dS )zC
    Test refit=callable in multiple metric evaluation setting
    c                 S   s   d| v sJ | d   S )z
        A dummy function tests `refit=callable` interface.
        Return the index of a model that has the least
        `mean_test_prec`.
        mean_test_prec)rm  rs  ra   ra   rb   rp    s   z8test_refit_callable_multi_metric.<locals>.refit_callabler   r   rh  r.  r  )Accuracyr#  r   r   ri  rf  r   rT  N)r   r$   r!   r)   rD   rl   r  r   )rp  rj   r   r   r   ra   ra   rb    test_refit_callable_multi_metric  s   	
r~  c                  C   s   t ddddd} t dddd}d	d
 }dd }t||dgd}t|dg di}|| |tt t	|ds?J d S )N,  r   r   r   r   i        c                 S      | j dd  dkS )Nru   )r   r   r   rn   r   ra   ra   rb   check_X     z#test_gridsearch_nd.<locals>.check_Xc                 S   r  )Nru   )r  r  rn   r  ra   ra   rb   check_y  r  z#test_gridsearch_nd.<locals>.check_yrl   )r  r  methods_to_checkr_   r   r   )
rf   r   r   rL   r)   rl   rx   rj   r   r   )X_4dy_3dr  r  r   r   ra   ra   rb   test_gridsearch_nd   s   r  c                  C   s   t ddd} t dgd dgd  }tdd dgd	}td
d}t|dg di|d}||  |	| | t
|dsBJ d S )Nr   r   r   r   ru   c                 S   
   t | tS r]   r   r   r  ra   ra   rb   <lambda>     
 z test_X_as_list.<locals>.<lambda>rl   )r  r  r   r
  r_   r   r   r   rf   r   r   r   rL   r-   r)   rl   rU  rx   r   rj   r   r   r   r   ra   ra   rb   test_X_as_list     
r  c                  C   s   t ddd} t dgd dgd  }tdd dgd	}td
d}t|dg di|d}|| | 	| | t
|dsBJ d S )Nr   r   r   r   ru   c                 S   r  r]   r  r  ra   ra   rb   r  *  r  z test_y_as_list.<locals>.<lambda>rl   )r  r  r   r
  r_   r   r   r   r  r  ra   ra   rb   test_y_as_list$  r  r  c                     s   t t fg} zddlm}m} | ||f W n	 ty   Y nw tddd}t	dgd dgd  }| D ]>\  ||}} fdd}fd	d
}t
||d}	t|	dg di}
|
|||| |
| t|
dsvJ q8d S )Nr   )	DataFrameSeriesr   r   r   ru   c                    
   t |  S r]   r   r  )InputFeatureTypera   rb   check_dfD  rd   z#test_pandas_input.<locals>.check_dfc                    r  r]   r  r  )
TargetTypera   rb   check_seriesG  rd   z'test_pandas_input.<locals>.check_series)r  r  r_   r   r   )rM   pandasr  r  appendImportErrorrf   r   r   r   rL   r)   rl   rx   rq   r   )typesr  r  rj   r   X_dfy_serr  r  r   r   ra   )r  r  rb   test_pandas_input3  s&   

r  c                  C   s   t ddd\} }tdddd}ddg}d	D ]}t|tg d
d||d}|| | |jd dks3J qt|tg d
ddd}|| | |jd dksOJ t|tg d
dd}||  |jd dkshJ d S )N2   r   r   r   r  ru   )r   initn_initadjusted_rand_scorefowlkes_mallows_score)r  r  )r   r   r   )
n_clusters)r   r   r  r  r   r   r   r   r   )r   r   r)   dictrl   r   )rj   r   kmr   r  r   ra   ra   rb   test_unsupervised_grid_searchR  s"   
r  c                  C   st   dd } t ddddgddgddggd\}}tt tg dd| d	}|| |jd
 dks1J |jdks8J d S )Nc                 S   s   | j dkrdS dS )Nr   rh  r   	bandwidth)	estimatorrj   ra   ra   rb   custom_scoringq  r  z2test_gridsearch_no_predict.<locals>.custom_scoringr   ru   r   )cluster_stdr   r   ri  r  r  r  rh  )r   r)   r:   r  rl   r   rT  )r  rj   _r?  ra   ra   rb   test_gridsearch_no_predictn  s   $
r  c                  C   s   ddgt ddd} t| ddd}dd	 |D }t|dks J |D ]}|d
 dv s,J d|d   kr9dks<J  J q"dg di} t| ddd}dd	 |D dd	 |D ksZJ dt ddi} t| ddd}dd	 |D dd	 |D ksxJ d S )Nr4  linearr   ru   )r5  r   r   )param_distributionsr   r   c                 S      g | ]}|qS ra   ra   r   r   ra   ra   rb   r         z&test_param_sampler.<locals>.<listcomp>r5  )r4  r  r   )r   ru   r   r   r   r   r   r     	   r   r   c                 S   r  ra   ra   r  ra   ra   rb   r     r  c                 S   r  ra   ra   r  ra   ra   rb   r     r  )r   r1   re   )r  samplersamplessamplera   ra   rb   test_param_sampler  s&   " $r  c                    s   | j  t fdd|D sJ  fdd|D |ksJ t fdd|D r*J t fdd|D s7J | jr?| j ndg}|D ]} d|  jtjksRJ qDd S )	Nc                 3   "    | ]}t  | tjjV  qd S r]   r   rf   maMaskedArray)r   paramrs  ra   rb   r          z/check_cv_results_array_types.<locals>.<genexpr>c                    s   i | ]	}| | j jqS ra   )dtypekindr   ro  rs  ra   rb   
<dictcomp>  s    z0check_cv_results_array_types.<locals>.<dictcomp>c                 3   r  r]   r  r  rs  ra   rb   r     r  c                 3   s*    | ]}| d s | jtjkV  qdS )rankN)
startswithr  rf   float64r  rs  ra   rb   r     s    
rx   zrank_test_%s)	r   allanymultimetric_scorer_rl  r  rf   int32)r?  
param_keys
score_keysexpected_cv_results_kindsscorer_keysro  ra   rs  rb   check_cv_results_array_types  s   
r  ra   c                    sJ   || | }t t  t|d  t fdd|| D s#J d S )N)r|   c                 3   s     | ]} | j fkV  qd S r]   rn   r  rn  n_candra   rb   r     s    z(check_cv_results_keys.<locals>.<genexpr>)rV   r   rl  r  )rn  r  r  r  
extra_keysall_keysra   r  rb   check_cv_results_keys  s   $r  c                     sH  t dddd\} }d}tdgddgd	dgd
tdgddgdg}d}d}|}tt d|dd}|| | |j t d dksBJ  fdd|D sMJ  fdd|D sXJ ddddd}t|||| t ||| |j  fddt	|D }	t|	sJ t
|	dksJ  fddt	|D }
t|
sJ t
|
dksJ d S )Nr  r   rh  r.  r   r4  ru   r   r   r5  r   r6  polyr   r5  degreeparam_Cparam_degreeparam_gammaparam_kernelrk  mean_train_scorerank_test_score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_timer   T)r   r   return_train_scorer  c                 3   s(    | ]}|d krt  | dkV  qdS )r  r   Nr  r   krs  ra   rb   r     s   & z.test_grid_search_cv_results.<locals>.<genexpr>c                 3   s0    | ]}d |vr|dkrt  | dkV  qdS )timer  ru   Nr  r  rs  ra   rb   r     s    r   fOc                    sH   g | ] } d  | dkr d j | o! d j | o! d j |  qS )r  r  r  r  r  maskr   rs  ra   rb   r     s    z/test_grid_search_cv_results.<locals>.<listcomp>c                    sJ   g | ]!} d  | dkr d j |  o" d j |  o" d j | qS )r  r4  r  r  r  r  r   rs  ra   rb   r     s    )r   r  r)   rC   rl   r   r  r  r  r   re   )rj   r   n_grid_pointsr|   r  r  n_candidatesr?  r  poly_resultsrbf_resultsra   rs  rb   test_grid_search_cv_results  sZ   


	
	r  c            	         s   t dddd\} }d}dgtddtd	dd
dgddgdg}d}d}|}tt |d|dd}|| | |j ddddd}t|||| t ||| t fddt	|D s]J t fddt	|D slJ d S )Nr  r   rh  r.     r4  r   )scaler   r  r  r   r   r  r  r  T)r   r   r  r  r  r   r  c                 3   sL    | ]!} d  | dkr d j | o! d j | o! d j |  V  qdS )r  r  r  r  r  Nr  r   rs  ra   rb   r   A  s    z0test_random_search_cv_results.<locals>.<genexpr>c                 3   sN    | ]"} d  | dkr d j |  o" d j |  o" d j | V  qdS )r  r4  r  r  r  Nr  r   rs  ra   rb   r   J  s    )
r   r
   r2   rC   rl   r   r  r  r  r   )	rj   r   n_search_iterr|   r  r  r  r?  r  ra   rs  rb   test_random_search_cv_results  s@   	r  zSearchCV, specialized_paramsr   r   )r  r   c                    s  t ddgddgddgddggddddd\}}tj|jd td}d|t|dkd d d d < d|t|dkd d d d < || g| |gg}t |d	d
}| di ||  || t fddt	 j
D } jd d } jd d }	t fddt	 j
D }
 jd d } jd d } jd d dksJ t|ddg t|
ddg |tt|ksJ |	tt|ksJ |tdksJ |tdksJ d S )Nr   ru   r   FP   )r   r   r  shuffler   r  r   T)r  r   r  c                       g | ]} j d |  d qS )split%d_test_scorer   r   r   sr?  ra   rb   r   u      z+test_search_default_iid.<locals>.<listcomp>rk  r  c                    r
  )zsplit%d_train_scorer   r  r  r  ra   rb   r   ~  r  r  r  r  gUUUUUU?ra   )r   rf   r   ro   boolwhererC   rl   r   r   	n_splits_r   rR   r   approxrC  std)r   specialized_paramsrj   r   r  r   common_paramstest_cv_scores	test_meantest_stdtrain_cv_scores
train_mean	train_stdra   r  rb   test_search_default_iidU  sF   

	  

r  c                  C   s   t dddd\} }d}tdgddgd	dgd
tdgddgdg}g }ttttdddfD ]}tt |||dd}|| | || q.t	|  d S )Nr  r   rh  r.  r   r4  ru   r   r   r  r  r   r  r   r!  r   r!  F)r   r   r   r  )
r   r  r$   r!   r&   r)   rC   rl   r  *compare_cv_results_multimetric_with_single)rj   r   r  r|   grid_searchesr   r   ra   ra   rb   'test_grid_search_cv_results_multimetric  s2   r"  c                  C   s   t dddd\} }d}d}ttdddtjd	d
dddd}dD ]C}g }dD ].}|r7d}t|tr4dn|}nd}t|dd}	t|	|||||d
d}
|
| | |	|
 q't
|  t|d
 |d | q!d S )Nr  r   rh  r.  r   r  ru   r   r   )base)r   r6  TF)r  r   r!  Tr   F)probabilityr   )r   r   r  r   r  r   )r   r  rf   logspacer   r   rC   r2   rl   r  r   )compare_refit_methods_when_refit_with_acc)rj   r   r  r  r|   r  random_searchesr   r'  r   r  ra   ra   rb   )test_random_search_cv_results_multimetric  s8   $	r+  c                    s   | j sJ tt| jd | j dd |j D }|dd |j D  t fdddD s4J tj	
dd   D d	d | D  d
S )zCompare multi-metric cv_results with the ensemble of multiple
    single metric cv_results from single metric grid/random searchr  c                 S       i | ]\}}t d d||qS )_score$	_accuracyr=  subr   r  vra   ra   rb   r    s    z>compare_cv_results_multimetric_with_single.<locals>.<dictcomp>c                 S   r,  )r-  _recallr/  r1  ra   ra   rb   r         c                 3   s"    | ]}t  | d kV  qdS )ru   N)rf   r  r  cv_results_multira   rb   r     s
    
z=compare_cv_results_multimetric_with_single.<locals>.<genexpr>)r  r  r  r  c                 S       i | ]\}}| d s||qS _timeendswithr1  ra   ra   rb   r    r4  c                 S   r7  r8  r:  r1  ra   ra   rb   r    r4  N)r  rV   r   r  r   r   updater  rf   testingassert_equal)search_multi
search_acc
search_reccv_results_acc_recra   r5  rb   r     s$   

r   c                 C   s   |j |ksJ |r| j dksJ n| j rJ dS tdddd\}}dD ]}tt| ||t||| q#t| ||||| dD ]}t| |t||ksRJ qDdS )	zDCompare refit multi-metric search methods with single metric methodsr   Nr   r   rh  r.  )rq   r   r   )r  rT  r   )r  r   rT   r$  rx   )r?  r@  r  rj   r   methodro  ra   ra   rb   r)    s   
r)  	max_depthr   )r  r  r  r   c                 C   s   t dddd\}}| || d| jj d}d}tjt|d}| | W d    n1 s0w   Y  t|j	j
ts>J |t|j	j
ksHJ d S )	Nr   r   rh  r.  r   z"' has no attribute 'score_samples'z@'DecisionTreeClassifier' object has no attribute 'score_samples'r   )r   rl   	__class__r   r   r   r   score_samplesr   r%  r&  r'  )rx  rj   r   r)  r*  r+  ra   ra   rb   "test_search_cv_score_samples_error  s   rH  c                  C   s0  dd } t | }tdddd\}}t|}tt dddgid	}|j| d
 tjt	dd |j
|||d W d   n1 sAw   Y  |j|d
 tjt	dd |j
|||d W d   n1 sfw   Y  |jt|dddd tjt	dd |j
|||d W d   dS 1 sw   Y  dS )zhChecks that fitting with sample_weight raises a warning if the scorer does not
    support sample_weightc                 S   rr  )z9Fake scoring function that does not support sample_weightr   ra   )y_truerD  ra   ra   rb   fake_score_func3  r   z>test_unsupported_sample_weight_scorer.<locals>.fake_score_funcr   r   rh  r.  r   ru   rE  r   zdoes not support sample_weightr   sample_weightNr   )faker   Frf  z2The scoring fake=.* does not support sample_weight)r$   r   rf   	ones_liker)   r   r}   r   warnsUserWarningrl   r  )rJ  fake_scorerrj   r   swrx  ra   ra   rb   %test_unsupported_sample_weight_scorer/  s*   
"rS  r  )ru   r   r   r  )ru   r   rj  c                 C   s  t | }t | }t|dd t|dd tjd}d}d}d}|| }|||d }|jd||d}	|jdd	|d}
tt||}|}|	}|}t	t
 j||d
}|j|d |j|
dd}|j|
d}|j|
d}t	t
 j||d
}|j|d t||}t||}|j||d d |j|||
d dd |jD }|D ]}|j| }|j| }| d}t|||d qdD ]}t||}t||}| d}t|||d qdD ]"}t| |rt|||}t|||}d| d}t|||d qd S )Nr   r   rh  r   r  r   r   )sizer   r  r   )repeatsaxis)rU  )r   rL  c                 S   s   g | ]	}| d r|qS )rx   r:  r  ra   ra   rb   r   ~  s
    
z<test_search_cv_sample_weight_equivalence.<locals>.<listcomp>z4 values are not equal for weighted/repeated datasetsr   )rT  r  )r   r   rq   rs   zComparing the output of zn revealed that fitting with `sample_weight` is not equivalent to fitting with removed or repeated data points.)r   rW   rf   r  r  randr  tiler   r   r.   splitr}   repeatrX   rl   r   rR   r$  rT   r   rS   )r  estimator_weightedestimator_repeatedr  r   n_samples_per_groupn_groupsr   rj   r   rR  r  
X_weighted
y_weightedgroups_weightedsplits_weighted
X_repeated
y_repeatedgroups_repeatedsplits_repeatedr  ro  s1s2r   rC  ra   ra   rb   (test_search_cv_sample_weight_equivalenceO  sb   










rj  T)noveltyn_neighborsr  )r  r  r   )r  r   r   c                 C   s   t jd}d}d}t|| }|| }t|dddgddggdddd }t j||jdd	|dfd
gdd}t dg| }d|| d < | || t	| 
|| j
| d S )Nrh  r  g333333?r   r   r   )r   r/  r   r  r   ir   )lowhighrT  rV  ru   r   )rf   r  r  intr   concatenater   r   rl   rR   rG  r   )rx  r  r   outliers_fraction
n_outliers	n_inliersrj   rI  ra   ra   rb   #test_search_cv_score_samples_method  s*   "ru  c                  C   s   t ddd\} }dg di}tt |dd}tt d|dd	}||fD ]O}|| | |j}t|d
 d |d
 d  t|d d |d d  t|d
 d |d
 d rXJ t|d d |d d rhJ t|jd g d q#d S )Nr  rh  r  r   )ru   gjt?MbP?T)r   r  r   )r   r  r  rk  r   ru   r  r   r  )ru   ru   r   )	r   r)   rC   r2   rl   r   rT   rf   allclose)rj   r   r   r   r  r?  rn  ra   ra   rb   (test_search_cv_results_rank_tie_breaking  s.   
rx  c                  C   sx   dgdgdgdgdggg d} }t  t f}ddd gi}t }|D ]}t|||d	| |}t|jd
 dd g q"d S )Nru   r   r   r   r   )r   r   r   r   ru   r   r   r   param_random_state)rI   rH   r-   r)   rl   rV   r   )rj   r   
estimatorsest_parametersr   estr   ra   ra   rb   !test_search_cv_results_none_param  s   "r}  z+ignore::sklearn.exceptions.FitFailedWarningc                  C   s*  t dd} dgdgdgdgg}g d}t| dddgiddd	}t| dddgidddd
}||fD ]b}||| dD ]}t|j| dksHJ t|j| dk sTJ q:dD ]$}|j| d dksdJ |j| d dksoJ t|j| dk s{J qWt|dsJ t|j	t
sJ |j	dksJ q0d S )Nr   r   ru   r   r   r   )r   ru   ru   r   r   r   )r   r   r   )r  r  )r  r  rw   refit_time_)rD   r)   r2   rl   rf   r  r   r   r   r~  float)svcrj   r   r  rsr?  ro  ra   ra   rb   test_search_cv_timing  s4   
r  c               	      sb  d} t dd}tddd\}}g d}dD ]}t|d|i|| d	||j}t| }d
tdd t| D  }t	t
||sEJ t| d}	j} t|D ]\\ }
|j|
d t
 fddt| D }t|	||D ]:\}\}}||| ||  |dkrt|| ||| }n|dkr||| }t|| |}t|||  qrqQqd S )Nr   r   r   r   r   r   )rH  r   r   )r   r   )rk  r  c                 s   s    | ]}d | V  qdS )r  Nra   )r   cv_ira   ra   rb   r   /  s    
z9test_grid_search_correct_score_results.<locals>.<genexpr>r
  )r   c                    s   g | ]}j d |    qS r  r  r  candidate_ir   ra   rb   r   9  r  z:test_grid_search_correct_score_results.<locals>.<listcomp>rH  r   )rD   r   r)   rl   r   r   rl  r   r   r  rf   isinr3   r  	enumerater}   r   rZ  r#   rq   r   r'   rT   )r  r   rj   r   r   rx   rn  result_keysexpected_keysr   r   	cv_scoresr   traintestcorrect_scoredecra   r  rb   &test_grid_search_correct_score_results#  s@   



r  c                  C   s   t  } t| dg diddd}|tt tt|}t|	t|	t t
| dg didddd}|tt tt|}t|	t|	t d S )Nr_   r   Tr   r  r   )r  r   r   )r[   r)   rl   rj   r   pickleloadsdumpsrU   rq   r2   )r   r   grid_search_pickledr  random_search_pickledra   ra   rb   test_pickleH  s   r  c                  C   s  t ddd\} }dg di}t }tddtddg}|D ]V}t|||d}|| | |jd }tt|D ];}|j	di ||  t
|| |D ]&\}	\}
}|| |
 ||
  || | || }t||jd	|	  |  qKq7q|D ]W}t|||d
d}|| | |jd }tt|D ];}|j	di ||  t
|| |D ]&\}	\}
}|| |
 ||
  || | || }t||jd	|	  |  qqqvd S )NTr   )return_indicatorr   rD  )ru   r   r   r   r   r   r|   r  r   )r   r   ra   )r   r-   rI   rH   r)   rl   r   r   re   r}   r  rZ  rx   rT   r2   )rj   r   r{  r   rz  r|  r   
res_paramscand_ir   r  r  r  r  ra   ra   rb   &test_grid_search_with_multioutput_dataZ  sJ   

r  c                  C   sL   t ddd} g d}tdd}t|i dd| |}t|d	r$J d S )
Nr[  r   r   r   r   ru   ru   ru   F)r'  r   r   r   )rf   r   r   rC   r)   rl   r   rj   r   r   r  ra   ra   rb   test_predict_proba_disabled  s
   
r  c                  C   st   t jdt jddd} t j| dd d f< g d}tdtdt jd	fd
t fg}t|dg didd	| | d S )Nr[  r	  r   r   r   r  imputerrC  )strategymissing_values
classifierclassifier__foo_paramr   r   )
rf   r   r  r   nanr=   r   r[   r)   rl   )rj   r   r   ra   ra   rb   test_grid_search_allows_nans  s   "r  c                   @   s:   e Zd ZdZdZdddZdddZdd	 Zdd
dZdS )FailingClassifierz,Classifier that raises a ValueError on fit()r   Nc                 C   r\   r]   r^  r`  ra   ra   rb   rc     rd   zFailingClassifier.__init__c                 C   s   | j tjkr
tdd S )Nz%Failing classifier failed as required)r_  r  FAILING_PARAMETERr   rb  ra   ra   rb   rl     s   zFailingClassifier.fitc                 C   rc  rm   rd  rr   ra   ra   rb   rq     re  zFailingClassifier.predictc                 C   rr  )Nrw   ra   ri   ra   ra   rb   rx        zFailingClassifier.scorer]   r~   )	r   r   r   r   r  rc   rl   rq   rx   ra   ra   ra   rb   r    s    

r  c                     s  t dddd\} }t }t|dg digddd	d
tjdtjd}tjt|d 	| | W d    n1 s:w   Y  t
jd }fdd t fddt|D s\J t|dg digddtdd
tjdtjd}tjt|d 	| | W d    n1 sw   Y  t
jd }t fddt|D sJ jd }|d dkr|d dksJ ||j dksJ j|jksJ d S )Nr[  r   r   r.  r_  r   ru   r   r   Frw   r   r  r   z5 fits failed.+total of 15.+The score on these train-test partitions for these parameters will be set to 0\.0.+5 fits failed with the following error.+ValueError.+Failing classifier failed as requiredflagsr   r|   c                    s    t  fddtjD S )Nc                    s   g | ]} j d |   qS r  r  r  )r  r   ra   rb   r     s    zPtest_grid_search_failing_classifier.<locals>.get_cand_scores.<locals>.<listcomp>)rf   r   r   r  r   )r  r  rb   get_cand_scores  s   z<test_grid_search_failing_classifier.<locals>.get_cand_scoresc                 3   s6    | ]}j d  | tjkrt |dkV  qdS )param_parameterrw   N)r   r  r  rf   r  r   r  r  r  ra   rb   r     s    z6test_grid_search_failing_classifier.<locals>.<genexpr>r  z5 fits failed.+total of 15.+The score on these train-test partitions for these parameters will be set to nan.+5 fits failed with the following error.+ValueError.+Failing classifier failed as requiredc                 3   s8    | ]}j d  | tjkrtt |V  qdS )r  N)r   r  r  rf   r  isnanr  r  ra   rb   r     s    r  r   ru   r   )r   r  r)   r=  compileDOTALLr   rO  r   rl   re   r   r  r   r  r  r  )rj   r   r   warning_messager  ranksra   r  rb   #test_grid_search_failing_classifier  sZ   	
r  c                  C   s   t dddd\} }t }t|dtjgd igdd}tjd	tjd
}tjt	|d |
| | W d    d S 1 s;w   Y  d S )Nr[  r   r   r.  r_  r   rw   r   zrAll the 15 fits failed.+15 fits failed with the following error.+ValueError.+Failing classifier failed as requiredr  r   r   r  r)   r  r=  r  r  r   r   r   rl   )rj   r   r   r  r  ra   ra   rb   )test_grid_search_classifier_all_fits_fail  s   "r  c                  C   sp   t dddd\} }t }t|dg digddd	d
}tt || | W d    d S 1 s1w   Y  d S )Nr[  r   r   r.  r_  r  r   Fr   r  )r   r  r)   r   r   r   rl   r  ra   ra   rb   )test_grid_search_failing_classifier_raise  s   	"r  c            	      C   sf  ddgg dddddgig} t | dd	}d}d
}d|||f }tjt|d t| W d    n1 s6w   Y  t | d
d	}t|}t|d
ksMJ t| D ]}||v sYJ qQtt | dd	d
ksfJ tdtdtdd} t | ddd}t|}t|dksJ dd |D }tt|dksJ t	dg dd}t |dd	}t|}t|dksJ d S )Nr   ru   )abc)firstsecondthirdtwovaluesr  r   r  z}The total space of parameters %d is smaller than n_iter=%d. Running %d iterations. For exhaustive searches, use GridSearchCV.r     r   c   rh  )r   r   c                 S   s&   g | ]}d |d |d |d f qS )z	a%db%dc%dr  r  r  ra   r   ra   ra   rb   r   L  s   & z7test_parameters_sampler_replacement.<locals>.<listcomp>r   r  )
r1   r   rO  rP  r   re   r0   r   r   r	   )	r|   r  r   	grid_sizeexpected_warningr  r  hashable_samplesparams_distributionra   ra   rb   #test_parameters_sampler_replacement.  s:   

r  c                  C   s   ddgi} t ddd}g d}ttdd| d	d
}t|dr#J ||| || || ddgi} ttdd| d	d
}t|drIJ ||| t|drVJ d S )Nlosslog_loss   r   r   r   r   r   ru   ru   ru   hinge)r  r   r  r   r   r   )	rf   r   r   r)   r    r   rl   r   r   )r   rj   r   r   ra   ra   rb   #test_stochastic_gradient_loss_paramV  s&   

r  c                  C   sJ   t ddd} g d}tdd}t|dddgid	d
}|| | d S )Nr   r   r  r   r   r   r   r   r   )r   r   )rf   r   r   rD   r)   rl   r  ra   ra   rb   %test_search_train_scores_set_to_falsev  s
   
r  c            	         s  d} d}t | dd\}}ttdddg dit|| dd	d
  || ttdddg dit|dd	d
}||| tt|d	dd||tsMJ ttdddg dit|d	dd||d	d
}||| ttdddg dit|d	ddd	d
}||| dd }t	j
||j||j t	j
dd  j D dd |j D  ttdddg dit|d	dd	d
  || dD ],i }tdD ] fddtdD |< qt|d |d  t|d |d  qd S )Nr   r   r   r  r   r   )r   r   g333333?)r  r   T)r   r   r  r
  )r  r  r   c                 S   s   dD ]}|  | q| S )N)r  r  r  r  )pop)rn  ro  ra   ra   rb   _pop_time_keys  s   z>test_grid_search_cv_splits_consistency.<locals>._pop_time_keysc                 S   r7  r8  r:  r1  ra   ra   rb   r    r4  z:test_grid_search_cv_splits_consistency.<locals>.<dictcomp>c                 S   r7  r8  r:  r1  ra   ra   rb   r    r4  )r   r   r   r   )r  r  )r  r  r   c                    s"   g | ]} j d |f   qS )zsplit%d_%s_scorer  r  r  param_i
score_typera   rb   r     s    z:test_grid_search_cv_splits_consistency.<locals>.<listcomp>ru   r   r   )r   r)   rD   r8   rl   r-   r   rZ  r   rf   r=  r>  r   r   r   rU   )	r   r  rj   r   gs2gs3gs4r  per_param_scoresra   r  rb   &test_grid_search_cv_splits_consistency  sv   







r  c                  C   sH   t  } t| dg diddd}|tt ||t}tt| d S )Nr_   r   r   r   r   )r[   r)   rl   rj   r   rt   rs   rV   )r   r   X_round_tripra   ra   rb   +test_transform_inverse_transform_round_trip  s
   r  c                     s   dd  fddG fdddt } tddtd	d
dd\ | dd }dddgidddgig}|j}|| t|D ]$}|d  rm|dd  dkrm|dvrmt||t||ksmJ d| qId S )Nc                 S   s   |j }t|  t|ksJ | D ]3}|dsDt| | | |< | | jjdkr7t|| | | d| d qt	|| | | d| d qd S )Nr9  r  z	Checking rW  )
r   r   rl  r;  rf   
asanyarrayr  r  rV   rR   )resultsgscvexp_resultsr  ra   ra   rb   check_results  s   
z-test_custom_run_search.<locals>.check_resultsc                    s   t | dd S )NTr  )r)   rl   r  )rj   r   r   ra   rb   fit_grid  s   z(test_custom_run_search.<locals>.fit_gridc                       s*   e Zd Z fddZfddZ  ZS )z.test_custom_run_search.<locals>.CustomSearchCVc                       t  j|fi | d S r]   superrc   r`   r  kwargsrF  ra   rb   rc        z7test_custom_run_search.<locals>.CustomSearchCV.__init__c                    sd   |ddiddig} |dddgi |ddiddig} |dddgidddgig d S )NrD  ru   r   min_samples_splitr   r   ra   )r`   evaluater  r  r  ra   rb   _run_search  s   z:test_custom_run_search.<locals>.CustomSearchCV._run_search)r   r   r   rc   r  __classcell__ra   r  r  rb   CustomSearchCV  s    r  r   r   r   r   )r   n_informativer   Tr  rD  ru   r   r  r   r   r   r  >   r  rh   r   r~  r   zAttribute %s not equal)r6   rI   r   rl   r   dirislowerr$  )r  mycvr  r  attrra   )rj   r  r   r  r   rb   test_custom_run_search  s*   


	r  c                  C   sx   G dd dt } | t tt G dd dt }tjtdd |t tt W d    d S 1 s5w   Y  d S )Nc                       s&   e Zd Z fddZdddZ  ZS )z;test__custom_fit_no_run_search.<locals>.NoRunSearchSearchCVc                    r  r]   r  r  r  ra   rb   rc   "  r  zDtest__custom_fit_no_run_search.<locals>.NoRunSearchSearchCV.__init__Nc                 [   s   | S r]   ra   )r`   rj   r   r  
fit_paramsra   ra   rb   rl   %  r  z?test__custom_fit_no_run_search.<locals>.NoRunSearchSearchCV.fitr~   )r   r   r   rc   rl   r  ra   ra   r  rb   NoRunSearchSearchCV!  s    r  c                       s   e Zd Z fddZ  ZS )z3test__custom_fit_no_run_search.<locals>.BadSearchCVc                    r  r]   r  r  r  ra   rb   rc   ,  r  z<test__custom_fit_no_run_search.<locals>.BadSearchCV.__init__)r   r   r   rc   r  ra   ra   r  rb   BadSearchCV+  s    r  z_run_search not implemented.r   )r6   rC   rl   rj   r   r   r   NotImplementedError)r  r  ra   ra   rb   test__custom_fit_no_run_search   s   "r  c                  C   s   t ddt} dd | D  d}tt dg di| dd	}tjtd
d |td | t	d |  W d    d S 1 s?w   Y  d S )Nr   r
  c                 S   r  ra   ra   )r   ura   ra   rb   r   ;  r  z0test_empty_cv_iterator_error.<locals>.<listcomp>r   r  rv  rj  r   r   r   n_jobszNNo fits were performed. Was the CV iterator empty\? Were there no candidates\?r   )
r-   rZ  rj   r2   r   r   r   r   rl   r   )r   
train_sizeridgera   ra   rb   test_empty_cv_iterator_error4  s   "r  c                  C   s   G dd dt } | dd}d}tt dg di|dd	}tjtd
d |td | td |  W d    d S 1 s=w   Y  d S )Nc                   @   s   e Zd Zdd ZdS )z.test_random_search_bad_cv.<locals>.BrokenKFoldc                 _   rr  )Nru   ra   )r`   argskwra   ra   rb   get_n_splitsQ  r  z;test_random_search_bad_cv.<locals>.BrokenKFold.get_n_splitsN)r   r   r   r  ra   ra   ra   rb   BrokenKFoldP  s    r  r   r
  r   r  r  r   r  zXcv.split and cv.get_n_splits returned inconsistent results. Expected \d+ splits, got \d+r   )	r-   r2   r   r   r   r   rl   rj   r   )r  r   r  r  ra   ra   rb   test_random_search_bad_cvM  s   
"r  r  F)r   r   r   r  r   c                 C   s  t ddd\}}G dd d}| t f| d|d|}tt}||| W d    n1 s3w   Y  |r>dd	gndg}t|t|ksKJ t||D ]\}	}
d
|
 dt|	j	v saJ qP|j
d  }t|j
d }t|j
d | | t|j
d |  |k sJ d S )Nr   r   )r   r   c                   @   s    e Zd ZdZdd Zdd ZdS )zHtest_searchcv_raise_warning_with_non_finite_score.<locals>.FailingScorerz1Scorer that will fail for some split but not all.c                 S   s
   d| _ d S rm   )n_countsr   ra   ra   rb   rc   }  rd   zQtest_searchcv_raise_warning_with_non_finite_score.<locals>.FailingScorer.__init__c                 S   s&   |  j d7  _ | j d dkrtjS dS )Nru   r   r   )r	  rf   r  )r`   r  rj   r   ra   ra   rb   __call__  s   zQtest_searchcv_raise_warning_with_non_finite_score.<locals>.FailingScorer.__call__N)r   r   r   r   rc   r
  ra   ra   ra   rb   FailingScorerz  s    r  r   )r   r   r  r  r  zOne or more of the z scores are non-finiter  rk  )r   rH   r   rO  rP  rl   re   zipr'  messager   maxrf   r  rV   r  )r   r  r  rj   r   r  r   warn_msgset_with_warningmsgdataset	last_ranknon_finite_maskra   ra   rb   1test_searchcv_raise_warning_with_non_finite_scoref  s,   "r  c            	      C   s   dd } t dddd\}}tdd}t|dd	d
gi| dd}||| g d}|D ]}d||jv s6J q*||}t||}|||t	
|d ksPJ d S )Nc                 S   s2   |  |}t||}|d |d |d |d dS )N)r   r   r   ru   )ru   r   ru   ru   tnfpfntp)rq   r"   )r   rj   r   rD  cmra   ra   rb   custom_scorer  s   

zAtest_callable_multimetric_confusion_matrix.<locals>.custom_scorer(   r   rh  r.  r   r   r   ru   r  rf  r  zmean_test_{}r  )r   rD   r)   rl   formatr   rq   r"   rx   r   r  )	r  rj   r   r|  r?  score_namesnamerD  r  ra   ra   rb   *test_callable_multimetric_confusion_matrix  s   


"r#  c                  C   s   dd } t dddd\}}tdd}t|dd	d
gi| dd}t|dd	d
giddgdd}||| ||| |jt|jksCJ |j|jksKJ |||t|||ks\J d S )Nc                 S   s    |  |}t||t||dS )N)r!  r   )rq   r&   r!   r|  rj   r   rD  ra   ra   rb   r    s   
zHtest_callable_multimetric_same_as_list_of_strings.<locals>.custom_scorerr  r   rh  r.  r   r   r   ru   r!  rf  r   	r   rD   r)   rl   rT  r   r  r  rx   )r  rj   r   r|  search_callable
search_strra   ra   rb   1test_callable_multimetric_same_as_list_of_strings  s   
&r(  c                  C   s&  dd } t dddd\}}tdd}t|dd	d
gi| dd}t|dd	d
giddd}t|dd	d
gidgdd}||| ||| ||| |jt|jksTJ |j|jks\J |||t|||ksmJ |jt|jksxJ |j|jksJ |||t|||ksJ d S )Nc                 S   s   |  |}t||S r]   )rq   r&   r$  ra   ra   rb   r    s   

zHtest_callable_single_metric_same_as_single_string.<locals>.custom_scorerr  r   rh  r.  r   r   r   ru   Trf  r!  r%  )r  rj   r   r|  r&  r'  search_list_strra   ra   rb   1test_callable_single_metric_same_as_single_string  s&   
"&r*  c                  C   s|   dd } t dddd\}}ttdddd	d
gi| dd}d}tjt|d ||| W d    d S 1 s7w   Y  d S )Nc                 S      ddiS )Nbad_nameru   ra   r|  rj   r   ra   ra   rb   
bad_scorer     zBtest_callable_multimetric_error_on_invalid_key.<locals>.bad_scorerr  r   rh  r.  r   r   r   ru   	good_namerf  z`For multi-metric scoring, the parameter refit must be set to a scorer key or a callable to refitr   )r   r)   rD   r   r   r   rl   )r.  rj   r   r   r  ra   ra   rb   .test_callable_multimetric_error_on_invalid_key  s   
"r1  c                  C   s   dd } t dddd\}}t }t|dg dig| d	d
d}tjdtjd}tjt|d |	|| W d    n1 s>w   Y  t
|jd g d d S )Nc                 S   r+  Nr"  ru   ra   r-  ra   ra   rb   r  	  r/  zBtest_callable_multimetric_error_failing_clf.<locals>.custom_scorerr[  r   r   r.  r_  r  Fr   r  zm5 fits failed.+total of 15.+The score on these train-test partitions for these parameters will be set to 0\.1r  r   mean_test_acc)ru   ru   r   )r   r  r)   r=  r  r  r   rO  r   rl   rR   r   )r  rj   r   r   r  r  ra   ra   rb   +test_callable_multimetric_error_failing_clf 	  s$   r4  c                  C   s   dd } t dddd\}}t }t|dtjgd ig| d	d
d}d}tjd| tjd}tjt	|d |
|| W d    d S 1 sFw   Y  d S )Nc                 S   r+  r2  ra   r-  ra   ra   rb   r  	  r/  zBtest_callable_multimetric_clf_all_fits_fail.<locals>.custom_scorerr[  r   r   r.  r_  r   Fr   r  z1ValueError: Failing classifier failed as requiredz5All the 15 fits failed.+your model is misconfigured.+r  r   r  )r  rj   r   r   r  individual_fit_error_messager   ra   ra   rb   +test_callable_multimetric_clf_all_fits_fail	  s(   "r6  c                  C   s   d} t | d\}}t }dddgi}t||}t||dd}t|dr%J t|dr,J ||| ||| |j| ks?J |j| ksFJ d S )Nr   r/  max_iterr   ru   r   n_features_in_)r   r   r)   r2   r   rl   r9  )r/  rj   r   gbdtr   r  r  ra   ra   rb   test_n_features_in:	  s   
r;  pairwisec                    sJ   G  fdddt }| }d}t|ddgi} | jjks#J |dS )z
    Test implementation of BaseSearchCV has the pairwise tag
    which matches the pairwise tag of its estimator.
    This test make sure pairwise tag is delegated to the base estimator.

    Non-regression test for issue #13920.
    c                       s   e Zd Z fddZ  ZS )zStest_search_cv_pairwise_property_delegated_to_base_estimator.<locals>.TestEstimatorc                    s   t   }|j_|S r]   )r  __sklearn_tags__
input_tagsr<  r`   tags)rF  r<  ra   rb   r=  V	  s   
zdtest_search_cv_pairwise_property_delegated_to_base_estimator.<locals>.TestEstimator.__sklearn_tags__)r   r   r   r=  r  ra   r<  r  rb   TestEstimatorU	  s    rB  z.BaseSearchCV pairwise tag must match estimatorrl  r   N)r   r)   r=  r>  r<  )r<  rB  r|  attr_messager   ra   rA  rb   <test_search_cv_pairwise_property_delegated_to_base_estimatorK	  s
   
rD  c                  C   s\   G dd dt } |  }d}dD ]}|j|d t|ddgi}|| jjks+J |qdS )	z
    Test implementation of BaseSearchCV has the pairwise property
    which matches the pairwise tag of its estimator.
    This test make sure pairwise tag is delegated to the base estimator.

    Non-regression test for issue #13920.
    c                       s&   e Zd ZdddZ fddZ  ZS )zXtest_search_cv__pairwise_property_delegated_to_base_estimator.<locals>.EstimatorPairwiseTc                 S   r\   r]   rA  )r`   r<  ra   ra   rb   rc   k	  rd   zatest_search_cv__pairwise_property_delegated_to_base_estimator.<locals>.EstimatorPairwise.__init__c                    s   t   }| j|j_|S r]   )r  r=  r<  r>  r?  r  ra   rb   r=  n	  s   

zitest_search_cv__pairwise_property_delegated_to_base_estimator.<locals>.EstimatorPairwise.__sklearn_tags__)T)r   r   r   rc   r=  r  ra   ra   r  rb   EstimatorPairwisej	  s    
rE  z4BaseSearchCV _pairwise property must match estimatorr&  rA  rl  r   N)r   r}   r)   r=  r>  r<  )rE  r|  rC  _pairwise_settingr   ra   ra   rb   =test_search_cv__pairwise_property_delegated_to_base_estimatora	  s   		rG  c                  C   s   d} d}t | dd\}}ddgi}t }t|||d}||| ||}t|}tdd	}t|||d}||| ||}	d
}
||	k sMJ |
dS )z
    Test implementation of BaseSearchCV has the pairwise tag
    which matches the pairwise tag of its estimator.
    This test ensures the equivalence of 'precomputed'.

    Non-regression test for issue #13920.
    r  r   r   r  rl  r   r   rQ  )metricz2GridSearchCV not identical with precomputed metricN)r   r;   r)   rl   rq   r(   r  )r   r  rj   r   grid_paramsr   r   preds_originalX_precomputedpreds_precomputedrC  ra   ra   rb   ;test_search_cv_pairwise_property_equivalence_of_precomputed~	  s   



rM  zSearchCV, param_searchr  r   rj  r   c                 C   sP   G dd dt t}| | |}tdd\}}|j||dd |jjdks&J d S )Nc                   @   s(   e Zd ZdddZdddZdd ZdS )	z,test_scalar_fit_param.<locals>.TestEstimatorNc                 S   r\   r]   )r  )r`   r  ra   ra   rb   rc   	  rd   z5test_scalar_fit_param.<locals>.TestEstimator.__init__c                 S   s
   || _ d S r]   )r_)r`   rj   r   rra   ra   rb   rl   	  rd   z0test_scalar_fit_param.<locals>.TestEstimator.fitc                 S   s   t jt|dS )Nrn   )rf   r   re   rr   ra   ra   rb   rq   	  re  z4test_scalar_fit_param.<locals>.TestEstimator.predictr]   )r   r   r   rc   rl   rq   ra   ra   ra   rb   rB  	  s    

rB  rh  r   )rO  )r   r   r   rl   r   rN  )r   param_searchrB  modelrj   r   ra   ra   rb   test_scalar_fit_param	  s
   
rR  c           
      C   sh   t tddddi\}}}}G dd dt}dd }| | |}||f|dd}	|j||fi |	 d S )	Nrh  r   r   c                       s&   e Zd Z				d fdd	Z  ZS )z9test_scalar_fit_param_compat.<locals>._FitParamClassifierNc                    s`   t  j|||d |dksJ t|sJ t|tsJ |d jdks%J |d jdks.J | S )NrK  r   r   ru   )r  rl   callabler   r   ndim)r`   rj   r   rL  tuple_of_arraysscalar_paramcallable_paramr  ra   rb   rl   	  s   	z=test_scalar_fit_param_compat.<locals>._FitParamClassifier.fitNNNN)r   r   r   rl   r  ra   ra   r  rb   _FitParamClassifier	  s    rY  c                   S   s   d S r]   ra   ra   ra   ra   rb   _fit_param_callable	  r  z9test_scalar_fit_param_compat.<locals>._fit_param_callable)rU  rW  rV  )r5   r   r    rl   )
r   rP  X_trainX_validrW  y_validrY  rZ  rQ  r  ra   ra   rb   test_scalar_fit_param_compat	  s   r^  z)ignore:The total space of parameters 4 is	Predictorc           	      C   s   t jd}|ddt dgd dgd  }}tdt fd| fg}dd	gdd	gd
}| ||dd}||| |j	 |	 ksGJ |
|}t|rgt|d |||tt||kseJ d S t||  |||tt||ks~J d S )Nr      r   r   ru   r[  transformer	predictorr   )transformer__parampredictor__paramar   r  )rf   r  r  randnr   r=   rP   rl   r   rl  rq   r   rV   rx   r   r  r!   rR   rC  r%   )	r   r_  r  rj   r   rQ  r|   r?  rD  ra   ra   rb   1test_search_cv_using_minimal_compatible_estimator	  s"   (

$$rf  c                 C   s   t ddddd\}}tdd}ddgi}t||d	d
d
|d|| |  j}|r0td|}ntd|}t|d
ks>J dS )zkCheck that search cv with verbose>2 shows the score for single
    metrics. non-regression test for #19658.r   r   r   r   r   r   r   r   r   r   )r   r   r   r  z$score=\(train=[\d\.]+, test=[\d.]+\)zscore=[\d\.]+N)	r   rD   r)   rl   
readouterroutr=  findallre   )capsysr  rj   r   r   r   capturedr   ra   ra   rb   test_search_cv_verbose_3
  s"   



rl  r  c           	      C   s   t dd\}}t gdgd}|d d j}tdt fdg}||i}| |fd	d
dd|||}|d d j|ks>J |jjd jdksIJ d S )Nrh  r   rj  )r   clf__Cr   r   trs)r   NTr   r   r  r   r   )r   rD   r   r=   rP   rl   r   named_steps)	r   rP  rj   r   r|   orig_Cr   param_grid_searchr  ra   ra   rb   test_search_estimator_param%
  s   
rs  c               	   C   s   ddd} t dt fdt fg}t|| dddd	dd
}g d}g d}||| |jd }tjdtd}g d|d d < tj	
|j| d S )N)r  ru   r   )l1l2)vect__ngram_range
vect__normvectr   r   r   r   ru   )r  r  r   r   r   r   r   )oner  threefourfive)r   r   ru   r   ru   param_vect__ngram_ranger	  )rt  rt  r  )r=   r   r9   r2   rl   r   rf   r   objectr=  rV   r   )parameter_gridpipeliner  
data_traindata_targetresultexpected_datara   ra   rb   test_search_with_2d_arrayA
  s0   	
r  c                  C   s6  t dd\} }tdt fdt fg}dt t gi}t||dd}tdd | }d	|v s2J W d
   n1 s<w   Y  || | tdd | }d	|v sWJ W d
   n1 saw   Y  t||dd}|| | tdd | }d	|vsJ d|v sJ W d
   d
S 1 sw   Y  d
S )z5Test different HTML representations for GridSearchCV.rh  r   r  r   F)r   r  diagram)displayz<div>DummyClassifier</div>NTz<div>LogisticRegression</div>)	r   r=   rB   r   r   r)   r   _repr_html_rl   )rj   r   r  r   rx  	repr_htmlra   ra   rb   test_search_html_repr^
  s(   "r  )enable_metadata_routingc              	   C   s   t dd\}}t|}tjd}||}||}t }|ddgii}	t }
t|
dj	ddd	}t
|d
d}| |fd
d|d|	j||||d t|
sQJ |
D ]}t|ddd	||d qSdS )zMTest that *SearchCV forwards metadata correctly when passed multiple metrics.rh  r   r   r   ru   )registryscore_weightsscore_metadata)rL  metadatar   )	my_scorerr   r   ro  )r  r  rx   _score)objrC  parentsplit_paramsrL  r  N)r   rZ   rf   r  r  rX  rD   rF   rE   set_score_requestr  rl   re   rG   )r   rP  rj   r   r   r  r  r  r|  rr  scorer_registryscorerr   _scorerra   ra   rb   *test_multi_metric_search_forwards_metadata~
  s4   



r  c                 C   s   t dd\}}t }|ddgii}| |fddi|||}tjtdd |j||dd	 W d
   d
S 1 s:w   Y  d
S )z{*SearchCV should reject **params when metadata routing is not enabled
    since this is added only when routing is enabled.rh  r   r   ru   r   r   zis only supported ifr   )r  N)r   rD   rl   r   r   r   rx   )r   rP  rj   r   r|  rr  r  ra   ra   rb   1test_score_rejects_params_with_no_routing_enabled
  s   "r  c                  C   s   G dd dt t} dddiddigdddggd	digd
dgd}t| t |dd}tdd\}}||| |D ]}|jd|  jtksHJ q9dS )zQNon-regression test for https://github.com/scikit-learn/scikit-learn/issues/29074c                   @   s0   e Zd Z				dddZd	ddZdd ZdS )
z8test_cv_results_dtype_issue_29074.<locals>.MetaEstimatorNc                 S   s"   || _ || _|| _|| _|| _d S r]   )base_clf
parameter1
parameter2
parameter3
parameter4)r`   r  r  r  r  r  ra   ra   rb   rc   
  s
   
zAtest_cv_results_dtype_issue_29074.<locals>.MetaEstimator.__init__c                 S   s   | j || | S r]   )r  rl   rb  ra   ra   rb   rl   
  s   z<test_cv_results_dtype_issue_29074.<locals>.MetaEstimator.fitc                 S   s   | j ||S r]   )r  rx   rb  ra   ra   rb   rx   
  s   z>test_cv_results_dtype_issue_29074.<locals>.MetaEstimator.scorerX  r]   )r   r   r   rc   rl   rx   ra   ra   ra   rb   MetaEstimator
  s    

r  NoptionABru   r   r  str1str2)r  r  r  r  r   r  r   r   param_)	r   r   r)   r   r   rl   r   r  r  )r  r   r   rj   r   r  ra   ra   rb   !test_cv_results_dtype_issue_29074
  s    
r  c                  C   s   t d} | g dg dg dd}|jddd}|d }td	td
ddgfgdd}td	|fdt fg}dtd
dt gi}t	||dd}|
|| |jd jtksYJ dS )zNCheck cv_results_ for estimators with a `dtype` parameter, e.g. OneHotEncoder.r  )ru   r   r   r   r   )r  r  r  r  r  )rv   gffffff@r  g      @rv   )	numeric_1object_1targetr  ru   ro  encF)sparse_outputr  passthrough)	remainderr   enc__encr   r   param_enc__encN)r   importorskipr  dropr   r?   r=   r   r@   r)   rl   r   r  r  )pddfrj   r   r  r   rI  r   ra   ra   rb   'test_search_with_estimators_issue_29157
  s4   
r  c                     s|   d t dd\} }ttddt } fdddD } fdd|D }t|d	|id
}|| | |jd jtks<J dS )zwCheck that GridSearchCV works with params that are arrays of different sizes.

    Non-regression test for #29277.
    r   r7  periodic)extrapolationc                    s   g | ]} | qS ra   ra   r   r7  ra   rb   r     r   z4test_cv_results_multi_size_array.<locals>.<listcomp>)r   r     c                    s*   g | ]}t d t jd |d fqS )r   r   r   )rf   linspacepir   )r   n_knotsr7  ra   rb   r     s    splinetransformer__knotsrE  param_splinetransformer__knotsN)	r   r>   rA   r   r)   rl   r   r  r  )rj   r   spline_reg_pipen_knots_list
knots_listspline_reg_pipe_cvra   r7  rb    test_cv_results_multi_size_array  s"   
r  zarray_namespace, device, dtype)idsc                 C   s   t ||}tdd}||}|j||d}tdgd dgd  }|j||d}	tdd" | t d	g d
iddd}
|
	||	 |

||	 W d    d S 1 sWw   Y  d S )Nr   )r   r   )devicer   r   ru   T)array_api_dispatchtol)rj  rv  g-C6?gh㈵>gư>gHz>r   r   r   )rQ   rf   r   r   astypeasarrayr   r   r   rl   rx   )r   array_namespacer  r  xprj   X_npX_xpy_npy_xpr   ra   ra   rb   #test_array_api_search_cv_classifier+  s    


"r  )r  r  rt  )r   r   )candidate_paramsexpected	param_foozsimple numeric, single param)idr   r   	param_bar)r   r   r   )FFTr  z1simple numeric, one param is missing in one roundr	  zlists of different lengthszlists tuplesrz  c                 C   sh   t t| }t||D ]&\\}}\}}||ksJ |j|jks!J tj|| tj|j|j qd S r]   )r   r7   r  r  rf   r=  rV   r  )r  r  r  ro  r%  expected_keyexpected_valuera   ra   rb   &test_yield_masked_array_for_each_paramS  s   6r  c                  C   sX   dd t dD } t  tdt tt|  W d    d S 1 s%w   Y  d S )Nc                 S   s   g | ]}d |iqS )r  ra   r   ra   ra   rb   r     r   z>test_yield_masked_array_no_runtime_warning.<locals>.<listcomp>r  error)r   warningscatch_warningssimplefilterRuntimeWarningr   r7   )r  ra   ra   rb   *test_yield_masked_array_no_runtime_warning  s
   
"r  )ra   )r   r  r=  r   r  collections.abcr   r   	functoolsr   ior   	itertoolsr   r   r  r   numpyrf   r   scipy.statsr	   r
   r   r   r   sklearn.baser   r   r   r   sklearn.clusterr   sklearn.composer   sklearn.datasetsr   r   r   sklearn.discriminant_analysisr   sklearn.dummyr   sklearn.ensembler   sklearn.exceptionsr   sklearn.experimentalr   sklearn.feature_extraction.textr   sklearn.imputer   sklearn.linear_modelr   r   r   r    sklearn.metricsr!   r"   r#   r$   r%   r&   r'   sklearn.metrics.pairwiser(   sklearn.model_selectionr)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   sklearn.model_selection._searchr6   r7   $sklearn.model_selection.tests.commonr8   sklearn.naive_bayesr9   sklearn.neighborsr:   r;   r<   sklearn.pipeliner=   r>   sklearn.preprocessingr?   r@   rA   rB   sklearn.svmrC   rD   %sklearn.tests.metadata_routing_commonrE   rF   rG   sklearn.treerH   rI   sklearn.utils._array_apirJ   rK   sklearn.utils._mockingrL   rM   sklearn.utils._testingrN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   sklearn.utils.estimator_checksrX   sklearn.utils.fixesrY   sklearn.utils.validationrZ   r[   r   r   rj   r   r   markparametrizer   r   r   r   r   r   r   r  r  r  r  r,  r3  r;  r<  r@  rG  rP  rZ  r\  r]  filterwarningsrg  rq  rv  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r"  r+  r   r)  rH  rS  rj  ru  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r(  r*  r1  r4  r6  r;  rD  rG  rM  rR  r^  rf  rl  rs  r  r  r  r  r  r  r  r  one_hot_encoderordinal_encoderr  r  r   r  ma_with_tuplesr  r  r  ra   ra   ra   rb   <module>   sR   $	<0'"$
+
	(

$

-ZE
8#$&

 
	A


!"

(%.	Q( 	_	9
-
 


3 
-!

""(

5	