
    ri5k                       d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	Z
ddlZddlmZ ddlmZ ddlmZmZmZmZ ddlmZ dd	lmZmZmZmZmZmZ dd
lmZ ddl m!Z! ddl"m#Z#m$Z$ ddl%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG ddlHmIZImJZJmKZK ddlLmMZM ddlNmOZO ddlPmQZQ ddlRmSZS ddlTmUZU ddlVmWZW ddlXmYZYmZZZ ddl[m\Z\m]Z] ddl^m_Z_m`Z`maZambZbmcZc ddldmeZe ddlfmgZgmhZhmiZimjZj ddlkmlZlmmZm ddlnmoZompZpmqZqmrZrmsZs dd ltmuZumvZv dd!lwmxZx  G d" d#e      Zy G d$ d%ey      Zz G d& d'e      Z{ G d( d)e{      Z| G d* d+ee      Z} e
j                  d,      Z e
j                   g d-      Z e
j                   g d.      Z e
j                  d/      Zej
                  j                  d0eu      d1        Zd2 Zd3 Zd4 Zej
                  j                  d5d6d7g      ej
                  j                  d8ev      d5efd9              Zd: Zd; Zd< Zd= Zd> Zd? Zej
                  j                  d0eu      d@        ZdA ZdB ZdC Zej
                  j                  d0eu      dD        ZdE ZdF ZdG ZdH Zej
                  j                  d0eu      dI        ZdJ ZdK ZdL Zej
                  j                  d0eu      dM        ZdN ZdO ZdP Zej
                  j                  d0eu      dQ        ZdR ZdS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda Zdb Zdc Zej
                  j                  d8ev      dd        Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm Z G dn doe!      Zdp Zdq Zdr Zds Zdt Zdu Zdv Zdw Zdx Z G dy dze      Zej
                  j                  d{e
j                  dg      d|        Zej
                  j                  d{e
j                  dg      d}        Zd~ Zej
                  j                  d      ej
                  j                  d{e
j                  ddg      d               Zej
                  j                  d      ej
                  j                  d{e
j                  ddg      ej
                  j                  dd7d6g      ej
                  j                  dd6d7g      d                             Zd Zej
                  j                  dd6eddddfd7 e7eed      ddddfd6 e7eed      ddddfg      d        Zd Zd Zd Zd Zd Zej
                  j                  deDi feCi feBi feEi feFi feGd e
j                   dg      dfg       ed7      d               Zej
                  j                  deDi feCi feBi feEi feFi feGd e
j                   dg      dfg       ed7      d               Zej
                  j                  deDi feCi feBi feEi feFi feGd e
j                   dg      dfg       ed7      d               Zej
                  j                  deDi feCi feBi feEi feFi feGd e
j                   dg      dfg       ed7      d               Z ed7      d        Zej
                  j                  d e)        e       gddg      ej
                  j                  dg d      ej
                  j                  d ej       ei      d                      Zy)zTest the validation module    N)partial)sleep)issparse)config_context)BaseEstimatorClassifierMixincloneis_classifier)KMeans)load_diabetesload_digits	load_irismake_classificationmake_multilabel_classificationmake_regression)LinearDiscriminantAnalysis)RandomForestClassifier)FitFailedWarningUnsetMetadataPassedError)SimpleImputer)LogisticRegressionRidgeRidgeClassifierSGDClassifier)	accuracy_scorecheck_scoringconfusion_matrixexplained_variance_scoremake_scorermean_squared_errorprecision_recall_fscore_supportprecision_scorer2_score)_MultimetricScorer)GridSearchCV
GroupKFoldGroupShuffleSplitKFoldLeaveOneGroupOutLeaveOneOutLeavePGroupsOutShuffleSplitStratifiedKFoldcross_val_predictcross_val_scorecross_validatelearning_curvepermutation_test_scorevalidation_curve)_check_is_permutation_fit_and_score_score)OneTimeSplitter)FailingClassifier)OneVsRestClassifier)KNeighborsClassifier)MLPRegressor)Pipeline)LabelEncoderscale)SVC	LinearSVC)ConsumingClassifierConsumingScorerConsumingSplitter	_Registrycheck_recorded_metadata)shuffle)_atol_for_type_convert_to_numpy_get_namespace_device_dtype_ids)yield_namespace_device_dtype_combinations)CheckingClassifierMockDataFrame)_array_api_for_testsassert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equal)COO_CONTAINERSCSR_CONTAINERS)_num_samplesc                   2    e Zd ZdZd ZddZd Zd	dZd Zy)
MockImprovingEstimatorz+Dummy classifier to test the learning curvec                 .    || _         d| _        d | _        y Nr   )n_max_train_sizestrain_sizesX_subset)selfrY   s     k/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/sklearn/model_selection/tests/test_validation.py__init__zMockImprovingEstimator.__init__j   s    !2    Nc                 <    || _         |j                  d   | _        | S rX   r[   shaperZ   r\   r[   y_subsets      r]   fitzMockImprovingEstimator.fito        #>>!,r_   c                     t         NNotImplementedErrorr\   Xs     r]   predictzMockImprovingEstimator.predictt       !!r_   c                     | j                  |      r%dt        | j                        | j                  z  z
  S t        | j                        | j                  z  S )Ng       @)_is_training_datafloatrZ   rY   r\   rl   Ys      r]   scorezMockImprovingEstimator.scorew   sM    !!!$t//043I3IIII))*T-C-CCCr_   c                     || j                   u S rh   r[   rk   s     r]   rp   z(MockImprovingEstimator._is_training_data~       DMM!!r_   rh   NN	__name__
__module____qualname____doc__r^   re   rm   rt   rp    r_   r]   rV   rV   g   s    5

"D"r_   rV   c                   2     e Zd ZdZd fd	Zd ZddZ xZS )!MockIncrementalImprovingEstimatorz*Dummy classifier that provides partial_fitc                 @    t         |   |       d | _        || _        y rh   )superr^   xexpected_fit_params)r\   rY   r   	__class__s      r]   r^   z*MockIncrementalImprovingEstimator.__init__   s     *+#6 r_   c                     | j                   |v S rh   r   rk   s     r]   rp   z3MockIncrementalImprovingEstimator._is_training_data   s    vv{r_   c                    | xj                   |j                  d   z  c_         |d   | _        | j                  rt	        | j                        t	        |      z
  }|rt        dt        |       d      |j                         D ]R  \  }}|| j                  v st        |      t        |      k7  s-t        d| dt        |       dt        |       d       y y )Nr   zExpected fit parameter(s) z
 not seen.zFit parameter z has length z; expected .)	rZ   rb   r   r   setAssertionErrorlistitemsrT   )r\   rl   yparamsmissingkeyvalues          r]   partial_fitz-MockIncrementalImprovingEstimator.partial_fit   s    AGGAJ&1##$223c&kAG$0gzJ  %lln 
U$222|8!!_8% )(\,u:M9N%l1o%6a9 	 $r_   rh   )rz   r{   r|   r}   r^   rp   r   __classcell__r   s   @r]   r   r      s    47
r_   r   c                   2    e Zd ZdZddZd Zd Zd	dZd Zy)
MockEstimatorWithParameterz-Dummy classifier to test the validation curvec                      d | _         || _        y rh   )r[   param)r\   r   s     r]   r^   z#MockEstimatorWithParameter.__init__   s    
r_   c                 <    || _         |j                  d   | _        | S rX   ra   rc   s      r]   re   zMockEstimatorWithParameter.fit   rf   r_   c                     t         rh   ri   rk   s     r]   rm   z"MockEstimatorWithParameter.predict   rn   r_   Nc                 Z    | j                  |      r| j                  S d| j                  z
  S )N   )rp   r   )r\   rl   r   s      r]   rt   z MockEstimatorWithParameter.score   s&    !33A6tzzJA

NJr_   c                     || j                   u S rh   rv   rk   s     r]   rp   z,MockEstimatorWithParameter._is_training_data   rw   r_   )      ?rx   ry   r~   r_   r]   r   r      s    7
"K"r_   r   c                   (     e Zd ZdZ fdZd Z xZS )%MockEstimatorWithSingleFitCallAllowedz<Dummy classifier that disallows repeated calls of fit methodc                 X    t        | d      rJ d       d| _        t        |   ||      S )Nfit_called_zfit is called the second timeT)hasattrr   r   re   )r\   r[   rd   r   s      r]   re   z)MockEstimatorWithSingleFitCallAllowed.fit   s2    4/P1PP/w{8X..r_   c                     t         rh   ri   rk   s     r]   rm   z-MockEstimatorWithSingleFitCallAllowed.predict   rn   r_   )rz   r{   r|   r}   re   rm   r   r   s   @r]   r   r      s    F/
"r_   r   c                   N    e Zd ZdZd	dZ	 	 	 	 	 	 	 	 	 d
dZd Zd ZddZddZ	y)MockClassifierz-Dummy classifier to test the cross-validationc                      || _         || _        y rh   aallow_nd)r\   r   r   s      r]   r^   zMockClassifier.__init__   s     r_   Nc           	      B   || _         || _        |	| _        |
 |
|        | j                  r|j	                  t        |      d      }|j                  dk\  r| j                  st        d      |P|j                  d   |j                  d   k(  s1J dj                  |j                  d   |j                  d                |v|j                  d   t        t        j                  t                    k(  sDJ dj                  |j                  d   t        t        j                  t                                 |Rd}|j                  d   |j                  d   k(  s1J |j                  |j                  d   |j                  d                |td}|j                  t        j                  k(  sUJ |j                  |j                  d   |j                  d	   t        j                  d   t        j                  d	                t        j                  t              | _        | S )
zThe dummy arguments are to test that this fit function can
        accept non-array arguments through cross-validation, such as:
            - int
            - str (this is actually array-like)
            - object
            - function
           zX cannot be dr   zKMockClassifier extra fit_param sample_weight.shape[0] is {0}, should be {1}zIMockClassifier extra fit_param class_prior.shape[0] is {0}, should be {1}zRMockClassifier extra fit_param sparse_sample_weight.shape[0] is {0}, should be {1}zUMockClassifier extra fit_param sparse_param.shape is ({0}, {1}), should be ({2}, {3})r   )	dummy_int	dummy_str	dummy_objr   reshapelenndim
