
    Ugm                    p   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 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.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> ddl?m@Z@ ddlAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN ddlOmPZPmQZQ ddlRmSZS ddlTmUZU ddlVmWZWmXZXmYZY ddlZm[Z[m\Z\ ddl]m^Z^m_Z_m`Z`maZa ddlbmcZcmdZd ddlemfZfmgZgmhZh dd limjZjmkZk dd!llmmZmmnZn dd"lompZpmqZqmrZrmsZsmtZtmuZumvZvmwZw dd#lxmyZy dd$lzm{Z{  G d% d&          Z| G d' d(ed          Z} ej~        d)d)gd*d)gd+d+gd,d+gg          Z ej~        g d-          Zd. Zej                            d/eI e	eJd01          g          ej                            d2ded3fd4dgidged5fd4died6fg          d7                         Zd8 Zd9 Zd: Zej                            d;eBeKg          d<             Zewd=             Zd> Zd? Zd@ ZdA ZdB ZdC ZdD ZdE ZdF Zej                            dGey          dH             Zej                            dGey          dI             ZdJ ZdK Z G dL dMe          ZewdN             ZdO ZdP Zej                            dQd)d,g          ej                            dReKeBg          dS                         ZdT ZdU ZdV ZdW ZewdX             ZdY ZdZ Zd[ Zd\ Zdd^Zd_ Zd` Zej                            daeBdbdcd+d0giifeKdcd+d0gid,ddfg          de             Zdf Zdg Zdh Zdi Zej                            dR eK ej            djdkd0gil           eB ej            djdkd0gim          g          dn             Zej                            dR eK eYdop          dqdkd0gidrs           eB eYdop          dqdkd0gidrt          g          du             Zdv Zdw Z ew            dx             Zdy Zdz Zd{ Zd| Zd} Z G d~ de          Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                            dddog          ej                            daeBdbdjg diifeKdjg didddfg          d                         Zd Zd Zd Zd Zd Zd Zd Zej                            ddodg          d             Zd Zd Zej                            deBdddgifeKd ed+d          ifg          d             Zej                            deBdddgifeKd edd          ifg          d             Zej                            d          ej                            d;eBeKg          ej                            deqepg          d                                     Zej                            ddodg          d             Zej                            deBdbfeKdfeEdbfg          d             Zd Zd Zej                            d;eBeKg          d             Zej                            d          ej                            deBdbfeKdfg          d                         Zej                            deBdbfeKdfeEdbfg          d             Zd Zd Zd Z e^            Z e_            Zej                             ej        d,          doe䬳          Zded<   ded+<   ej                            d ej        d4d+id4d,igdej                             ej~        d+d,g                    fgd           ej        d+ddd,ddd4digdej                             ej~        g d                    fdej                             ej~        g d          g d          fgd           ej        d4d+gd,gdggid4d+gd,ggigdej                            d+gd,gdggd+gd,ggge          fgd¬           ej        d4did4digdefgdì           ej        d4eid4eigdej                            eege          fgdĬ          g          dń             ZdS )zTest the search module    N)IterableSized)partial)StringIO)chainproduct)GeneratorType)	bernoulliexponuniform)config_context)BaseEstimatorClassifierMixinis_classifier)KMeans)ColumnTransformer)
make_blobsmake_classificationmake_multilabel_classification)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)CheckingClassifierMockDataFrame)MinimalClassifierMinimalRegressorMinimalTransformerassert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalignore_warnings)CSR_CONTAINERS)_num_samplesc                   T    e Zd ZdZddZd Zd Zd Zd ZeZ	eZ
eZdd	ZddZd ZdS )MockClassifierz8Dummy classifier to test the parameter search algorithmsr   c                     || _         d S N	foo_param)selfrZ   s     h/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/model_selection/tests/test_search.py__init__zMockClassifier.__init__h       "    c                 |    t          |          t          |          k    sJ t          j        |          | _        | S rX   )lennpuniqueclasses_r[   XYs      r\   fitzMockClassifier.fitk   s3    1vvQ	!r_   c                     |j         d         S Nr   shape)r[   Ts     r\   predictzMockClassifier.predictp   s    wqzr_   c                     || j         z   S rX   rY   r[   rf   s     r\   	transformzMockClassifier.transforms       4>!!r_   c                     || j         z
  S rX   rY   rp   s     r\   inverse_transformz MockClassifier.inverse_transformv   rr   r_   Nc                 &    | j         dk    rd}nd}|S )N         ?        rY   )r[   rf   rg   scores       r\   ry   zMockClassifier.score}   s     >AEEEr_   Fc                     d| j         iS NrZ   rY   )r[   deeps     r\   
get_paramszMockClassifier.get_params   s    T^,,r_   c                      |d         | _         | S r{   rY   )r[   paramss     r\   
set_paramszMockClassifier.set_params   s    ,r_   )r   NN)F)__name__
__module____qualname____doc__r]   rh   rn   rq   rt   predict_probapredict_log_probadecision_functionry   r}   r    r_   r\   rV   rV   e   s        BB# # # #  
  " " "" " " M   - - - -    r_   rV   c                   (    e Zd ZdZed             ZdS )LinearSVCNoScorez0A LinearSVC classifier that has no score method.c                     t           rX   )AttributeErrorr[   s    r\   ry   zLinearSVCNoScore.score   s    r_   N)r   r   r   r   propertyry   r   r_   r\   r   r      s3        ::  X  r_   r   rv      )rv   rv   r   r   c                 ~     t                      fdt          t                               D             k    sJ d S )Nc                      g | ]
}|         S r   r   ).0igrids     r\   
<listcomp>z3assert_grid_iter_equals_getitem.<locals>.<listcomp>   s    <<<a$q'<<<r_   )listrangera   )r   s   `r\   assert_grid_iter_equals_getitemr      sC    ::<<<<5T+;+;<<<<<<<<<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                 z    t          j        ||          5   | |           d d d            d S # 1 swxY w Y   d S )Nmatch)pytestraises)r   input
error_typeerror_messages       r\   test_validate_parameter_inputr      s     
z	7	7	7  e                 s   044c            
         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    sJ t          d          D ]T}t          d	 |D                       }|t          d
 t          |d         |d                   D                       k    sJ Ut          |           t          i           }t	          |          dk    sJ t          |          i gk    sJ t          |           t          j        t                    5  |d          d d d            n# 1 swxY w Y   t          dddgii ddgig          }t	          |          dk    sJ t          |          ddiddii ddigk    sJ t          |           d S )Nr   rv   r      r      r   )hamspameggsr   bar   c           	   3      K   | ]9}t          t          t          |                                                     V  :d S rX   )tupler   sorteditemsr   ps     r\   	<genexpr>z&test_parameter_grid.<locals>.<genexpr>   s?      GGAU56!''))#4#4677GGGGGGr_   c              3   (   K   | ]\  }}d |d|fV  dS )r   r   Nr   )r   xys      r\   r   z&test_parameter_grid.<locals>.<genexpr>   s@       
 
%)QUAua 
 
 
 
 
 
r_   r   rv   Cr         ?)r/   
isinstancer   r   ra   r   r   setr   r   r   r   
IndexError)params1grid1params2grid2r   pointsempty	has_emptys           r\   test_parameter_gridr      sm   iii G'""EeX&&&&&eU#####u::????#E***!f%<%<%<==G'""Eu::???? 1XX 
 
GGGGGGG 
 
-4WU^WU^-T-T
 
 
 
 
 
 
 
 
 
 $E*** "Eu::????;;2$#E***	z	"	"  a               aW~rC#<@AAIy>>Q	??Qx#rBc
CCCCC#I.....s   *	E??FFc                     t                      } t          | dg di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%          j        t(                    5  |                    t          t                     d d d            d S # 1 swxY w Y   d S )NrZ   r   r   cvverboser   param_foo_paramsklearn)rV   r(   sysstdoutr   rh   rf   r   best_estimator_rZ   rQ   cv_results_datary   r   r   rq   scoringr   r   
ValueError)clfgrid_search
old_stdouts      r\   test_grid_searchr      sv   


Cs[)))$<ANNNKJCJOOAqCJ&0A5555{./@AF			RRR aa   !!!$$$! $K	z	"	"  1                 s   8!E&&E*-E*c                     t          dt                      fg          } dt                      t                      gi}t          | |d          }|                    t
          t                     |j        d         }t          |d         t                    sJ t          |d         t                    sJ t          |d         d          rJ t          |d         d          rJ |d         |j
        usJ |d         |j
        usJ t          |d         d         d          rJ t          |d         d         d          rJ d S )N	regressorr   r   param_regressorr   rv   coef_)r<   r   r   r(   rh   rf   r   r   r   hasattrr   )pipe
param_gridr   regressor_resultss       r\   test_grid_search_pipeline_stepsr      sX   k#3#5#56788D 0 2 2EGG<=JtZA666KOOAq#/0AB'*,<====='*E22222(+W55555(+W55555Q{'BBBBBQ{'BBBBBz+.q17;;;;;z+.q17;;;;;;;r_   SearchCVc           	         t          j        d                              dd          }t          j        dgdz  dgdz  z             }t	          ddg          } | |d	g d
idd          }d}t          j        t          |          5  |                    ||t          j	        d                     d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                    ||t          j	        d          t          j
        d                     d d d            n# 1 swxY w Y   |                    ||t          j	        d          t          j
        d                     d S )Nd   r   r      rv   r   r   )expected_fit_paramsrZ   r   r   raiser   error_scorez0Expected fit parameter\(s\) \['eggs'\] not seen.r   )r   z)Fit parameter spam has length 1; expected)r   r   )rb   arangereshapearrayrI   r   r   AssertionErrorrh   oneszeros)r   rf   r   r   searchererr_msgs         r\   test_SearchCV_with_fit_paramsr      s   
	#r2&&A
!qA37"##A
&&1A
B
B
BCxk9995!QQQH BG	~W	5	5	5 - -Q,,,- - - - - - - - - - - - - - - :G	~W	5	5	5 ? ?Q

">>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?LLABGBKKbhrllL;;;;;s$   
+CCC)>D33D7:D7c                  \   t          d          } t          dd          \  }}g d}t          d          }t          | d|id          }|                    ||           t          |d|id          }|                    ||           |j        |j        k    sJ |                    ||          |                    ||          k    sJ t          |d|i          }t          j        t          d	
          5  |                    dgg           d d d            d S # 1 swxY w Y   d S )Nr   random_stater   r   centers皙?rv   r   r   accuracyr   z
no scoringr   rv   )
rC   r   r   r(   rh   best_params_ry   r   r   	TypeError)r   rf   r   Csclf_no_scorer   grid_search_no_scores          r\   test_grid_search_no_scorer    s    
#
#
#C1a000DAq	B#333LsS"IzBBBKOOAq'sBiTTTQ"""  ,0HHHHHQ""&:&@&@A&F&FFFFF (sBi@@	y	5	5	5 ( (  1#'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   <D!!D%(D%c                     t          dddd          \  } }t          d          }ddgi}t          ||d 	                              | |          }t          ||d
	                              | |          }t          t	                      |d	                              | |          }t          ||d	                              | |          }|                    | |          }|                    | |          }	|                    | |          }
|                    | |          }|dk     sJ |	dk     sJ ||	k    sJ t          |	|           t          ||
           d S )Nr   r   皙?r   	n_samples	n_classesflip_yr   r   r   r   r   r   roc_aucrw   )r   rC   r(   rh   r   ry   rO   )rf   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_aucs               r\   test_grid_search_score_methodr  *  s   #TUVVVDAq

#
#
#C#<D$S$===AA!QGG"3jAAAEEaKKO!-D)" " "	c!Qii  c4;;;??1EEJ )..q!44$**1a00N399!Q??  A&&I s????C&&&&(8999	#566666r_   c                     t           j                            d          } t          ddd          \  }}|                     ddd          }t          d          }ddgi}t                      t          d          t          d	          t                      g}d
}|D ]u}t          |||          }	t          j        t          |          5  |	                    ||           d d d            n# 1 swxY w Y   |	                    |||           vt                      t!                      g}
|
D ]*}t          |||          }	|	                    ||           +d S )Nr      r   )r	  r
  r   r   r   r   rv   n_splitsz*The 'groups' parameter should not be None.r   r   )groups)rb   randomRandomStater   randintrC   r-   r.   r)   r*   r(   r   r   r   rh   r2   r3   )rngrf   r   r  r   r   	group_cvs	error_msgr   gsnon_group_cvss              r\   test_grid_search_groupsr#  F  s    )


