
    Mpj                       S r SSKrSSKrSSKrSSKrSSKJrJr  SSKJ	r	  SSK
Jr  SSKJrJr  SSKJr  SSKrSSKrSSKJrJrJrJr  SS	KJr  SS
KJrJrJrJr  SSK J!r!J"r"J#r#J$r$J%r%  SSK&J'r'  SSK(J)r)  SSK*J+r+J,r,J-r-  SSK.J/r/  SSK0J1r1  SSK2J3r3  SSK4J5r5  SSK6J7r7  SSK8J9r9  SSK:J;r;  SSK<J=r=J>r>J?r?J@r@  SSKAJBrBJCrCJDrDJErEJFrFJGrGJHrH  SSKIJJrJ  SSKKJLrLJMrMJNrNJOrOJPrPJQrQJRrRJSrSJTrTJUrUJVrVJWrWJXrXJYrY  SSKZJ[r[J\r\  SSK]J^r^  SSK_J`r`  SSKaJbrbJcrcJdrd  SSKeJfrfJgrg  SSKhJiriJjrjJkrkJlrl  SS KmJnrnJoro  SS!KpJqrqJrrrJsrs  SS"KtJuruJvrv  SS#KwJxrx  SS$KyJzrzJ{r{  SS%K|J}r}J~r~JrJrJrJrJrJrJrJr  SS&KJr  SS'KJr  SS(KJr   " S) S*\\5      r " S+ S,\o5      r\GR                  " S-S-/S.S-/S/S//S0S///5      r\GR                  " / S1Q5      rS2 r\GR&                  GR)                  S3\T\	" \US4S59/5      \GR&                  GR)                  S6S\S74S8S/0S/\S94S8S0\S:4/5      S; 5       5       rS< rS= rS> r\GR&                  GR)                  S?\L\V/5      S@ 5       rSA rSB rSC rSD rSE rSF rSG rSH rSI rSJ r\GR&                  GR)                  SK\5      SL 5       r\GR&                  GR)                  SK\5      SM 5       rSN rSO r " SP SQ\5      r\GR&                  GRU                  SR5      SS 5       rST rSU r\GR&                  GR)                  SVS-S0/5      \GR&                  GR)                  SW\V\L/5      SX 5       5       rSY rSZ rS[ rS\ rS] rS^ rS_ rS` rSa rSSb jrSc rSd r\GR&                  GR)                  Se\LSfSgS/S4/004\VSgS/S4/0S0Sh.4/5      Si 5       rSj rSk rSl rSm r\GR&                  GR)                  SW\V" \u" 5       SnSoS4/0Sp9\L" \u" 5       SnSoS4/0Sq9/5      Sr 5       rSs r\GR&                  GR)                  St\L" \>" 5       Sg/ SuQ0Sq9\V" \?" 5       Sv/ SwQ0Sp9/5      Sx 5       r\GR&                  GR)                  SW\V" \d" SySz9S{SoS4/0S|S}9\L" \d" SySz9S{SoS4/0S|S~9/5      S 5       rS rS r\GR&                  GRU                  S5      S 5       rS rS rS rS rS r " S S\5      rS rS rS rS rS rS rS rS rS rS r\GR&                  GR                  S 5       rS r\GR&                  GR)                  SSSy/5      \GR&                  GR)                  Se\LSfSn/ SQ004\VSn/ SQ0SSh.4/5      S 5       5       rS rS rS rS rS rS rS r\GR&                  GR)                  SSyS/5      S 5       rS rS r\GR&                  GR)                  S\LSSS/04\VS\" S/S5      04/5      S 5       r\GR&                  GR)                  S\LSvSS/04\VSv\" SS5      04/5      S 5       r\GR&                  GRU                  S5      \GR&                  GR)                  S?\L\V/5      \GR&                  GR)                  S\~\}/5      S 5       5       5       r\GR&                  GR)                  SSyS/5      S 5       r\GR&                  GR)                  S\LSf4\VS4\OSf4/5      S 5       r\GR&                  GR                  S 5       rS r\GR&                  GR)                  S\LSf4\VS4/5      \" SyS9S 5       5       r\GR&                  GR)                  S\LSf4\VS4\OSf4/5      S 5       rS rS rS r\GR&                  GR)                  S\x" 5       5      \GR&                  GR)                  S?\L\V/5      S 5       5       r\i" 5       r\j" 5       r\GR                  GR                  \GR                  " S05      Sy\S9rS\S'   S\S/'   \GR&                  GR)                  S\GR                  " S8S/0S8S00/S\GR                  GR                  \GR                  " S/S0/5      5      4/SS9\GR                  " S/SS.S0SS.S8S0/S\GR                  GR                  \GR                  " / SQ5      5      4S\GR                  GR                  \GR                  " / SQ5      / SQS94/SS9\GR                  " S8S//S0/S//0S8S//S0//0/S\GR                  GR                  S//S0/S//S//S0///\S94/SS9\GR                  " S8S0S8S0/S\4/SS9\GR                  " S8\0S8\0/S\GR                  GR                  \\/\S94/SS9/5      S 5       rS rS r\GR&                  GR)                  SSyS/5      \GR&                  GR)                  S\" \"S5      5      \%S 5       5       5       r\GR&                  GR)                  SSyS/5      \GR&                  GR)                  S\" \!S5      5      \%S 5       5       5       r\%S 5       r\GR&                  GR)                  S\" \!S5      5      \%S 5       5       Gr \%S 5       Grg)zTest the search module    N)IterableSized)partial)StringIO)chainproduct)GeneratorType)	bernoulliexponrandintuniform)config_context)BaseEstimatorClassifierMixincloneis_classifier)MaxIterEstimatorNoCallbackEstimatorRecordingAutoPropagatedCallbackRecordingCallbackskip_callback_test_if_wasm)KMeans)ColumnTransformer)
make_blobsmake_classificationmake_multilabel_classification)LinearDiscriminantAnalysis)DummyClassifier)HistGradientBoostingClassifier)FitFailedWarning)enable_halving_search_cv)TfidfVectorizer)SimpleImputer)LinearRegressionLogisticRegressionRidgeSGDClassifier)accuracy_scoreconfusion_matrixf1_scoremake_scorerr2_scorerecall_scoreroc_auc_score)euclidean_distances)GridSearchCV
GroupKFoldGroupShuffleSplitHalvingGridSearchCVHalvingRandomSearchCV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))yield_namespace_device_dtype_combinations)CheckingClassifierMockDataFrame)
MinimalClassifierMinimalRegressorMinimalTransformer_array_api_for_testsassert_allcloseassert_allclose_dense_sparseassert_almost_equalassert_array_almost_equalassert_array_equalset_random_state)_enforce_estimator_tags_y)CSR_CONTAINERS)_num_samplesc                   `    \ rS rSrSrSS jrS rS rS rS r	\r
\r\rSS	 jrSS
 jrS rSrg)MockClassifiert   z8Dummy classifier to test the parameter search algorithmsc                     Xl         g N	foo_param)selfrh   s     e/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/sklearn/model_selection/tests/test_search.py__init__MockClassifier.__init__w       "    c                 p    [        U5      [        U5      :X  d   e[        R                  " U5      U l        U $ rf   )lennpuniqueclasses_ri   XYs      rj   fitMockClassifier.fitz   s,    1vQ		!rn   c                      UR                   S   $ Nr   shape)ri   Ts     rj   predictMockClassifier.predict   s    wwqzrn   c                     XR                   -   $ rf   rg   ri   ru   s     rj   	transformMockClassifier.transform       >>!!rn   c                     XR                   -
  $ rf   rg   r   s     rj   inverse_transform MockClassifier.inverse_transform   r   rn   Nc                 2    U R                   S:  a  SnU$ SnU$ )N         ?        rg   )ri   ru   rv   scores       rj   r   MockClassifier.score   s&    >>AE  Ern   c                     SU R                   0$ Nrh   rg   )ri   deeps     rj   
get_paramsMockClassifier.get_params   s    T^^,,rn   c                     US   U l         U $ r   rg   )ri   paramss     rj   
set_paramsMockClassifier.set_params   s    ,rn   )rs   rh   )r   NNF)__name__
__module____qualname____firstlineno____doc__rk   rw   r~   r   r   predict_probapredict_log_probadecision_functionr   r   r   __static_attributes__ rn   rj   rc   rc   t   s@    B#
"" M-rn   rc   c                   (    \ rS rSrSr\S 5       rSrg)LinearSVCNoScore   z0A LinearSVC classifier that has no score method.c                     [         erf   )AttributeErrorri   s    rj   r   LinearSVCNoScore.score   s    rn   r   N)r   r   r   r   r   propertyr   r   r   rn   rj   r   r      s    : rn   r   r      )r   r   r   r   c                 z    [        U 5      [        [        U 5      5       Vs/ s H  oU   PM	     sn:X  d   eg s  snf rf   )listrangerp   )gridis     rj   assert_grid_iter_equals_getitemr      s3    :5T+;<+;aq'+;<<<<<s   8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                 p    [         R                  " X#S9   U " U5        S S S 5        g ! , (       d  f       g = f)Nmatch)pytestraises)r   input
error_typeerror_messages       rj   test_validate_parameter_inputr      s#     
z	7e 
8	7	7s   	'
5c            
      .   S/ SQ0n [        U 5      n[        U[        5      (       d   e[        U[        5      (       d   e[	        U5      S:X  d   e[        U5        SS// SQS.n[        U5      n[	        U5      S:X  d   e[        S5       H=  n[        S	 U 5       5      nU[        S
 [        US   US   5       5       5      :X  a  M=   e   [        U5        [        0 5      n[	        U5      S:X  d   e[        U5      0 /:X  d   e[        U5        [        R                  " [        5         US     S S S 5        [        SSS/00 SS/0/5      n[	        U5      S:X  d   e[        U5      SS0SS00 SS0/:X  d   e[        U5        g ! , (       d  f       N[= f)Nr   r   r      r      r   )hamspameggsr   bar   c           	   3   r   #    U  H-  n[        [        [        UR                  5       5      6 5      v   M/     g 7frf   )tupler   sorteditems).0ps     rj   	<genexpr>&test_parameter_grid.<locals>.<genexpr>   s(     GAU56!'')#4677s   57c              3   2   #    U  H  u  pS USU4v   M     g7f)r   r   Nr   )r   xys      rj   r   r      s      
-TTQUAua -Ts   r   r   Cr         ?)r8   
isinstancer   r   rp   r   r   setr   r   r   r   
IndexError)params1grid1params2grid2r   pointsempty	has_emptys           rj   test_parameter_gridr      s   i G'"EeX&&&&eU####u:??#E*!f%<=G'"Eu:?? 1XGGG 
-4WU^WU^-T
 
 
 	
 
  $E* "Eu:??;2$#E*	z	"a 
# aW~rC#<@AIy>Q	?Qx#rBc
CCCC#I. 
#	"s   +F
Fc                     [        5       n [        U S/ SQ0SSS9n[        R                  n[	        5       [        l        UR                  [        [        5        U[        l        UR                  R                  S:X  d   e[        UR                  S   R                  / SQ5        UR                  [        [        5        UR                  [        5        UR                  [        5        UR!                  [        5        SUl        [$        R&                  " [(        5         UR                  [        [        5        S S S 5        g ! , (       d  f       g = f)Nrh   r   r   r   cvverboseparam_foo_paramsklearn)rc   r0   sysstdoutr   rw   ru   r   best_estimator_rh   r]   cv_results_datar   r   r   r   scoringr   r   
ValueError)clfgrid_search
old_stdouts      rj   test_grid_searchr      s    

Cs[)$<ANKJCJOOAqCJ&&00A555{../@AFF	R aa !!!$! $K	z	"1 
#	"	"s   E
Ec                  6   [        S[        5       4/5      n S[        5       [        5       /0n[        XSS9nUR	                  [
        [        5        UR                  S   n[        US   [        5      (       d   e[        US   [        5      (       d   e[        US   S5      (       a   e[        US   S5      (       a   eUS   UR                  Ld   eUS   UR                  Ld   e[        US   S   S5      (       a   e[        US   S   S5      (       a   eg )N	regressorr   r   param_regressorr   r   coef_)rE   r$   r&   r0   rw   ru   r   r   r   hasattrr   )pipe
param_gridr   regressor_resultss       rj   test_grid_search_pipeline_stepsr      s-   k#3#5678D 0 2EG<=JtA6KOOAq#//0AB'*,<===='*E2222(+W5555(+W5555Q{'B'BBBBQ{'B'BBBBz+.q17;;;;z+.q17;;;;;rn   SearchCVc           	         [         R                  " S5      R                  SS5      n[         R                  " S/S-  S/S-  -   5      n[	        SS/S9nU " US	/ S
Q0SSS9nSn[
        R                  " [        US9   UR                  X[         R                  " S5      S9  S S S 5        Sn[
        R                  " [        US9   UR                  X[         R                  " S5      [         R                  " S5      S9  S S S 5        UR                  X[         R                  " S5      [         R                  " S5      S9  g ! , (       d  f       N= f! , (       d  f       NY= f)Nd   r   r      r   r   r   )expected_fit_paramsrh   r   r   raiser   error_scorez0Expected fit parameter\(s\) \['eggs'\] not seen.r   )r   z)Fit parameter spam has length 1; expected)r   r   )rq   arangereshapearrayrS   r   r   AssertionErrorrw   oneszeros)r   ru   r   r   searchererr_msgs         rj   test_SearchCV_with_fit_paramsr    s   
		#r2&A
!qA37"#A
&&1A
BCk95!QH BG	~W	5Q, 
6 :G	~W	5Q
"> 
6LLBGGBKbhhrlL; 
6	5 
6	5s   ;%D?:E?
E
Ec                     [        SS9n [        SSS9u  p/ SQn[        SS9n[        U SU0SS9nUR	                  X5        [        USU0SS9nUR	                  X5        UR
                  UR
                  :X  d   eUR                  X5      UR                  X5      :X  d   e[        USU05      n[        R                  " [        S	S
9   UR	                  S//5        S S S 5        g ! , (       d  f       g = f)Nr   random_stater   r  centers皙?r   r   r   accuracyr   z
no scoringr   r   )
rL   r   r   r0   rw   best_params_r   r   r   	TypeError)r   ru   r   Csclf_no_scorer   grid_search_no_scores          rj   test_grid_search_no_scorer     s    

#C1a0DA	B#3LsS"IzBKOOA'sBiTQ"  ,,0H0HHHHQ"&:&@&@&FFFF (sBi@	y	5  1#' 
6	5	5s   C%%
C3c                     [        SSSSS9u  p[        SS9nSS/0n[        X#S S	9R                  X5      n[        X#S
S	9R                  X5      n[        [	        5       USS	9R                  X5      n[        X#SS	9R                  X5      nUR                  X5      nUR                  X5      n	UR                  X5      n
UR                  X5      nUS:  d   eU	S:  d   eX:w  d   e[        X5        [        X5        g )Nr  r   皙?r   	n_samples	n_classesflip_yr  r  r   r  r  r  roc_aucr   )r   rL   r0   rw   r   r   r[   )ru   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               rj   test_grid_search_score_methodr.  8  s   #TUVDA

#C#<D$S=AA!G"3jAEEaKO!-D)"	c!i  c;??EJ )..q4$**10N399!?  &I s??C&&&9	6rn   c                  ,   [         R                  R                  S5      n [        SSSS9u  pU R	                  SSS5      n[        SS9nSS/0n[        5       [        S5      [        SS	9[        5       /nS
nU HP  n[        XEUS9n	[        R                  " [        US9   U	R                  X5        S S S 5        U	R                  XUS9  MR     [        5       [!        5       /n
U
 H  n[        XEUS9n	U	R                  X5        M      g ! , (       d  f       N[= f)Nr      r   )r"  r#  r  r   r  r   r   n_splitsz*The 'groups' parameter should not be None.r   r   groups)rq   randomRandomStater   r   rL   r6   r7   r1   r2   r0   r   r   r   rw   r;   r<   )rngru   r   r4  r   r   	group_cvs	error_msgr   gsnon_group_cvss              rj   test_grid_search_groupsr<  T  s     ))


"CqqIDA[[Ar"F

#C!:D 	A	I =I#+]]:Y7FF1L 8
qF#	  %&(>(@AM#+
q  87s   D
D	c                  r   [         R                  " S5      R                  SS5      n [         R                  " S/S-  S/S-  -   5      n/ SQn[	        [        SS9SU05      nUR                  X5        [        UR                  R                  UR                  5        [	        [        5       S	S
S/05      nUR                  X5        [        US5      (       a   e[	        [        SS9SU05      n[        US5      (       a   e[	        [        SS9SU0SS9nUR                  X5        [        US5      (       a   eg )Nr  r   r   r  r   r  r  r   alphar          @rs   Frefit)rq   r  r  r	  r0   rL   rw   r]   r   rs   r&   r   )ru   r   r  r   s       rj   test_classes__propertyrB  s  s   
		#r2&A
!qA37"#A	Bya83)DKOOA{22;;[=Q=QR uw3*(=>KOOA{J//// ya83)DK{J//// ya83)5QKOOA{J/////rn   c                     [        5       n [        U SS/0SS9nUR                  [        [        5        [        US5      (       d   e[        U SS/0SSS9nUR                  [        [        5        [        US5      (       d   eg )Nrh   r   r   r   r   r   )r   r   )rc   r0   rw   ru   r   r   r:   )r   r   random_searchs      rj   test_trivial_cv_results_attrrE    sz    

Cs[1#$61=KOOAq;....&s[1#,>qQOMa=-0000rn   c            
         [        5       n S SS/4 H  n[        U S/ SQ0SSS9nUR                  [        [        5        [        US5      (       d"  [        US	5      (       a  [        US
5      (       d   eS H  nSU S3nSU S3n[        R                  " [        US9 n[        X#5      " [        5        S S S 5        [        WR                  R                  [        5      (       d   eU[        UR                  R                  5      ;   a  M   e   GM     SnS HL  n[        R                  " [        US9   [        U 0 USSS.S9R                  [        [        5        S S S 5        MN     g ! , (       d  f       N= f! , (       d  f       Mq  = f)Nr  	precisionrh   r   Fr   rA  r   r   best_index_r  )r~   r   r   r   r   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)rA  r   )rc   r0   rw   ru   r   r   r   r   r   getattrr   value	__cause__strr   )	r   r   r   fn_name	outer_msg	inner_msg	exec_infor9  rA  s	            rj   test_no_refitrV    sh   

C:{34"3i(@RST1%677]33^44	
5
G -WIQ7I!' +3 3  ~Y?9-a0 @ ioo77HHHHIOO$=$= >>>>!
 5> 	T  .]]:Y7Ruj+.Vc!Qi 87 . @? 87s   E)4(E:)
E7:
F		c                      [        SSSS9u  p[        5       n[        USSS/05      n[        R                  " [
        5         UR                  U S S U5        S S S 5        g ! , (       d  f       g = f)	N   r  r   r"  
n_featuresr  r   r  r      )r   rL   r0   r   r   r   rw   )X_y_r   r   s       rj   test_grid_search_errorr^    sZ     33QOFB
+C	cC#s,	-B	z	"
r$3x 
#	"	"s   A!!
A/c                     [        SSSS9u  pS/S/S/S.n[        S	S
9n[        X25      nUR                  X5        [        SSSS9nUR                  X5        [	        UR
                  UR                  R
                  5        g )NrX  r  r   rY  r   rbfr  )r   kernelgammaautorb  )r   rK   r0   rw   r]   
dual_coef_r   )r\  r]  
param_dictr   r   s        rj   test_grid_search_one_grid_pointrg    sv     33QOFBu3%@J
F
C	c	&BFF2N
E
-CGGBOs~~r'9'9'D'DErn   c                      [        5       n S n[        U S[        SS5      0SS9nUR                  [        [
        5        UR                  R                  S:X  d   eg )Nrh   r   r   r   r   )rc   r0   r   rw   ru   r   r   rh   )r   r   s     rj   /test_grid_search_when_param_grid_includes_rangeri    sP    

CKs[%1+$>1EKOOAq&&00A555rn   c                     [        SSSS9u  pSS0n[        SS9n[        R                  " S	5      n[	        X25      n[
        R                  " [        US
9   UR                  X5        S S S 5        S/ 0n[        5       n[        R                  " S5      n[	        X25      n[
        R                  " [        US
9   UR                  X5        S S S 5        SS0n[        SS9n[        R                  " S5      n[	        X25      n[
        R                  " [        US
9   UR                  X5        S S S 5        S[        R                  " S5      0n[        5       n[	        X25      n[
        R                  " [        5         UR                  X5        S S S 5        g ! , (       d  f       GN4= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r  r   rY  r   r   rc  rd  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   rK   reescaper0   r   r   r  rw   r   rq   r  )ru   r   rf  r   r9  searchs         rj   test_grid_search_bad_param_gridrn    sn   JDAqJ
F
C			@I
 #*F	y		2

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

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

1 
3 rwwv'J
%C#*F	z	"

1 
#	"5 
3	2 
4	3 
3	2 
#	"s0   F7F&F79G
F#&
F47
G
Gcsr_containerc                    [        SSSS9u  p[        5       n[        USSS/05      nUR                  US S US S 5        UR	                  USS  5      nUR
                  R                  nU " U5      n[        5       n[        USSS/05      nUR                  US S R                  5       US S 5        UR	                  USS  5      nUR
                  R                  n[        R                  " XW:H  5      S	:  d   eXh:X  d   eg )
NrX  r  r   rY  r   r  r   r[  g?)
r   rL   r0   rw   r~   r   r   tocoorq   mean)	ro  r\  r]  r   r   y_predr   y_pred2C2s	            rj   test_grid_search_sparserv    s     !33QOFB
+C	cC#s,	-BFF2ds8RXZZ34!F
A	r	B
+C	cC#s,	-BFF2ds8>>RX&jjCD"G					B776$%,,,7N7rn   c                    [        SSSS9u  p[        5       n[        USSS/0SS	9nUR                  US S
 US S
 5        UR	                  US
S  5      nUR
                  R                  nU " U5      n[        5       n[        USSS/0SS	9nUR                  US S
 US S
 5        UR	                  US
S  5      nUR
                  R                  n[        XW5        Xh:X  d   eS n	[        U	SS9n
[        USSS/0U
S	9nUR                  US S
 US S
 5        UR	                  US
S  5      nUR
                  R                  nXl:X  d   e[        X[5        g )NrX  r  r   rY  r   r  r   f1r  r[  c                     [        X5      * $ rf   )r*   )y_true_y_pred_s     rj   f1_loss0test_grid_search_sparse_scoring.<locals>.f1_loss:  s    ***rn   F)greater_is_better)	r   rL   r0   rw   r~   r   r   r]   r+   )ro  r\  r]  r   r   rs  r   rt  ru  r|  F1Lossy_pred3C3s                rj   test_grid_search_sparse_scoringr  "  sa    33QOFB
+C	cC#s,d	;BFF2ds8RXZZ34!F
A	r	B
+C	cC#s,d	;BFF2ds8RXjjCD"G					Bv'7N7+ E:F	cC#s,f	=BFF2ds8RXjjCD"G					B7N7v'rn   c                  L   [        SSSS9u  p[        R                  " U S S U S S R                  5      nUS S n[	        SS9n[        USS	S
/05      nUR                  X#5        UR                  S:  d   e[        R                  " U SS  U S S R                  5      nUSS  nUR                  U5      n[        R                  " X:H  5      S:  d   e[        R                  " [        5         UR                  UR                  5       U5        S S S 5        g ! , (       d  f       g = f)NrX  r  r   rY  r[  precomputedra  r   r  r   )r   rq   dotr}   rK   r0   rw   best_score_r~   rr  r   r   r   tolist)	r\  r]  K_trainy_trainr   r   K_testy_testrs  s	            rj   #test_grid_search_precomputed_kernelr  G  s    !33QOFB ffRXr$3xzz*G#hG
]
#C	cC#s,	-BFF7>>Q VVBstHb#hjj)FXFZZF776#$))) 
z	"
w~~) 
#	"	"s   +!D
D#c                     [         R                  " S5      n [         R                  " S5      n[        SS9n[	        USSS/05      n[
        R                  " [        5         UR                  X5        S S S 5        g ! , (       d  f       g = f)N)r      )r   r  r  r   r  r   )	rq   r  r  rK   r0   r   r   r   rw   )r  r  r   r   s       rj   3test_grid_search_precomputed_kernel_error_nonsquarer  d  sb     hhx GggenG
]
#C	cC#s,	-B	z	"
w  
#	"	"s    A;;
B	c                   .    \ rS rSrSrSS jrS rS rSrg)	BrokenClassifierio  z*Broken classifier that cannot be fit twiceNc                     Xl         g rf   	parameterri   r  s     rj   rk   BrokenClassifier.__init__r  rm   rn   c                 8    [        U S5      (       a   eSU l        g )Nhas_been_fit_T)r   r  ri   ru   r   s      rj   rw   BrokenClassifier.fitu  s    41111!rn   c                 H    [         R                  " UR                  S   5      $ rz   rq   r  r|   r   s     rj   r~   BrokenClassifier.predicty      xx
##rn   )r  r  rf   )	r   r   r   r   r   rk   rw   r~   r   r   rn   rj   r  r  o  s    4#"$rn   r  z1ignore::sklearn.exceptions.UndefinedMetricWarningc                      [         R                  " S5      R                  SS5      n [         R                  " S/S-  S/S-  -   5      n[	        [        5       SSS/0/SSS	9nUR                  X5        g )
Nr  r   r   r  r   r  rG  Tr   rA  )rq   r  r  r	  r0   r  rw   )ru   r   r   s      rj   
test_refitr  }  sm    
 			#r2&A
!qA37"#A
kAq623[PTC GGAMrn   c                      S n [        SSSS9u  p[        [        SS9S/ SQ0S	U S
9nUR                  X5        UR                  S:X  d   e[        US5      (       a   eg)zR
Test refit=callable, which adds flexibility in identifying the
"best" estimator.
c                    [        SSSS9u  p[        [        SS9S/ SQ0SS	S
9nUR                  X5        UR                  S:w  d   eUR
                  R                  5        H
  nX@;   a  M
   e   U S   R                  5       $ )zv
A dummy function tests `refit=callable` interface.
Return the index of a model that has the least
`mean_test_score`.
r  r   *   rY  r  r   {Gz?r  r   rG  Tr  r   mean_test_score)r   r0   rL   rw   rI  r   keysargmin)
cv_resultsru   r   r   keys        rj   refit_callable+test_refit_callable.<locals>.refit_callable  s     #SQRP2&.!	
 	!### ??'')C$$$ * +,3355rn   r  r   r  rY  r  r   r  rG  r  r   r  N)r   r0   rL   rw   rI  r   )r  ru   r   r   s       rj   test_refit_callabler    sn    62 LDA
r"	n	C GGAM??asM*****rn   c                      S n [        SSSS9u  p[        [        SS9SSS	/0S
U S9n[        R                  " [
        SS9   UR                  X5        SSS5        g! , (       d  f       g= f)zV
Test implementation catches the errors when 'best_index_' returns an
invalid result.
c                     g)zD
A dummy function tests when returned 'best_index_' is not integer.
Nr   r  s    rj   refit_callable_invalid_typeEtest_refit_callable_invalid_type.<locals>.refit_callable_invalid_type  s     rn   r  r   r  rY  r  r   r  r   rG  r  z&best_index_ returned is not an integerr   N)r   r0   rL   r   r   r  rw   )r  ru   r   r   s       rj    test_refit_callable_invalid_typer    se     LDA
r"	sAh)	C 
y(P	Q 
R	Q	Qs   A
A*out_bound_value	search_cvc                    ^  U 4S jn[        SSSS9u  p4U" [        SS9SSS	/0S
US9n[        R                  " [        SS9   UR                  X45        SSS5        g! , (       d  f       g= f)z[
Test implementation catches the errors when 'best_index_' returns an
out of bound result.
c                    > T$ )zF
A dummy function tests when returned 'best_index_' is out of bounds.
r   )r  r  s    rj   refit_callable_out_bound?test_refit_callable_out_bound.<locals>.refit_callable_out_bound  s     rn   r  r   r  rY  r  r   r  r   rG  r  zbest_index_ index out of ranger   N)r   rL   r   r   r   rw   )r  r  r  ru   r   r   s   `     rj   test_refit_callable_out_boundr    sf     LDA
r"	sAh&	C 
z)I	J 
K	J	Js   A
A+c                      S n [        SSSS9u  p[        [        5      SS.n[        [	        SS9S	/ S
Q0UU S9nUR                  X5        UR                  S:X  d   e[        US5      (       a   eg)z;
Test refit=callable in multiple metric evaluation setting
c                 8    SU ;   d   eU S   R                  5       $ )zu
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    rj   r  8test_refit_callable_multi_metric.<locals>.refit_callable  s'      :---*+2244rn   r  r   r  rY  rG  )AccuracyrM  r  r   r  r  r   r  N)r   r+   r(   r0   rL   rw   rI  r   )r  ru   r   r   r   s        rj    test_refit_callable_multi_metricr    s}    
5 LDA&~6LG
r"	n	C GGAM??asM*****rn   c                  ^   [         R                  " S5      R                  SSSS5      n [         R                  " S5      R                  SSS5      nS	 nS
 n[        UUS/S9n[	        US/ SQ05      nUR                  X5      R                  [        [        5        [        US5      (       d   eg )N,  r   r  r   r   i        c                 &    U R                   SS  S:H  $ )Nr   )r  r   r   r{   r   s    rj   check_X#test_gridsearch_nd.<locals>.check_X  s    wwqr{i''rn   c                 &    U R                   SS  S:H  $ )Nr   )r  r  r{   r  s    rj   check_y#test_gridsearch_nd.<locals>.check_y  s    wwqr{g%%rn   rw   )r  r  methods_to_checkrh   r   r   )
rq   r  r  rS   r0   rw   r   ru   r   r   )X_4dy_3dr  r  r   r   s         rj   test_gridsearch_ndr    s    99^$,,RAq9D99[!))"a4D(& C
 s[)$<=KOOD%%a+;....rn   c                  ^   [         R                  " S5      R                  SS5      n [         R                  " S/S-  S/S-  -   5      n[	        S S/S9n[        S	S
9n[        US/ SQ0US9nUR                  U R                  5       U5      R                  X5        [        US5      (       d   eg )Nr  r   r   r  r   c                 "    [        U [        5      $ rf   r   r   r  s    rj   <lambda> test_X_as_list.<locals>.<lambda>"      *Q-rn   rw   )r  r  r   r1  rh   r   r   r   rq   r  r  r	  rS   r5   r0   rw   r  r   r   ru   r   r   r   r   s        rj   test_X_as_listr    s    
		#r2&A
!qA37"#A
-C 
	Bs[)$<DKOOAHHJ"((.;....rn   c                  \   [         R                  " S5      R                  SS5      n [         R                  " S/S-  S/S-  -   5      n[	        S S/S9n[        S	S
9n[        US/ SQ0US9nUR                  XR                  5       5      R                  X5        [        US5      (       d   eg )Nr  r   r   r  r   c                 "    [        U [        5      $ rf   r  r  s    rj   r   test_y_as_list.<locals>.<lambda>1  r  rn   rw   )r  r  r   r1  rh   r   r   r   r  r  s        rj   test_y_as_listr  +  s    
		#r2&A
!qA37"#A
-C 
	Bs[)$<DKOOAxxz"((.;....rn   c                    ^^ [         [         4/n  SSKJnJn  U R	                  X45        [        R                  " S5      R                  SS5      n[        R                  " S/S-  S/S-  -   5      nU  H~  u  mmT" U5      T" U5      peU4S jnU4S jn[        XxS	9n	[        U	S
/ SQ05      n
U
R                  XV5      R                  XV5        U
R                  U5        [        U
S5      (       a  M~   e   g ! [
         a     Nf = f)Nr   )	DataFrameSeriesr  r   r  r   c                    > [        U T5      $ rf   r   )r   InputFeatureTypes    rj   check_df#test_pandas_input.<locals>.check_dfK  s    a!122rn   c                    > [        U T5      $ rf   r  )r   
TargetTypes    rj   check_series'test_pandas_input.<locals>.check_seriesN  s    a,,rn   )r  r  rh   r   r   )rT   pandasr  r  appendImportErrorrq   r  r  r	  rS   r0   rw   r   r~   r   )typesr  r  ru   r   X_dfy_serr  r  r   r   r  r  s              @@rj   test_pandas_inputr  :  s    ]+,E,i() 			#r2&A
!qA37"#A(-$*&q):a=e	3	- !H"3i(@A$**47D!{M2222 ).  s   C7 7
DDc                     [        SSS9u  p[        SSSS9nSS/nS	 H=  n[        U[        / S
QS9X4S9nUR	                  X5        UR
                  S   S:X  a  M=   e   [        U[        / S
QS9SS9nUR	                  X5        UR
                  S   S:X  d   e[        U[        / S
QS9S9nUR	                  U 5        UR
                  S   S:X  d   eg )N2   r   r"  r  r5  r   )r  initn_initadjusted_rand_scorefowlkes_mallows_score)r  r  )r   r   r   )
n_clusters)r   r   rA  r  r   r   r   )r   r   )r   r   r0   dictrw   r  )ru   r   kmr   rA  r   s         rj   test_unsupervised_grid_searchr  Y  s    3DA	QXa	8B %&=>GA"495w
 	''5::: B 
ty1;RK OOA##L1Q666 rdi.HIKOOA##L1Q666rn   c                      S n [        SSSS/SS/SS//S9u  p[        [        5       [        / SQS9U S9nUR	                  U5        UR
                  S	   S:X  d   eUR                  S
:X  d   eg )Nc                 *    U R                   S:X  a  S$ S$ )Nr  r  r   	bandwidth)	estimatorru   s     rj   custom_scoring2test_gridsearch_no_predict.<locals>.custom_scoringx  s    ((C/r6Q6rn   r  r   r   )cluster_stdr  r  r  r   r  r  r  )r   r0   rB   r  rw   r  r  )r  ru   _rm  s       rj   test_gridsearch_no_predictr  u  s    7 #AAAQRTUPV?WXDA.1F
 JJqM{+s222###rn   c                     SS/[        SS5      S.n [        U SSS9nU Vs/ s H  o"PM     nn[        U5      S:X  d   eU H#  nUS   S	;   d   eSUS
   s=::  a	  S::  a  M    e   e   S
/ SQ0n [        U SSS9nU Vs/ s H  o"PM     snU Vs/ s H  o"PM     sn:X  d   eS
[        SS5      0n [        U SSS9nU Vs/ s H  o"PM     snU Vs/ s H  o"PM     sn:X  d   eg s  snf s  snf s  snf s  snf s  snf )Nr`  linearr   r   )ra  r   r   )param_distributionsr   r  ra  )r`  r	  r   )r   r   r   r   r   r  r   r     	   r   r   )r   r9   rp   )r
  samplerr   samplessamples        rj   test_param_samplerr    s>   &+X%6WQ]K/G ""'Qq'G"w<2h#4444F3K$1$$$$$ 
  BC/G w!Aww#7w!Aw#77771./G w!Aww#7w!Aw#7777# #  #7  #7s   C#=C(C->C2C7c                   ^ U R                   m[        U4S jU 5       5      (       d   eU Vs0 s H  oDTU   R                  R                  _M     snU:X  d   e[	        U4S jU 5       5      (       a   e[        U4S jU 5       5      (       d   eU R
                  (       a  U R                  R                  5       OS/nU H)  nTSU-     R                  [        R                  :X  a  M)   e   g s  snf )Nc              3   r   >#    U  H,  n[        TU   [        R                  R                  5      v   M.     g 7frf   r   rq   maMaskedArray)r   paramr  s     rj   r   /check_cv_results_array_types.<locals>.<genexpr>  s*     XZEz*U+RUU->->??Z   47c              3   r   >#    U  H,  n[        TU   [        R                  R                  5      v   M.     g 7frf   r  r   r  r  s     rj   r   r    s)     XZc:joruu/@/@AAZr  c              3      >#    U  H=  nUR                  S 5      (       a  M  TU   R                  [        R                  :H  v   M?     g7f)rankN)
startswithdtyperq   float64r  s     rj   r   r    s9      C~~f% 	,
3+s
   A'Ar   zrank_test_%s)
r   allr  kindanymultimetric_scorer_r  rq   int32)rm  
param_keys
score_keysexpected_cv_results_kindsr  scorer_keysr  s         @rj   check_cv_results_array_typesr*    s     ##JXZXXXXX3=3=CZ_""''':	"# # # XZXXXXX      ,2+>+>&..%%'WIK.3./55AAA s   #C0c                    ^ ^ X-   U-   n[        [        T R                  5       5      [        US-   5      5        [        U U4S jX-    5       5      (       d   eg )N)r   c              3   J   >#    U  H  nTU   R                   T4:H  v   M     g 7frf   r{   )r   r  r  n_cands     rj   r   (check_cv_results_keys.<locals>.<genexpr>  s$     U=Tcz#$$	1=Ts    #)r]   r   r  r   )r  r&  r'  r-  
extra_keysall_keyss   `  `  rj   check_cv_results_keysr1    sJ    &3Hvjoo/0&K9O2PQUZ=TUUUUUrn   c                  
  ^ [        SSSS9u  pSn[        S/SS/S	S/S
9[        S/SS/S9/nSnSnUn[        [        5       SUSS9nUR	                  X5        UR
                  m[        TS   S:  5      (       d   eU4S jU 5       (       d   eU4S jU 5       (       d   eSSSSS.n[        XtXX5        [        TXEU5        UR
                  m[        U5       V	s/ s HZ  n	TS   U	   S:X  d  M  TS   R                  U	   =(       a0    TS   R                  U	   =(       a    TS   R                  U	   (       + PM\     n
n	[        U
5      (       d   e[        U
5      S:X  d   e[        U5       V	s/ s H_  n	TS   U	   S:X  d  M  TS   R                  U	   (       + =(       a0    TS   R                  U	   (       + =(       a    TS   R                  U	   PMa     nn	[        U5      (       d   e[        U5      S:X  d   eg s  sn	f s  sn	f )Nr  r   r  rY  r   r`  r   r   r  ra  r   rb  polyr   ra  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   T   >#    U  H  oS :w  d  M
  [        TU   S:  5      v   M     g7f)r>  r   Nr   r   kr  s     rj   r   .test_grid_search_cv_results.<locals>.<genexpr>  s+     RZ@Q;Q#C
1"##Zs   	((c              3   f   >#    U  H&  nS U;  d  M  US:w  d  M  [        TU   S:*  5      v   M(     g7f)timer>  r   NrM  rN  s     rj   r   rP    s@      A? 	  $55 	 JqMQs   
111r   fOr;  r8  r:  r9  )r   r  r0   rK   rw   r   r   r*  r1  r   maskrp   )ru   r   n_grid_pointsr   r&  r'  n_candidatesrm  r(  r   poly_resultsrbf_resultsr  s               @rj   test_grid_search_cv_resultsrZ    s   KDAM "g(	
 	 q6		
F  LJJ" !L#%A&TRF
JJq##Jz+,12222RZRRRR    	! !J *jlK##J |$ %An%a(F27Jy!&&q) 7=)..q17~.33A667 %   ||!!! |$ %An%a(E13
9%**1-- 3}-221553>*//23 %   {{q   -s   G;0AG;/H AH c                    ^	 [        SSSS9u  pSnS/[        SS9[        S	S9S
.S/SS/S./nSnSnUn[        [        5       USUSS9nUR	                  X5        UR
                  m	SSSSS.n[        XtXX5        [        T	XEU5        [        U	4S j[        U5       5       5      (       d   e[        U	4S j[        U5       5       5      (       d   eg )Nr  r   r  rY     r`  r   )scaler  r3  r4  r   r   r5  r7  r<  T)r   r   r
  rK  rS  r   rT  c              3      >#    U  H\  nTS    U   S:X  d  M  TS   R                   U   =(       a0    TS   R                   U   =(       a    TS   R                   U   (       + v   M^     g7f)r;  r4  r8  r:  r9  NrU  r   r   r  s     rj   r   0test_random_search_cv_results.<locals>.<genexpr>H  sx       %An%a(F27Jy!&&q) 7=)..q17~.33A667 %s   A'AA'c              3      >#    U  Ha  nTS    U   S:X  d  M  TS   R                   U   (       + =(       a0    TS   R                   U   (       + =(       a    TS   R                   U   v   Mc     g7f)r;  r`  r8  r:  r9  Nr_  r`  s     rj   r   ra  Q  s{       %An%a(E13
9%**1-- 3}-221553>*//23 %s   A,AA,)
r   r   r:   rK   rw   r   r*  r1  r   r   )
ru   r   n_search_iterr   r&  r'  rW  rm  r(  r  s
            @rj   test_random_search_cv_resultsrd    s   KDAM 7R5s;KL81v.F LJJ" !L"F JJq##J 	! !J *jlK  |$       |$    rn   zSearchCV, specialized_paramsr   r   )r
  r   c                    [        SS/SS/SS/SS//SSSSS9u  p#[        R                  " UR                  S   [        S9nSU[        R
                  " US:H  5      S   S S S2   '   SU[        R
                  " US:H  5      S   S S S2   '   XD) /U) U//n[        5       US	S
.nU " S0 UDUD6nUR                  X#5        [        R                  " [        UR                  5       Vs/ s H  nUR                  SU-     S   PM     sn5      n	UR                  S   S   n
UR                  S   S   n[        R                  " [        UR                  5       Vs/ s H  nUR                  SU-     S   PM     sn5      nUR                  S   S   nUR                  S   S   nUR                  S   S   S:X  d   e[        U	SS/5        [        USS/5        U
[        R                  " [        R                  " U	5      5      :X  d   eU[        R                  " [        R                   " U	5      5      :X  d   eU[        R                  " S5      :X  d   eU[        R                  " S5      :X  d   eg s  snf s  snf )Nr   r   r  FP   )r  r  r  shuffler"  r  r   T)r  r   rK  split%d_test_scorer  rE  zsplit%d_train_scorer=  rF  r8  gUUUUUU?r   )r   rq   r  r|   boolwhererK   rw   r	  r   	n_splits_r   rY   r   approxrr  std)r   specialized_paramsru   r   rU  r   common_paramsrm  stest_cv_scores	test_meantest_stdtrain_cv_scores
train_mean	train_stds                  rj   test_search_default_iidrx  \  s    Q!Q!Q!Q0DA 771771:T*D%&D!q&	!	SqS	!"%&D!q&	!	SqS	!" -4%	'B"%%rNM<<);<F
JJqXX 6++,	
, 3a78;,	
N ""#45a8I!!"23A6Hhh 6++,	
, 4q89!<,	
O ##$67:J""#45a8Ii(+q000NQ	N3OaV,bggn&=>>>>v}}RVVN%;<<<< q))))a((((9	
	
s   %I-I2c            	      .   [        SSSS9u  pSn[        S/SS/S	S/S
9[        S/SS/S9/n/ n[        [        5      [        [        5      S.SS4 H9  n[        [        5       X#USS9nUR                  X5        UR                  U5        M;     [        U6   g )Nr  r   r  rY  r   r`  r   r   r  r3  r4  r   r5  r  rK  r  rK  F)r   r   r   rA  )
r   r  r+   r(   r-   r0   rK   rw   r  *compare_cv_results_multimetric_with_single)ru   r   r2  r   grid_searchesr   r   s          rj   'test_grid_search_cv_results_multimetricr}    s    KDAH "g(	
 	 q6		
F  M 0K<UV
 #Eh7%
 	[) />rn   c                  r   [        SSSS9u  pSnSn[        [        R                  " SSS5      S	9nS
 H  n/ nS H[  nU(       a  [	        U[
        5      (       a  Sn[        SS9n[        UUUUUUSS9n	U	R                  X5        UR                  U	5        M]     [        U6   [        US   US   U5        M     g )Nr  r   r  rY  r   r\  r   r   TF)rz  r  rK  r  r  r   )r   r   r
  r   rA  r  )r   r  rq   logspacer   r   r%   r:   rw   r  r{  )compare_refit_methods_when_refit_with_acc)
ru   r   r2  rc  r   rA  random_searchesr   r   rD  s
             rj   )test_random_search_cv_results_multimetricr    s    KDAHMBKKAq)*FEGGU33"$"5C.$$*M a#""=1 F" 	3OD1A 2E	
) rn   c                 J  ^ U R                   (       d   e[        [        U R                  5      S5        U R                  mUR                  R                  5        VVs0 s H  u  p4[        R                  " SSU5      U_M      nnnUR                  UR                  R                  5        VVs0 s H  u  p4[        R                  " SSU5      U_M      snn5        [        U4S jS 5       5      (       d   e[        R                  R                  TR                  5        VVs0 s H  u  p4UR                  S5      (       a  M  X4_M!     snnUR                  5        VVs0 s H  u  p4UR                  S5      (       a  M  X4_M!     snn5        gs  snnf s  snnf s  snnf s  snnf )	z|Compare multi-metric cv_results with the ensemble of multiple
single metric cv_results from single metric grid/random searchrz  z_score$	_accuracy_recallc              3   \   >#    U  H!  n[         R                  " TU   S :*  5      v   M#     g7f)r   N)rq   r   )r   rO  cv_results_multis     rj   r   =compare_cv_results_multimetric_with_single.<locals>.<genexpr>  s3      	
 FF#A&!+,,s   ),)rI  rJ  rG  rH  _timeN)r#  r]   r   r$  r   r   rk  subupdater   rq   testingassert_equalendswith)search_multi
search_acc
search_recrO  vcv_results_acc_recr  s         @rj   r{  r{    si    $$$$vl2235KL#//9C9O9O9U9U9W9Wy+q)1,9W   8B8N8N8T8T8VW8V	9a	(!	+8VW 	
	

 
 
 
 JJ*002N2$!!**W:M2N,224P4$!AJJw<O4P1 	X* 	OPs$   %F-%F
"F
F
F>Fc                    UR                   U:X  d   eU(       a  U R                   S:X  d   eOU R                   (       a   eg[        SSSS9u  p4S H-  n[        [        X5      " U5      [        X5      " U5      5        M/     [        U R	                  X45      UR	                  X45      5        S H  n[        X5      [        X5      :X  a  M   e   g)	zDCompare refit multi-metric search methods with single metric methodsr  Nr  r   r  rY  )r~   r   r   )rI  r  r  )rA  r   r[   rN  r   )r  r  rA  ru   r   methodr  s          rj   r  r    s    u$$$!!Z///%%%%CDACL)!,gj.I!.L	
 D **10*2B2B12HI=|)WZ-EEEE >rn   	max_depthr  )r  r
  r  r   c                    [        SSSS9u  p[        U 5      n U R                  X5        SU R                  R                   S3nSn[
        R                  " [        US9 nU R                  U5        S S S 5        [        WR                  R                  [        5      (       d   eU[        UR                  R                  5      :X  d   eg ! , (       d  f       N_= f)	Nr  r   r  rY  rJ  z"' has no attribute 'score_samples'z@'DecisionTreeClassifier' object has no attribute 'score_samples'r   )r   r   rw   	__class__r   r   r   r   score_samplesr   rO  rP  rQ  )r  ru   r   rS  rT  rU  s         rj   "test_search_cv_score_samples_errorr    s     CDAi IMM! I''0011STIRI	~Y	79" 
8ioo//@@@@IOO556666 
8	7s   C


Cc                     S n [        U 5      n[        SSSS9u  p#[        R                  " U5      n[	        [        5       SSS/0S9nUR                  U S	9  [        R                  " [        S
S9   UR                  X#US9  SSS5        UR                  US	9  [        R                  " [        S
S9   UR                  X#US9  SSS5        UR                  [        USS9SS9  [        R                  " [        SS9   UR                  X#US9  SSS5        g! , (       d  f       N= f! , (       d  f       Nj= f! , (       d  f       g= f)zdChecks that fitting with sample_weight raises a warning if the scorer does not
support sample_weightc                     g)z9Fake scoring function that does not support sample_weightr   r   )y_truers  s     rj   fake_score_func>test_unsupported_sample_weight_scorer.<locals>.fake_score_func7  s    rn   r   r   r  rY  r   r   r  r  zdoes not support sample_weightr   sample_weightNr  )faker  Fr  z2The scoring fake=.* does not support sample_weight)r+   r   rq   	ones_liker0   r%   r   r   warnsUserWarningrw   r  )r  fake_scorerru   r   swr  s         rj   %test_unsupported_sample_weight_scorerr  3  s'    o.KKDA	aB'9';qRTgWI1	k)I	Ja"- 
K -	k)I	Ja"- 
K +
;5   
P
 	a"-
 
 
K	J 
K	J
 
s$   0D1D&;D7
D#&
D47
Er  )r   r   r  r>  )r   r  r  c                    [        U 5      n[        U 5      n[        USS9  [        USS9  [        R                  R	                  S5      nSnSnSnXe-  nUR                  XwS-  5      nUR                  SXGS9n	UR                  SS	US9n
[        R                  " [        R                  " U5      U5      nUnU	nUn[        [        5       R                  XS
95      nUR                  US9  UR                  U
SS9nUR                  U
S9nUR                  U
S9n[        [        5       R                  UUS
95      nUR                  US9  [        X5      n[        UU5      nUR                  UUS S9  UR                  XU
S9  UR                    Vs/ s H  nUR#                  S5      (       d  M  UPM     nnU H1  nUR                   U   nUR                   U   nU S3n[%        UUUS9  M3     S H+  n['        UU5      n['        UU5      nU S3n[)        UUUS9  M-     S HK  n[+        U U5      (       d  M  ['        UU5      " U5      n['        UU5      " U5      nSU S3n[-        UUUS9  MM     g s  snf )Nr   r  r  r   r\  r   r   sizer  r3  r   )repeatsaxis)r  )r   r  r   z4 values are not equal for weighted/repeated datasetsr  )r  rI  )r   r   r~   r   zComparing the output of zn revealed that fitting with `sample_weight` is not equivalent to fitting with removed or repeated data points.)r   r^   rq   r5  r6  randr   tiler  r   r6   splitr   repeatr_   rw   r   r  rY   rN  r[   r   rZ   )r  estimator_weightedestimator_repeatedr7  r#  n_samples_per_groupn_groupsr"  ru   r   r  r4  
X_weighted
y_weightedgroups_weightedsplits_weighted
X_repeated
y_repeatedgroups_repeatedsplits_repeatedr  r'  s1s2r  r  s                             rj   (test_search_cv_sample_weight_equivalencer  S  s    y)y)'a8'a8
))


#CIH.IM*AAy1A	Q		*B WWRYYx(*=>FJJO+-33J3WXO!!_!5""2A"6J""2".J%,,R,8O+-33J3WXO!!_!5*+=JJ*+=zJJ:4H:2F
 *555g9N5   ++C0++C0EMNB0	  .'-'-EMNBG4	 . Q9f%%+V4Q7B+V4Q7B*6( 3+ + 
 )RA Qs   I-+I-T)noveltyn_neighborsrG  )r  r
  r   )r  r   r   c           	         [        U 5      n [        R                  R                  S5      nSnSn[	        X2-  5      nX$-
  n[        USSS/SS//SSS9S   n[        R                  " XaR                  SS	US4S
9/SS9n[        R                  " S/U-  5      nSXt* S & U R                  Xg5        [        U R                  U5      U R                  R                  U5      5        g )Nr  r  g333333?r   r   r   )r"  rZ  r  r  r  ir   )lowhighr  r  r   r   )r   rq   r5  r6  intr   concatenater   r	  rw   rY   r  r   )r  r7  r"  outliers_fraction
n_outliers	n_inliersru   r  s           rj   #test_search_cv_score_samples_methodr    s      i I
))


#CI&23J&I 	Q!Q 	 		A 	;;2AZO;LMTUVA XXqcIo&FF;< MM! "I$=$=$K$KA$Nrn   c                     [        SSS9u  pS/ SQ0n[        [        5       USS9n[        [        5       SUSS	9nX44 H  nUR	                  X5        UR
                  n[        US
   S   US
   S   5        [        US   S   US   S   5        [        R                  " US
   S   US
   S   5      (       a   e[        R                  " US   S   US   S   5      (       a   e[        UR
                  S   / SQ5        M     g )Nr  r  r  r   )r   gjt?MbP?T)r   rK  r   )r   r
  rK  r  r   r   r=  r   r>  )r   r   r   )	r   r0   rK   r:   rw   r   r[   rq   allclose)ru   r   r   r   rD  rm  r  s          rj   (test_search_cv_results_rank_tie_breakingr    s;   4DA ()JsuPTUK&aZDM .

1''
 	()!,j9J.KA.N	
 	)*1-z:L/Ma/P	
 ;;()!,j9J.KA.N
 
 	
 
 ;;)*1-z:L/Ma/P
 
 	
 
 	F../@A9M' /rn   c                      S/S/S/S/S/// SQp[        5       [        5       4nSSS /0n[        5       nU H8  n[        UUUS	9R	                  X5      n[        UR                  S
   SS /5        M:     g )Nr   r   r   r   r  )r   r   r   r   r   r  r   r   param_random_state)rQ   rP   r5   r0   rw   r]   r   )ru   r   
estimatorsest_parametersr   estr   s          rj   !test_search_cv_results_none_paramr    s    C!qcA3$oq')+A+CDJ$q$i0N	B"
 #a)	 	
 	;223GH1d)T rn   z+ignore::sklearn.exceptions.FitFailedWarningc                     [        SS9n S/S/S/S//n/ SQn[        U SSS/0SSS	9n[        U SSS/0SSSS
9nX44 GH$  nUR                  X5        S H]  n[        R
                  " UR                  U   S:  5      (       d   e[        R
                  " UR                  U   S:  5      (       a  M]   e   S H`  nUR                  U   S   S:  d   eUR                  U   S   S:X  d   e[        R
                  " UR                  U   S:  5      (       a  M`   e   [        US5      (       d   e[        UR                  [        5      (       d   eUR                  S:  a  GM%   e   g )Nr   r  r   r   r   r   )r   r   r   r   r   r  )r   r  r   )rG  rH  )rI  rJ  r   refit_time_)rL   r0   r:   rw   rq   r   r   r   r   r  float)svcru   r   r:  rsrm  r  s          rj   test_search_cv_timingr    s   

#C 	
 	
 	
 	
	A 	A	cC!Q=QA	>B	C#1v1!A	NB(

14C 66&,,S1Q6777766&,,S1A56666	 5 9C%%c*1-222%%c*1-44466&,,S1A56666 9
 v}----&,,e4444!!Q&&& rn   c            
         Sn [        SS9n[        SSS9u  p#/ SQnS GH  n[        USU0XPS	9nUR                  X#5      R                  n[        UR                  5       5      nS
[        S [        U 5       5       5      -   n	[        [        R                  " X5      5      (       d   e[        U S9n
UR                  n [        U5       H  u  pUR                  US9  [        R                   " [        U 5       Vs/ s H  nUR                  SU-     U   PM     sn5      n[        U
R#                  X#5      5       H  u  nu  nnUR                  UU   UU   5        US:X  a"  [%        UU   UR'                  UU   5      5      nO)US:X  a#  UR)                  UU   5      n[+        UU   U5      n[-        WX   5        M     M     GM     g s  snf )Nr   r   r  r   r  r  )rx  r%  r   )r   r   )r  r>  c              3   ,   #    U  H
  nS U-  v   M     g7f)ri  Nr   )r   cv_is     rj   r   9test_grid_search_correct_score_results.<locals>.<genexpr>4  s      G
4CD 4'Os   r1  r  ri  rx  r%  )rL   r   r0   rw   r   r   r  r   r   r   rq   isinr;   rl  	enumerater   r	  r  r*   r~   r   r.   r[   )r2  r   ru   r   r  r   r   r  result_keysexpected_keysr   candidate_ir   rq  	cv_scoresr   traintestcorrect_scoredecs                       rj   &test_grid_search_correct_score_resultsr  (  s   H

#C1a0DA	B""3b	5N __Q*66
 :??,-> G
49(OG
 B
 
 277=67777h/(('mNKNNQN #8_,  ++,@1,DEkR,I %.bhhqn$= =E4%!E(+D=$,QtWckk!D'6J$KMi'//$8C$1!D'3$?M#M9<@ %> , # s   8Gc                  2   [        5       n [        U S/ SQ0SSS9nUR                  [        [        5        [
        R                  " [
        R                  " U5      5      n[        UR                  [        5      UR                  [        5      5        [        U S/ SQ0SSSS9nUR                  [        [        5        [
        R                  " [
        R                  " U5      5      n[        UR                  [        5      UR                  [        5      5        g )Nrh   r   Tr   rH  r   )rA  r   r   )rc   r0   rw   ru   r   pickleloadsdumpsr\   r~   r:   )r   r   grid_search_pickledrD  random_search_pickleds        rj   test_pickler  M  s    

Cs[)$<DQOKOOAq ,,v||K'@Ak11!46I6Q6QRS6TU&k9%T!M a"LLm)DEa "7"?"?"Brn   c            	         [        SSS9u  pS/ SQ0n[        5       n[        SS9[        SS9/nU H  n[	        XRUS9nUR                  X5        UR                  S   n[        [        U5      5       H  nUR                  " S0 Xx   D6  [        UR                  X5      5       HS  u  n	u  pUR                  X
   X   5        UR                  X   X   5      n[        UUR                  S	U	-     U   5        MU     M     M     U H  n[        XRUS
S9nUR                  X5        UR                  S   n[        [        U5      5       H  nUR                  " S0 Xx   D6  [        UR                  X5      5       HS  u  n	u  pUR                  X
   X   5        UR                  X   X   5      n[        UUR                  S	U	-     U   5        MU     M     M     g )NTr   )return_indicatorr  r  )r   r   r   r   r  r   r   ri  r   )r   r   r   )r   r5   rQ   rP   r0   rw   r   r   rp   r   r  r  r   r[   r:   )ru   r   r  r   r  r  r   
res_paramscand_ir   r  r  r  rD  s                 rj   &test_grid_search_with_multioutput_datar  _  s    *4aPDA!<0N	B 	1-A.J "32> ,,X6
C
O,FNN0Z/0$-bhhqn$= =E!(+ #		!'17 ;#!++,@1,DEfM %> -	   *32aP!"..x8
C
O,FNN0Z/0$-bhhqn$= =E!(+ #		!'17 ;#!!--.BQ.FGO %> -	 rn   c                      [         R                  " S5      R                  SS5      n / SQn[        5       n[	        U0 SS9R                  X5      n[        US5      (       a   eg )Nr  r  r   r   r   r   r   r   r   r   r   )rq   r  r  rK   r0   rw   r   ru   r   r   r:  s       rj   test_predict_proba_disabledr     sW    
		"a$AA
%C	c2!	$	(	(	.Br?+++++rn   c                  :   [         R                  " S[         R                  S9R                  SS5      n [         R                  U SS S 24'   / SQn[        S[        S[         R                  S	94S
[        5       4/5      n[        US/ SQ0SS9R                  X5        g )Nr  rh  r  r   r   r  imputerrr  )strategymissing_values
classifierclassifier__foo_paramr   r   )
rq   r  r  r  nanrE   r#   rc   r0   rw   )ru   r   r   s      rj   test_grid_search_allows_nansr    s    
		"BJJ'//26AffAadGAvbffMN>+,	
	A ,i8Q?CCAIrn   c                   @    \ rS rSrSrSrS
S jrS
S jrS rSS jr	S	r
g)FailingClassifieri  z,Classifier that raises a ValueError on fit()r   Nc                     Xl         g rf   r  r  s     rj   rk   FailingClassifier.__init__  rm   rn   c                 V    U R                   [        R                  :X  a  [        S5      eg )Nz%Failing classifier failed as required)r  r
  FAILING_PARAMETERr   r  s      rj   rw   FailingClassifier.fit  s'    >>.@@@DEE Arn   c                 H    [         R                  " UR                  S   5      $ rz   r  r   s     rj   r~   FailingClassifier.predict  r  rn   c                     g)Nr   r   rt   s      rj   r   FailingClassifier.score  s    rn   r  rf   r   )r   r   r   r   r   r  rk   rw   r~   r   r   r   rn   rj   r
  r
    s     6#F$rn   r
  c            	        ^^ [        SSSS9u  p[        5       n[        US/ SQ0/SSS	S
9m[        R                  " S[        R
                  S9n[        R                  " [        US9   TR                  X5        S S S 5        [        TR                  S   5      nU4S jm[        UU4S j[        U5       5       5      (       d   e[        US/ SQ0/SS[        S5      S
9m[        R                  " S[        R
                  S9n[        R                  " [        US9   TR                  X5        S S S 5        [        TR                  S   5      n[        UU4S j[        U5       5       5      (       d   eTR                  S   nUS   S::  a	  US   S::  d   eXRR                     S:X  d   eTR                   UR                  :w  d   eg ! , (       d  f       GNV= f! , (       d  f       N= f)Nr  r   r   rY  r  r   r   r   r  Fr   r   rA  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                    > [         R                  " [        TR                  5       Vs/ s H  nTR                  SU-     U    PM     sn5      $ s  snf )Nri  )rq   r	  r   rl  r   )r   rq  r:  s     rj   get_cand_scores<test_grid_search_failing_classifier.<locals>.get_cand_scores  sH    xxBGBUVBUQR^^0145a8BUV
 	
Vs   Ac              3      >#    U  HJ  nTR                   S    U   [        R                  :X  d  M)  [        R                  " T" U5      S:H  5      v   ML     g7f)param_parameterr   N)r   r
  r  rq   r   r   r  r  r:  s     rj   r   6test_grid_search_failing_classifier.<locals>.<genexpr>  sP      	
-~~/08 223 3BFF?6*c122-s
   (A&A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      >#    U  H[  nTR                   S    U   [        R                  :X  d  M)  [        R                  " [        R
                  " T" U5      5      5      v   M]     g7f)r  N)r   r
  r  rq   r   isnanr  s     rj   r   r    sT      )F>>+,V4../ 	2rxx/011)s
   (A&7A&r>  r   r   r   )r   r
  r0   rk  compileDOTALLr   r  r    rw   rp   r   r   r   r  r  rI  )ru   r   r   warning_messagerW  ranksr  r:  s         @@rj   #test_grid_search_failing_classifierr&    s    KDA

C 

y	!"
B jj	 iiO 
&o	>
q 
?r~~h/0L

 	
-	
    

y	!"%L
B jj	 iiO 
&o	>
q 
?r~~h/0L L)     NN,-E 8q=U1X]**&&'1,,,>>S22222e 
?	>D 
?	>s   (G	G	
G
G)c                  @   [        SSSS9u  p[        5       n[        US[        R                  /S-  0/SS9n[        R
                  " S	[        R                  S
9n[        R                  " [        US9   UR                  X5        S S S 5        g ! , (       d  f       g = f)Nr  r   r   rY  r  r   r   r  zrAll the 15 fits failed.+15 fits failed with the following error.+ValueError.+Failing classifier failed as requiredr  r   r   r
  r0   r  rk  r"  r#  r   r   r   rw   )ru   r   r   r:  r$  s        rj   )test_grid_search_classifier_all_fits_failr*    s    KDA

C	
);;<q@	AB
B jjH iiO 
z	9
q 
:	9	9s   4B
Bc                      [        SSSS9u  p[        5       n[        US/ SQ0/SSS	S
9n[        R                  " [
        5         UR                  X5        S S S 5        g ! , (       d  f       g = f)Nr  r   r   rY  r  r  r  Fr  r  )r   r
  r0   r   r   r   rw   r  s       rj   )test_grid_search_failing_classifier_raiser,    sd     KDA

C 

y	!"
B 
z	"
q 
#	"	"s   A
A-c                     SS// SQS.SSS/0/n [        U SS	9nSnS
nSX2U4-  n[        R                  " [        US9   [	        U5        S S S 5        [        U S
S	9n[	        U5      n[        U5      S
:X  d   e[        U 5       H
  nXe;   a  M
   e   [        [        U SS	95      S
:X  d   e[        S5      [        S5      [        S5      S.n [        U SSS9n[	        U5      n[        U5      S:X  d   eU Vs/ s H  nSUS   US   US   4-  PM     nn[        [        U5      5      S:X  d   e[        S5      / SQS.n	[        U	SS	9n[	        U5      n[        U5      S:X  d   eg ! , (       d  f       GN!= fs  snf )Nr   r   )abc)firstsecondthirdtwovaluesr  r   r  z}The total space of parameters %d is smaller than n_iter=%d. Running %d iterations. For exhaustive searches, use GridSearchCV.r     r   c   r  )r   r  z	a%db%dc%dr.  r/  r0  r   r  )
r9   r   r  r  r   rp   r8   r   r   r
   )
r   r  r   	grid_sizeexpected_warningr  r5  r   hashable_samplesparams_distributions
             rj   #test_parameters_sampler_replacementr<  3  s    a&O4	5(#$F va0GFI	14=y3Q	R 
 
k)9	:W 
; va0G7mGw<1'    (t45::: 95959=FvbrBG7mGw<2HOP1qvqvqv&>>Ps#$%+++ %.cNoN21=G7mGw<1/ 
;	:  Qs   E$6E6$
E3c                     SS/0n [         R                  " S5      R                  SS5      n/ SQn[        [	        SS9U S	S
9n[        US5      (       a   eUR                  X5        UR                  U5        UR                  U5        SS/0n [        [	        SS9U S	S
9n[        US5      (       a   eUR                  X5        [        US5      (       a   eg )Nlosslog_loss   r   r   r   r   r   r   r   r   hinge)r>  r   r  r   r   r   )	rq   r  r  r0   r'   r   rw   r   r   )r   ru   r   r   s       rj   #test_stochastic_gradient_loss_paramrD  [  s     	J 			"a$AA
W-*C sO,,,,GGAMa!
 		J W-*C sO,,,,GGAMsO,,,,,rn   c                      [         R                  " S5      R                  SS5      n / SQn[        SS9n[	        USSS/0S	S
9nUR                  X5        g )Nr   r   rA  r   r  r   r  r   r   )r   r   )rq   r  r  rL   r0   rw   r  s       rj   %test_search_train_scores_set_to_falserF  {  sM    
		!Q#AA

#C	csS#J&7A	>BFF1Lrn   c            
      b   Sn Sn[        U SS9u  p#[        [        SS9S/ SQ0[        XS9S	S
9nUR	                  X#5        [        [        SS9S/ SQ0[        US9S	S
9nUR	                  X#5        [        [        US	SS9R                  X#5      [        5      (       d   e[        [        SS9S/ SQ0[        US	SS9R                  X#5      S	S
9nUR	                  X#5        [        [        SS9S/ SQ0[        US	SS9S	S
9nUR	                  X#5        S n[        R                  R                  U" UR                  5      U" UR                  5      5        [        R                  R                  UR                  R                  5        V	V
s0 s H  u  pU	R                  S5      (       a  M  X_M!     sn
n	UR                  R                  5        V	V
s0 s H  u  pU	R                  S5      (       a  M  X_M!     sn
n	5        [        [        SS9S/ SQ0[        US	S9S	S
9nUR	                  X#5        S Hm  n0 n[        S5       H5  n[        S5       Vs/ s H  nUR                  SX4-     U   PM     snX'   M7     [!        US   US   5        [!        US   US   5        Mo     g s  sn
n	f s  sn
n	f s  snf )Nr  r  r   r  r  r   )r  r   g333333?)r2  r"  T)r   r   rK  r1  )r2  rg  r  c                 :    S H  nU R                  U5        M     U $ )N)rG  rH  rI  rJ  )pop)r  r  s     rj   _pop_time_keys>test_grid_search_cv_splits_consistency.<locals>._pop_time_keys  s$    
C NN3
 rn   r  )r  r  r   r   )r2  rg  )r  r  r   zsplit%d_%s_scorer   r   r   )r   r0   rL   r@   rw   r5   r   r  r	   rq   r  r  r   r   r  r   r\   )r"  r2  ru   r   r:  gs2gs3gs4rJ  rO  r  
score_typeper_param_scoresparam_irq  s                  rj   &test_grid_search_cv_splits_consistencyrR    s   IHCDA	q!)HB	
B FF1L
q!)(#	C GGAM xA>DDQJ    q!)(DqAGGM	C GGAM
q!)(DqA	C GGAM JJs')H JJ....0L0$!

78K0L////1M1$!G9L1M 
q!-.(D1	
B FF1L (
QxG q)!A 1QOCDWM!)%   	""21"57G7JK!"21"57G7JK (# 	MM&)s   J 
(J 
J&.J& J,c                      [        5       n [        U S/ SQ0SSS9nUR                  [        [        5        UR                  UR                  [        5      5      n[        [        U5        g )Nrh   r   r   r   r   )rc   r0   rw   ru   r   r   r   r]   )r   r   X_round_trips      rj   +test_transform_inverse_transform_round_triprU    sR    

Cs[)$<ANKOOAq001F1Fq1IJLq,'rn   c                    ^^^^^	 S mUUU	4S jm " UU4S jS[         5      n [        SS9m[        SSSS	9u  mm	U " TS
S9R                  TT	5      nT" SSS/0SSS/0/5      nUR                  nT" X25        [        U5       HR  nUS   R                  5       (       d  M  USS  S:X  d  M(  US;  d  M0  [        X$5      [        X5      :X  a  MJ   SU-  5       e   g )Nc                 f   UR                   n[        U R                  5       5      [        U5      :X  d   eU  Hw  nUR                  S5      (       a  M  [        R
                  " X   5      X'   X   R                  R                  S:X  a  [        X#   X   SU-   S9  Me  [        X#   X   SU-   S9  My     g )Nr  rT  z	Checking r  )
r   r   r  r  rq   
asanyarrayr  r!  r]   rY   )resultsgscvexp_resultsrO  s       rj   check_results-test_custom_run_search.<locals>.check_results  s    &&glln%)<<<<A::g&&]]7:6
:##((C/&#
K!O $KNGJVWX rn   c                 :   > [        TU SS9R                  TT5      $ )NTrK  )r0   rw   )r   ru   r   r   s    rj   fit_grid(test_custom_run_search.<locals>.fit_grid  s    CEII!QOOrn   c                   8   >^  \ rS rSrU 4S jrUU4S jrSrU =r$ ).test_custom_run_search.<locals>.CustomSearchCVi  c                 (   > [         TU ]  " U40 UD6  g rf   superrk   ri   r  kwargsr  s      rj   rk   7test_custom_run_search.<locals>.CustomSearchCV.__init__      GY1&1rn   c           	         > U" SS0SS0/5      nT" UT" SSS/05      5        U" SS0SS0/5      nT" UT" SSS/0SSS/0/5      5        g )Nr  r   r   min_samples_splitr  r   r   )ri   evaluaterY  r\  r`  s      rj   _run_search:test_custom_run_search.<locals>.CustomSearchCV._run_search  s{    a 0;2BCDG'8[1a&,A#BC!4a 8;NPR:STUG;A/2E2w1OPQrn   r   )r   r   r   r   rk   rn  r   __classcell__)r  r\  r`  s   @rj   CustomSearchCVrc    s    	2	 	rn   rq  r   r  r  r   )r"  n_informativer  Tr_  r  r   r   rl  r  r   r   r  >   r$  rs   r   r  r   zAttribute %s not equal)r>   rQ   r   rw   r   dirislowerrN  )
rq  mycvrZ  rY  attrru   r\  r   r`  r   s
        @@@@@rj   test_custom_run_searchrw    s    YP    Q
/CAANDAq#$7;;AqADkAq6*-@1b',JKLDG' D	GOORS	S  4&'$*== (4/= rn   c                  R    " S S[         5      n U " [        5       5      R                  [        [        5         " S S[         5      n[
        R                  " [        SS9   U" [        5       [        SS9S	9R                  [        [        5        S S S 5        g ! , (       d  f       g = f)
Nc                   2   ^  \ rS rSrU 4S jrSS jrSrU =r$ );test__custom_fit_no_run_search.<locals>.NoRunSearchSearchCVi&  c                 (   > [         TU ]  " U40 UD6  g rf   re  rg  s      rj   rk   Dtest__custom_fit_no_run_search.<locals>.NoRunSearchSearchCV.__init__'  rj  rn   c                     U $ rf   r   )ri   ru   r   r4  
fit_paramss        rj   rw   ?test__custom_fit_no_run_search.<locals>.NoRunSearchSearchCV.fit*  s    Krn   r   r   )r   r   r   r   rk   rw   r   rp  r  s   @rj   NoRunSearchSearchCVrz  &  s    	2	 	rn   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )3test__custom_fit_no_run_search.<locals>.BadSearchCVi0  c                 (   > [         TU ]  " U40 UD6  g rf   re  rg  s      rj   rk   <test__custom_fit_no_run_search.<locals>.BadSearchCV.__init__1  rj  rn   r   )r   r   r   r   rk   r   rp  r  s   @rj   BadSearchCVr  0  s    	2 	2rn   r  z_run_search not implemented.r   r   r1  r   )	r>   rK   rw   ru   r   r   r   NotImplementedErrorr5   )r  r  s     rj   test__custom_fit_no_run_searchr  %  sp    l  ""1a(2l 2 
*2P	QCEeQ/044Q: 
R	Q	Qs    /B
B&c                  B   [        SS9R                  [        5      n U  Vs/ s H  oPM       nSn[        [	        5       S/ SQ0U SS9n[
        R                  " [        SS	9   UR                  [        S U [        S U 5        S S S 5        g s  snf ! , (       d  f       g = f)
Nr   r1  r  r>  r  r  r  r   r   n_jobszNNo fits were performed. Was the CV iterator empty\? Were there no candidates\?r   )
r5   r  ru   r:   r&   r   r   r   rw   r   )r   u
train_sizeridges       rj   test_empty_cv_iterator_errorr  ;  s    
 
		 	 	#B O1QO Juw2D(E"UVWE 
*
 			!KZ.!KZ.1
 
 
 
s   B!!B
Bc                      " S S[         5      n U " SS9nSn[        [        5       S/ SQ0USS	9n[        R                  " [
        S
S9   UR                  [        S U [        S U 5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg).test_random_search_bad_cv.<locals>.BrokenKFoldiZ  c                     g)Nr   r   )ri   argskws      rj   get_n_splits;test_random_search_bad_cv.<locals>.BrokenKFold.get_n_splits[  s    rn   r   N)r   r   r   r   r  r   r   rn   rj   BrokenKFoldr  Z  s    	rn   r  r   r1  r  r>  r  r   r  zVcv.split and cv.get_n_splits return inconsistent results. Expected \d+ splits, got \d+r   )	r5   r:   r&   r   r   r   rw   ru   r   )r  r   r  r  s       rj   test_random_search_bad_cvr  W  sz    e 
 
a	 BJuw2D(E"UVWE 

 			!KZ.!KZ.1
 
 
s   	!A33
BrK  F)r   r   r  r  r   c                    [        SSS9u  p4 " S S5      nU " [        5       4U" 5       SUS.UD6n[        R                  " [        5       nUR                  X45        S S S 5        U(       a  SS	/OS/n[        W5      [        U5      :X  d   e[        Xx5       H$  u  pS
U
 S3[        U	R                  5      ;   a  M$   e   UR                  S   R                  5       n[        R                  " UR                  S   5      n[        UR                  S   U   U5        [        R                  " UR                  S   U)    U:  5      (       d   eg ! , (       d  f       N= f)Nr   r   )r#  r  c                   $    \ rS rSrSrS rS rSrg)Htest_searchcv_raise_warning_with_non_finite_score.<locals>.FailingScoreri  z1Scorer that will fail for some split but not all.c                     SU l         g rz   n_countsr   s    rj   rk   Qtest_searchcv_raise_warning_with_non_finite_score.<locals>.FailingScorer.__init__  s	    DMrn   c                 t    U =R                   S-  sl         U R                   S-  S:X  a  [        R                  $ g)Nr   r  r   )r  rq   r  )ri   r  ru   r   s       rj   __call__Qtest_searchcv_raise_warning_with_non_finite_score.<locals>.FailingScorer.__call__  s-    MMQM}}q A%vvrn   r  N)r   r   r   r   r   rk   r  r   r   rn   rj   FailingScorerr    s    ?		rn   r  r   )r   r   rK  r  r  zOne or more of the z scores are non-finiter>  r  )r   rP   r   r  r  rw   rp   ziprQ  messager   maxrq   r!  r]   r   )r   ro  rK  ru   r   r  r   warn_msgset_with_warningmsgdataset	last_ranknon_finite_masks                rj   1test_searchcv_raise_warning_with_non_finite_scorer  p  sM   $ ;DA
 
  -	
 D 
k	"h 
# -?(VHx=C 01111H7$WI-CDCKKHXXXX 8   !23779Ihht//0ABCOt''(9:?KYW66$""#456FG)STTTT 
#	"s   E
Ec                  h   S n [        SSSS9u  p[        SS9n[        USSS	/0U S
S9nUR                  X5        / SQnU H$  nSR	                  U5      UR
                  ;   a  M$   e   UR                  U5      n[        X'5      nUR                  X5      [        R                  " US   5      :X  d   eg )Nc                 `    U R                  U5      n[        X#5      nUS   US   US   US   S.$ )N)r   r   r   r   )r   r   r   r   tnfpfntp)r~   r)   )r   ru   r   rs  cms        rj   custom_scorerAtest_callable_multimetric_confusion_matrix.<locals>.custom_scorer  s8    Qa(hbhbhbhOOrn   (   r   r  rY  r  r   r  r   r  r  r  zmean_test_{}r  )r   rL   r0   rw   formatr   r~   r)   r   r   rm  )	r  ru   r   r  rm  score_namesnamers  r  s	            rj   *test_callable_multimetric_confusion_matrixr    s    P
 KDA

$C#c1XTRF
JJq*K$$T*f.@.@@@@  ^^AF	!	$B<<r$x!8888rn   c                     S n [        SSSS9u  p[        SS9n[        USSS	/0U S
S9n[        USSS	/0S
S/S
S9nUR                  X5        UR                  X5        UR                  [
        R                  " UR                  5      :X  d   eUR                  UR                  :X  d   eUR                  X5      [
        R                  " UR                  X5      5      :X  d   eg )Nc                 R    U R                  U5      n[        X#5      [        X#5      S.$ )N)rK  r  )r~   r-   r(   r  ru   r   rs  s       rj   r  Htest_callable_multimetric_same_as_list_of_strings.<locals>.custom_scorer  s)    Q"1-&q1
 	
rn   r  r   r  rY  r  r   r  r   rK  r  r  	r   rL   r0   rw   r  r   rm  rI  r   )r  ru   r   r  search_callable
search_strs         rj   1test_callable_multimetric_same_as_list_of_stringsr    s    
 KDA

$C"cC8_m8O cC8_x&<HJ NN1&&&--
8N8N*OOOO&&**@*@@@@  &&--
8H8H8N*OOOOrn   c                     S n [        SSSS9u  p[        SS9n[        USSS	/0U S
S9n[        USSS	/0SSS9n[        USSS	/0S/SS9nUR                  X5        UR                  X5        UR                  X5        UR                  [
        R                  " UR                  5      :X  d   eUR                  UR                  :X  d   eUR                  X5      [
        R                  " UR                  X5      5      :X  d   eUR                  [
        R                  " UR                  5      :X  d   eUR                  UR                  :X  d   eUR                  X5      [
        R                  " UR                  X5      5      :X  d   eg )Nc                 :    U R                  U5      n[        X#5      $ rf   )r~   r-   r  s       rj   r  Htest_callable_single_metric_same_as_single_string.<locals>.custom_scorer  s    QA&&rn   r  r   r  rY  r  r   r  r   Tr  rK  r  )r  ru   r   r  r  r  search_list_strs          rj   1test_callable_single_metric_same_as_single_stringr    ss   ' KDA

$C"cC8_m4O cC#q?HHUJ"cC8_xjO NN1&&&--
8N8N*OOOO&&**@*@@@@  &&--
8H8H8N*OOOO&&&--
8N8N*OOOO&&**@*@@@@  &&--
8H8H8N*OOOOrn   c                      S n [        SSSS9u  p[        [        SS9SSS	/0U S
S9nSn[        R                  " [
        US9   UR                  X5        S S S 5        g ! , (       d  f       g = f)Nc                 
    SS0$ )Nbad_namer   r   r  ru   r   s      rj   
bad_scorerBtest_callable_multimetric_error_on_invalid_key.<locals>.bad_scorer  s    Arn   r  r   r  rY  r  r   r  r   	good_namer  z`For multi-metric scoring, the parameter refit must be set to a scorer key or a callable to refitr   )r   r0   rL   r   r   r   rw   )r  ru   r   r   r  s        rj   .test_callable_multimetric_error_on_invalid_keyr    sm     KDA
r"	sAh	C	,  
z	- 
.	-	-s   A
A,c                  `   S n [        SSSS9u  p[        5       n[        US/ SQ0/U SS	S
9n[        R                  " S[        R
                  S9n[        R                  " [        US9   UR                  X5        S S S 5        [        UR                  S   / SQ5        g ! , (       d  f       N*= f)Nc                 
    SS0$ NrL  r   r   r  s      rj   r  Btest_callable_multimetric_error_failing_clf.<locals>.custom_scorer	      qzrn   r  r   r   rY  r  r  Fr  r  zm5 fits failed.+total of 15.+The score on these train-test partitions for these parameters will be set to 0\.1r  r   mean_test_acc)r   r   r  )r   r
  r0   rk  r"  r#  r   r  r    rw   rY   r   )r  ru   r   r   r:  r$  s         rj   +test_callable_multimetric_error_failing_clfr  
	  s     KDA

C	
y	!"
B jj	KiiO
 
&o	>
q 
? BNN?3[A 
?	>s   )B
B-c                  T   S n [        SSSS9u  p[        5       n[        US[        R                  /S-  0/U SS	S
9nSn[        R
                  " SU 3[        R                  S9n[        R                  " [        US9   UR                  X5        S S S 5        g ! , (       d  f       g = f)Nc                 
    SS0$ r  r   r  s      rj   r  Btest_callable_multimetric_clf_all_fits_fail.<locals>.custom_scorer(	  r  rn   r  r   r   rY  r  r   Fr  r  z1ValueError: Failing classifier failed as requiredz5All the 15 fits failed.+your model is misconfigured.+r  r   r)  )r  ru   r   r   r:  individual_fit_error_messager   s          rj   +test_callable_multimetric_clf_all_fits_failr  &	  s     KDA

C	
);;<q@	AB
B $W JJC+,. iiM 
z	7
q 
8	7	7s   >B
B'c                  @   Sn [        U S9u  p[        5       nSSS/0n[        X45      n[        X4SS9n[	        US5      (       a   e[	        US5      (       a   eUR                  X5        UR                  X5        UR                  U :X  d   eUR                  U :X  d   eg )Nr   rZ  max_iterr   r   r   n_features_in_)r   r   r0   r:   r   rw   r  )rZ  ru   r   gbdtr   r:  r  s          rj   test_n_features_inr  D	  s     J*5DA)+Dq!f%J	d	'B	DQ	7Br+,,,,r+,,,,FF1LFF1L
***
***rn   pairwisec                    ^   " U 4S jS[         5      nU" 5       nSn[        USS/05      nT UR                  5       R                  R                  :X  d   U5       eg)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                   ,   >^  \ rS rSrU U4S jrSrU =r$ )Stest_search_cv_pairwise_property_delegated_to_base_estimator.<locals>.TestEstimatori_	  c                 F   > [         TU ]  5       nTUR                  l        U$ rf   )rf  __sklearn_tags__
input_tagsr  )ri   tagsr  r  s     rj   r  dtest_search_cv_pairwise_property_delegated_to_base_estimator.<locals>.TestEstimator.__sklearn_tags__`	  s!    7+-D'/DOO$Krn   r   )r   r   r   r   r  r   rp  )r  r  s   @rj   TestEstimatorr  _	  s    	 	rn   r  z.BaseSearchCV pairwise tag must match estimatorr  r   N)r   r0   r  r  r  )r  r  r  attr_messager   s   `    rj   <test_search_cv_pairwise_property_delegated_to_base_estimatorr  U	  sX      /CCL	cMB40	1Br**,77@@@N,N@rn   c                       " S S[         5      n U " 5       nSnS HO  nUR                  US9  [        USS/05      nX4R                  5       R                  R
                  :X  a  MJ   U5       e   g)	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                   2   ^  \ rS rSrSS jrU 4S jrSrU =r$ )Xtest_search_cv__pairwise_property_delegated_to_base_estimator.<locals>.EstimatorPairwiseit	  c                     Xl         g rf   r  )ri   r  s     rj   rk   atest_search_cv__pairwise_property_delegated_to_base_estimator.<locals>.EstimatorPairwise.__init__u	  s    $Mrn   c                 Z   > [         TU ]  5       nU R                  UR                  l        U$ rf   )rf  r  r  r  )ri   r  r  s     rj   r  itest_search_cv__pairwise_property_delegated_to_base_estimator.<locals>.EstimatorPairwise.__sklearn_tags__x	  s%    7+-D'+}}DOO$Krn   r  )T)r   r   r   r   rk   r  r   rp  r  s   @rj   EstimatorPairwiser  t	  s    	%	 	rn   r  z4BaseSearchCV _pairwise property must match estimatorr  r  r  r   N)r   r   r0   r  r  r  )r  r  r  _pairwise_settingr   s        rj   =test_search_cv__pairwise_property_delegated_to_base_estimatorr  k	  su    M  
CIL* 12#t45 $7$7$9$D$D$M$MM 	
	
M +rn   c                  Z   Sn Sn[        U SS9u  p#SS/0n[        5       n[        XTUS9nUR                  X#5        UR	                  U5      n[        U5      n[        SS	9n[        XTUS9nUR                  X5        UR	                  U5      n	S
n
Xy:H  R                  5       (       d   U
5       eg)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   r  )metricz2GridSearchCV not identical with precomputed metricN)r   rC   r0   rw   r~   r/   r   )r"  r2  ru   r   grid_paramsr   r   preds_originalX_precomputedpreds_precomputedr  s              rj   ;test_search_cv_pairwise_property_equivalence_of_precomputedr  	  s     IHCDA 2$'K 
 C	c8	4BFF1LZZ]N (*M
m
4C	c8	4BFF=

=1GL/4466DD6rn   zSearchCV, param_searchr.  r  r  r   c                      " S S[         [        5      nU " U" 5       U5      n[        SS9u  pEUR                  XESS9  UR                  R
                  S:X  d   eg )Nc                   .    \ rS rSrSS jrSS jrS rSrg),test_scalar_fit_param.<locals>.TestEstimatori	  Nc                     Xl         g rf   )r.  )ri   r.  s     rj   rk   5test_scalar_fit_param.<locals>.TestEstimator.__init__	  s    Frn   c                     X0l         g rf   )r_)ri   ru   r   rs       rj   rw   0test_scalar_fit_param.<locals>.TestEstimator.fit	  s    Grn   c                 <    [         R                  " [        U5      S9$ )Nr{   )rq   r  rp   r   s     rj   r~   4test_scalar_fit_param.<locals>.TestEstimator.predict	  s    883q6++rn   )r.  r  rf   r   r   r   r   rk   rw   r~   r   r   rn   rj   r  r  	  s    			,rn   r  r  r  )r  )r   r   r   rw   r   r  )r   param_searchr  modelru   r   s         rj   test_scalar_fit_paramr  	  sV    , , ]_l3EB/DA	IIabI  ##r)))rn   c                     [        [        SS9SS06u  p#pE " S S[        5      nS nU " U" 5       U5      nX54USS.n	UR                  " X$40 U	D6  g )Nr  r  r  c                   4   ^  \ rS rSr    SU 4S jjrSrU =r$ )9test_scalar_fit_param_compat.<locals>._FitParamClassifieri	  c                    > [         TU ]  XUS9  US:  d   e[        U5      (       d   e[        U[        5      (       d   eUS   R
                  S:X  d   eUS   R
                  S:X  d   eU $ )Nr  r   r   r   )rf  rw   callabler   r   ndim)ri   ru   r   r  tuple_of_arraysscalar_paramcallable_paramr  s          rj   rw   =test_scalar_fit_param_compat.<locals>._FitParamClassifier.fit	  s     GKMK:!###N++++ ou5555"1%**a///"1%**a///Krn   r   NNNN)r   r   r   r   rw   r   rp  r  s   @rj   _FitParamClassifierr  	  s    
  	 	rn   r   c                      g rf   r   r   rn   rj   _fit_param_callable9test_scalar_fit_param_compat.<locals>._fit_param_callable	  s    rn   )r  r  r  )r=   r   r'   rw   )
r   r  X_trainX_validr  y_validr   r"  r  r~  s
             rj   test_scalar_fit_param_compatr'  	  sn     *:	"	-*<>*&Ggm ( (*L9E $--J
 
IIg-*-rn   z)ignore:The total space of parameters 4 is	Predictorc                    [         R                  R                  S5      nUR                  SS5      [         R                  " S/S-  S/S-  -   5      pC[        S[        5       4SU" 5       4/5      nSS	/SS	/S
.nU " XVSS9nUR                  X45        UR                  R                  5       UR                  5       :X  d   eUR                  U5      n[        U5      (       aA  [        US5        UR                  X45      [        R                  " [!        XH5      5      :X  d   eg [#        XR%                  5       5        UR                  X45      [        R                  " ['        XH5      5      :X  d   eg )Nr      r   r  r   r  transformer	predictorr   )transformer__parampredictor__paramar  r(  )rq   r5  r6  randnr	  rE   rW   rw   r  r  r~   r   r]   r   r   rm  r(   rY   rr  r,   )	r   r(  r7  ru   r   r  r   rm  rs  s	            rj   1test_search_cv_using_minimal_compatible_estimatorr0  	  s5    ))


"C99RRXXqcAgb&89q
+-	.ik0JKE
  !"gWF e9F
JJq##%666^^AFV61%||A!V]]>!3L%MMMM)||A!V]]8A3F%GGGGrn   c           	      8   [        SSSSS9u  p#[        SS9nSS/0n[        UUS	S
S
US9R                  X#5        U R	                  5       R
                  nU(       a  [        R                  " SU5      nO[        R                  " SU5      n[        U5      S
:X  d   eg)zgCheck 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   rK  z$score=\(train=[\d\.]+, test=[\d.]+\)zscore=[\d\.]+N)	r   rL   r0   rw   
readouterroutrk  findallrp   )capsysrK  ru   r   r   r   capturedr   s           rj   test_search_cv_verbose_3r7  
  s     #TUVDA

#C#<D- 
c!i  "&&H

BHM

+X6u:??rn   r
  c                 J   [        SS9u  p#[        5       /S/S.nUS   S   R                  n[        S[	        5       4S/5      nX0nU " U4S	S
SS.UD6R                  X#5      nUS   S   R                  U:X  d   eUR                  R                  S   R                  S:X  d   eg )Nr  r  r  )r   clf__Cr   r   trs)r   NTr   r  rA  r   r   )r   rL   r   rE   rW   rw   r   named_steps)	r   r  ru   r   r   orig_Cr   param_grid_searchr:  s	            rj   test_search_estimator_paramr?  /
  s     B/DAk]tf5FE]1Fe/12MBCD%.	$	Rdq*	R@Q	R	V	V	
B
 %='''))%022d:::rn   c            
      R   SSS.n [        S[        5       4S[        5       4/5      n[        UU SSSS	SS
9n/ SQn/ SQnUR	                  X45        UR
                  S   n[        R                  " S[        S9n/ SQUS S & [        R                  R                  UR                  U5        g )N)r  r   r   )l1l2)vect__ngram_range
vect__normvectr   r   r   r   r   )r  r
  r   r  r  r   r   )oner4  threefourfive)r   r   r   r   r   param_vect__ngram_rangerh  )rA  rA  r  )rE   r"   rA   r:   rw   r   rq   r   objectr  r]   r   )parameter_gridpipelinerD  
data_traindata_targetresultexpected_datas          rj   test_search_with_2d_arrayrS  M
  s     ."N _&'LN#	
H '*M 9J!Kj.&&'@AFHHQf-M/M!JJ!!&++}=rn   c                  l   [        SS9u  p[        S[        5       4S[        5       4/5      nS[        5       [	        5       /0n[        X#SS9n[        SS9   UR                  5       nS	U;   d   e S
S
S
5        UR                  X5        [        SS9   UR                  5       nS	U;   d   e S
S
S
5        [        X#SS9nUR                  X5        [        SS9   UR                  5       nS	U;  d   eSU;   d   e S
S
S
5        g
! , (       d  f       N= f! , (       d  f       Nn= f! , (       d  f       g
= f)z5Test different HTML representations for GridSearchCV.r  r  r]  r   F)r   rA  diagram)displayz<div>DummyClassifier</div>NTz<div>LogisticRegression</div>)	r   rE   rJ   r   r%   r0   r   _repr_html_rw   )ru   r   rN  r   r  	repr_htmls         rj   test_search_html_reprrY  k
  s    B/DA'>#34uo>O6PQRH/+-?-ABCJ XEJI			*))+	+y888 
+
 MM!			*))+	+y888 
+
 XDIIMM!			*))+	+9<<<.);;; 
+	* 
+	* 
+	* 
+	*s$   DD!D%
D
D"%
D3)enable_metadata_routingc           
         [        SS9u  p#[        U5      n[        R                  R	                  S5      nUR                  U5      nUR                  U5      n[        5       nUSS/00n	[        5       n
[        U
S9R                  SSS	9n[        US
S9nU " U4S
SUS.U	D6R                  X#XgS9  [        U
5      (       d   eU
 H  n[        USSS	UUS9  M     g)zMTest that *SearchCV forwards metadata correctly when passed multiple metrics.r  r  r   r   r   )registryscore_weightsscore_metadata)r  metadatar  )	my_scorerr  r   r;  )r]  r^  r   _score)objr  parentsplit_paramsr  r_  N)r   ra   rq   r5  r6  r  rL   rN   rM   set_score_requestr  rw   rp   rO   )r   r  ru   r   r"  r7  r]  r^  r  r>  scorer_registryscorerr   _scorers                 rj   *test_multi_metric_search_forwards_metadatari  
  s     B/DAQI
))


"CHHY'MXXi(N
+C%aSz2kOo6HH%0@ I F Vj9GSO
q'O=NOSS	M T  "6'#	
 #rn   c                     [        SS9u  p#[        5       nUSS/00nU " U4SS0UD6R                  X#5      n[        R                  " [
        SS9   UR                  X#SS	9  S
S
S
5        g
! , (       d  f       g
= f)zw*SearchCV should reject **params when metadata routing is not enabled
since this is added only when routing is enabled.r  r  r   r   r   r   zis only supported ifr   )r_  N)r   rL   rw   r   r   r   r   )r   r  ru   r   r  r>  r:  s          rj   1test_score_rejects_params_with_no_routing_enabledrk  
  st     B/DA
+C%aSz2	#	1!	10	1	5	5a	;B	z)?	@
" 
A	@	@s   A**
A8c                  "    " S S[         [        5      n SSS0SS0/SSS//S	S0/S
S/S.n[        U " [        5       5      USS9n[	        SS9u  p4UR                  X45        U H)  nUR                  SU 3   R                  [        :X  a  M)   e   g)zQNon-regression test for https://github.com/scikit-learn/scikit-learn/issues/29074c                   6    \ rS rSr    SS jrSS jrS rSrg)	8test_cv_results_dtype_issue_29074.<locals>.MetaEstimatori
  Nc                 @    Xl         X l        X0l        X@l        XPl        g rf   base_clf
parameter1
parameter2
parameter3
parameter4)ri   rq  rr  rs  rt  ru  s         rj   rk   Atest_cv_results_dtype_issue_29074.<locals>.MetaEstimator.__init__
  s     %M(O(O(O(Orn   c                 <    U R                   R                  X5        U $ rf   )rq  rw   r  s      rj   rw   <test_cv_results_dtype_issue_29074.<locals>.MetaEstimator.fit
  s    MMa#Krn   c                 8    U R                   R                  X5      $ rf   )rq  r   r  s      rj   r   >test_cv_results_dtype_issue_29074.<locals>.MetaEstimator.score
  s    ==&&q,,rn   rp  r  rf   )r   r   r   r   rk   rw   r   r   r   rn   rj   MetaEstimatorrn  
  s     	)		-rn   r{  NoptionABr   r   r.  str1str2)rr  rs  rt  ru  r   rC  r   r  param_)	r   r   r0   r%   r   rw   r   r  rL  )r{  r   r   ru   r   r  s         rj   !test_cv_results_dtype_issue_29074r  
  s    - -2 h_xo>aVnQxjv&	J  2 45K 1%DAOOA&&w'78>>&HHH rn   c                     [         R                  " S5      n U R                  / SQ/ SQ/ SQS.5      nUR                  SSS9nUS   n[	        S	[        S
S9S/4/SS9n[        S	U4S[        5       4/5      nS[        S
S9[        5       /0n[        XVSS9nUR                  X#5        UR                  S   R                  [        :X  d   eg)zNCheck cv_results_ for estimators with a `dtype` parameter, e.g. OneHotEncoder.r  )r   r   r   r   r  )r.  r.  r.  r.  r.  )r   gffffff@r?  g      @r   )	numeric_1object_1targetr  r   r  encF)sparse_outputr  passthrough)	remainderr   enc__encr   r   param_enc__encN)r   importorskipr  dropr   rG   rE   r$   rH   r0   rw   r   r  rL  )pddfru   r   r  r   r  r   s           rj   'test_search_with_estimators_issue_29157r  
  s    			X	&B	(1/	

B 	q!A
8A

U3j\	BCC CL*,-	
D 	.
K tQ7KOOA""#34::fDDDrn   c                     Sn [        SS9u  p[        [        SS9[        5       5      nS Vs/ s H  o@U-  PM	     nnU Vs/ s H=  n[        R
                  " S[        R                  S-  U5      R                  SU 45      PM?     nn[        US	U0S
9nUR                  X5        UR                  S   R                  [        :X  d   egs  snf s  snf )zoCheck that GridSearchCV works with params that are arrays of different sizes.

Non-regression test for #29277.
r   r  periodic)extrapolation)r   r     r   r   r   splinetransformer__knotsr  param_splinetransformer__knotsN)r   rF   rI   r%   rq   linspacepir  r0   rw   r   r  rL  )	rZ  ru   r   spline_reg_piper   n_knots_listn_knots
knots_listspline_reg_pipe_cvs	            rj    test_cv_results_multi_size_arrayr    s    
 J"-DA#
3O
 -99LqNLL9 $#G 	Aruuqy'*22B
3CD#   &!&

 1 &&'GHNNRXXX :s   CACz(array_namespace, device_name, dtype_namec                    [        XU5      u  pE[        R                  " S5      R                  S5      nUR	                  U5      nUR                  XuS9n[        R                  " S/S-  S/S-  -   5      n	UR                  XS9n
[        SS9   U " [        5       S	/ S
Q0SSS9nUR                  X5        UR                  X5        S S S 5        g ! , (       d  f       g = f)Nr  )r   r   )devicer   r  r   T)array_api_dispatchtol)r  r  g-C6?gh㈵>gư>gHz>r   r  r  )rX   rq   r  r  astypeasarrayr	  r   r   rw   r   )r   array_namespacedevice_name
dtype_namexpr  ru   X_npX_xpy_npy_xpr  s               rj   #test_array_api_search_cv_classifierr  8  s     &oJOJB
		#x(A88JD::d:*D 88QC!GqcAg%&D::d:*D	4	0&(89	
 	T t" 
1	0	0s   8C
C)rU  r  rA  )r   r   )candidate_paramsexpected	param_foozsimple numeric, single param)idr   r   	param_bar)r   r   r   )FFTr_  z1simple numeric, one param is missing in one roundrh  zlists of different lengthszlists tuplesr  c                 J   [        [        U 5      5      n[        X!5       H  u  u  p4u  pVX5:X  d   eUR                  UR                  :X  d   e[        R
                  R                  XF5        [        R
                  R                  UR                  UR                  5        M     g rf   )r   r?   r  r  rq   r  r]   rU  )r  r  rQ  r  rO  expected_keyexpected_values          rj   &test_yield_masked_array_for_each_paramr  a  s    l 45EFGF8;F8M44|"""{{n22222


%%e<


%%ejj.2E2EF	 9Nrn   c                     [        S5       V s/ s H  n SU 0PM	     nn [        R                  " 5          [        R                  " S[        5        [        [        U5      5        S S S 5        g s  sn f ! , (       d  f       g = f)Nr6  r  error)r   warningscatch_warningssimplefilterRuntimeWarningr   r?   )r   r  s     rj   *test_yield_masked_array_no_runtime_warningr    s^    .3Dk:k!k:		 	 	"g~6/0@AB 
#	" ;	"	"s   A,0A11
A?c                     [        U " 5       S/ SQ0SUS9[        U " 5       S[        SS5      0SSUSS	9[        U " 5       S/ SQ0SS
US9[	        U " 5       S[        SS5      0SS
USS9/$ )Nr  r   r   r   r   r   r   r   r  )r   r   r   r  T)r   aggressive_eliminationr   )r   r  r   r  )r0   r:   r   r3   r4   )r  r   s     rj   _searchcv_callback_test_casesr    s    Y[:y"9aQKA'	
 	K##'	
 	KA'#'	
# rn   rA  rm  r  c                 Z  ^
 [        5       [        5       /n[        U 5      R                  US9R                  " U6 R                  [        [        5      n SnSnU R                  m
SU R                  R                  ;   a9  U R                  n[        U
4S jU R                   5       5      nX4U-   -   U-   U-   nOSnUT
-  nX4U-   -   U-   nU H_  n	U	R                  S5      S:X  d   eU	R                  S5      U:X  d   eU	R                  S5      U:X  d   eU	R                  S	5      S:X  a  M_   e   g
)zLCheck number of hook calls when the sub-estimator doesn't support callbacks.r@  r   Halvingc              3   ,   >#    U  H	  oT-  v   M     g 7frf   r   r   r-  r2  s     rj   r   7test_search_callbacks_no_propagation.<locals>.<genexpr>       Q<P&X-<P   r   setupon_fit_task_beginon_fit_task_endteardownN)r   r   r   r   set_callbacksrw   ru   r   rl  r  r   n_iterations_sumn_candidates_count_hooks)rm  rA  	callbacksrootsearch_taskn_halving_roundsn_evaluationsr  rW  callbackr2  s             @rj   $test_search_callbacks_no_propagationr    s?    #$&E&GHI6]%%E%2@@)LPPQRTUVF DKHF$$---!//QF<P<PQQ./2BB]R$x/./-? ##G,111##$78HDDD##$56(BBB##J/1444	 rn   r2c                 |  ^ [        5       [        5       /n[        U 5      R                  US9R                  " U6 R                  [        [        5      n SnSnU R                  mSU R                  R                  ;   a9  U R                  n[        U4S jU R                   5       5      nX4U-   -   U-   U-   nOSnUT-  nX4U-   -   U-   nU H  n	U	R                  S5      S:X  d   eU	R                  R                  S:X  a/  U	R                  S5      U:X  d   eU	R                  S	5      U:X  d   eOv[        U4S
 jU R                  S    5       5      n
U(       a  U R                   R"                  OSnXz-   U-   nU	R                  S5      U:X  d   eU	R                  S	5      U:X  d   eU	R                  S5      S:X  a  M   e   g)zICheck number of hook calls when the sub-estimator does support callbacks.r@  r   r  c              3   ,   >#    U  H	  oT-  v   M     g 7frf   r   r  s     rj   r   4test_search_callbacks_propagation.<locals>.<genexpr>  r  r  r   r  r   r  r  c              3   T   >#    U  H  n[        T5        H
  nUS    v   M     M     g7f)r  N)r   )r   r   r  r2  s      rj   r   r  	  s-      %5AxA *( 5s   %(r   r   r  N)r   r   r   r   r  rw   ru   r   rl  r  r   r  r  r  r  r   r   n_iter_)rm  rA  r  r  r  r  r  searchcv_tasksrW  r  search_inner_tasksrefit_inner_tasksr  r2  s                @rj   !test_search_callbacks_propagationr    s    #$&E&GHI6]%%E%2@@)LPPQRTUVF DKHF$$---!//QF<P<PQQu!458HH=X$x/u!45E##G,111&&*==''(;<NNN''(9:nLLL "% %++H5% "
 CH 6 6 > >Q%:=NNH''(;<HHH''(9:hFFF##J/1444) rn   c                     [        5       n [        [        5       S/ SQ0SSS9R                  U 5      n[        R
                  R                  S5      R                  SS[        R                  S   S9nUR                  [        [        US	9  U R                   Vs/ s H  nUS
   R                  S:X  d  M  UPM     nnU(       d   eU R                   Vs/ s H  nUS
   R                  S:X  d  M  UPM     nnU(       d   eU H  nSUS   S   ;   a  M   e   U H'  nSUS   S   ;   d   eUS   S   S   n[        Xb5        M)     gs  snf s  snf )zTest that `sample_weight` gets passed to `callback.on_fit_task_*`.

Note this tests all *SearchCV classes that inherit from `BaseSearchCV`.
r  r   r   r  r  r   r  r  r  contextzcandidate-split-evaluationzrefit-with-best-paramsr  rh  r_  N)r   r0   r   r  rq   r5  r6  r   r   r|   rw   ru   record	task_namer]   )r  rm  r  entryevaluation_recordsrefit_recordspassed_weightss          rj   +test_search_callbacks_receive_sample_weightr    sh    !"HZ3:mH  II))!,44Q
4KM
JJq!=J1 __$E%%)EE 	$  
  __$E%%)AA 	$  
 =#%/*"==== $ %/*"====x4_E>9 !s   E3EE-Ec                     [        5       n[        U 5      R                  U5      R                  [        [
        5      n UR                   H  nUS   U L a  M   e   g)zHTest that all hooks receive the search instance as `estimator` argument.r  N)r   r   r  rw   ru   r   r  )rm  r  r  s      rj   -test_search_callbacks_receive_search_instancer  8  sN     !"H6]((266q!<F[!V+++ !rn   c                      " S S[         [        5      n [        5       n[        U " 5       SSS/0SSSS9R	                  U5      n[
        R                  " [        S	S
9   UR                  [        [        5        SSS5        SnUR                  S5      U:X  d   eUR                  S5      U:X  d   eg! , (       d  f       N?= f)zCheck callbacks hooks are called when some candidate fits fail.

When error_score != "raise" and not all fit fail, the whole search doesn't raise so
all callback invocations are expected.
c                   *    \ rS rSrSS jrS rS rSrg)Jtest_search_callbacks_with_partial_fit_failures.<locals>.MayFailClassifieriN  c                     Xl         g rf   )fail)ri   r  s     rj   rk   Stest_search_callbacks_with_partial_fit_failures.<locals>.MayFailClassifier.__init__O  s    Irn   c                 t    [         R                  " U5      U l        U R                  (       a  [	        S5      eU $ )NzMayFailClassifier.fit failed)rq   rr   rs   r  RuntimeErrorr  s      rj   rw   Ntest_search_callbacks_with_partial_fit_failures.<locals>.MayFailClassifier.fitR  s)    IIaLDMyy"#ABBKrn   c                 F    [         R                  " [        U5      [        S9$ )Nrh  )rq   r  rp   r  r   s     rj   r~   Rtest_search_callbacks_with_partial_fit_failures.<locals>.MayFailClassifier.predictX  s    88CF#..rn   )rs   r  Nr   r  r   rn   rj   MayFailClassifierr  N  s    			/rn   r  r  FTr   r   )r   rA  r  z"2 fits failed out of a total of 4.r   Nr   r  r  )r   r   r   r0   r  r   r  r    rw   ru   r   r  )r  r  rm  expected_n_taskss       rj   /test_search_callbacks_with_partial_fit_failuresr  F  s    /O] / !"H	% mH  
&.R	S

1a 
T ! 348HHHH 126FFFF 
T	Ss   B11
B?)r   (  r   r  rk  r   r  collections.abcr   r   	functoolsr   ior   	itertoolsr   r   r  r	   numpyrq   r   scipy.statsr
   r   r   r   r   r   sklearn.baser   r   r   r   sklearn.callback.tests._utilsr   r   r   r   r   sklearn.clusterr   sklearn.composer   sklearn.datasetsr   r   r   sklearn.discriminant_analysisr   sklearn.dummyr   sklearn.ensembler   sklearn.exceptionsr    sklearn.experimentalr!   sklearn.feature_extraction.textr"   sklearn.imputer#   sklearn.linear_modelr$   r%   r&   r'   sklearn.metricsr(   r)   r*   r+   r,   r-   r.   sklearn.metrics.pairwiser/   sklearn.model_selectionr0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   sklearn.model_selection._searchr>   r?   $sklearn.model_selection.tests.commonr@   sklearn.naive_bayesrA   sklearn.neighborsrB   rC   rD   sklearn.pipelinerE   rF   sklearn.preprocessingrG   rH   rI   rJ   sklearn.svmrK   rL   %sklearn.tests.metadata_routing_commonrM   rN   rO   sklearn.treerP   rQ   sklearn.utils._array_apirR   sklearn.utils._mockingrS   rT   sklearn.utils._testingrU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   sklearn.utils.estimator_checksr_   sklearn.utils.fixesr`   sklearn.utils.validationra   rc   r   r	  ru   r   r   markparametrizer  r   r   r   r   r  r  r.  r<  rB  rE  rV  r^  rg  ri  rn  rv  r  r  r  r  filterwarningsr  r  r  r  r  r  r  r  r  r  r  r  r*  r1  rZ  rd  rx  r}  r  r{  r  r  r  r  r  r  r  r  r  r  r  r   r  r
  r&  r*  r,  r<  rD  rF  rR  rU  rw  r  thread_unsafer  r  r  r  r  r  r  r  r  r  r  r  r  r  r'  r0  r7  r?  rS  rY  ri  rk  r  r  r  r  one_hot_encoderordinal_encoderr  r  r   rL  ma_with_tuplesr  r  r  r  r  r  r  r  r  r   rn   rj   <module>r)     sl     	 
  +   $    : : " M M  # - 
 E ) ; / 9 ; (    9     A , U U 4  ' 
 G E   E . 1
$_m $Ny  HHr2hR1a&1a&12HH\= =':JSU2V"WX&	
IKL1#,	I'JKAJF	
	 Y
!/H2<$ l4F%GH< I<$(078>02	1(VF6%P .9 :* .9!( :!(H*:!$} $ OP
 Q
*+Z0 *RG4'9<&HI J 50+:/*//3>78$"84B,VW!tBJ "	sQGn56	cAr7^qQR5)5)p ?F
@#LF& ,.!,q"g 6	
 	,.K!R;Q	
77 .@ 13l@STgG^3L	
>B>BB (6!.B 8	

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