ValueErrorrb   formatnpuniquer   Pclasses_)r\   rl   rs   sample_weightclass_priorsparse_sample_weightsparse_paramr   r   r   callbackfmts               r]   re   zMockClassifier.fit   s   ( #""TN==		#a&"%A66Q;t}}_--$ &&q)QWWQZ7 ??Ev!''*AGGAJ@7 "$$Q'3ryy|+<< ))/0A0A!0Dc"))TU,FW)X<  +2  (--a0AGGAJ> 

$**1-qwwqzA > #6   %%0 #**""1%""1%

	3 0 		!r_   c                 b    | j                   r|j                  t        |      d      }|d d df   S )Nr   r   )r   r   r   r\   Ts     r]   rm   zMockClassifier.predict	  s*    ==		#a&"%AAwr_   c                     |S rh   r~   r   s     r]   predict_probazMockClassifier.predict_proba  s    r_   c                 L    ddt        j                  | j                        z   z  S )N      ?r   )r   absr   rr   s      r]   rt   zMockClassifier.score  s    a"&&.())r_   c                 4    | j                   | j                  dS )Nr   r   )r\   deeps     r]   
get_paramszMockClassifier.get_params  s    VV77r_   )r   F)	NNNNNNNNNrx   )F)
rz   r{   r|   r}   r^   re   rm   r   rt   r   r~   r_   r]   r   r      sA    7! !>@
*8r_   r   )      )r   r   r   r   r   r   r   r      r      r      r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   coo_containerc                    t               } | t              }t        dd      D ]  }||_        t	        |t        t
              }t        ||j                  t        t
                     t        j                  t
        t
        d d d   g      }t	        |||      }t        ||j                  ||             t	        ||t
              }t        ||j                  |t
                     t	        |||      }t        ||j                  ||              d }t        |      }t	        |t        j                         t
        j                         d      }t        |      }t	        |t        t
        j                         d      }t        d d d d t        j                  f   }t        d	
      }t	        ||t
              }t        d
      }t        j                  t              5  t	        ||t
        d       d d d        y # 1 sw Y   y xY w)Ni
   r   c                 "    t        | t              S rh   
isinstancer   r   s    r]   <lambda>z&test_cross_val_score.<locals>.<lambda>:      :a. r_   check_Xr   cvcheck_yT)r   Fraiseerror_score)r   rl   ranger   r/   y2rQ   rt   r   column_stackrK   tolistnewaxispytestraisesr   )r   clfX_sparser   scoresmultioutput_y
list_checkX_3ds           r]   test_cross_val_scorer   "  s   

CQH3^ G a,6399Q#34 R"X7 h>6399X}#EF h36399Xr#:; !h>6399X}#EF!G& /J
Z
0CS!((*biika@F
Z
0CS!RYY[Q7F Q2::D
$
'CS$+F
%
(C	z	" <T27;< < <s   #H  H	c                  z    t        d      \  } }t        d      }t        |dddgi      }t        || |d	
       y )NT
return_X_yauto)gammaCr   r   )
param_gridr   )n_jobs)r   r?   r%   r0   )rl   r   r   grids       r]   test_cross_validate_many_jobsr   K  s>     %DAq
F
Cq"g7D4Aa(r_   c            
         t        d      \  } }t               }d}t        j                  t        |      5  t        || |t        t              t        t              f       d d d        t        j                  t        |      5  t        || |t        t              f       d d d        t        j                  t        |dz         5  t        || |d       d d d        t        j                  t        |dz         5  t        || |d	       d d d        t        j                  t        |      5  t        || |t        t              gg       d d d        t        j                  t        d
      5  t        || |t                      d d d        t        t              }dt        j                   d}t        j                  t        |      5  t        || ||       d d d        t        j                  t        |      5  t        || |d|i       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   cxY w# 1 sw Y   :xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   random_statez.*must be unique strings.*matchscoringzEmpty list.*r~   zDuplicate.*)f1_micror  zAn empty dict[Scoring failed. The score on this train-test partition for these parameters will be set to z. Details: 
foo)r   r   r   r   r   r0   r   r"   r   dictr!   r   nanwarnsUserWarning)rl   r   	estimatorerror_message_regexpmulticlass_scorerwarning_messages         r]   )test_cross_validate_invalid_scoring_paramr  U  s@   A.DAq I 8 
z)=	> 
 1;~3NO		

 
z)=	> Qy!Q_1M0OPQ 
z)=)N	O 4y!Q34 
z)=)M	N Jy!Q0HIJ 
z)=	> Ry!Q+o2N1O0PQR 
z	9 :y!Q9: $$CD
	99; A	  
k	9 Cy!Q0ABC 
k	9 Ly!Q8I0JKL LO
 