"
"CqqIIIDAq[[Ar""F

#
#
#C!:D 	A	I =I $ $#t+++]:Y777 	 	FF1aLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
q!F####$&&(>(@(@AM  #t+++
q! s   C00C4	7C4	c                     t          j        d                              dd          } t          j        dgdz  dgdz  z             }g d}t	          t          d          d|i          }|                    | |           t          |j        j	        |j	                   t	          t                      d	d
dgi          }|                    | |           t          |d          rJ t	          t          d          d|i          }t          |d          rJ t	          t          d          d|id          }|                    | |           t          |d          rJ d S )Nr   r   r   r   rv   r   r   r   alpharw          @rd   F)refit)rb   r   r   r   r(   rC   rh   rQ   r   rd   r   r   )rf   r   r  r   s       r\   test_classes__propertyr(  e  sf   
	#r2&&A
!qA37"##A	Bya8883)DDKOOAq{2;[=QRRR uww3*(=>>KOOAq{J///// ya8883)DDK{J///// ya8883)5QQQKOOAq{J///////r_   c                  @   t                      } t          | ddgid          }|                    t          t                     t          |d          sJ t          | ddgidd          }|                    t          t                     t          |d          sJ d S )NrZ   rv   r   r   r   r   )r   r   )rV   r(   rh   rf   r   r   r1   )r   r   random_searchs      r\   test_trivial_cv_results_attrr+  ~  s    


Cs[1#$61===KOOAq;.....&s[1#,>qQOOOMa;.......r_   c            
      &   t                      } d ddgfD ]}t          | dg didd          }|                    t          t                     t          |d          s t          |d	          rt          |d
          sJ dD ]}d| d}d| d}t          j        t          |          5 } t          ||          t                     d d d            n# 1 swxY w Y   t          |j        j        t                    sJ |t          |j        j                  v sJ d}dD ]i}t          j        t          |          5  t          | i |ddd                              t          t                     d d d            n# 1 swxY w Y   jd S )Nr   	precisionrZ   r   Fr   r'  r   r   best_index_r   )rn   r   r   rq   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   )rV   r(   rh   rf   r   r   r   r   r   getattrr   value	__cause__strr   )	r   r   r   fn_name	outer_msg	inner_msg	exec_infor   r'  s	            r\   test_no_refitr<    sd   


C:{34 ? ?"3iii(@RSTTT1%677	
]33	
 ^44	
 	
 	

 	? 	?G 8W777I3' 3 3 3  ~Y??? 19-W--a0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 io7HHHHHIO$= > >>>>>>!	?( 	T  .  ]:Y777 	 	Ruj+.V.V  c!Qiii	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s$   ,CCC5FF		F		c                     t          ddd          \  } }t                      }t          |dddgi          }t          j        t
                    5  |                    | d d         |           d d d            d S # 1 swxY w Y   d S )	N   r   r   r	  
n_featuresr   r   r   rw      )r   rC   r(   r   r   r   rh   )X_y_r   r   s       r\   test_grid_search_errorrD    s     33QOOOFB
++C	cC#s,	-	-B	z	"	"  
r$3$x                 s   A==BBc                  <   t          ddd          \  } }dgdgdgd}t          d	
          }t          ||          }|                    | |           t          ddd          }|                    | |           t	          |j        |j        j                   d S )Nr>  r   r   r?  rw   rbfr   )r   kernelgammaautorH  )r   rB   r(   rh   rQ   
dual_coef_r   )rB  rC  
param_dictr   r   s        r\   test_grid_search_one_grid_pointrM    s     33QOOOFBu3%@@J
F


C	c:	&	&BFF2rNNN
E
-
-
-CGGBOOOs~r'9'DEEEEEr_   c                      t                      } d }t          | dt          dd          id          }|                    t          t
                     |j        j        dk    sJ d S )NrZ   rv   r   r   r   r   )rV   r(   r   rh   rf   r   r   rZ   )r   r   s     r\   /test_grid_search_when_param_grid_includes_rangerO    sd    


CKs[%1++$>1EEEKOOAq&0A555555r_   c                  *   t          ddd          \  } }ddi}t          d          }t          j        d	          }t	          ||          }t          j        t          |
          5  |                    | |           d d d            n# 1 swxY w Y   dg i}t                      }t          j        d          }t	          ||          }t          j        t          |
          5  |                    | |           d d d            n# 1 swxY w Y   ddi}t          d          }t          j        d          }t	          ||          }t          j        t          |
          5  |                    | |           d d d            n# 1 swxY w Y   dt          j        d          i}t                      }t	          ||          }t          j        t                    5  |                    | |           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r?  r   rv   rI  rJ  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   rB   reescaper(   r   r   r  rh   r   rb   r   )rf   r   rL  r   r   searchs         r\   test_grid_search_bad_param_gridrT    s   JJJDAqqJ
F


C		@ I
 #z**F	y		2	2	2  

1a               rJ
%%C	S I #z**F	z	3	3	3  

1a               wJ
F


C		. I
 #z**F	y		2	2	2  

1a               rwv'J
%%C#z**F	z	"	"  

1a                 sH   )BBB(DDD)FFF$HHHcsr_containerc                 z   t          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          j	        ||k              d	k    sJ ||k    sJ d S )
Nr>  r   r   r?  r   r   rw   rA  g?)
r   rC   r(   rh   rn   r   r   tocoorb   mean)	rU  rB  rC  r   r   y_predr   y_pred2C2s	            r\   test_grid_search_sparser\    s8    !33QOOOFB
++C	cC#s,	-	-BFF2dsd8RXZZ344!!F
A	r		B
++C	cC#s,	-	-BFF2dsd8>>RX&&&jjCDD""G			B76W$%%,,,,777777r_   c                 d   t          ddd          \  }}t                      }t          |dddgid	          }|                    |d d
         |d d
                    |                    |d
d                    }|j        j        } | |          }t                      }t          |dddgid	          }|                    |d d
         |d d
                    |                    |d
d                    }|j        j        }t          ||           ||k    sJ d }	t          |	d          }
t          |dddgi|
	          }|                    |d d
         |d d
                    |                    |d
d                    }|j        j        }||k    sJ t          ||           d S )Nr>  r   r   r?  r   r   rw   f1r   rA  c                 $    t          | |           S rX   )r"   )y_true_y_pred_s     r\   f1_lossz0test_grid_search_sparse_scoring.<locals>.f1_loss,  s    '****r_   F)greater_is_better)	r   rC   r(   rh   rn   r   r   rQ   r#   )rU  rB  rC  r   r   rY  r   rZ  r[  rb  F1Lossy_pred3C3s                r\   test_grid_search_sparse_scoringrg    s    33QOOOFB
++C	cC#s,d	;	;	;BFF2dsd8RXZZ344!!F
A	r		B
++C	cC#s,d	;	;	;BFF2dsd8RXjjCDD""G			Bvw'''7777+ + + E:::F	cC#s,f	=	=	=BFF2dsd8RXjjCDD""G			B7777vw'''''r_   c                     t          ddd          \  } }t          j        | d d         | d d         j                  }|d d         }t	          d          }t          |dd	d
gi          }|                    ||           |j        dk    sJ t          j        | dd          | d d         j                  }|dd          }|                    |          }t          j	        ||k              dk    sJ t          j        t                    5  |                    |                                |           d d d            d S # 1 swxY w Y   d S )Nr>  r   r   r?  rA  precomputedrG  r   r   rw   )r   rb   dotrm   rB   r(   rh   best_score_rn   rX  r   r   r   tolist)	rB  rC  K_trainy_trainr   r   K_testy_testrY  s	            r\   #test_grid_search_precomputed_kernelrr  9  s    !33QOOOFB fRXr$3$xz**G#hG
]
#
#
#C	cC#s,	-	-BFF7G>Q VBsttHb#hj))FXFZZF76V#$$)))) 
z	"	" * *
w~~)))* * * * * * * * * * * * * * * * * *s   )EEEc                  .   t          j        d          } t          j        d          }t          d          }t	          |dddgi          }t          j        t                    5  |                    | |           d d d            d S # 1 swxY w Y   d S )N)r      )r   ri  rj  r   r   rw   )	rb   r   r   rB   r(   r   r   r   rh   )rn  ro  r   r   s       r\   3test_grid_search_precomputed_kernel_error_nonsquareru  V  s     hx  GgennG
]
#
#
#C	cC#s,	-	-B	z	"	" ! !
w   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   &B

BBc                   &    e Zd ZdZddZd Zd ZdS )BrokenClassifierz*Broken classifier that cannot be fit twiceNc                     || _         d S rX   	parameterr[   rz  s     r\   r]   zBrokenClassifier.__init__d  r^   r_   c                 8    t          | d          rJ d| _        d S )Nhas_been_fit_T)r   r}  r[   rf   r   s      r\   rh   zBrokenClassifier.fitg  s&    411111!r_   c                 @    t          j        |j        d                   S rj   rb   r   rl   rp   s     r\   rn   zBrokenClassifier.predictk      x
###r_   rX   )r   r   r   r   r]   rh   rn   r   r_   r\   rw  rw  a  sL        44# # # #" " "$ $ $ $ $r_   rw  c                     t          j        d                              dd          } t          j        dgdz  dgdz  z             }t	          t                      dddgigdd	          }|                    | |           d S )
Nr   r   r   r   rv   rz  r-  Tr   r'  )rb   r   r   r   r(   rw  rh   )rf   r   r   s      r\   
test_refitr  o  s    
 		#r2&&A
!qA37"##A
kAq623[PT  C GGAqMMMMMr_   c                      d } t          ddd          \  }}t          t          d          dg did	| 
          }|                    ||           |j        dk    sJ t          |d          rJ dS )z^
    Test refit=callable, which adds flexibility in identifying the
    "best" estimator.
    c                 4   t          ddd          \  }}t          t          d          dg didd	
          }|                    ||           |j        dk    sJ |j                                        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_score`.
        r   r   *   r?  r   r   {Gz?r   rv   r-  Tr  r   mean_test_score)r   r(   rC   rh   r/  r   keysargmin)
cv_resultsrf   r   r   keys        r\   refit_callablez+test_refit_callable.<locals>.refit_callable  s     #SQRPPP12&&&...!	
 
 
 	1!#### ?'')) 	% 	%C*$$$$$+,33555r_   r   r   r  r?  r   r   r  r-  r  r   rl  N)r   r(   rC   rh   r/  r   )r  rf   r   r   s       r\   test_refit_callabler  }  s    6 6 62 LLLDAq
r"""	nnn	  C GGAqMMM?asM*******r_   c                     d } t          ddd          \  }}t          t          d          ddd	gid
|           }t          j        t
          d          5  |                    ||           ddd           dS # 1 swxY w Y   dS )zb
    Test implementation catches the errors when 'best_index_' returns an
    invalid result.
    c                     dS )zT
        A dummy function tests when returned 'best_index_' is not integer.
        Nr   r  s    r\   refit_callable_invalid_typezEtest_refit_callable_invalid_type.<locals>.refit_callable_invalid_type  s	     tr_   r   r   r  r?  r   r   r   rv   r-  r  z&best_index_ returned is not an integerr   N)r   r(   rC   r   r   r  rh   )r  rf   r   r   s       r\    test_refit_callable_invalid_typer    s       LLLDAq
r"""	sAh)	  C 
y(P	Q	Q	Q  1                 s   A==BBout_bound_value	search_cvc                      fd}t          ddd          \  }} |t          d          ddd	gid
|          }t          j        t          d          5  |                    ||           ddd           dS # 1 swxY w Y   dS )zg
    Test implementation catches the errors when 'best_index_' returns an
    out of bound result.
    c                     S )zV
        A dummy function tests when returned 'best_index_' is out of bounds.
        r   )r  r  s    r\   refit_callable_out_boundz?test_refit_callable_out_bound.<locals>.refit_callable_out_bound  s     r_   r   r   r  r?  r   r   r   rv   r-  r  zbest_index_ index out of ranger   N)r   rC   r   r   r   rh   )r  r  r  rf   r   r   s   `     r\   test_refit_callable_out_boundr    s         LLLDAq
)r"""	sAh&	  C 
z)I	J	J	J  1                 s   A<<B B c                     d } t          ddd          \  }}t          t                    dd}t          t	          d          d	g d
i||           }|                    ||           |j        dk    sJ t          |d          rJ dS )zC
    Test refit=callable in multiple metric evaluation setting
    c                 B    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)r  r  s    r\   r  z8test_refit_callable_multi_metric.<locals>.refit_callable  s-      :----*+22444r_   r   r   r  r?  r-  )Accuracyr3  r   r   r  r  r   rl  N)r   r#   r    r(   rC   rh   r/  r   )r  rf   r   r   r   s        r\    test_refit_callable_multi_metricr    s    
5 5 5 LLLDAq&~66LLG
r"""	nnn	  C GGAqMMM?asM*******r_   c                     t          j        d                              dddd          } t          j        d                              ddd          }d	 }d
 }t          ||dg          }t	          |dg di          }|                    | |                              t          t                     t          |d          sJ d S )N,  r   r   r   r   i        c                 (    | j         dd          dk    S )Nrv   )r   r   r   rk   r   s    r\   check_Xz#test_gridsearch_nd.<locals>.check_X  s    wqrr{i''r_   c                 (    | j         dd          dk    S )Nrv   )r  r  rk   r  s    r\   check_yz#test_gridsearch_nd.<locals>.check_y  s    wqrr{g%%r_   rh   )r  r  methods_to_checkrZ   r   r   )
rb   r   r   rI   r(   rh   ry   rf   r   r   )X_4dy_3dr  r  r   r   s         r\   test_gridsearch_ndr    s    9^$$,,RAq99D9[!!))"a44D( ( (& & &   C
 s[)))$<==KOOD$%%a+++;.......r_   c                     t          j        d                              dd          } t          j        dgdz  dgdz  z             }t	          d dg          }t          d	
          }t          |dg di|          }|                    |                                 |          	                    | |           t          |d          sJ d S )Nr   r   r   r   rv   c                 ,    t          | t                    S rX   r   r   r  s    r\   <lambda>z test_X_as_list.<locals>.<lambda>      *Q-- r_   rh   )r  r  r   r  rZ   r   r   r   rb   r   r   r   rI   r,   r(   rh   rm  ry   r   rf   r   r   r   r   s        r\   test_X_as_listr    s    
	#r2&&A
!qA37"##A
--  C 
			Bs[)))$<DDDKOOAHHJJ""((A...;.......r_   c                     t          j        d                              dd          } t          j        dgdz  dgdz  z             }t	          d dg          }t          d	
          }t          |dg di|          }|                    | |                                          	                    | |           t          |d          sJ d S )Nr   r   r   r   rv   c                 ,    t          | t                    S rX   r  r  s    r\   r  z test_y_as_list.<locals>.<lambda>#  r  r_   rh   )r  r  r   r  rZ   r   r   r   r  r  s        r\   test_y_as_listr    s    
	#r2&&A
!qA37"##A
--  C 
			Bs[)))$<DDDKOOAqxxzz""((A...;.......r_   c                  T   t           t           fg} 	 ddlm}m} |                     ||f           n# t
          $ r Y nw xY wt          j        d                              dd          }t          j	        dgdz  dgdz  z             }| D ]\   |           |          }}fd}fd}t          ||	          }	t          |	d
g di          }
|
                    ||                              ||           |
                    |           t          |
d          sJ d S )Nr   )	DataFrameSeriesr   r   r   rv   c                 $    t          |           S rX   r   )r   InputFeatureTypes    r\   check_dfz#test_pandas_input.<locals>.check_df>  s    a!1222r_   c                 $    t          |           S rX   r  )r   
TargetTypes    r\   check_seriesz'test_pandas_input.<locals>.check_seriesA  s    a,,,r_   )r  r  rZ   r   r   )rJ   pandasr  r  appendImportErrorrb   r   r   r   rI   r(   rh   ry   rn   r   )typesr  r  rf   r   X_dfy_serr  r  r   r   r  r  s              @@r\   test_pandas_inputr  ,  s    ]+,E,,,,,,,,i())))    		#r2&&A
!qA37"##A(- 3 3$*&&q))::a==e	3 	3 	3 	3 	3	- 	- 	- 	- 	- !<HHH"3iii(@AAe$$**4777D!!!{M2222223 3s   3 
A A c                  $   t          dd          \  } }t          ddd          }ddg}d	D ]N}t          |t          g d
          ||          }|                    | |           |j        d         dk    sJ Ot          |t          g d
          d          }|                    | |           |j        d         dk    sJ t          |t          g d
                    }|                    |            |j        d         dk    sJ d S )N2   r   r	  r   r  rv   )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(   dictrh   r   )rf   r   kmr   r'  r   s         r\   test_unsupervised_grid_searchr  L  sV   333DAq	QXa	8	8	8B %&=>GA ; ;"4999555we
 
 
 	1'5::::: 
tyyy111;R  K OOAq#L1Q6666 rdiii.H.H.HIIIKOOA#L1Q666666r_   c                     d } t          ddddgddgddgg          \  }}t          t                      t          g d          |           }|                    |           |j        d	         dk    sJ |j        d
k    sJ d S )Nc                      | j         dk    rdndS )Nr   r  r   	bandwidth)	estimatorrf   s     r\   custom_scoringz2test_gridsearch_no_predict.<locals>.custom_scoringk  s    (C//rrQ6r_   r   rv   r   )cluster_stdr   r   r  r  r  r  r  )r   r(   r9   r  rh   r   rl  )r  rf   _rS  s       r\   test_gridsearch_no_predictr  h  s    7 7 7 #AAAQRTUPV?WXXXDAq...111  F
 JJqMMM{+s2222######r_   c                     ddgt          dd          d} t          | dd          }d |D             }t          |          dk    sJ |D ]%}|d	         d
v sJ d|d         cxk    rdk    sn J &dg di} t          | dd          }d |D             d |D             k    sJ dt          dd          i} t          | dd          }d |D             d |D             k    sJ d S )NrF  linearr   rv   )rG  r   r   )param_distributionsr   r   c                     g | ]}|S r   r   r   r   s     r\   r   z&test_param_sampler.<locals>.<listcomp>  s    """Qq"""r_   rG  )rF  r  r   )r   rv   r   r   r   r   r   r     	   r   r   c                     g | ]}|S r   r   r  s     r\   r   z&test_param_sampler.<locals>.<listcomp>      !Ar_   c                     g | ]}|S r   r   r  s     r\   r   z&test_param_sampler.<locals>.<listcomp>      #7#7#7!A#7#7#7r_   c                     g | ]}|S r   r   r  s     r\   r   z&test_param_sampler.<locals>.<listcomp>  r  r_   c                     g | ]}|S r   r   r  s     r\   r   z&test_param_sampler.<locals>.<listcomp>  r  r_   )r   r0   ra   )r  samplersamplessamples       r\   test_param_samplerr  y  sy   &+X%6WQ]]KK/  G #"'"""Gw<<2 % %h#44444F3K$$$$1$$$$$$$  B B BC/  G  w#7#7w#7#7#777771./  G  w#7#7w#7#7#7777777r_   c                 |   | j         t          fd|D                       sJ fd|D             |k    sJ t          fd|D                       rJ t          fd|D                       sJ | j        r| j                                        ndg}|D ]"}d|z           j        t          j        k    sJ #d S )Nc              3   b   K   | ])}t          |         t          j        j                  V  *d S rX   r   rb   maMaskedArray)r   paramr  s     r\   r   z/check_cv_results_array_types.<locals>.<genexpr>  s7      XXEz*U+RU->??XXXXXXr_   c                 6    i | ]}||         j         j        S r   )dtypekindr   r  r  s     r\   
<dictcomp>z0check_cv_results_array_types.<locals>.<dictcomp>  s2       ,/Z_"'  r_   c              3   b   K   | ])}t          |         t          j        j                  V  *d S rX   r  r  s     r\   r   z/check_cv_results_array_types.<locals>.<genexpr>  s6      XXc:joru/@AAXXXXXXr_   c              3   x   K   | ]4}|                     d           |         j        t          j        k    V  5dS )rankN)
startswithr  rb   float64r  s     r\   r   z/check_cv_results_array_types.<locals>.<genexpr>  sW        ~~f%%3+     r_   ry   zrank_test_%s)	r   allanymultimetric_scorer_r  r  rb   int32)rS  
param_keys
score_keysexpected_cv_results_kindsscorer_keysr  r  s         @r\   check_cv_results_array_typesr	    sD    #JXXXXZXXXXXXXX   3=  	"# # # # XXXXZXXXXXXXX            ,2+>M&.%%'''WIK B B.3./5AAAAAB Br_   r   c                      ||z   |z   }t          t                                                     t          |dz                        t           fd||z   D                       sJ d S )N)r   c              3   <   K   | ]}|         j         fk    V  d S rX   rk   )r   r  r  n_cands     r\   r   z(check_cv_results_keys.<locals>.<genexpr>  s1      UUcz#$	1UUUUUUr_   )rQ   r   r  r   )r  r  r  r  
extra_keysall_keyss   `  `  r\   check_cv_results_keysr    sy    J&3Hvjoo//00&K9O2P2PQQQUUUUUZ*=TUUUUUUUUUUr_   c                     t          ddd          \  } }d}t          dgddgd	dg
          t          dgddg          g}d}d}|}t          t                      d|d          }|                    | |           |j        t          d         dk              sJ fd|D             sJ fd|D             sJ ddddd}t          ||||           t          |||           |j        fdt          |          D             }	t          |	          sJ t          |	          dk    sJ fdt          |          D             }
t          |
          sJ t          |
          dk    sJ d S )Nr  r   r  r?  r   rF  rv   r   r   rG  r   rH  polyr   rG  degreeparam_Cparam_degreeparam_gammaparam_kernelr  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   V   K   | ]#}|d k    t          |         dk              V  $dS )r  r   Nr   r   kr  s     r\   r   z.test_grid_search_cv_results.<locals>.<genexpr>  s?      RR1@Q;Q;QC
1"##;Q;Q;Q;QRRr_   c              3   ^   K   | ]'}d |v|dk    t          |         dk              V  (dS )timer  rv   Nr+  r,  s     r\   r   z.test_grid_search_cv_results.<locals>.<genexpr>  sT        ??q$555 	JqMQ5555 r_   r   fOc                     g | ]N}d          |         dk    d         j         |         o&d         j         |         od         j         |          OS )r  r  r  r  r  maskr   r   r  s     r\   r   z/test_grid_search_cv_results.<locals>.<listcomp>  sv        n%a(F22 y!&q) 7=).q17~.3A66 322r_   c                     g | ]O}d          |         dk    d         j         |          o&d         j         |          od         j         |         PS )r  rF  r  r  r  r3  r5  s     r\   r   z/test_grid_search_cv_results.<locals>.<listcomp>  sy        n%a(E11 9%*1-- 3}-21553>*/2 211r_   )r   r  r(   rB   rh   r   r   r	  r  r   ra   )rf   r   n_grid_pointsr   r  r  n_candidatesrS  r  poly_resultsrbf_resultsr  s              @r\   test_grid_search_cv_resultsr;    sU   KKKDAqM "g(	
 	
 	
 	 q6		
 	
 	
F  LJJ" !L#%%A&TRRRF
JJq!#Jz+,122222RRRRZRRRRRR         	! ! !
J(A   *j*lKKK#J    |$$  L ||!!!!    |$$  K {{q      r_   c                    	 t          ddd          \  } }d}dgt          d          t          d	          d
dgddgdg}d}d}|}t          t                      |d|d          }|                    | |           |j        	ddddd}t          ||||           t          	|||           t          	fdt          |          D                       sJ t          	fdt          |          D                       sJ d S )Nr  r   r  r?     rF  r   )scaler   r  r  r   r   r  r  r  T)r   r   r  r)  r0  r   r1  c              3      K   | ]P}d          |         dk    d         j         |         o&d         j         |         od         j         |          V  QdS )r  r  r  r  r  Nr3  r5  s     r\   r   z0test_random_search_cv_results.<locals>.<genexpr>;  s         n%a(F22 y!&q) 7=).q17~.3A66 3222 r_   c              3      K   | ]Q}d          |         dk    d         j         |          o&d         j         |          od         j         |         V  RdS )r  rF  r  r  r  Nr3  r5  s     r\   r   z0test_random_search_cv_results.<locals>.<genexpr>D  s         n%a(E11 9%*1-- 3}-21553>*/2 2111 r_   )
r   r   r1   rB   rh   r   r	  r  r   r   )
rf   r   n_search_iterr   r  r  r8  rS  r  r  s
            @r\   test_random_search_cv_resultsrB  
  s   KKKDAqM 7R5s;K;K;KLL81v..F LJJ" !L"  F JJq!#J 	! ! !