Q Q4 4J JR R: :C CL Ls_   ,H!H.
H; I3I5I"I.I:!H+.H8;III"I+.I7:Jc                      t        d      \  } }t        dt               fdt               fg      }t	        || |d      }|d   }t        |t              sJ t        d |D              sJ y )NTr   imputer
classifier)return_estimatorr  c              3   <   K   | ]  }t        |t                y wrh   )r   r<   ).0r  s     r]   	<genexpr>z7test_cross_validate_nested_estimator.<locals>.<genexpr>  s     K9z)X.Ks   )r   r<   r   r   r0   r   r   all)rl   r   pipelineresults
estimatorss        r]   $test_cross_validate_nested_estimatorr    sv     $'FQ(>+,	
H Xq!dCG%Jj$'''K
KKKKr_   
use_sparseFTcsr_containerc           
         t               }t        dd      \  }}t        d      }t        dd      \  }}t	        dd      }| r ||      } ||      }|||f|||ffD ]  \  }	}
}t        |d      }t        |d	      }g }g }g }g }g }|j                  |	|
      D ]  \  }}t        |      j                  |	|   |
|         }|j                   |||	|   |
|                |j                   |||	|   |
|                |j                   |||	|   |
|                |j                   |||	|   |
|                |j                  |        t        j                  |      }t        j                  |      }t        j                  |      }t        j                  |      }t        j                  |      }|||||f}t        ||	|
||       t        ||	|
||        y )
N   r   	n_samplesr   r   linearkernelr   neg_mean_squared_errorr   r2)r(   r   r   r   r?   r   splitr	   re   appendr   array"check_cross_validate_single_metric!check_cross_validate_multi_metric)r  r  r   X_regy_regregX_clfy_clfr   rl   r   est
mse_scorer	r2_scorertrain_mse_scorestest_mse_scorestrain_r2_scorestest_r2_scoresfitted_estimatorstraintestr   s                         r]   test_cross_validater8    s    
B #Ra@LE5
Q
C '!DLE5
XA
.Ce$e$eS)E5#+>? $A	1c"30HI
!#t4	88Aq> 	*KE4*..51U84C##JsAeHah$GH""9S!E(AeH#EF"":c1T7AdG#DE!!)C4!D'"BC$$S)	* 88$45((?3((?3.1HH%67 
 	+31fbA)#q!VR@I$Ar_   c           	      H   |\  }}}}}	dD ]  \  }
}|
r!t        | ||dd|      }t        |d   |       nt        | ||dd|      }t        |t              sJ t	        |      |k(  sJ t        |d   |       |
r#t        | ||dgd|      }t        |d	   |d       nt        | ||dgd|      }t        |t              sJ t	        |      |k(  sJ t        |d
   |        t        | ||dd|      }t        |d         D ]  \  }}|j                  j                         }t        |      r|j                         }|	|   j                  j                         }t        |      r|j                         }t        ||       t        |j                  |	|   j                          y )N))Tr   )Fr   r"  Tr   return_train_scorer   train_scoreF
test_scorer#  train_r2test_r2)r   r  r   r  )r0   rP   r   r  r   	enumeratecoef_copyr   toarrayrO   
intercept_)r   rl   r   r   r   r1  r2  r3  r4  r5  r;  dict_lenmse_scores_dictr2_scores_dictkr.  est_coeffitted_est_coefs                     r]   r'  r'    s    	 )@ &M$H,0#'O &om&DFVW,0#(O /4000?#x///!/,"?Q +QD6drN &nZ&@/SWX+QD6eN .$///>"h...!.";^LM&MR %Q3drO OK89 
M399>>#H'')H+A.4499;O$-557OHo6CNN,=a,@,K,KL
Mr_   c           
         |\  }}}}}	d }
dt        t              dd|
f}h d}|j                  ddh      }dD ]  }|D ]  }|r0t        | |||d|	      }t	        |d   |       t	        |d   |       nt        | |||d
|	      }t        |t              sJ t        |j                               |r|n|k(  sJ t	        |d   |       t	        |d   |       t        |d   t        j                        sJ t        |d   t        j                        sJ t        |d   t        j                        sJ t        |d   t        j                        sJ t        j                  |d   dk\        sJ t        j                  |d   dk        sJ t        j                  |d   dk\        sJ t        j                  |d   dk        rJ   y )Nc                 X    | j                  |      }t        ||      t        ||       dS )Nr#  r"  )rm   r#   r    )r   rl   r   y_preds       r]   custom_scorerz8check_cross_validate_multi_metric.<locals>.custom_scorer!  s0    Q1f%'9!V'D&D
 	
r_   rM  r"  >   r?  fit_time
score_timetest_neg_mean_squared_errorr>  train_neg_mean_squared_error)TFTr:  Fr?  rR  rP  rQ  r   r   )r   r#   unionr0   rP   r   r  r   keysr   ndarrayr  )r   rl   r   r   r   r1  r2  r3  r4  r5  rO  all_scoringkeys_sans_trainkeys_with_trainr;  r   
cv_resultss                    r]   r(  r(    s    	
 	)h'&>	
 	KO &++	34O , "9" !	9G!+Aw4B
 **Z*@/R)=>@P ,Aw5R
 j$///z()#5?   &j&;^L%89?
 j3RZZ@@@j)FGTTTj4bjjAAAj6

CCC 66*Z0A566666*Z02566666*\2a788866*\2R7888C!	9"9r_   c                     t        ddd      \  } }t        d      }t               t        d      t	               t               g}d}|D ]h  }t        j                  t        |      5  t        || ||	       d d d        t        j                  t        |      5  t        || ||	       d d d        j y # 1 sw Y   ?xY w# 1 sw Y   xY w)
N   r   r   r  	n_classesr   r  r!  z*The 'groups' parameter should not be None.r   )r  rl   r   r   )r   r?   r)   r+   r&   r'   r   r   r   r/   r.   )rl   r   r   	group_cvserror_messager   s         r]   #test_cross_val_score_predict_groupsrb  `  s     qqIDAq
X
C 		I AM >]]:]; 	<cQ!;	<]]:]; 	>qA"=	> 	>>	< 	<	> 	>s   'B5C5B>	C
	c                    	 t         t         fg} 	 ddlm}m} | j	                  ||f       | D ]C  \  	 t               	t              }}fd}	fd}t        ||      }t        |||d       E y # t
        $ r Y Tw xY w)Nr   	DataFrameSeriesc                     t        |       S rh   r   r   InputFeatureTypes    r]   r   z-test_cross_val_score_pandas.<locals>.<lambda>      Z+;< r_   c                     t        |       S rh   rh  r   
TargetTypes    r]   r   z-test_cross_val_score_pandas.<locals>.<lambda>      Az!: r_   r   r   r   r   )
rL   pandasre  rf  r%  ImportErrorrl   r   rK   r/   
typesre  rf  X_dfy_sercheck_dfcheck_seriesr   rj  rn  s
           @@r]   test_cross_val_score_pandasry  v  s    ]+,E,fi() ). 0$
$ 'q):b>e<: <HT5Q/0     A5 5	B Bc                     t        d      } t               }|j                  |j                  }}t	        d      }t        | |||      }t	        d      }g }|j                  ||      D ]j  \  }}t        j                  t        |      t              }	t        j                  t        |      t              }
d|	|<   d|
|<   |j                  ||f       l t        | |||      }t        ||       y )Nr  r_  r   r   dtyper   )r?   r   datatargetr(   r/   r$  r   zerosr   boolr%  rQ   )svmirisrl   r   kfoldscores_indicescv_masksr6  r7  
mask_train	mask_testscores_maskss               r]   test_cross_val_score_maskr    s    
X
C;D99dkkqA!HE$S!Q59N!HEH{{1a( 'tXXc!fD1
HHSV40	
5	$&' #31:L~|4r_   c                  p   t        d      } t               }|j                  |j                  }}t	        j
                  ||j                        }t        | ||      }t        d      } t        | ||      }t        ||       t        d       } t        | ||      }t        ||       t        d      } t        j                  t              5  t        | ||       d d d        t        j                  t              5  t        | |j                         |       d d d        y # 1 sw Y   GxY w# 1 sw Y   y xY w)Nprecomputedr_  r  c                 B    t        j                  | |j                        S rh   )r   dotr   )r   r   s     r]   r   z2test_cross_val_score_precomputed.<locals>.<lambda>  s    "&&ACC. r_   )r?   r   r~  r  r   r  r   r/   rP   r   r   r   r   )r  r  rl   r   linear_kernelscore_precomputedscore_linearscore_callables           r]    test_cross_val_score_precomputedr    s   
]
#C;D99dkkqAFF1accNM']A>
X
C"31-L/> 0
1C$S!Q/N/@ ]
#C	z	" #Q"#
 
z	" 8]113Q78 8# #
8 8s   D ;D, D),D5c           	        	
 t               }t        j                  d   }t        t	        j
                  t                    } | t	        j                  dg      t	        j                  dg      t	        j                  dg      ffd      } | t	        j                  d            }dd
t               		
fd}t	        j                  |      t	        j                  |d	|z        ||
	|d
}t        |t        t        |       y )Nr   r   )r   r   )rb   r   *   42c                 l    | j                   k(  sJ | j                  k(  sJ | j                  k(  sJ y rh   )r   r   r   )r   	DUMMY_INT	DUMMY_OBJ	DUMMY_STRs    r]   assert_fit_paramsz:test_cross_val_score_fit_params.<locals>.assert_fit_params  s;     }}	)))}}	)))}}	)))r_   r   )r   r   r   r   r   r   r   r   r   )r   rl   rb   r   r   r   r   r&  eyeobjectonesfullr/   r   )r   r   r  r^  W_sparseP_sparser  
fit_paramsr  r  r  s           @@@r]   test_cross_val_score_fit_paramsr    s    

C
IBIIaL!I	1#1#!67wH RVVAY'HIII* +wwy#	/: ( %	J CBz2r_   c                      t               } g fd}t        j                  d      5  t        |      }t	        | t
        t        |d      }d d d        t        g d       t              dk(  sJ y # 1 sw Y   (xY w)Nc                 ,    j                  | |f       y)Nr   )r%  )y_test	y_predict_score_func_argss     r]   
score_funcz3test_cross_val_score_score_func.<locals>.score_func  s     34r_   Trecordr   )r   r   )r   r   r   )	r   warningscatch_warningsr   r/   rl   r   rQ   r   )r   r  r   rt   r  s       @r]   test_cross_val_score_score_funcr    s{    

C 
	 	 	- Bj)Q7qAB uo. A%%%B Bs   $A44A=c                  X   t               } t        d      }t        || j                  | j                        }t        |g dd       t        || j                  | j                  d      }t        |g dd       t        || j                  | j                  d      }t        |g dd       y )Nr  r_  )
ףp=
?r   r  r  r   r   accuracyr   f1_weighted)r   r?   r/   r~  r  rP   )r  r   r   	zo_scores	f1_scoress        r]   3test_cross_val_score_with_score_func_classificationr    s    ;D
X
C S$))T[[9Ff&BAF  TYYZPIi)EqI  TYY]SIi)EqIr_   c                  p   t        dddd      \  } }t               }t        || |      }t        |g dd       t        || |d	      }t        |g dd       t        || |d
	      }t	        j
                  g d      }t        ||d       t        t              }t        || ||	      }t        |g dd       y )Nr  r\  r   r   r  
n_featuresn_informativer   )gGz?r  r  gGz?gq=
ףp?r   r#  r   r"  )g(\؇gzGIgGz&qg\(qg)\G)r   r   r/   rP   r   r&  r   r   )	rl   r   r+  r   	r2_scoresneg_mse_scoresexpected_neg_mser   	ev_scoress	            r]   /test_cross_val_score_with_score_func_regressionr    s    RBaVWXDAq
'C S!Q'Ff&DaH  Q48Ii)GK %S!Q8PQNxx NOn.>B 23GQ7;Ii)GKr_   c                 4   t               }|j                  } | |      }|j                  }t        d      }t	        d      }t        |||d|d      \  }}}	|dkD  sJ t        |	dd	       t        |||d|dt        j                  |j                        d
      \  }
}}|
|k(  sJ ||	k(  sJ t        d      }t	        d      }t        |||d|dt        j                  |j                        d
      \  }
}}|
|k(  sJ ||	k(  sJ d }t        |      }t        |||d||d
      \  }}}	t        |dd       t        |	dd       t        j                  t        j                  t        |            d      }t        |||d|d      \  }}}	|dk  sJ |	dkD  sJ y )Nr  r_  r   r  r  )n_permutationsr   r   g?        r   r   )r  r   r   groupsr   c                 p    | |k(  j                         | |k7  j                         z
  | j                  d   z  S rX   )sumrb   )y_truerN  s     r]   custom_scorez,test_permutation_score.<locals>.custom_scoreD  s7    6!&&(Ff,<+A+A+CCv||TUVVr_   d   )r  r   r   r   g(\?g{Gz?r   r   皙?)r   r~  r  r?   r-   r2   rO   r   r  sizer   modaranger   )r   r  rl   r   r   r  r   rt   r   pvaluescore_group_pvalue_group
svm_sparse	cv_sparser  scorers                    r]   test_permutation_scorer    s   ;D		AQHA
X
C		B2Q"ZE66 3;;Q'#9		wwqvv	$ KL %6!!! H%J"I#9	wwqvv	$ KL %6!!!W &F-Q#v"1E1f tQ'a( 	ryyQ !$A2Q"ZE66 3;;C<<r_   c                  j   t        j                  dt         j                        j                  dd      } t         j                  | dd d f<   t        j
                  ddg| j                  d   dz        }t        dt        d	t         j                  
      fdt               fg      }t        || |       y N   r|  r   r   r   r   r   r  mean)strategymissing_valuesr  )r   r  float64r   r  repeatrb   r<   r   r   r2   rl   r   ps      r]   &test_permutation_test_score_allow_nansr  Y  s    
		#RZZ(00R8AffAadG
		1a&!''!*q.)AvbffMN>+,	
	A 1a#r_   c            
         t        j                  d      j                  dd      } t        j                  dgdz  dgdz  z         }t	        d      }d}t        j                  t        |	      5  t        || |       d d d        d
}t        j                  t        |	      5  t        || |dt        j                  d      i       d d d        t        || |dt        j                  d      i       y # 1 sw Y   xxY w# 1 sw Y   :xY w)Nr  r   r   r   r   Texpected_sample_weight#Expected sample_weight to be passedr   /sample_weight.shape == \(1,\), expected \(8,\)!r   r  )r   r  r   r&  rK   r   r   r   r2   r   r  rl   r   r   err_msgs       r]   "test_permutation_test_score_paramsr  g  s    
		#r2&A
!qA37"#A
D
9C4G	~W	5 *sAq)* AG	z	1 PsAq/2771:1NOP31orwwr{-KL* *P Ps   /C4"%D 4C= D	c                  j   t        j                  dt         j                        j                  dd      } t         j                  | dd d f<   t        j
                  ddg| j                  d   dz        }t        dt        d	t         j                  
      fdt               fg      }t        || |       y r  )r   r  r  r   r  r  rb   r<   r   r   r/   r  s      r]   test_cross_val_score_allow_nansr  v  s    
		#RZZ(00R8AffAadG
		1a&!''!*q.)AvbffMN>+,	
	A Aq!r_   c                     t        j                  ddgddgddgddgddgddgddgddgddgddgg
      } t        j                  ddgddgddgddgddgddgddgddgddgddgg
      }t        d	      }t        t        d
      }t        t        d      }t        t        d      }t        || ||      }t        || ||      }t        || ||      }t        |g d       t        |g d       t        |g d       y )Nr   r   r   r   r   r   )n_neighborsmicro)averagemacrosamplesr   )r   r         ?r   gUUUUUU?)r   r   r  r         ?)r   r&  r:   r   r"   r/   rO   )	rl   r   r   scoring_microscoring_macroscoring_samplesscore_microscore_macroscore_sampless	            r]   test_cross_val_score_multilabelr    s/   
GFFFGGFHHG	
	A 	
Q!Q!Q!Q!Q!Q!Q!Q!QRSUVQWX	A 1
-CAMAM!/9EO!#q!]CK!#q!]CK#CAGM%DE%DE'FGr_   c           
      f   t        d      \  }}t               }t               }t        j                  |      }|j                  ||      D ]4  \  }}|j                  ||   ||          |j                  ||         ||<   6 t        ||||      }t        ||       t        |||      }t        |      t        |      k(  sJ t               }t        ||||      }t        |      t        |      k(  sJ |j                         }	|	|	t        j                  |	      kD  z  }	 | |	      }	t        ||	|      }t        t        |      t        |             t        t        d      |      }t        |      t        |      k(  sJ  G d d      }
t        j                   t"              5  t        ||| |
              d d d        t%        d      \  }}d}t        j&                  t(        |	      5  t        t+        d
      ||dt        d             d d d        y # 1 sw Y   bxY w# 1 sw Y   y xY w)NTr   r   r   )n_initc                       e Zd ZddZy)%test_cross_val_predict.<locals>.BadCVNc              3      K   t        d      D ]2  }t        j                  g d      t        j                  g d      f 4 y w)Nr   )r   r   r   r   )r   r   r         )r   r   r&  )r\   rl   r   r  is        r]   r$  z+test_cross_val_predict.<locals>.BadCV.split  s8     1X Hhh|,bhh.GGGHs   AArx   )rz   r{   r|   r$  r~   r_   r]   BadCVr    s    	Hr_   r  zNumber of classes in training fold \(2\) does not match total number of classes \(3\). Results may not be appropriate for your use case.r   	liblinear)solverr   r   methodr   )r   r(   r   r   
zeros_liker$  re   rm   r.   rP   r   r*   rB  medianr   r   r   r   r   r  RuntimeWarningr   )r   rl   r   r   r.  preds2r6  r7  predsXspr  r  s               r]   test_cross_val_predictr    s   D)DAq	B
'C ]]1Fxx1~ ,t%!E(#{{1T7+t, c1aB/EeV,c1a(Eu:Q	Bc1aB/Eu:Q
&&(C33C

Cc3*Ec%j#a&1fF3Q7Eu:QH H
 
z	" 1#q!01 %DAq	< 
 
nO	< 
k2"Qx	

 
1 1
 
s   %H.$H'H$'H0c            
         t        ddd      \  } }t        t               | |d      }|j                  dk(  sJ t	        d	      \  } }t        t               | |d      }|j                  d
k(  sJ | d d } |d d }d}t        j                  t        |      5  t        t               | |dt        d             d d d        t        d	      \  } }t        dd      }t        || |d      }|j                  dk(  sJ t        j                  |      }| |   ||   }} d}t        j                  t        |      5  t        || |t        d      d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   2   r   r^  r  r   decision_functionr  )r  Tr      r   r  zOnly 1 class/es in training fold, but 2 in overall dataset. This is not supported for decision_function with imbalanced folds. To fix this, use a cross-validation technique resulting in properly stratified foldsr   r  r  ovo)r!  decision_function_shape)i  -   zOutput shape \(599L?, 21L?\) of decision_function does not match number of classes \(7\) in fold. Irregular decision_function .*r   n_splitsr   r  )r   r.   r   rb   r   r   r   r   r   r(   r   r?   r   argsort)rl   r   r  ra  r.  indr	  s          r]   .test_cross_val_predict_decision_function_shaper    s   bqIDAq02AqATUE;;%%DAq02AqATUE;;(""" 	
$3A	$3A	1  
z	7 
q!,?E!H	


 $'DAq
Xu
=Cc1a0CDE;;*$$$
**Q-CS61S6qA	  
z)=	> W#q!q(9BUVW W'
 
&W Ws   "E:E*E'*E3c                      t        ddd      \  } }t        t               | |d      }|j                  dk(  sJ t	        d	      \  } }t        t               | |d      }|j                  d
k(  sJ y )Nr   r  r   r  r   r  r  r   Tr   r  r   r.   r   rb   r   rl   r   r  s      r]   *test_cross_val_predict_predict_proba_shaper#    sn    bqIDAq02AqQE;;'!!!%DAq02AqQE;;("""r_   c                      t        ddd      \  } }t        t               | |d      }|j                  dk(  sJ t	        d	      \  } }t        t               | |d      }|j                  d
k(  sJ y )Nr   r  r   r  predict_log_probar  r   Tr   r  r!  r"  s      r]   .test_cross_val_predict_predict_log_proba_shaper&    sp    bqIDAq02AqATUE;;'!!!%DAq02AqATUE;;("""r_   c                    t               }|j                  |j                  }} | |      }t        j                  ||d d d   g      }t        dd      }t        |||      }|j                  dk(  sJ t        |||      }|j                  dk(  sJ t        |||      }t        |j                  d       t        |||      }t        |j                  d       d }t        |      }t        ||j                         |j                               }t        |	      }t        |||j                               }t        t               |j                         |j                         d
      }t        t               ||j                         d
      }|d d d d t        j                  f   }	d }
t        |
      }t        ||	|      }t        |j                  d       y )Nr   Fr   )fit_interceptr   )r  )r  r   c                 "    t        | t              S rh   r   r   s    r]   r   z4test_cross_val_predict_input_types.<locals>.<lambda><  r   r_   r   r   r  r  c                      | j                   dk(  S )Nr   )r   r   s    r]   r   z4test_cross_val_predict_input_types.<locals>.<lambda>S  s    1 r_   )r   r~  r  r   r   r   r.   rb   rQ   rK   r   r   r   )r   r  rl   r   r   r   r   predictionsr   r   check_3ds              r]   "test_cross_val_predict_input_typesr-  #  s   ;D99dkkqAQHOOQ$B$L1M
e!
4C $CA.K&&& $C=AK(((#C15K{((&1 $C=AK{(((3 /J
Z
0C#CQXXZ@K
Z
0C#CAHHJ7K $	
	
"	K $		
"	K Q2::D$H
X
.C#Cq1K{((&1r_   c                    	 t         t         fg} 	 ddlm}m} | j	                  ||f       | D ]C  \  	 t               	t              }}fd}	fd}t        ||      }t        |||d       E y # t
        $ r Y Tw xY w)Nr   rd  c                     t        |       S rh   rh  ri  s    r]   r   z/test_cross_val_predict_pandas.<locals>.<lambda>e  rk  r_   c                     t        |       S rh   rh  rm  s    r]   r   z/test_cross_val_predict_pandas.<locals>.<lambda>f  ro  r_   rp  r   r   )
rL   rq  re  rf  r%  rr  rl   r   rK   r.   rs  s
           @@r]   test_cross_val_predict_pandasr1  Y  s    ]+,E,fi() ). 2$
$&q):b>e<: <H#tUq12  rz  c                  8   t        dddddd      \  } }d|d<   t        d      }t        d      }t        |j	                  | |            \  }}t        || ||d	      }||d      d   dk(  sJ t        j                  ||d      d d df   dk(        sJ t        j                  ||d      d d ddf   dkD        sJ t        j                  ||d      dkD        sJ t        |j                  d
      t        j                  |j                        d       y )Nr  r   r   r   )r  r  n_redundantr  n_clusters_per_classr   r   r  r   r  axis   )decimal)r   r   r-   r   r$  r.   r   r  rP   r  r  rb   )rl   r   r   r   r6  r7  
yhat_probas          r]   !test_cross_val_predict_unbalancedr:  k  s    DAq AaD
!
,C	!	$Brxx1~&KE4"31OLJT!W:a=A66*T!W%ad+q011166*T!W%a1f-122266*T!W%)***jnn!n4bggagg6FPRSr_   c                      t               } t        j                  j                  d      }|j	                  dd      }t        | |d dd      }t        |d d df   |       t        | |d dd      }t        ||       y )	Nr  r  r   r   rm   )r   r   r  r   r   )r   r   randomRandomStaterandr.   rN   )mock_classifierrngrl   y_haty_hat_probas        r]   test_cross_val_predict_y_nonerC    ss    $&O
))


#CbAoqDQyQEAadGU##dqK A{#r_   c                    t               }|j                  |j                  }}t               }d | t	        j
                  |j                  d               i}t        ||||d      }t        |t	        j                  d             y )Nr   r   r   )r   r   )
r   r~  r  r   r   r  rb   r/   rQ   r  )r   r  rl   r   r   r  r   s          r]   &test_cross_val_score_sparse_fit_paramsrE    sf    ;D99dkkqA

C(-qwwqz8J*KLJQ*;Aq"''!*%r_   c                     d} d}t        | dddddd      \  }}t        | |dz
  |z  z        }dD ]   }t        j                  d	      5 }t	        |||t        |
      t        j                  ddd      |d      \  }}}	}
}d d d        t              dkD  rt        d|d   j                  z        j                  dk(  sJ 	j                  dk(  sJ 
j                  dk(  sJ j                  dk(  sJ t        t        j                  ddd             t        |j                  d      t        j                  ddd             t        |	j                  d      t        j                  ddd             |
j                  dk(  sJ |j                  dk(  sJ t        j                  d	      5 }t	        |||t!        ||       t        j                  ddd      |      \  }}}d d d        t        |      dkD  rt        d|d   j                  z        t        |       t        |	        y # 1 sw Y   xY w# 1 sw Y   [xY w)Nr  r   r   r   r   r  r  r  r3  r^  r4  r   FTTr  r  皙?r   r   )r   rZ   rF   return_timesUnexpected warning: %r)r   r   r\  r5  ffffff?r  r  r  )r   rZ   rF   )r   rV   r  r  r1   r(   r   linspacer   RuntimeErrormessagerb   rQ   rP   r  r}  r7   )r  r  rl   r   r  shuffle_trainwrZ   train_scorestest_scores	fit_timesscore_timestrain_sizes2train_scores2test_scores2s                  r]   test_learning_curverZ    s[   IHDAq 'yX\X4M'NOI& -=$$D1 	Q (+KKS"5%!	  q6A:7!A$,,FGG!!W,,,  G+++')))  G+++;Ar2(>?!,"3"3"3";R[[cSU=VW!+"2"2"2":BKKSRT<UV )+++  I--- $$D1 	Q8F"H	JKKS"5%95L-	 q6A:7!A$,,FGG!->!,<[-=	 	@	 	s   
8H526I5H?	I	c                     t        ddddddd      \  } }t        d      }t        || d dt        j                  dd	d
            \  }}}t        |t        j                  ddd
             t        |j                  d      t        j                  dd	d
             t        |j                  d      t        j                  dd	d
             y )Nr  r   r   r   rG  r\  r   rI  r   r   )r   r   rZ   r5  rL  )r   rV   r1   r   rN  rQ   rP   r  rl   r  r  rZ   rS  rT  s         r]    test_learning_curve_unsupervisedr]    s    DAq 'r*I-;1Cb0I.*K{ {BKK2r$:;l//Q/7S#r9RSk..A.6Cb8QRr_   c           	          t        ddddddd      \  }}t        d      }t        |||dd       d	| j                         j                  v sJ y )
Nr  r   r   r   rG  r\  r   )r   verbosez[learning_curve])r   rV   r1   
readouterrout)capsysrl   r   r  s       r]   test_learning_curve_verboserc    s^    DAq 'r*I9aq!4!2!2!4!8!8888r_   c            	          t        ddddddd      \  } }t        d      }t        j                  t              5  t        || |d       d d d        y # 1 sw Y   y xY w)Nr   r   r   rG  T)exploit_incremental_learningr   rV   r   r   r   r1   rl   r   r  s      r]   5test_learning_curve_incremental_learning_not_possiblerh    sd    DAq 'q)I	z	" Ky!QTJK K Ks   AAc                     t        ddddddd      \  } }t        d      }dD ]  }t        || |dd	t        j                  d
dd      |      \  }}}t        |t        j                  ddd             t        |j                  d      t        j                  ddd             t        |j                  d      t        j                  d
dd              y )Nr  r   r   r   rG  r\  rH  r   TrI  r   r   )r   re  rZ   rF   r5  rL  r   r   r1   r   rN  rQ   rP   r  )rl   r   r  rQ  rZ   rS  rT  s          r]   (test_learning_curve_incremental_learningrk    s    DAq 2"5I& W1?)-Cb1!2
.\; 	;Ar2(>?!,"3"3"3";R[[cSU=VW!+"2"2"2":BKKSRT<UVWr_   c                     t        ddddddd      \  } }t        d      }t        || d ddt        j                  d	d
d            \  }}}t        |t        j                  ddd             t        |j                  d      t        j                  dd
d             t        |j                  d      t        j                  d	d
d             y )Nr  r   r   r   rG  r\  r   TrI  r   r   )r   r   re  rZ   r5  rL  rj  r\  s         r]   5test_learning_curve_incremental_learning_unsupervisedrm  !  s    DAq 2"5I-;	
%)KKS"-.*K{ {BKK2r$:;l//Q/7S#r9RSk..A.6Cb8QRr_   c            	         t        ddddddd      \  } }t        j                  ddd      }t        dd d	
      }t	        || ||dd      \  }}}t	        || |d|d	      \  }}}	t        ||       t        |j                  d      |j                  d             t        |j                  d      |	j                  d             y )Nr  r   r   r   rG  r  r   r   F)max_itertolrF   r   T)rZ   r   re  )r   rZ   re  r5  )r   r   rN  r   r1   rQ   rP   r  )
rl   r   rZ   r  train_sizes_inctrain_scores_inctest_scores_inctrain_sizes_batchtrain_scores_batchtest_scores_batchs
             r]   <test_learning_curve_batch_and_incremental_learning_are_equalrw  9  s    DAq ++c3*KqdEBI9G		%):6O% @N		%*@<)+< (9:1%'9'>'>A'>'F !$&7&<&<!&<&Dr_   c            	         t        ddddddd      \  } }t        d      }t        j                  t              5  t        || |dddg       d d d        t        j                  t              5  t        || |dd	d
g       d d d        t        j                  t              5  t        || |dddg       d d d        t        j                  t              5  t        || |dddg       d d d        t        j                  t              5  t        || |dddg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   y xY w)Nr  r   r   r   rG  r\  r   r   rZ   r  r   rI  g?   rf  rg  s      r]   0test_learning_curve_n_sample_range_out_of_boundsr{  `  sT   DAq 'r*I	z	" By!Q11a&AB	z	" Fy!Q13*EF	z	" Fy!Q13*EF	z	" Cy!Q11b'BC	z	" Cy!Q11b'BC CB BF FF FC CC Cs;   D&.D2"D>E

E&D/2D;>E
EEc                     t        ddddddd      \  } }t        d      }d}t        j                  t        |      5  t        || |dt        j                  dd	d      
      \  }}}d d d        t        ddg       y # 1 sw Y   xY w)Nr   r   r   r   rG  zzRemoved duplicate entries from 'train_sizes'. Number of ticks will be less than the size of 'train_sizes': 2 instead of 3.r   gQ?r   ry  )	r   rV   r   r  r
  r1   r   rN  rQ   )rl   r   r  r  rZ   r  s         r]   1test_learning_curve_remove_duplicate_sample_sizesr}  w  s    DAq 'q)I	G  
nO	< 
*q!r{{4a/H
Q
 {QF+	
 
s   *A??Bc                     t        ddddddd      \  } }t        d      }t        d      }t        || ||t	        j
                  d	d
d            \  }}}t        |t	        j
                  ddd             t        |j                  d      t	        j
                  dd
d             t        |j                  d      t	        j
                  d	d
d             y )Nr  r   r   r   rG  r\  r   r  rI  r   r   ry  r5  rL  )	r   rV   r(   r1   r   rN  rQ   rP   r  )rl   r   r  r   rZ   rS  rT  s          r]   (test_learning_curve_with_boolean_indicesr    s    DAq 'r*I		B-;1aBBKKS",E.*K{ {BKK2r$:;l//Q/7S#r9RSk..A.6Cb8QRr_   c                     t        j                  ddgddgddgddgd	d
gddgddgddgddgddgddgd	d
gddgddgddgg      } t        j                  g d      }t        j                  g d      }t        dd ddd      }t        d      }t	        || ||dt        j
                  ddd      |dd	      \  }}}t        |j                  d      t        j                  g d              t        |j                  d      t        j                  g d!             t        j                  t              5  t	        || ||dt        j
                  ddd      |d"#       d d d        t	        || ||dt        j
                  ddd      |ddd$
      \  }}	}
t        |	j                  d      |j                  d             t        |
j                  d      |j                  d             y # 1 sw Y   xY w)%Nr   r   r   r   r   r   r   r     r7        r               r\  	   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Fpa1)ro  rp  rF   learning_rateeta0r  333333?r   T)r   r   rZ   r  rF   r   r5  )r  r  Iq?)r  r  r  r   )r   r   rZ   r  r   )r   r   rZ   r  rF   r   re  )r   r&  r   r&   r1   rN  rP   r  r   r   r   )rl   r   r  r  r   rt  ru  rv  rq  rr  rs  s              r]    test_learning_curve_with_shuffler    s6    	FFFFHHHHHFGHHHH	
	A& 	>?AXXCDF e5qI 
Q	B?M		KKS!,
@<)+< Q'2I)J A&1I(J 
z	" 

Ca0		


 :H		KKS!,%):6O% 1%'9'>'>A'>'F !$&7&<&<!&<&D7

 

s   5)G--G6c                      t        j                  d      j                  dd      } t        j                  dgdz  dgdz  z         }t	        d      }d}t        j                  t        |	      5  t        || |d
       d d d        d}t        j                  t        |	      5  t        || |d
dt        j                  d      i       d d d        t        || |d
dt        j                  d      i       y # 1 sw Y   zxY w# 1 sw Y   ;xY w)Nr  r   r   r   r   Tr  r  r   r   r   z/sample_weight.shape == \(1,\), expected \(2,\)!r   )r   r   )r   r  r   r&  rK   r   r   r   r1   r   r  r  s       r]   test_learning_curve_paramsr    s    
		#r2&A
!qA37"#A
D
9C4G	~W	5 7sAqg67 AG	z	1 
A7ORWWQZ3P	

 Qw/M7 7
 
s   /C8$&D8DDc                  R   t        ddddddd      \  } }t        ddg      }d}t        j                  t        |	      5  t        || |d
dt        j                  ddd      d       d d d        d}t        j                  t        |	      5  t        || |d
dt        j                  ddd      ddt        j                  d
      i       d d d        t        || |d
dt        j                  ddd      ddt        j                  d      i       y # 1 sw Y   xY w# 1 sw Y   SxY w)Nr  r   r   r   rG  r\  r   z9Expected fit parameter\(s\) \['sample_weight'\] not seen.r   r   TrI  r   r   r   )r   re  rZ   r   z2Fit parameter sample_weight has length 3; expected)r   re  rZ   r   r   )	r   r   r   r   r   r1   r   rN  r  )rl   r   r  r  s       r]   /test_learning_curve_incremental_learning_paramsr    s)   DAq 2"6GHIJG	~W	5 	
)-Cb1	
	
 CG	~W	5 

)-Cb1#RWWQZ0		


 		%)KKS"-,	1	
 	


 

s    (D>DDD&c            	         t        ddddddd      \  } }t        j                  ddd      }t        j                  d      5 }t        t               | |d|d	      \  }}d d d        t              dkD  rt        d
|d   j                  z        t        j                  d      |       t        j                  d      d|z
         y # 1 sw Y   nxY w)Nr   r   r   rG  r   Tr  r   
param_nameparam_ranger   rK  r5  )r   r   rN  r  r  r3   r   r   rO  rP  rP   r  )rl   r   r  rR  rS  rT  s         r]   test_validation_curver  4  s    DAq ++aB'K		 	 	- 
$4&(#%
!k
 1vz3adllBCCl//Q/7Ek..A.6KH
 
s   CCc            	          t        ddddddd      \  } }t        j                  ddd      }t        t	               | |d|d      \  }}y )Nr   r   r   rG  r   r   r  )r   r   rN  r3   r   )rl   r   r  r  s       r]   %test_validation_curve_clone_estimatorr  O  s\    DAq ++aB'K-/		DAqr_   c                  \   d} d}t        dd      \  }}t        t        dd      ||dg dt        || 	      
      }t	        t        j                  t        j                  |      dd d f   d        t        t        dd      ||dg dt        |d      
      }t	        t        j                  t        j                  |      dd d f   d        t        t        dd      ||dg dt        |      
      }t	        t        j                  |      t        j                  |             y )Nr  r   r   r  r  r   r   )rI  rI  r  r  rM  r  )r   r   r   r   r   Tr  rF   r  )
r   r3   r?   r7   rP   r   vsplithstackr(   r&  )r  r  rl   r   scores1scores2scores3s          r]   +test_validation_curve_cv_splits_consistencyr  e  s   IH1=DAq8!,		(H	BG ryy7);L!O)LaPQ8!,		((D1G ryy7);L!O)LaPQ8!,		((#G bhhw/'1BCr_   c                  8   t        j                  d      j                  dd      } t        j                  dgdz  dgdz  z         }t	        d      }d}t        j                  t        |	      5  t        || |d
g dd       d d d        d}t        j                  t        |	      5  t        || |d
g dddt        j                  d      i       d d d        t        || |d
g dddt        j                  d      i       y # 1 sw Y   xY w# 1 sw Y   ?xY w)Nr  r   r   r   r   Tr  r  r   	foo_param)r   r   r   r   )r  r  r   r  r   )r  r  r   r   )r   r  r   r&  rK   r   r   r   r3   r   r  r  s       r]   test_validation_curve_paramsr    s   
		#r2&A
!qA37"#A
D
9C4G	~W	5 
"!	

 AG	z	1 	
"!#RWWQZ0	
	
 		-+
 
	
 	
s   /D(*DDDc                  Z   t         j                  j                  d      } t        j                  d      }| j	                  |       t        |d      sJ t        t        j                  |d      d      rJ d|d<   t        |d      rJ t        t        j                  |df      d      rJ y )Nr   r     )r   r<  r=  r  rF   r4   deleter  )r@  r  s     r]   test_check_is_permutationr    s    
))


"C
		#AKKN C((($RYYq"%5s;;;AaD$Q,,, %RYY1v%6<<<<r_   c                     t        ddddd      \  }} | |      } | |      }t        t        d            }t        |||d	      }t        |||d	      }|j	                         }t        ||       y )
Nr   r   FT)r^  n_labelsallow_unlabeledreturn_indicatorr   r  r_  r   r   )r   r9   r?   r.   rC  rP   )r  rl   r   r   y_sparseclassifr  preds_sparses           r]   (test_cross_val_predict_sparse_predictionr    s~     *DAq QHQH!#X"67Ggq!3E$WhRHL'')LlE2r_   c           
         t        dd      }|j                  dk(  r|dk(  rt        |      fnt        |      df}n|j                  }t	        j
                  |      }|j                  ||      D ]>  \  }}t        |       j                  ||   ||         }  t        | |      ||         ||<   @ ||dz   |dz
  |j                  d      fD ]  }	t        t        | ||	||      |        y	)
z@Helper for tests of cross_val_predict with binary classificationr   Fr  r   r  r   strr  N)r(   r   r   rb   r   r  r$  r	   re   getattrastyperN   r.   )
r.  rl   r   r  r   	exp_shapeexpected_predictionsr6  r7  tgs
             r]   check_cross_val_predict_binaryr    s    	5	)B 	vv{!'+>!>SVISVQK	GG	88I.xx1~ CtCjnnQuXqx0%9WS&%9!D'%BT"C
 !a%Q0 
c1bB?AU	

r_   c           
         t        dd      }t        j                  t        j                        j                  }||dd}t        j
                  t        |      t        t        |            f||   t        j                        }t        j                  |d      \  }}	|j                  ||	      D ]l  \  }
}t        |       j                  ||
   |	|
         }  t        | |      ||         }t        j                  |	|
         }||t        j                  ||      <   n ||d	z   |d
z
  |j                  d      fD ]  }t        t!        | ||||      |        y)zDHelper for tests of cross_val_predict with multiclass classificationr   Fr  r   r  r%  r   r|  Treturn_inverser   r   r  r  N)r(   r   finfor  minr  r   r   r   r$  r	   re   r  ix_r  rN   r.   )r.  rl   r   r  r   	float_mindefault_valuesr  r  y_encr6  r7  
fold_preds
i_cols_fitr  s                  r]   "check_cross_val_predict_multiclassr    s@   	5	)B $((I&&N
 77	QSV~f5RZZ yy40HAuxx5) DtCjnnQuXuU|4)WS&)!D'2
YYuU|,
9CRVVD*56	D !a%Q0 
c1bB?AU	

r_   c                    t        dd      }t        j                  t        j                        j                  }||dd}|j
                  d   }g }t        |      D ]y  }	t        t        |dd|	f               }
|
dk(  r|d	k(  rt        |      f}nt        |      |
f}|j                  t        j                  |||   t        j                  
             { t        |j
                  d         D cg c]8  }t        j                  |dd|f   d      d   ddt        j                  f   : }}t        j                  |d      }|j                  ||      D ]  \  }}t        |       j!                  ||   ||         }  t#        | |      ||         }t        |      D ]`  }	t        j                  ||   dd|	f         }||	   j$                  dk(  r||	   ||	   |<   @t        j&                  ||      }||	   ||	   |<   b  ||dz   |dz
  |j)                  d      fD ]V  }t+        | ||||      }t        |      t        |      k(  sJ t        t        |            D ]  }t-        ||   ||           X yc c}w )zCheck the output of cross_val_predict for 2D targets using
    Estimators which provide a predictions as a list with one
    element per class.
    r   Fr  r   r  r   Nr   r  r|  Tr  r5  r  r  )r(   r   r  r  r  rb   r   r   r   r%  r  r   r   concatenater$  r	   re   r  r   r  r  r.   rN   )r.  rl   r   r  r   r  r  	n_targetsexpected_predsi_coln_classes_in_labelr  r  
y_enc_colsr  r6  r7  r  	fold_colsidxr  cv_predict_outputs                         r]   "check_cross_val_predict_multilabelr    s   
 
5	)B $((I&&N
 
INy! 
 Qq%x[!12"v1D'DQ	IQ!34IGGI~f5RZZH	

 qwwqz" 			!AqD'$/21bjj=AJ  NN:A.Exx5) 
?tCjnnQuXuU|4)WS&)!D'2
9% 	?E		%,q%x"89Ie$))Q..8.?u%d+ffT9--7->u%c*	?
? !a%Q0 E-c1bBO$%^)<<<<s,-. 	EA-a0.2CD	EE%s   3=I<c                 N    t        dd      \  }}dD ]  }t        | |||        y )Nr   r   )r^  r   r  r   r%  )r   r  )r.  rl   r   r  s       r]   *check_cross_val_predict_with_method_binaryr  ?  s1     ;DAqM :&sAq&9:r_   c                     t               }|j                  |j                  }}t        ||d      \  }}dD ]  }t	        | |||        y )Nr   r   r  )r   r~  r  rF   r  )r.  r  rl   r   r  s        r]   .check_cross_val_predict_with_method_multiclassr  G  sI    ;D99dkkqA1aa(DAqM >*31f=>r_   c                  P    t        t                      t        t                      y rh   )r  r   r  r~   r_   r]   "test_cross_val_predict_with_methodr  O  s    ./A/CD23E3GHr_   c                      t               } | j                  | j                  }}t        ||d      \  }}dD ]  }t	        dd      }t        ||||        y )Nr   r   r  log_lossr   )lossr   )r   r~  r  rF   r   r  )r  rl   r   r  r.  s        r]   &test_cross_val_predict_method_checkingr  T  sW     ;D99dkkqA1aa(DAqM >!<*31f=>r_   c                      t               } | j                  | j                  }}t        ||d      \  }}t	        t        d      dddgid      }d	D ]  }t        ||||        y )
Nr   r   r  r   rI  r   r   r   r  )r   r~  r  rF   r%   r   r  )r  rl   r   r.  r  s        r]   /test_gridsearchcv_cross_val_predict_with_methodr  _  sf    ;D99dkkqA1aa(DAq
)r:S3(OPQ
RCM >*31f=>r_   c                      d} d}t        | d|dd      \  }}t        t        dd	            }d
D ]  }t        ||||        y )Nr  r   r   r   r  r  r  r^  r  r   r  r   )r  r   )r   r  r  )r   r9   r   r  )n_sampr^  rl   r   r.  r  s         r]   1test_cross_val_predict_with_method_multilabel_ovrr  h  s\     FI)1	aVXDAq 0RST
UC8 A&sAq@Ar_   c                       e Zd Zd Zy)RFWithDecisionFunctionc                     | j                  |      }d}t        |t              sJ |       |D cg c]  }|j                  d   dk(  r	|d d df   n|! }}|S c c}w )Nz?This helper should only be used on multioutput-multiclass tasksr   r   r   )r   r   r   rb   )r\   rl   probsmsgr  s        r]   r  z(RFWithDecisionFunction.decision_functionz  se    ""1%O%&++&=BCQWWQZ1_1b5!3CC Ds   $AN)rz   r{   r|   r  r~   r_   r]   r  r  v  s    r_   r  c                      d} t        dd| dd      \  }}|d d dfxx   |d d df   z  cc<   d	D ]P  }t        dd
      }t        j                         5  t        j                  d       t        ||||       d d d        R y # 1 sw Y   ]xY w)Nr   r  r   r   r  r  r   r   r   r%  r  n_estimatorsr   ignorer  )r   r  r  r  simplefilterr  )r^  rl   r   r  r.  s        r]   0test_cross_val_predict_with_method_multilabel_rfr    s     I)Y1SUDAq adGqAwGM I$!!D$$& 	I!!(+.sAqH	I 	II	I 	Is   %BB	c                  R   t         j                  j                  d      } | j                  ddd      }t        j                  g d      }t               }dD ]B  }t        j                         5  t        j                  d       t        ||||       d d d        D y # 1 sw Y   OxY w)Nr   r   )r  r   r  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  )
r   r<  r=  normalr&  r   r  r  r  r  )r@  rl   r   r.  r  s        r]   -test_cross_val_predict_with_method_rare_classr    s     ))


"C

1ah
'A
;<A

CM B$$& 	B!!(+.sAq&A	B 	BB	B 	Bs   .$BB&	c                  t   t         j                  j                  d      } | j                  ddd      }t        j                  ddgddgddgddgddgg      }dD ]P  }t        dd      }t        j                         5  t        j                  d	       t        ||||
       d d d        R y # 1 sw Y   ]xY w)Nr   r   )r   r   r  r   )r   r%  r   r  r  r  )
r   r<  r=  r  r&  r  r  r  r  r  )r@  rl   r   r  r.  s        r]   ;test_cross_val_predict_with_method_multilabel_rf_rare_classr    s     ))


"C

1ag
&A
1a&1a&1a&1a&1a&9:A8 I$!!D$$& 	I!!(+.sAqH	I 	II	I 	Is   >%B..B7	c                    t        j                  t        |      |g      }t        ||      }|j	                  | |      D ]  \  }}	|j                  | |   ||           || |	         }
|dk(  r!t        j                  t        |	      |f      }nHt        j                  t        |	      |ft        j                  |j                        j                        }|
|d d |j                  f<   |||	<    |S )Nr   )r   r  r   r  r$  re   r  r  r}  r  r   )rl   r   r   classesr.  r  r  funcr6  r7  expected_predictions_exp_pred_tests               r]   get_expected_predictionsr    s    88SVW$563Dxx1~ 3t%!E(# $QtW_$HHc$i%9:MGGTG$bhh/C/I/I&J&N&NM *?ao&%2T"3  r_   c            	         t        j                  d      j                  dd      } t        j                  t	        d      D cg c]  }|dz  	 c}      }d}t        d      }t        d      }t               }g d}|D ]  }t               }	t        |	| |||	      }
t        | ||||	|      }t        ||
       t        |	| |||	      }
t        | ||||	|      }t        ||
       t        t        j                  t	        d      d      d
      }t        |	| |||	      }
|j                  |      }t        | ||||	|      }t        ||
        y c c}w )Nr  r  r   r   r   r  r   r  r  r   r   )r   r  r   r&  r   r(   r=   r   r.   r  rP   rF   r  fit_transform)rl   r   r   r  kfold3kfold4lemethodsr  r.  r+  r  s               r]   #test_cross_val_predict_class_subsetr     sX   
		#sA&A
5:.a!r'./AGAFAF	BIG E " (Q&VL  8q&'3 
 	""6D (Q&VL7q&'3 
 	""6D BIIeBi,1='Q&VLQ7q&'3 
 	""6D5E /s   Ec                     t               } | j                  | j                  }}t               }t	        j
                  dd      }|j                  d       |j                          t        j                  |j                  t        j                        t        j                  |j                  ddt        j                        	 t        |||fd	
       t        j                  t              5  t        |||fd
       d d d        d\  t!        d      D ]#  }	 t#        j$                  |j                          y  y # 1 sw Y   @xY w# t&        $ r t)        d       Y Iw xY w# d\  t!        d      D ]=  }	 t#        j$                  |j                          w # t&        $ r t)        d       Y ;w xY w w xY w)NwbF)moder  s   Hello world!!!!!r|  r~   r)rb   r  r}  c                     S rh   r~   )r.  rl   r   rt   s      r]   r   z#test_score_memmap.<locals>.<lambda>  s    U r_   r   c                     S rh   r~   )r.  rl   r   r   s      r]   r   z#test_score_memmap.<locals>.<lambda>  s     r_   rx   r   r   )r   r~  r  r   tempfileNamedTemporaryFilewritecloser   memmapnamer  r/   r   r   r   r   osunlinkOSErrorr   )r  rl   r   r   tfr  rt   r   s         @@r]   test_score_memmapr    sa   ;D99dkkqA

C		$	$$u	=BHH !HHJYYrwwbjj1FIIbggRcDEQ+BC]]:& 	ICA/GH	I
 #q 	A		"''"		I 	I  c
 #q 	A		"''" c
		sZ   +E+ 3EE+ "EE
E+ E('E(+F= F!F=!F8	5F=7F8	8F=c                  8   t         t         fg} 	 ddlm}m} | j	                  ||f       | D ][  \  t               }|j                  |j                  }} |       |      }}fd}fd}	t        ||	      }
t        |
||       ] y # t
        $ r Y lw xY w)Nr   rd  c                     t        |       S rh   rh  ri  s    r]   r   z4test_permutation_test_score_pandas.<locals>.<lambda>  rk  r_   c                     t        |       S rh   rh  rm  s    r]   r   z4test_permutation_test_score_pandas.<locals>.<lambda>  ro  r_   rp  )rL   rq  re  rf  r%  rr  r   r~  r  rK   r2   )rt  re  rf  r  rl   r   ru  rv  rw  rx  r   rj  rn  s              @@r]   "test_permutation_test_score_pandasr    s    ]+,E,fi() ). 1$
${yy$++1&q):a=e<: <HsD%01  s   B 	BBc                     t        t         j                        } t        j                  dd      }t        j                  dd      t        j                  dd      }}t	        | |d t	               ||dd d d 
      }d|d<   t        j                  t        d	
      5  t        di | d d d        | j                         dk(  sJ y # 1 sw Y   xY w)Nr   r   r   r   r  )
r  rl   r   r  r6  r7  r_  
parametersr  score_paramsr   r   z%Failing classifier failed as requiredr   r  r~   )
r8   FAILING_PARAMETERr   r  r  r   r   r   r5   rt   )failing_clfrl   r6  r7  fit_and_score_argss        r]   test_fit_and_score_failingr    s    #$5$G$GHK
		!RA))Aq/299Q?4E

v )0}%	z)P	Q -,+,- #%%%- -s   CCc                      t        dd      \  } }t        dd      }t        t               j	                  |             \  }}t        || |t               ||ddddd d d	
      }t        di |}|d   |d   k(  sJ y )Nr  r   r  r  r   r  rI  )ro  rp  T)r  rl   r   r  r6  r7  r_  r  r  r  return_parametersr  r~   )r   r?   nextr,   r$  r  r5   )rl   r   r   r6  r7  r  results          r]   test_fit_and_score_workingr!  7  s    !<DAq
XA
.C|~++A./KE4

v #C0 101F,#5l#CCCCr_   c                   $    e Zd ZddZddZddZy)DataDependentFailingClassifierNc                     || _         y rh   max_x_value)r\   r&  s     r]   r^   z'DataDependentFailingClassifier.__init__N  s
    &r_   c                 `    || j                   kD  j                         }|rt        d| d      y )NzClassifier fit failed with z values too high)r&  r  r   )r\   rl   r   num_values_too_highs       r]   re   z"DataDependentFailingClassifier.fitQ  s@     4#3#3388:-.A-BBRS  r_   c                      y)Nr  r~   rr   s      r]   rt   z$DataDependentFailingClassifier.scoreX  s    r_   rh   rx   )rz   r{   r|   r^   re   rt   r~   r_   r]   r#  r#  M  s    'r_   r#  r   c                 \   t        d      }t        j                  dd      }t        j                  d      }|||g}d| d}d}t	        j
                  d	|d
    d| t        j                        }t        j                  t        |      5  t        |i | d d d        y # 1 sw Y   y xY w)Nr  r%  r   r   r  r   r   r   z8ValueError: Classifier fit failed with 1 values too highzh2 fits failed.+total of 3.+The score on these train-test partitions for these parameters will be set to r   z.+flagsr   )r#  r   r  r  recompileDOTALLr   r  r   r0   )r   r  rl   r   cross_validate_argscross_validate_kwargsindividual_fit_error_messager  s           r]   -test_cross_validate_some_failing_fits_warningr4  \  s     1Q?K
		!RA

A&1-#$[A 	C ! jj%m45R8T7UW iiO 
&o	> F+E/DEF F Fs   B""B+c                 j   t        t         j                        }t        j                  dd      }t        j                  d      }|||g}d| d}d}t        j                  d| t
        j                        }t        j                  t        |	      5  t        |i | d d d        y # 1 sw Y   y xY w)
Nr   r   r  r   r+  z1ValueError: Failing classifier failed as requiredz4All the 7 fits failed.+your model is misconfigured.+r,  r   )r8   r  r   r  r  r.  r/  r0  r   r   r   r0   )r   r  rl   r   r1  r2  r3  ra  s           r]   *test_cross_validate_all_failing_fits_errorr6  x  s     $$5$G$GHK
		!RA

A&1-#$[A#V JJB+,. iiM 
z	7 F+E/DEF F Fs   B))B2c                     t        |      rh   )r   )r  rl   r   	error_msgs       r]   _failing_scorerr9    s    
Y
r_   zignore:lbfgs failed to converger   c           	         t        d      \  }}t        d      j                  ||      }d}t        t        |      }| dk(  r6t        j                  t        |      5  t        |||d	|| 
       d d d        y d|  }t        j                  t        |      5  t        |||d	|| 
      }t        ||        d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w)NTr   r   ro  "This scorer is supposed to fail!!!r8  r   r   r   )r   r   r   r  )r   r   re   r   r9  r   r   r   r/   r  r  rN   )r   rl   r   r   r8  failing_scorerwarning_msgr   s           r]   #test_cross_val_score_failing_scorerr@    s    
 %DAq
a
(
,
,Q
2C4I_	BNg]]:Y7 	Qa[	 	//:m= 	 \\+[9 	1$Qa[F FK0		1 	1	 		1 	1s   CCC
Cr;  with_multimetricc           
      L   t        d      \  }}t        d      j                  ||      }d}t        t        |      }|rt        t              }|||d}	n|}	| dk(  r7t        j                  t        |	      5  t        |||d
|	||        d d d        y d|  }
t        j                  t        |
	      5  t        |||d
|	||       }|D ]7  }d|v sd|v r||   D ]  }t        |t              rJ  )t        ||   |        9 	 d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w)NTr   r   r;  r<  r=  )score_1score_2score_3r   r   r   )r   r   r;  r   r  r6   _score_2)r   r   re   r   r9  r   r    r   r   r   r0   r  r  r   rq   rN   )r   r;  rA  rl   r   r   r8  r>  non_failing_scorerr   r?  r  r   r  s                 r]   "test_cross_validate_failing_scorerrH    sf    %DAq
a
(
,
,Q
2C4I_	BN();<%)%
 !g]]:Y7 		#5'		 		//:m= 	 \\+[9 	C$#5'G  
Cs?!S( ") 8A#-a#77#78
 (kB
C	C 	C		 			C 	Cs$   9D5DD/DDD#c                      y)Ng;pΈ^@r~   )r  jrH  s      r]   three_params_scorerrK    s    r_   z:train_score, scorer, verbose, split_prg, cdt_prg, expectedr   )r   r   r   r   zS\[CV\] END .................................................... total time=   0.\ds)sc1sc2)scorersr   ze\[CV 2/3\] END  sc1: \(train=3.421, test=3.421\) sc2: \(train=3.421, test=3.421\) total time=   0.\dsr   zW\[CV 2/3; 1/1\] END ....... sc1: \(test=3.421\) sc2: \(test=3.421\) total time=   0.\dsc                    t        dd      \  }}t        dd      }	t        t               j	                  |            \  }
}t        |	||||
||d d d |||      }t        d
i | | j                         \  }}|j	                  d      }t        |      dkD  rt        j                  ||d	         sJ y t        j                  ||d         sJ y )Nr  r   r  r  r   )r  rl   r   r  r6  r7  r_  r  r  r  r;  split_progresscandidate_progress
r   r   r~   )r   r?   r  r,   r$  r  r5   r`  r   r.  r   )rb  r<  r  r_  	split_prgcdt_prgexpectedrl   r   r   r6  r7  r  ra  r  outliness                   r]   test_fit_and_score_verbosityrX    s    N !<DAq
XA
.C|~++A./KE4 

& " ('( FCyyH
8}qxx(1+...xx(1+...r_   c            	          d} d }t        j                  t        |       5  t        d d d |d t        j
                         d d d        y # 1 sw Y   y xY w)Nz&scoring must return a number, got Nonec                      y rh   r~   )r  X_tests     r]   two_params_scorerz%test_score.<locals>.two_params_scorer<	  s    r_   r   )r  r[  r  r  r  r   )r   r   r   r6   r   r  )ra  r\  s     r]   r=  r=  9	  sO    <M 
z	7 
$	

 
 
s    A

Ac                      d } t        ddd      \  }}t        d      }|j                  ||       t        |||d|       }g d	}|D ]  }d
j	                  |      |v rJ  y )Nc                 b    | j                  |      }t        ||      }|d   |d   |d   |d   dS )N)r   r   rL  )r   r   )r   r   tnfpfntp)rm   r   )r   rl   r   rN  cms        r]   rO  zPtest_callable_multimetric_confusion_matrix_cross_validate.<locals>.custom_scorerK	  s:    Qa(hbhbhbhOOr_   (   r   r  )r  r  r   r   r   )r   r   r_  ztest_{})r   r@   re   r0   r   )rO  rl   r   r.  rZ  score_namesr  s          r]   9test_callable_multimetric_confusion_matrix_cross_validaterg  J	  sr    P
 KDAq

$CGGAqMQaGJ*K 4%3334r_   c                  R    t        d      \  } }t        t               | |dd       y)z^Check that regressors with partial_fit is supported.

    Non-regression test for #22981.
    r  r   Tr   )re  r   N)r   r1   r;   )rl   r   s     r]   *test_learning_curve_partial_fit_regressorsri  Z	  s&    
 +DAq <>1adqQr_   c                    t        dddd|       \  }}t        j                  |      }||   ||   }}t               }d}t	        j
                  t        |      5  t        |||dt        j                  	      ^}}}}d
d
d
       t        d      D ]R  }	t        j                  |	         j                         sJ t        j                  |	         j                         rRJ  t        dj                  d         D ]R  }	t        j                  ||	         j                         rJ t        j                  |	         j                         sRJ  y
# 1 sw Y   xY w)zKChecks for fit failures in `learning_curve` and raises the required warningr  r   r   F)r  r^  r  rF   r   z#10 fits failed out of a total of 25r   r   r+  Nr   r   )r   r   r  r?   r   r  r   r1   r  r   isnanr  rb   any)
global_random_seedrl   r   
sorted_idxsvcr  r  r<  r=  r  s
             r]   -test_learning_curve_some_failing_fits_warningrp  e	  sI    'DAq AJZ=!J-qA
%C;O	&o	> 
)7A!*
&;
Q
 Qx /xxC()--///xx
3(,,.../ Q))!,- 388K,-1133388JsO,002223
 
s   #EEc                 x   t        d      \  }}t        |      }t               }t        dd|       }t	        ||||dd      }d|vsJ t	        ||||dd      }d|v sJ |d   d	   }|d   d
   }t        |      |j                  k(  sJ t        |      |j                  k(  sJ t        |D cg c]  }|j                   c}d       t        |D cg c]  }|j                   c}d       t        |j                  ||            D ]&  \  }	\  }
}t        ||	   |
       t        ||	   |       ( yc c}w c c}w )z<Check the behaviour of `return_indices` in `cross_validate`.Tr   r   )r  rF   r   r   F)r   r   return_indicesindicesr6  r7  r  r  N)r   r>   r   r(   r0   r   r  rQ   r  r@  r$  )rm  rl   r   r  r   rZ  train_indicestest_indicesrs  	split_idxexpected_train_idxexpected_test_idxs               r]   "test_cross_validate_return_indicesry  	  sK   %DAqaA"$I	46H	IB	1aBqQVWJJ&&&	1aBqQUVJ
"""y)'2Mi(0L},,,|+++MBBCHLAA2F>GQRTU>W G:	:&(9=35GH<	24EFG CAs   .D2D7zfunc, extra_argsalphar   )r  r  )enable_metadata_routingc           	          t        j                  t        d      5   | dt               t        t
        g d| ddd       y# 1 sw Y   yxY w)zCheck that we raise an error if `groups` are passed to the cv method instead
    of `params` when metadata routing is enabled.
    z`groups` can only be passed ifr   )r  rl   r   r  Nr~   )r   r   r   rA   rl   r   )r  
extra_argss     r]   #test_groups_with_routing_validationr~  	  sN      
z)I	J 
 	
)+		

 	

 
 
s   AAc                 N    t        ddd      \  }} | dt               ||d| y)zTest that no errors are raised when passing `params=None`, which is the
    default value.
    Non-regression test for: https://github.com/scikit-learn/scikit-learn/issues/30447
    r  r   r   r]  )r  rl   r   Nr~   )r   rA   )r  r}  rl   r   s       r]   test_cross_validate_params_noner  	  s.    " JDAqA&(AAjAr_   c           
         t        j                  d      }t        j                  t        |      5   | dt               t        t        t        g       d| ddd       | t        k(  ryt        j                  d      }t        j                  t        |      5   | dt               j                  d      j                  d      t        t        t        g       d| ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)	zMCheck that we raise an error when passing metadata that is not
    requested.z[metadata] are passed but are not explicitly set as requested or not requested for ConsumingClassifier.fit, which is used withinr   )metadata)r  rl   r   r   Nz[metadata] are passed but are not explicitly set as requested or not requested for ConsumingClassifier.score, which is used withinTr~   )r.  escaper   r   r   rA   rl   r   r  r.   set_fit_requestset_partial_fit_request)r  r}  r  s      r]    test_passed_unrequested_metadatar  	  s      ii	FG 
/w	? 
 	
)+$		

 	

   ii	HG 
/w	? 	
 	
)+_d_+$$d$3$	
 	
	
 	
#
 
"	
 	
s   (C,AC8,C58Dc                    t               }t        |      j                  dd      }t               }t        |      j	                  dd      }t               }t        |      j                  dd	      }t        t              }t        j                  j                  d
      }	|	j                  |      }
|	j                  |      }|	j                  d
d|      }|	j                  |      }|	j                  |      }|	j                  |      }t        t        t        |d            t         t        |      t"        t        |      t$        t        |      t&        t        |      t(        t               i}t        ||||      }| t(        ur|j+                  |
|        | |ft        t,        |d||    |d|i | t(        urt/        |      sJ |D ]  }t1        |d| j2                  d|
|        t/        |      sJ |D ]  }t1        |d| j2                  ||        t/        |      sJ |D ]  }t1        |d| j2                  d||        y)z]Check that the respective cv method is properly dispatching the metadata
    to the consumer.registryscore_weightsscore_metadatar   r  split_groupssplit_metadata)r  r  fit_sample_weightfit_metadatar   r   r  )	my_scorerr  r   )r  r  r  r  )r  r  )rl   r   r   r   rt   objr  parentsplit_paramsr   r  r$  )r  r  r  r  r  re   N)rD   rB   set_score_requestrC   set_split_requestrA   r  rT   rl   r   r<  r=  r>  randintr0   r  r/   r1   r3   r2   r.   updater   r   rE   rz   )r  r}  scorer_registryr  splitter_registrysplitterestimator_registryr  r  r@  r  r  r  r  r  r  scoring_argsr   _scorer	_splitter
_estimators                        r]   !test_validation_functions_routingr  
  s{     kOo6HH%0@ I F " *;<NN(8 O H ##-?@PP)N Q I QI
))


"CHHY'MXXi(N;;q!Y/LXXi(N+88I&L 	TFZ%PQf-V,$v.V 446L !%+!	F $$') 	 	

 	

	
 t
   $$?###" 
==6'#	

  !!!& 
	==#	

 !"""( 

==6+!	

r_   c                     t        t              } t        j                  j	                  d      }|j                  |       }|j                  |       }t               }t        |      j                  dd      }t        |t        t        t               dt        ||             t        |      sJ |D ]  }t        |d	d
d||        y)zTest that learning_curve routes metadata to the estimator correctly while
    partial_fitting it with `exploit_incremental_learning=True`.r   r  r  r  r  T)r  r  )rl   r   r   re  r   r   r1   r  N)rT   rl   r   r<  r=  r>  rD   rA   r  r1   r   rC   r  r   rE   )r  r@  r  r  r  r  r  s          r]   8test_learning_curve_exploit_incremental_learning_routingr  k
  s    
 QI
))


"C+88I&L"##)N    

%)&7lS !"""( 

 #6+!	

r_   r  r   r   )idsr   )Nr   r   znamespace, device_, dtype_namec                    t        ||      }t        |       rt        ddddd      \  }}nt        dddd      \  }}|j	                  |      }|j	                  |      }	|j                  ||      }
|j                  |	|      }t        d	      5  t        | |
||
      }ddd       t        | ||	|
      }t        t        |      |t        |             y# 1 sw Y   :xY w)zpTest that `cross_val_predict` functions correctly with the array API
    with both a classifier and a regressor.i  r   r   r  )r  r  r^  r  r   r  )deviceT)array_api_dispatchr   N)atol)rM   r
   r   r   r  asarrayr   r.   rN   rH   rG   )r  r   	namespacedevice_
dtype_namexprl   r   X_npy_npX_xpy_xppred_xppred_nps                 r]   +test_cross_val_predict_array_api_compliancer  
  s    " 
i	1BY"qAQUW
1 q
1 88JD88JD::d7:+D::d7:+D	4	0 B#ItTbAB  	4"=G'2&nZ6P	B Bs   CC$)r}   r  r.  r  r  	functoolsr   timer   numpyr   r   scipy.sparser   sklearnr   sklearn.baser   r   r	   r
   sklearn.clusterr   sklearn.datasetsr   r   r   r   r   r   sklearn.discriminant_analysisr   sklearn.ensembler   sklearn.exceptionsr   r   sklearn.imputer   sklearn.linear_modelr   r   r   r   sklearn.metricsr   r   r   r   r   r    r!   r"   r#   sklearn.metrics._scorerr$   sklearn.model_selectionr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   #sklearn.model_selection._validationr4   r5   r6   $sklearn.model_selection.tests.commonr7   )sklearn.model_selection.tests.test_searchr8   sklearn.multiclassr9   sklearn.neighborsr:   sklearn.neural_networkr;   sklearn.pipeliner<   sklearn.preprocessingr=   r>   sklearn.svmr?   r@   %sklearn.tests.metadata_routing_commonrA   rB   rC   rD   rE   sklearn.utilsrF   sklearn.utils._array_apirG   rH   rI   rJ   sklearn.utils._mockingrK   rL   sklearn.utils._testingrM   rN   rO   rP   rQ   sklearn.utils.fixesrR   rS   sklearn.utils.validationrT   rV   r   r   r   r   r  rl   r&  r   r   r  r   markparametrizer   r   r  r  r  r8  r'  r(  rb  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r&  r-  r1  r:  rC  rE  rZ  r]  rc  rh  rk  rm  rw  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r!  r#  r  r4  r6  r9  filterwarningsr@  rH  rK  rX  r=  rg  ri  rp  ry  r~  r  r  r  r  r  r~   r_   r]   <module>r     s     	 	       ! " M M "  E 3 I ( 
 
 
 7    " 
 A G 2 2 / % 5 &  "  E  ? 1"] "6(> <" ",	",F 	"S8_m S8p BGGGBHH:; RXX;<
BFF1I .9%< :%<P)1LhL& t}5.94AD 4A : 64An?MDF9R>,0&5&86 .9 3 : 3F& J&L0 .9? :?D$MH< .95
 :5
p-W`	#	# .922 :22j2$T,
$ .9& :&:=zS&9K W4S0$NC.,,S(M`&-`I6,+D\#L= .93 :3$
*
81Eh:>I
>>A	3 	I"BI" (%EP41(&6D,]  4F 5F6 4F 5F.  =>G(<=1 > ?14 =>G(<=-e}=+eT];:C < > > ?:Cz @ $	
  3<OP ?
	
  3<OP $
	
+ #H/I#H/@
"4 R3BG: 		"	B		$	'("((A3-PQ
 -
 .

 		"	B		$	'("((A3-PQ
 -B .
B 		"	B		$	'("((A3-PQ
 -"
 .
"
J 		"	B		$	'("((A3-PQ
 -Y
 .
Y
x -"
 ."
R 
W(*+	./  
 |,$-/'  
 -r_   