J(A   *j*lKKK     |$$             |$$         r_   zSearchCV, specialized_paramsr   r   )r  r   c                    t          ddgddgddgddggdddd          \  }}t          j        |j        d         t                    }d|t          j        |dk              d         d d d         <   d|t          j        |dk              d         d d d         <   || g| |gg}t                      |d	d
} | di ||                    ||           t          j        fdt          j
                  D                       }j        d         d         }j        d         d         }	t          j        fdt          j
                  D                       }
j        d         d         }j        d         d         }j        d         d         dk    sJ t          |ddg           t          |
ddg           |t          j        t          j        |                    k    sJ |	t          j        t          j        |                    k    sJ |t          j        d          k    sJ |t          j        d          k    sJ d S )Nr   rv   r   FP   )r   r   r  shuffler	  r  r   T)r  r   r)  c                 <    g | ]}j         d |z           d         S )split%d_test_scorer   r   r   srS  s     r\   r   z+test_search_default_iid.<locals>.<listcomp>o  s<     	
 	
 	
 3a78;	
 	
 	
r_   r  r#  c                 <    g | ]}j         d |z           d         S )zsplit%d_train_scorer   rI  rJ  s     r\   r   z+test_search_default_iid.<locals>.<listcomp>x  s<     	
 	
 	
 4q89!<	
 	
 	
r_   r  r$  r  gUUUUUU?r   )r   rb   r   rl   boolwhererB   rh   r   r   	n_splits_r   rN   r   approxrX  std)r   specialized_paramsrf   r   r4  r   common_paramstest_cv_scores	test_meantest_stdtrain_cv_scores
train_mean	train_stdrS  s                @r\   test_search_default_iidrZ  O  s    Q!Q!Q!Q0  DAq 7171:T***D%&D!q&		!	SSqS	!"%&D!q&		!	SSqS	!" $-4%	'B"%%%rNNMX<<<);<<F
JJq!X	
 	
 	
 	
6+,,	
 	
 	
 N "#45a8I!"23A6Hh	
 	
 	
 	
6+,,	
 	
 	
 O #$67:J"#45a8Ii(+q0000NQ	N333OaV,,,bgn&=&=>>>>>>v}RVN%;%;<<<<<< q))))))a((((((((r_   c                     t          ddd          \  } }d}t          dgddgd	dg
          t          dgddg          g}g }t          t                    t          t                    dddfD ]M}t          t                      |||d          }|                    | |           |                    |           Nt          |  d S )Nr  r   r  r?  r   rF  rv   r   r   r  r  r   r  r   r1  r   r1  F)r   r   r   r'  )
r   r  r#   r    r%   r(   rB   rh   r  *compare_cv_results_multimetric_with_single)rf   r   r  r   grid_searchesr   r   s          r\   'test_grid_search_cv_results_multimetricr_    s   KKKDAqH "g(	
 	
 	
 	 q6		
 	
 	
F  M 00K<U<UVV 	* 	*
 #EEh67%
 
 
 	1[)))).>>>>r_   c                     t          ddd          \  } }d}d}t          t          j        ddd          t          j        d	d
dd                    }dD ]}g }dD ]t}|rd}t	          |t
                    rdn|}nd}t          |d          }	t          |	|||||d
          }
|
                    | |           |	                    |
           ut          |  t          |d
         |d         |           d S )Nr  r   r  r?  r   r=  rv   r   r   )base)r   rH  TF)r\  r   r1  Tr   F)probabilityr   )r   r   r  r   r'  r   )r   r  rb   logspacer   r   rB   r1   rh   r  r]  )compare_refit_methods_when_refit_with_acc)rf   r   r  rA  r   r'  random_searchesr   re  r   r*  s              r\   )test_random_search_cv_results_multimetricri    sO   KKKDAqHM BKAq))RAC1P1P1PQQQF 
 
E 	2 	2G $"&0%&@&@K

e#+B???C.$$*  M a###""=11112ODD1A 2E	
 	
 	
 	
/
 
r_   c                    | j         sJ t          t          | j                  d           | j        d |j                                        D             }|                    d |j                                        D                        t          fddD                       sJ t          j	        
                    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                 B    i | ]\  }}t          j        d d|          |S )_score$	_accuracyrQ  subr   r-  vs      r\   r  z>compare_cv_results_multimetric_with_single.<locals>.<dictcomp>  s9       15Ay+q))1  r_   c                 B    i | ]\  }}t          j        d d|          |S )rl  _recallrn  rp  s      r\   r  z>compare_cv_results_multimetric_with_single.<locals>.<dictcomp>  s,    WWW1	9a	(	(!WWWr_   c              3   T   K   | ]"}t          j        |         d k              V  #dS )rv   N)rb   r   )r   r-  cv_results_multis     r\   r   z=compare_cv_results_multimetric_with_single.<locals>.<genexpr>  sL       	
 	
 F#A&!+,,	
 	
 	
 	
 	
 	
r_   )r'  r(  r%  r&  c                 D    i | ]\  }}|                     d           ||S _timeendswithrp  s      r\   r  z>compare_cv_results_multimetric_with_single.<locals>.<dictcomp>  s/    NNN$!Q!**W:M:MNANNNr_   c                 D    i | ]\  }}|                     d           ||S rw  ry  rp  s      r\   r  z>compare_cv_results_multimetric_with_single.<locals>.<dictcomp>  s/    PPP$!QAJJw<O<OPAPPPr_   N)r  rQ   r   r  r   r   updater   rb   testingassert_equal)search_multi
search_acc
search_reccv_results_acc_recru  s       @r\   r]  r]    sI    $$$$vl2335KLLL#/ 9C9O9U9U9W9W   WW
8N8T8T8V8VWWW   	
 	
 	
 	
	
 	
 	

 
 
 
 
 JNN*0022NNNPP,2244PPP    r_   c           	         |j         |k    sJ |r| j         dk    sJ n| j         rJ dS t          ddd          \  }}dD ]@}t           t          | |          |           t          ||          |                     At          |                     ||          |                    ||                     dD ]&}t          | |          t          ||          k    sJ 'dS )	zDCompare refit multi-metric search methods with single metric methodsr   Nr   r   r  r?  )rn   r   r   )r/  rl  r   )r'  r   rO   r4  ry   )r  r  r'  rf   r   methodr  s          r\   rg  rg    s,   u$$$$ !Z/////%%%%CCCDAqC 
 
)GL&))!,,.Igj&.I.I!.L.L	
 	
 	
 	
 **1a00*2B2B1a2H2HIII= F F|S))WZ-E-EEEEEEF Fr_   	max_depthr   )r  r  r  r   c                    t          ddd          \  }}|                     ||           d| j        j         d}d}t	          j        t          |          5 }|                     |           d d d            n# 1 swxY w Y   t          |j	        j
        t                    sJ |t          |j	        j
                  k    sJ d S )	Nr   r   r  r?  r0  z"' has no attribute 'score_samples'z@'DecisionTreeClassifier' object has no attribute 'score_samples'r   )r   rh   	__class__r   r   r   r   score_samplesr   r5  r6  r7  )r  rf   r   r9  r:  r;  s         r\   "test_search_cv_score_samples_errorr    s    CCCDAqMM!Q UI'0TTTIRI	~Y	7	7	7 #9"""# # # # # # # # # # # # # # #io/@@@@@IO566666666s   A;;A?A?T)noveltyn_neighborsr-  )r  r  r   )r  r   r   c           	         t           j                            d          }d}d}t          ||z            }||z
  }t	          |dddgddggdd          d         }t          j        ||                    dd	|df
          gd          }t          j        dg|z            }d|| d <   |                     ||           t          | 
                    |          | j        
                    |                     d S )Nr  r  g333333?r   r   r   )r	  r@  r   r  r   ir   )lowhighsizeaxisrv   r   )rb   r  r  intr   concatenater   r   rh   rN   r  r   )r  r  r	  outliers_fraction
n_outliers	n_inliersrf   y_trues           r\   #test_search_cv_score_samples_methodr  )  s.   " )


#
#CI&233JJ&I 	Q!Q 	 	 	 		A 	3;;2AZO;LLMTUVVVA XqcIo&&FFJ;<< MM!V ""I$=$K$KA$N$N    r_   c                     t          dd          \  } }dg di}t          t                      |d          }t          t                      d|d	          }||fD ]}|                    | |           |j        }t          |d
         d         |d
         d                    t          |d         d         |d         d                    t          j        |d
         d         |d
         d                   rJ t          j        |d         d         |d         d                   rJ t          |j        d         g d           d S )Nr  r  r  r   )rv   gjt?MbP?T)r   r)  r   )r   r  r)  r  r   rv   r  r   r  )rv   rv   r   )	r   r(   rB   r1   rh   r   rO   rb   allclose)rf   r   r   r   r*  rS  r  s          r\   (test_search_cv_results_rank_tie_breakingr  Y  s   444DAq ((()JsuuPTUUUK&aZD  M . N N

1a'
 	()!,j9J.KA.N	
 	
 	
 	)*1-z:L/Ma/P	
 	
 	
 ;()!,j9J.KA.N
 
 	
 	
 	
 ;)*1-z:L/Ma/P
 
 	
 	
 	
 	F./@A999MMMM'N Nr_   c                     dgdgdgdgdggg d}} t                      t                      f}ddd gi}t                      }|D ]E}t          |||	                              | |          }t          |j        d
         dd g           Fd S )Nrv   r   r   r   r   )r   r   r   r   rv   r   r   r   param_random_state)rH   rG   r,   r(   rh   rQ   r   )rf   r   
estimatorsest_parametersr   estr   s          r\   !test_search_cv_results_none_paramr  {  s    C!qcA3$oooqA'))+A+C+CDJ$q$i0N	B U U"
 
 
 #a))	 	
 	;23GH1d)TTTTU Ur_   c                     t          d          } dgdgdgdgg}g d}t          | dddgidd	          }t          | dddgiddd
          }||fD ]}|                    ||           dD ]L}t	          j        |j        |         dk              sJ t	          j        |j        |         dk               sJ MdD ]Y}|j        |         d         dk    sJ |j        |         d         dk    sJ t	          j        |j        |         dk               sJ Zt          |d          sJ t          |j	        t                    sJ |j	        dk    sJ d S )Nr   r   rv   r   r   r   )r   rv   rv   r   r   r   )r   r   r   )r%  r&  )r'  r(  rx   refit_time_)rC   r(   r1   rh   rb   r   r   r   r   r  float)svcrf   r   r!  rsrS  r  s          r\   test_search_cv_timingr    s   

#
#
#C 	
 	
 	
 	
	A 	A	cC!Q=QA	>	>	>B	C#1v1!A	N	N	NBr( ' '

1a4 	7 	7C 6&,S1Q6777776&,S1A56666668 	7 	7C%c*1-2222%c*1-44446&,S1A5666666v}-----&,e44444!Q&&&&&' 'r_   c            
      .   d} t          d          }t          dd          \  }}g d}dD ]}t          |d|i|| 	                              ||          j        }t          |                                          }d
t          d t          |           D                       z   }t          t          j        ||                    sJ t          |           }	j        } t          |          D ]\  }
|                    |
           t          j        fdt          |           D                       }t          |	                    ||                    D ]\  }\  }}|                    ||         ||                    |dk    r0t%          ||         |                    ||                             }n7|dk    r1|                    ||                   }t+          ||         |          }t-          |||                    d S )Nr   r   r   r   r   r   )r^  r  r   )r   r   )r  r  c              3       K   | ]	}d |z  V  
dS )rH  Nr   )r   cv_is     r\   r   z9test_grid_search_correct_score_results.<locals>.<genexpr>  sA       G
 G
,0 4'G
 G
 G
 G
 G
 G
r_   r  )r   c                 <    g | ]}j         d |z                    S rH  rI  )r   rK  candidate_ir   s     r\   r   z:test_grid_search_correct_score_results.<locals>.<listcomp>  s<         +,@1,DEkR  r_   r^  r  )rC   r   r(   rh   r   r   r  r   r   r   rb   isinr2   rO  	enumerater   r   splitr"   rn   r   r&   rO   )r  r   rf   r   r  ry   r  result_keysexpected_keysr   r   	cv_scoresr   traintestcorrect_scoredecr  r   s                    @@r\   &test_grid_search_correct_score_resultsr    sZ   H

#
#
#C1a000DAq	B" A A"3b	5XNNN __Q**6
 :??,,--> G
 G
49(OOG
 G
 G
 B
 B
 
 27=+6677777h///('mm 	A 	ANKNNQN    "8__   I %.bhhq!nn$=$= A A =E4%!E(+++D==$,QtWckk!D'6J6J$K$KMMi''//$88C$1!D'3$?$?M#M9Q<@@@@A	AA Ar_   c                     t                      } t          | dg didd          }|                    t          t                     t          j        t          j        |                    }t          |	                    t                    |	                    t                               t          | dg diddd          }|                    t          t                     t          j        t          j        |                    }t          |	                    t                    |	                    t                               d S )NrZ   r   Tr   r.  )r'  r   r   )rV   r(   rh   rf   r   pickleloadsdumpsrP   rn   r1   )r   r   grid_search_pickledr*  random_search_pickleds        r\   test_pickler    s    


Cs[)))$<DQOOOKOOAq ,v|K'@'@AAk11!446I6Q6QRS6T6TUUU&k999%T!  M a"Lm)D)DEEa  "7"?"?"B"B    r_   c            	         t          dd          \  } }dg di}t                      }t          d          t          d          g}|D ]}t	          |||          }|                    | |           |j        d         }t          t          |                    D ]} |j	        di ||          t          |                    | |                    D ]p\  }	\  }
}|                    | |
         ||
                    |                    | |         ||                   }t          ||j        d	|	z           |                    q|D ]}t          |||d
          }|                    | |           |j        d         }t          t          |                    D ]} |j	        di ||          t          |                    | |                    D ]p\  }	\  }
}|                    | |
         ||
                    |                    | |         ||                   }t          ||j        d	|	z           |                    qd S )NTr   )return_indicatorr   r  )rv   r   r   r   r   r   r   rH  r   )r   r   r   )r   r,   rH   rG   r(   rh   r   r   ra   r   r  r  ry   rO   r1   )rf   r   r  r   r  r  r   
res_paramscand_ir   r  r  r  r*  s                 r\   &test_grid_search_with_multioutput_datar    s    *4aPPPDAq!<<<0N	B 	1---A...J   "32>>>1 ,X6
C
OO,, 		 		FCN00Z/000$-bhhq!nn$=$=   =E4%!E(+++ #		!D'1T7 ; ;#!+,@1,DEfM   		   *32aPPP!Q".x8
C
OO,, 		 		FCN00Z/000$-bhhq!nn$=$=   =E4%!E(+++ #		!D'1T7 ; ;#!!-.BQ.FGO   			 r_   c                      t          j        d                              dd          } g d}t          d          }t	          |i d                              | |          }t          |d	          rJ d S )
Nrt  r   r   r   r   rv   rv   rv   F)re  r   r   r   )rb   r   r   rB   r(   rh   r   rf   r   r   r!  s       r\   test_predict_proba_disabledr    sx    
	"a$$AA
%
 
 
 C	c2!	$	$	$	(	(A	.	.Br?+++++++r_   c                  d   t          j        dt           j                                      dd          } t           j        | dd d f<   g d}t          dt          dt           j        	          fd
t                      fg          }t          |dg did          	                    | |           d S )Nrt  rF  r   r   r   r  imputerrX  )strategymissing_values
classifierclassifier__foo_paramr   r   )
rb   r   r  r   nanr<   r   rV   r(   rh   )rf   r   r   s      r\   test_grid_search_allows_nansr  !  s    
	"BJ'''//266AfAadGAvbfMMMN>++,	
	 	A ,iii8Q???CCAqIIIIIr_   c                   4    e Zd ZdZdZddZddZd Zd	dZdS )
FailingClassifierz,Classifier that raises a ValueError on fit()r   Nc                     || _         d S rX   ry  r{  s     r\   r]   zFailingClassifier.__init__4  r^   r_   c                 N    | j         t          j        k    rt          d          d S )Nz%Failing classifier failed as required)rz  r  FAILING_PARAMETERr   r~  s      r\   rh   zFailingClassifier.fit7  s+    >.@@@DEEE A@r_   c                 @    t          j        |j        d                   S rj   r  rp   s     r\   rn   zFailingClassifier.predict;  r  r_   c                     dS )Nrx   r   re   s      r\   ry   zFailingClassifier.score>  s    sr_   rX   r   )	r   r   r   r   r  r]   rh   rn   ry   r   r_   r\   r  r  /  so        66# # # #F F F F$ $ $     r_   r  c            	      (   t          ddd          \  } }t                      }t          |dg digddd	
          t          j        dt          j                  }t          j        t          |          5  	                    | |           d d d            n# 1 swxY w Y   t          j        d                   }fdt          fdt          |          D                       sJ t          |dg digddt          d          
          t          j        dt          j                  }t          j        t          |          5  	                    | |           d d d            n# 1 swxY w Y   t          j        d                   }t          fdt          |          D                       sJ j        d         }|d         dk    r|d         dk    sJ ||j                 dk    sJ j        |j        k    sJ d S )Nrt  r   r   r?  rz  r   rv   r   r   Frx   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                 l     t          j         fdt          j                  D                       S )Nc                 <    g | ]}j         d |z                    S r  rI  )r   rK  r!  r   s     r\   r   zPtest_grid_search_failing_classifier.<locals>.get_cand_scores.<locals>.<listcomp>f  s+    VVVQR^0145a8VVVr_   )rb   r   r   rO  )r   r!  s   `r\   get_cand_scoresz<test_grid_search_failing_classifier.<locals>.get_cand_scoresd  s<    xVVVVV%BUBUVVV
 
 	
r_   c              3      K   | ]F}j         d          |         t          j        k    #t          j         |          dk              V  GdS )param_parameterrx   N)r   r  r  rb   r   r   r  r  r!  s     r\   r   z6test_grid_search_failing_classifier.<locals>.<genexpr>j  sp       	
 	
~/08 23 3 F??6**c1223 3 3 3	
 	
r_   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      K   | ]T}j         d          |         t          j        k    #t          j        t          j         |                              V  UdS )r  N)r   r  r  rb   r   isnanr  s     r\   r   z6test_grid_search_failing_classifier.<locals>.<genexpr>  su        >+,V4./ / 	rx//0011/ / / / r_   r  r   rv   r   )r   r  r(   rQ  compileDOTALLr   warnsr   rh   ra   r   r   r   r  r  r/  )rf   r   r   warning_messager8  ranksr  r!  s         @@r\   #test_grid_search_failing_classifierr  B  s    KKKDAq


C 

yyy	!"
 
 
B j	 i  O 
&o	>	>	>  
q!              r~h/00L
 
 
 
 

 	
 	
 	
 	
 	
--	
 	
 	
     

yyy	!"%LL
 
 
B j	 i  O 
&o	>	>	>  
q!              r~h/00L     L))        N,-E 8q==U1X]]]]&'1,,,,>S2222222s$   :BB!$B!E66E:=E:c                  f   t          ddd          \  } }t                      }t          |dt          j        gdz  igd          }t	          j        d	t          j        
          }t          j        t          |          5  |
                    | |           d d d            d S # 1 swxY w Y   d S )Nrt  r   r   r?  rz  r   rx   r   zrAll the 15 fits failed.+15 fits failed with the following error.+ValueError.+Failing classifier failed as requiredr  r   r   r  r(   r  rQ  r  r  r   r   r   rh   )rf   r   r   r!  r  s        r\   )test_grid_search_classifier_all_fits_failr    s   KKKDAq


C	
);<q@	AB
 
 
B jH i  O 
z	9	9	9  
q!                 s   B&&B*-B*c                     t          ddd          \  } }t                      }t          |dg digddd	
          }t          j        t
                    5  |                    | |           d d d            d S # 1 swxY w Y   d S )Nrt  r   r   r?  rz  r  r   Fr   r  )r   r  r(   r   r   r   rh   r  s       r\   )test_grid_search_failing_classifier_raiser    s     KKKDAq


C 

yyy	!"
 
 
B 
z	"	"  
q!                 s   A::A>A>c                  x   ddgg dddddgig} t          | d	          }d}d
}d|||fz  }t          j        t          |          5  t	          |           d d d            n# 1 swxY w Y   t          | d
	          }t	          |          }t          |          d
k    sJ t          |           D ]}||v sJ 	t          t          | d	                    d
k    sJ t          d          t          d          t          d          d} t          | dd          }t	          |          }t          |          dk    sJ d |D             }t          t          |                    dk    sJ t          d          g dd}t          |d	          }t	          |          }t          |          dk    sJ d S )Nr   rv   )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   i  r   c   r  )r   r   c                 B    g | ]}d |d         |d         |d         fz  S )z	a%db%dc%dr  r  r  r   r   s     r\   r   z7test_parameters_sampler_replacement.<locals>.<listcomp>  s0    PPP1qvqvqv&>>PPPr_   r   r  )
r0   r   r  UserWarningr   ra   r/   r   r   r
   )	r   r  r   	grid_sizeexpected_warningr  r  hashable_samplesparams_distributions	            r\   #test_parameters_sampler_replacementr    sG    a&OOO44	5(#$F va000GFI	14=vy3Q	R 
 
k)9	:	:	:  W               va000G7mmGw<<1'' ! !     t44455:::: 99599599==FvbrBBBG7mmGw<<2PPPPPs#$$%%++++ %.cNNoooNN21===G7mmGw<<1s   A$$A(+A(c                  
   ddgi} t          j        d                              dd          }g d}t          t	          d          | d	
          }t          |d          rJ |                    ||           |                    |           |                    |           ddgi} t          t	          d          | d	
          }t          |d          rJ |                    ||           t          |d          rJ d S )Nlosslog_loss   r   r   r   r   r   rv   rv   rv   hinge)r  r   r  r   r   r   )	rb   r   r   r(   r   r   rh   r   r   )r   rf   r   r   s       r\   #test_stochastic_gradient_loss_paramr    s0    	J 		"a$$AA
W---*  C sO,,,,,GGAqMMMa!
 		J W---*  C sO,,,,,GGAqMMMsO,,,,,,,r_   c                      t          j        d                              dd          } g d}t          d          }t	          |dddgid	
          }|                    | |           d S )Nr   r   r  r   r   r   r   r  r   )r   r   )rb   r   r   rC   r(   rh   r  s       r\   %test_search_train_scores_set_to_falser    sl    
	!Q##AA

#
#
#C	csS#J&7A	>	>	>BFF1aLLLLLr_   c            	        	
 d} d}t          | d          \  }}t          t          d          dg dit          ||           d	
          		                    ||           t          t          d          dg dit          |          d	
          }|                    ||           t          t          |d	d                              ||          t                    sJ t          t          d          dg dit          |d	d                              ||          d	
          }|                    ||           t          t          d          dg dit          |d	d          d	
          }|                    ||           d }t          j
                             ||j                   ||j                             t          j
                            d 	j                                        D             d |j                                        D                        t          t          d          dg dit          |d	          d	
          		                    ||           dD ]ni }t          d          D ]"
	
fdt          d          D             |
<   #t          |d         |d                    t          |d         |d                    od S )Nr   r   r   r  r   r   )r   r  g333333?)r  r	  T)r   r   r)  r  )r  rE  r   c                 :    dD ]}|                      |           | S )N)r%  r&  r'  r(  )pop)r  r  s     r\   _pop_time_keysz>test_grid_search_cv_splits_consistency.<locals>._pop_time_keys:  s0    
 	  	 C NN3r_   c                 D    i | ]\  }}|                     d           ||S rw  ry  rp  s      r\   r  z:test_grid_search_cv_splits_consistency.<locals>.<dictcomp>Q  s/    LLL$!Q

78K8KLALLLr_   c                 D    i | ]\  }}|                     d           ||S rw  ry  rp  s      r\   r  z:test_grid_search_cv_splits_consistency.<locals>.<dictcomp>R  s/    MMM$!QG9L9LMAMMMr_   )r   r   r  r  )r  rE  )r  r  r   c                 @    g | ]}j         d |fz                    S )zsplit%d_%s_scorerI  )r   rK  r!  param_i
score_types     r\   r   z:test_grid_search_cv_splits_consistency.<locals>.<listcomp>e  s?     ) ) ) 1Q
OCDWM) ) )r_   rv   r   r   )r   r(   rC   r7   rh   r,   r   r  r	   rb   r}  r~  r   r   r   rP   )r	  r  rf   r   gs2gs3gs4r  per_param_scoresr!  r  r  s            @@@r\   &test_grid_search_cv_splits_consistencyr    s   IHCCCDAq	q!!!)H	BBB	
 
 
B FF1aLLL
q!!!)(###	  C GGAqMMM xA>>>DDQJJ     q!!!)(DqAAAGG1MM	  C GGAqMMM
q!!!)(DqAAA	  C GGAqMMM   Js'')H)H   JLL"...00LLLMM#///11MMM   
q!!!---.(D111	
 
 
B FF1aLLL ( 	L 	L
Qxx 	 	G) ) ) ) ) )q) ) )W%%
 	""21"57G7JKKK!"21"57G7JKKKK	L 	Lr_   c                     t                      } t          | dg didd          }|                    t          t                     |                    |                    t                              }t          t          |           d S )NrZ   r   r   r   )rV   r(   rh   rf   r   rt   rq   rQ   )r   r   X_round_trips      r\   +test_transform_inverse_transform_round_tripr  n  sw    


Cs[)))$<ANNNKOOAq001F1Fq1I1IJJLq,'''''r_   c                    	 d 	fd G fddt                     } t          d          t          ddd	          \  	 | d
                              	          } dddgidddgig          }|j        } ||           t          |          D ]]}|d                                         rA|dd          dk    r3|dvr/t          ||          t          ||          k    sJ d|z              ^d S )Nc                    |j         }t          |                                           t          |          k    sJ | D ]}|                    d          svt	          j        | |                   | |<   | |         j        j        dk    r"t          ||         | |         d|z              lt          ||         | |         d|z              d S )Nrx  r1  z	Checking )r   )
r   r   r  rz  rb   
asanyarrayr  r  rQ   rN   )resultsgscvexp_resultsr-  s       r\   check_resultsz-test_custom_run_search.<locals>.check_resultsx  s    &gllnn%%)<)<<<<< 		Y 		YA::g&& Y]71:66
1:#(C//&#A
K!O     $KNGAJVWXXXX		Y 		Yr_   c                 P    t          | d                                        S )NTr)  )r(   rh   )r   rf   r   r   s    r\   fit_gridz(test_custom_run_search.<locals>.fit_grid  s(    CEEEII!QOOOr_   c                   ,     e Zd Z fdZfdZ xZS ).test_custom_run_search.<locals>.CustomSearchCVc                 <     t                      j        |fi | d S rX   superr]   r[   r  kwargsr  s      r\   r]   z7test_custom_run_search.<locals>.CustomSearchCV.__init__  (    EGGY11&11111r_   c           	           |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 )Nr  rv   r   min_samples_splitr   r   r   )r[   evaluater"  r%  r(  s      r\   _run_searchz:test_custom_run_search.<locals>.CustomSearchCV._run_search  s    ha 0;2BCDDGM'88[1a&,A#B#BCCCh!4a 8;NPR:STUUGM;A/2E2w1OPQQ    r_   )r   r   r   r]   r4  __classcell__)r  r%  r(  s   @r\   CustomSearchCVr*    sW        	2 	2 	2 	2 	2	 	 	 	 	 	 	 	 	 	r_   r6  r   r   r   r   )r	  n_informativer   Tr'  r  rv   r   r2  r   r   r   r  >   r  rd   r   r  r   zAttribute %s not equal)r5   rH   r   rh   r   dirislowerr4  )
r6  mycvr#  r"  attrrf   r%  r   r(  r   s
        @@@@@r\   test_custom_run_searchr<  w  s   Y Y YP P P P P P P            Q
/
/
/CAANNNDAq>#$777;;AqAAD8kAq6*-@1b',JKLLDGM'4   D		  GOO	RSS	S    4&&'$*=*====(4/ >== r_   c                      G d dt                     }  | t                                                    t          t                      G d dt                     }t          j        t          d          5   |t                                                    t          t                     d d d            d S # 1 swxY w Y   d S )Nc                   &     e Zd Z fdZddZ xZS );test__custom_fit_no_run_search.<locals>.NoRunSearchSearchCVc                 <     t                      j        |fi | d S rX   r,  r.  s      r\   r]   zDtest__custom_fit_no_run_search.<locals>.NoRunSearchSearchCV.__init__  r0  r_   Nc                     | S rX   r   )r[   rf   r   r  
fit_paramss        r\   rh   z?test__custom_fit_no_run_search.<locals>.NoRunSearchSearchCV.fit  s    Kr_   r   )r   r   r   r]   rh   r5  r  s   @r\   NoRunSearchSearchCVr?    sL        	2 	2 	2 	2 	2	 	 	 	 	 	 	 	r_   rD  c                        e Zd Z fdZ xZS )3test__custom_fit_no_run_search.<locals>.BadSearchCVc                 <     t                      j        |fi | d S rX   r,  r.  s      r\   r]   z<test__custom_fit_no_run_search.<locals>.BadSearchCV.__init__  r0  r_   )r   r   r   r]   r5  rC  s   @r\   BadSearchCVrF    s8        	2 	2 	2 	2 	2 	2 	2 	2 	2r_   rH  z_run_search not implemented.r   )r5   rB   rh   rf   r   r   r   NotImplementedError)rD  rH  s     r\   test__custom_fit_no_run_searchrJ    s       l    ""1a(((2 2 2 2 2l 2 2 2 
*2P	Q	Q	Q % %CEEq!$$$% % % % % % % % % % % % % % % % % %s   76B::B>B>c                     t          d                              t                    } d | D              d}t          t	                      dg di| d          }t          j        t          d	
          5  |                    t          d |         t          d |                    d d d            d S # 1 swxY w Y   d S )Nr   r  c                     g | ]}|S r   r   )r   us     r\   r   z0test_empty_cv_iterator_error.<locals>.<listcomp>  s    OOO1QOOOr_   r   r%  r  r  r   r   r   n_jobszNNo fits were performed. Was the CV iterator empty\? Were there no candidates\?r   )
r,   r  rf   r1   r   r   r   r   rh   r   )r   
train_sizeridges      r\   test_empty_cv_iterator_errorrS    s    
				 	 	#	#B OOOOO Juww2D2D2D(E"UVWWWE 
*
 
 
 2 2 			!KZK.!KZK.1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   51B33B7:B7c                  V    G d dt                     }  | d          }d}t          t                      dg di|d	          }t          j        t
          d
          5  |                    t          d |         t          d |                    d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Zd ZdS ).test_random_search_bad_cv.<locals>.BrokenKFoldc                     dS )Nrv   r   )r[   argskws      r\   get_n_splitsz;test_random_search_bad_cv.<locals>.BrokenKFold.get_n_splits  s    1r_   N)r   r   r   rZ  r   r_   r\   BrokenKFoldrV    s#        	 	 	 	 	r_   r[  r   r  r   r%  rN  r   rO  zXcv.split and cv.get_n_splits returned inconsistent results. Expected \d+ splits, got \d+r   )	r,   r1   r   r   r   r   rh   rf   r   )r[  r   rQ  rR  s       r\   test_random_search_bad_cvr\    s       e   
 
a	 	 	 BJuww2D2D2D(E"UVWWWE 

 
 
 2 2 			!KZK.!KZK.1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s    1BB"%B"r)  F)r   r   r   r  r   c                    t          dd          \  }} G d d          } | t                      f |            d|d|}t          j        t                    5 }|                    ||           d d d            n# 1 swxY w Y   |rdd	gndg}t          |          t          |          k    sJ t          ||          D ]!\  }	}
d
|
 dt          |	j	                  v sJ "|j
        d                                         }t          j        |j
        d                   }t          |j
        d         |         |           t          j        |j
        d         |          |k               sJ d S )Nr   r   )r
  r   c                       e Zd ZdZd Zd ZdS )Htest_searchcv_raise_warning_with_non_finite_score.<locals>.FailingScorerz1Scorer that will fail for some split but not all.c                     d| _         d S rj   )n_countsr   s    r\   r]   zQtest_searchcv_raise_warning_with_non_finite_score.<locals>.FailingScorer.__init__  s    DMMMr_   c                 Z    | xj         dz  c_         | j         dz  dk    rt          j        S dS )Nrv   r   r   )ra  rb   r  )r[   r  rf   r   s       r\   __call__zQtest_searchcv_raise_warning_with_non_finite_score.<locals>.FailingScorer.__call__  s0    MMQMM}q A%%v1r_   N)r   r   r   r   r]   rc  r   r_   r\   FailingScorerr_  
  s8        ??	 	 		 	 	 	 	r_   rd  r   )r   r   r)  r  r  zOne or more of the z scores are non-finiter  r  )r   rG   r   r  r  rh   ra   zipr7  messager   maxrb   r  rQ   r   )r   rR  r)  rf   r   rd  r   warn_msgset_with_warningmsgdataset	last_ranknon_finite_masks                r\   1test_searchcv_raise_warning_with_non_finite_scorern    s   $ ;;;DAq
 
 
 
 
 
 
 
 8  -	 
  D 
k	"	" hA               -?L((VHx==C 0111111H&677 Y YWDWDDDCKHXHXXXXXX  !237799Iht/0ABCCOt'(9:?KYWWW6$"#456FG)STTTTTTTs   A??BBc                     d } t          ddd          \  }}t          d          }t          |ddd	gi| d
          }|                    ||           g d}|D ] }d                    |          |j        v sJ !|                    |          }t          ||          }|                    ||          t          j
        |d                   k    sJ d S )Nc                     |                      |          }t          ||          }|d         |d         |d         |d         dS )N)r   r   r   rv   )rv   r   rv   rv   tnfpfntp)rn   r!   )r   rf   r   rY  cms        r\   custom_scorerzAtest_callable_multimetric_confusion_matrix.<locals>.custom_scorer1  sB    Qa((hbhbhbhOOOr_   (   r   r  r?  r   r   r   rv   ru  r  rs  zmean_test_{}rq  )r   rC   r(   rh   formatr   rn   r!   ry   r   rP  )	ry  rf   r   r  rS  score_namesnamerY  rx  s	            r\   *test_callable_multimetric_confusion_matrixr~  .  s   P P P
 KKKDAq

$
$
$C#c1XTRRRF
JJq!***K A A$$T**f.@@@@@@^^AF	!V	$	$B<<1r$x!8!8888888r_   c                     d } t          ddd          \  }}t          d          }t          |ddd	gi| d
          }t          |ddd	gid
dgd
          }|                    ||           |                    ||           |j        t          j        |j                  k    sJ |j        |j        k    sJ |                    ||          t          j        |                    ||                    k    sJ d S )Nc                 n    |                      |          }t          ||          t          ||          dS )N)r1  r   )rn   r%   r    r  rf   r   rY  s       r\   ry  zHtest_callable_multimetric_same_as_list_of_strings.<locals>.custom_scorerG  s:    Q"1f--&q&11
 
 	
r_   rz  r   r  r?  r   r   r   rv   r1  r  r   	r   rC   r(   rh   rl  r   rP  r/  ry   )ry  rf   r   r  search_callable
search_strs         r\   1test_callable_multimetric_same_as_list_of_stringsr  E  s1   
 
 
 KKKDAq

$
$
$C"cC8_m8  O cC8_x&<H  J 1NN1a&&-
8N*O*OOOOO&**@@@@@  A&&&-
8H8HA8N8N*O*OOOOOOOr_   c                  F   d } t          ddd          \  }}t          d          }t          |ddd	gi| d
          }t          |ddd	gidd          }t          |ddd	gidgd          }|                    ||           |                    ||           |                    ||           |j        t          j        |j                  k    sJ |j        |j        k    sJ |                    ||          t          j        |                    ||                    k    sJ |j        t          j        |j                  k    sJ |j        |j        k    sJ |                    ||          t          j        |                    ||                    k    sJ d S )Nc                 L    |                      |          }t          ||          S rX   )rn   r%   r  s       r\   ry  zHtest_callable_single_metric_same_as_single_string.<locals>.custom_scorera  s!    QAv&&&r_   rz  r   r  r?  r   r   r   rv   Tr  r1  r  )ry  rf   r   r  r  r  search_list_strs          r\   1test_callable_single_metric_same_as_single_stringr  _  s   ' ' ' KKKDAq

$
$
$C"cC8_m4  O cC#q?HHUUUJ"cC8_xj  O 1NN1a1&&-
8N*O*OOOOO&**@@@@@  A&&&-
8H8HA8N8N*O*OOOOO&&-
8N*O*OOOOO&**@@@@@  A&&&-
8H8HA8N8N*O*OOOOOOOr_   c                     d } t          ddd          \  }}t          t          d          ddd	gi| d
          }d}t          j        t
          |          5  |                    ||           d d d            d S # 1 swxY w Y   d S )Nc                 
    ddiS )Nbad_namerv   r   r  rf   r   s      r\   
bad_scorerzBtest_callable_multimetric_error_on_invalid_key.<locals>.bad_scorer}  s    Ar_   rz  r   r  r?  r   r   r   rv   	good_namer  z`For multi-metric scoring, the parameter refit must be set to a scorer key or a callable to refitr   )r   r(   rC   r   r   r   rh   )r  rf   r   r   rj  s        r\   .test_callable_multimetric_error_on_invalid_keyr  {  s       KKKDAq
r"""	sAh	  C	,  
z	-	-	-  1                 s   A??BBc                     d } t          ddd          \  }}t                      }t          |dg dig| dd	
          }t          j        dt          j                  }t          j        t          |          5  |	                    ||           d d d            n# 1 swxY w Y   t          |j        d         g d           d S )Nc                 
    ddiS Nr2  rv   r   r  s      r\   ry  zBtest_callable_multimetric_error_failing_clf.<locals>.custom_scorer      qzr_   rt  r   r   r?  rz  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)rv   rv   r   )r   r  r(   rQ  r  r  r   r  r   rh   rN   r   )ry  rf   r   r   r!  r  s         r\   +test_callable_multimetric_error_failing_clfr    s)      KKKDAq


C	
yyy	!"
 
 
B j	Ki  O
 
&o	>	>	>  
q!               BN?3[[[AAAAAs   ;BB"%B"c                  z   d } t          ddd          \  }}t                      }t          |dt          j        gdz  ig| dd	
          }d}t	          j        d| t          j                  }t          j        t          |          5  |
                    ||           d d d            d S # 1 swxY w Y   d S )Nc                 
    ddiS r  r   r  s      r\   ry  zBtest_callable_multimetric_clf_all_fits_fail.<locals>.custom_scorer  r  r_   rt  r   r   r?  rz  r   Fr   r  z1ValueError: Failing classifier failed as requiredz5All the 15 fits failed.+your model is misconfigured.+r  r   r  )ry  rf   r   r   r!  individual_fit_error_messager   s          r\   +test_callable_multimetric_clf_all_fits_failr    s1      KKKDAq


C	
);<q@	AB
 
 
B $W J.+. . i  M 
z	7	7	7  
q!                 s   B00B47B4c                  p   d} t          |           \  }}t                      }dddgi}t          ||          }t          ||d          }t	          |d          rJ t	          |d          rJ |                    ||           |                    ||           |j        | k    sJ |j        | k    sJ d S )Nr   r@  max_iterr   rv   r   n_features_in_)r   r   r(   r1   r   rh   r  )r@  rf   r   gbdtr   r!  r  s          r\   test_n_features_inr    s     J*555DAq)++Dq!f%J	dJ	'	'B	D*Q	7	7	7Br+,,,,,r+,,,,,FF1aLLLFF1aLLL
****
******r_   pairwisec                       G  fddt                     } |            }d}t          |ddgi          } |                                d         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                       e Zd Z fdZdS )Stest_search_cv_pairwise_property_delegated_to_base_estimator.<locals>.TestEstimatorc                     diS Nr  r   r[   r  s    r\   
_more_tagsz^test_search_cv_pairwise_property_delegated_to_base_estimator.<locals>.TestEstimator._more_tags  s    ))r_   N)r   r   r   r  r  s   r\   TestEstimatorr    s.        	* 	* 	* 	* 	* 	* 	*r_   r  z.BaseSearchCV pairwise tag must match estimatorr  r   r  N)r   r(   	_get_tags)r  r  r  attr_messager   s   `    r\   <test_search_cv_pairwise_property_delegated_to_base_estimatorr    s    * * * * * * * * * * -//CCL	cMB40	1	1Br||~~j1111<11111r_   c                       G d dt                     }  |             }d}dD ]S}|                    |           t          |ddgi          }||                                d         k    s
J |            Td	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                       e Zd ZddZd ZdS )Xtest_search_cv__pairwise_property_delegated_to_base_estimator.<locals>.EstimatorPairwiseTc                     || _         d S rX   r  r  s     r\   r]   zatest_search_cv__pairwise_property_delegated_to_base_estimator.<locals>.EstimatorPairwise.__init__  s    $DMMMr_   c                     d| j         iS r  r  r   s    r\   r  zctest_search_cv__pairwise_property_delegated_to_base_estimator.<locals>.EstimatorPairwise._more_tags  s    ..r_   N)T)r   r   r   r]   r  r   r_   r\   EstimatorPairwiser    s7        	% 	% 	% 	%	/ 	/ 	/ 	/ 	/r_   r  z4BaseSearchCV _pairwise property must match estimatorrd  r  r  r   r  N)r   r   r(   r  )r  r  r  _pairwise_settingr   s        r\   =test_search_cv__pairwise_property_delegated_to_base_estimatorr    s    / / / / /M / / / 


CIL* M M 1222#t455 BLLNN:$>>>>>>>>M Mr_   c                     d} d}t          | d          \  }}ddgi}t                      }t          |||          }|                    ||           |                    |          }t          |          }t          d	          }t          |||          }|                    ||           |                    |          }	d
}
||	k                                    s
J |
            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  r  r   r   ri  )metricz2GridSearchCV not identical with precomputed metricN)r   r:   r(   rh   rn   r'   r   )r	  r  rf   r   grid_paramsr   r   preds_originalX_precomputedpreds_precomputedr  s              r\   ;test_search_cv_pairwise_property_equivalence_of_precomputedr  	  s     IHCCCDAq 2$'K 
 
 C	c;8	4	4	4BFF1aLLLZZ]]N (**M
m
4
4
4C	c;8	4	4	4BFF=!

=11GL//4466DDDDDDDr_   zSearchCV, param_searchr  r   r  r   c                      G d dt           t                    } |  |            |          }t          d          \  }}|                    ||d           |j        j        dk    sJ d S )Nc                   $    e Zd ZddZddZd ZdS ),test_scalar_fit_param.<locals>.TestEstimatorNc                     || _         d S rX   )r  )r[   r  s     r\   r]   z5test_scalar_fit_param.<locals>.TestEstimator.__init__/	  s    DFFFr_   c                     || _         d S rX   )r_)r[   rf   r   rs       r\   rh   z0test_scalar_fit_param.<locals>.TestEstimator.fit2	  s    DGGGr_   c                 F    t          j        t          |                    S )Nrk   )rb   r   ra   rp   s     r\   rn   z4test_scalar_fit_param.<locals>.TestEstimator.predict5	  s    83q66++++r_   rX   )r   r   r   r]   rh   rn   r   r_   r\   r  r  .	  sK        	 	 	 		 	 	 		, 	, 	, 	, 	,r_   r  r  r   )r  )r   r   r   rh   r   r  )r   param_searchr  modelrf   r   s         r\   test_scalar_fit_paramr  &	  s    , , , , , , , , H]]__l33EB///DAq	IIabI #r))))))r_   r%  c                     t          t          d          ddi\  }}}} G d dt                    }d } |  |            |          }||f|dd}	 |j        ||fi |	 d S )Nr  r   r   c                   (     e Zd Z	 	 	 	 d fd	Z xZS )9test_scalar_fit_param_compat.<locals>._FitParamClassifierNc                     t                                          |||           |dk    sJ t          |          sJ t          |t                    sJ |d         j        dk    sJ |d         j        dk    sJ | S )N)sample_weightr   r   rv   )r-  rh   callabler   r   ndim)r[   rf   r   r  tuple_of_arraysscalar_paramcallable_paramr  s          r\   rh   z=test_scalar_fit_param_compat.<locals>._FitParamClassifier.fitQ	  s     GGKK1MK:::!####N+++++ ou55555"1%*a////"1%*a////Kr_   NNNN)r   r   r   rh   r5  rC  s   @r\   _FitParamClassifierr  P	  sK        
  	 	 	 	 	 	 	 	 	 	r_   r  c                      d S rX   r   r   r_   r\   _fit_param_callablez9test_scalar_fit_param_compat.<locals>._fit_param_callabled	  s    r_   )r  r  r  )r4   r   r   rh   )
r   r  X_trainX_validro  y_validr  r  r  rB  s
             r\   test_scalar_fit_param_compatr  >	  s     *:	"	-	-	-*<>* *&GWgw    m   (   H((**L99E $W-- J
 EIgw--*-----r_   z)ignore:The total space of parameters 4 is	Predictorc                 \   t           j                            d          }|                    dd          t          j        dgdz  dgdz  z             }}t          dt                      fd |            fg          }dd	gdd	gd
} | ||d          }|                    ||           |j        	                                |	                                k    sJ |
                    |          }t          |          rNt          |d           |                    ||          t          j        t!          ||                    k    sJ d S t#          ||                                           |                    ||          t          j        t'          ||                    k    sJ d S )Nr      r   r   rv   rt  transformer	predictorr   )transformer__parampredictor__paramar   r  )rb   r  r  randnr   r<   rM   rh   r   r  rn   r   rQ   ry   r   rP  r    rN   rX  r$   )	r   r  r  rf   r   r  r   rS  rY  s	            r\   1test_search_cv_using_minimal_compatible_estimatorr  x	  s    )


"
"C99RRXqcAgb&899qA
+--	.iikk0JK E
  !"gW F XeV999F
JJq!##%%6666^^AFV H61%%%||Aq!!V]>!V3L3L%M%MMMMMMM)))||Aq!!V]8Av3F3F%G%GGGGGGGr_   c                 d   t          dddd          \  }}t          d          }ddgi}t          ||d	d
d
|                              ||           |                                 j        }|rt          j        d|          }nt          j        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   rC   r(   rh   
readouterroutrQ  findallra   )capsysr)  rf   r   r   r   capturedr   s           r\   test_search_cv_verbose_3r  	  s     #TUVVVDAq

#
#
#C#<D-   
c!Qiii  ""&H 7
BHMM
+X66u::??????r_   r  c                 l   t          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    sJ d S )Nr  r   r  )r   clf__Cr   r   trs)r   NTr   r   r'  r   r   )r   rC   r   r<   rM   rh   r   named_steps)	r   r  rf   r   r   orig_Cr   param_grid_searchr!  s	            r\   test_search_estimator_paramr  	  s     B///DAqkk]tf55FE]1Fe/112MBCCD%v.	$	Rdq*	R	R@Q	R	R	V	V	1
 
B
 %='''')%02d::::::r_   c            	      ~   ddd} t          dt                      fdt                      fg          }t          || dddd	d
          }g d}g d}|                    ||           |j        d         }t          j        dt                    }g d|d d <   t          j	        
                    |j        |           d S )N)rr  rv   r   )l1l2)vect__ngram_range
vect__normvectr   r   r   r   rv   )r  r  r   r   rP  r   r   )oner  threefourfive)r   r   rv   r   rv   param_vect__ngram_rangerF  )r  r  rr  )r<   r   r8   r1   rh   r   rb   r   objectr}  rQ   r   )parameter_gridpipeliner*  
data_traindata_targetresultexpected_datas          r\   test_search_with_2d_arrayr  	  s    -" N _&&'LNN#	
 H '*  M 988J!//Kj+...&'@AFHQf---M///M!!!J!!&+}=====r_   c                     t          d          \  } }t          dt                      fdt                      fg          }dt                      t	                      gi}t          ||d          }t          d          5  |                                }d	|v sJ 	 d
d
d
           n# 1 swxY w Y   |                    | |           t          d          5  |                                }d	|v sJ 	 d
d
d
           n# 1 swxY w Y   t          ||d          }|                    | |           t          d          5  |                                }d	|vsJ d|v sJ 	 d
d
d
           d
S # 1 swxY w Y   d
S )z5Test different HTML representations for GridSearchCV.r  r   r>  r   F)r   r'  diagram)displayz<pre>DummyClassifier()</pre>NTz<pre>LogisticRegression()</pre>)	r   r<   rA   r   r   r(   r   _repr_html_rh   )rf   r   r   r   r  	repr_htmls         r\   test_search_html_reprr  	  sq   B///DAq'>#3#34uo>O>O6PQRRH/++-?-A-ABCJ X*EJJJI			*	*	* ; ;))++	-:::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
 MM!Q			*	*	* ; ;))++	-:::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
 X*DIIIIMM!Q			*	*	* > >))++	-Y>>>>0I=====> > > > > > > > > > > > > > > > > >s6   B))B-0B-DD	D!E44E8;E8c                    t                      } | |dg didd          }|                    t          t                                        t                    }t          j        t          d          5  |                                 d d d            n# 1 swxY w Y   t          j        t          d          5  |                    ||           d d d            n# 1 swxY w Y   t          j
        d	
          5  t          j        d           |                    |           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    |           d d d            d S # 1 swxY w Y   d S )NrZ   r   r   r   z$Missing required positional argumentr   z$Cannot use both X and Xt. Use X only)rf   XtT)recorderrorzXt was renamed X in version 1.5)r  )rV   rh   rf   r   rq   r   r   r  rt   warningscatch_warningssimplefilterr  FutureWarning)r   r   rS  X2s       r\   %test_inverse_transform_Xt_deprecationr  
  su   


CXcK31EEEF	Aq			#	#A	&	&B	y(N	O	O	O # #  """# # # # # # # # # # # # # # # 
y(N	O	O	O . .  2" ---. . . . . . . . . . . . . . . 
	 	-	-	- % %g&&&  $$$% % % % % % % % % % % % % % % 
m+L	M	M	M ( (  B '''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (sH   5BBB<C  C$'C$ *D66D:=D:F  FFenable_slep006c                 *   t          d          \  }}t          |          }t          j                            d          }|                    |          }|                    |          }t                      }|ddgii}	t                      }
t          |
          	                    dd	          }t          |d
          } | |fd
d|d|	                    ||||           t          |
          sJ |
D ]}t          |dd	||           dS )zMTest that *SearchCV forwards metadata correctly when passed multiple metrics.r  r   r   r   rv   )registryscore_weightsscore_metadata)r  metadatar   )	my_scorerr   r   r  )r  r  ry   )objr  split_paramsr  r  N)r   rT   rb   r  r  randrC   rE   rD   set_score_requestr  rh   ra   rF   )r   r  rf   r   r	  r  r  r  r  r  scorer_registryscorerr   _scorers                 r\   *test_multi_metric_search_forwards_metadatar$  
  sZ    B///DAqQI
)


"
"CHHY''MXXi((N
++C%aSz2kkOo666HH%0@ I  F Vj999GHSO
q'OO=NOOSS	1M. T    " 
 
6'#	
 	
 	
 	
 	

 
r_   c                 ,   t          d          \  }}t                      }|ddgii} | |fddi|                    ||          }t          j        t
          d          5  |                    ||d	           d
d
d
           d
S # 1 swxY w Y   d
S )z{*SearchCV should reject **params when metadata routing is not enabled
    since this is added only when routing is enabled.r  r   r   rv   r   r   zis only supported ifr   )r  N)r   rC   rh   r   r   r   ry   )r   r  rf   r   r  r  r!  s          r\   1test_score_rejects_params_with_no_routing_enabledr&  D
  s     B///DAq
++C%aSz2	#	1	1!	10	1	1	5	5a	;	;B	z)?	@	@	@ # #
A"""# # # # # # # # # # # # # # # # # #s   #B		BBc                  P    G 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          }t	          d          \  }}|                    ||           |D ]"}|j        d|          j        t          k    sJ #dS )zQNon-regression test for https://github.com/scikit-learn/scikit-learn/issues/29074c                   ,    e Zd Z	 	 	 	 ddZddZd ZdS )8test_cv_results_dtype_issue_29074.<locals>.MetaEstimatorNc                 L    || _         || _        || _        || _        || _        d S rX   )base_clf
parameter1
parameter2
parameter3
parameter4)r[   r+  r,  r-  r.  r/  s         r\   r]   zAtest_cv_results_dtype_issue_29074.<locals>.MetaEstimator.__init__a
  s+     %DM(DO(DO(DO(DOOOr_   c                 <    | j                             ||           | S rX   )r+  rh   r~  s      r\   rh   z<test_cv_results_dtype_issue_29074.<locals>.MetaEstimator.fito
  s    Ma###Kr_   c                 8    | j                             ||          S rX   )r+  ry   r~  s      r\   ry   z>test_cv_results_dtype_issue_29074.<locals>.MetaEstimator.scores
  s    =&&q!,,,r_   r  rX   )r   r   r   r]   rh   ry   r   r_   r\   MetaEstimatorr)  `
  sY         	) 	) 	) 	)	 	 	 		- 	- 	- 	- 	-r_   r2  NoptionABrv   r   r  str1str2)r,  r-  r.  r/  r   r
  r   r   param_)	r   r   r(   r   r   rh   r   r  r  )r2  r   r   rf   r   r  s         r\   !test_cv_results_dtype_issue_29074r9  ]
  s	   - - - - - - - -2 h_xo>aVnQxjv&	 J - 2 4 455  K 1%%%DAqOOAq I I&'7'7'78>&HHHHHI Ir_   c                     t          j        d          } |                     g dg dg dd          }|                    dd          }|d         }t	          d	t          d
          dgfgd          }t          d	|fdt                      fg          }dt          d
          t                      gi}t          ||d          }|
                    ||           |j        d         j        t          k    sJ dS )zNCheck cv_results_ for estimators with a `dtype` parameter, e.g. OneHotEncoder.r  )rv   r   r   r   r   )r  r  r  r  r  )rw   gffffff@r&  g      @rw   )	numeric_1object_1targetr=  rv   r  encF)sparse_outputr<  passthrough)	remainderr   enc__encr   r   param_enc__encN)r   importorskipr  dropr   r>   r<   r   r?   r(   rh   r   r  r  )pddfrf   r   r>  r   r  r   s           r\   'test_search_with_estimators_issue_29157rH  
  s:   		X	&	&B	(111///	
 	

 
B 	q!!A
8A

U333j\	BC  C CL*,,-	
 D 	...
K t[Q777KOOAq"#34:fDDDDDDr_   c                  J   dt          d          \  } }t          t          d          t                                }fddD             }fd|D             }t	          |d|i	          }|                    | |           |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   r  periodic)extrapolationc                     g | ]}|z  S r   r   )r   r   r@  s     r\   r   z4test_cv_results_multi_size_array.<locals>.<listcomp>
  s    999qJN999r_   )r   r     c                     g | ]:}t          j        d t           j        dz  |                              df          ;S )r   r   r   )rb   linspacepir   )r   n_knotsr@  s     r\   r   z4test_cv_results_multi_size_array.<locals>.<listcomp>
  sP        	Aruqy'**22B
3CDD  r_   splinetransformer__knotsr  param_splinetransformer__knotsN)	r   r=   r@   r   r(   rh   r   r  r  )rf   r   spline_reg_pipen_knots_list
knots_listspline_reg_pipe_cvr@  s         @r\    test_cv_results_multi_size_arrayrX  
  s    
 J"---DAq#
333 O
 :999L999L   #  J &!&

   1a   &'GHNRXXXXXXXr_   )r4  r  r  )r   r   )candidate_paramsexpected	param_foozsimple numeric, single param)idr   r   	param_bar)r   r   r   )FFTr3  z1simple numeric, one param is missing in one roundrF  zlists of different lengthszlists tuplesr  c                 >   t          t          |                     }t          ||          D ]o\  \  }}\  }}||k    sJ |j        |j        k    sJ t          j                            ||           t          j                            |j        |j                   pd S rX   )r   r6   re  r  rb   r}  rQ   r4  )rY  rZ  r  r  r5  expected_keyexpected_values          r\   &test_yield_masked_array_for_each_paramra  
  s    l 45EFFGGF8;FH8M8M G G4e4|^l""""{n22222

%%e^<<<

%%ej.2EFFFF	G Gr_   )r   )r   r  rQ  r   r  collections.abcr   r   	functoolsr   ior   	itertoolsr   r   r  r	   numpyrb   r   scipy.statsr
   r   r   r   r   sklearn.baser   r   r   sklearn.clusterr   sklearn.composer   sklearn.datasetsr   r   r   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.   r/   r0   r1   r2   r3   r4   sklearn.model_selection._searchr5   r6   $sklearn.model_selection.tests.commonr7   sklearn.naive_bayesr8   sklearn.neighborsr9   r:   r;   sklearn.pipeliner<   r=   sklearn.preprocessingr>   r?   r@   rA   sklearn.svmrB   rC   %sklearn.tests.metadata_routing_commonrD   rE   rF   sklearn.treerG   rH   sklearn.utils._mockingrI   rJ   sklearn.utils._testingrK   rL   rM   rN   rO   rP   rQ   rR   sklearn.utils.fixesrS   sklearn.utils.validationrT   rV   r   r   rf   r   r   markparametrizer  r   r   r   r   r   r  r  r#  r(  r+  r<  rD  rM  rO  rT  r\  rg  rr  ru  rw  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r;  rB  rZ  r_  ri  r]  rg  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r<  rJ  rS  r\  rn  r~  r  r  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  r  r  r  usefixturesr$  r&  r9  rH  rX  one_hot_encoderordinal_encoderr  r  r   r  ma_with_tuplesr  ra  r   r_   r\   <module>r     s      				 



  + + + + + + + +             $ $ $ $ $ $ $ $            1 1 1 1 1 1 1 1 1 1 " " " " " " F F F F F F F F F F " " " " " " - - - - - -         
 * ) ) ) ) ) ; ; ; ; ; ; / / / / / / 9 9 9 9 9 9 ; ; ; ; ; ; ( ( ( ( ( (                             9 8 8 8 8 8                                     A @ @ @ @ @ , , , , , , U U U U U U U U U U 4 4 4 4 4 4 4 4            ' & & & & & & &         
 G F F F F F F F D D D D D D D D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 / . . . . . 1 1 1 1 1 1
$ $ $ $ $ $ $ $N    y    BHr2hR1a&1a&122BH\\\= = = ='':JSU2V2V2V"WXX&	
IKL1#,	I'JKAJF	
	    YX
!/ !/ !/H  2< < <$ l4F%GHH< < IH<$ ( ( (07 7 78  >0 0 02	/ 	/ 	/( ( (V  F F F6 6 6% % %P .99  :9* .99!( !( :9!(H* * *:! ! !$ $ $ $ $} $ $ $ 
 
 
*+ *+ *+Z  0 *RG44'9<&HII  JI 540+ + +:/ / /*/ / // / / 3 3 3>7 7 78$ $ $"8 8 84B B B,V V V VW! W! W!tB B BJ "	sQGn56	cAr7^qQQR 5) 5) 5)p ?  ?  ?F!
 !
 !
H# # #LF F F& ,,..!,q"g 6	
 	
 	
 	,,..K!R;Q	
 	
 	
 7 7 7 ((666!.B 8	
 	
 	

 	((666%2w/	
 	
 	
   BN N NDU U U %' %' %'P"A "A "AJ  $+ + +\, , ,J J J       &N3 N3 N3b  ,  *% % %P- - -@  \L \L \L~( ( (6 6 6r% % %(2 2 222 2 22 -t}=="	{LLL&ABC%0,,,$?1MM	
	 	*U *U	 	 >=*UZ9 9 9.P P P4P P P8  *B B B8  <+ + +" dE]33@ @ 43@&M M M2E E E< S3+&'*<sGGAqMM>R)ST * *	 *( 	#t-.	gwwtS'9'9:; .. .. ..f GHHl4F%GHH'79J&KLLH H ML IH IHH8 -e}==  >=. 	|$	23	l+ ; ; ;(> > >:> > >: l4F%GHH( ( IH(0 )**	|$	23 
 
  +*
< 	|$	23	l+ 
# 
# 
#"*I *I *IZE E EB  B  -// ."" ""828A;;T"HHq q  $QZ%$be//!Q0@0@AAB .	
 	
 	
 	q!!1Q#7#7%Dbe//0C0CDDEE%%hbhyyy&9&9@T@T@T%UU C
	
 
	
 
	
 	qcA3_%aSz':;  E%%aS1#!qc
&C6%RR ,		
 		
 		
 	V_ufo.  " 		
 		
 		
 	_%'?@  E%%&HPV%WW 		
 		
 		
O14 4jG Gk4 4jG G Gr_   