
    -i_i                       S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
Jr  SSKrSSKrSSKJr  SSKJr  SSKJrJrJr  SS	KJr  SS
KJrJrJrJrJrJr  SSK J!r!  SSK"J#r#J$r$  SSK%J&r&  SSK'J(r(J)r)J*r*J+r+J,r,  SSK-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6  SSK7J8r8  SSK9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrH  SSKIJJrJJKrKJLrL  SSKMJNrN  SSKOJPrP  SSKQJRrR  SSKSJTrT  SSKUJVrV  SSKWJXrX  SSKYJZrZJ[r[  SSK\J]r]J^r^  SSK_J`r`JaraJbrbJcrcJdrd  SSKeJfrf  SSKgJhrhJiri  SSKjJkrkJlrlJmrmJnrn  SSKoJprpJqrq  SS KrJsrs   " S! S"\5      rt " S# S$\t5      ru " S% S&\5      rv " S' S(\v5      rw " S) S*\\5      rx\R                  " S+5      rz\R                  " / S,Q5      r|\R                  " / S-Q5      r}\R                  " S.5      r\GR                   GR                  S/\p5      S0 5       rS1 rS2 rS3 r\GR                   GR                  S4S5S6/5      \GR                   GR                  S7\q5      S4\4S8 j5       5       rS9 rS: rS; rS< rS= rS> r\GR                   GR                  S/\p5      S? 5       rS@ rSA rSB r\GR                   GR                  S/\p5      SC 5       rSD rSE rSF rSG r\GR                   GR                  S/\p5      SH 5       rSI rSJ rSK r\GR                   GR                  S/\p5      SL 5       rSM rSN rSO r\GR                   GR                  S/\p5      SP 5       rSQ rSR rSS rST rSU rSV rSW rSX rSY rSZ rS[ rS\ rS] rS^ rS_ rS` rSa rSb r\GR                   GR                  S7\q5      Sc 5       rSd rSe rSf rSg rSh rSi rSj rSk rSl r " Sm Sn\!5      rSo rSp rSq rSr rSs rSt rSu rSv rSw r " Sx Sy\5      r\GR                   GR                  Sz\GR                  S/5      S{ 5       r\GR                   GR                  Sz\GR                  S/5      S| 5       rS} r\GR                   GR                  S~5      \GR                   GR                  Sz\GR                  SS/5      S 5       5       r\GR                   GR                  S~5      \GR                   GR                  Sz\GR                  SS/5      \GR                   GR                  SS6S5/5      \GR                   GR                  SS5S6/5      S 5       5       5       5       rS r\GR                   GR                  SS5\SSSS4S6\8" \\S.S9SSSS4S5\8" \\S.S9SSSS4/5      S 5       rS rS rS rS rS r\GR                   GR                  S\F0 4\G0 4\HS\R                  " S/5      S.4/5      S 5       r\GR                   GR                  S\E0 4\D0 4\C0 4\F0 4\G0 4\HS\R                  " S/5      S.4/5      \" S6S9S 5       5       r\GR                   GR                  S\E0 4\D0 4\C0 4\F0 4\G0 4\HS\R                  " S/5      S.4/5      \" S6S9S 5       5       r\GR                   GR                  S\E0 4\D0 4\C0 4\F0 4\G0 4\HS\R                  " S/5      S.4/5      \" S6S9S 5       5       r\GR                   GR                  S\E0 4\D0 4\C0 4\F0 4\G0 4\HS\R                  " S/5      S.4/5      \" S6S9S 5       5       r\" S6S9S 5       rg)zTest the validation module    N)partial)StringIO)sleep)issparse)config_context)BaseEstimatorClassifierMixinclone)KMeans)load_diabetesload_digits	load_irismake_classificationmake_multilabel_classificationmake_regression)RandomForestClassifier)FitFailedWarningUnsetMetadataPassedError)SimpleImputer)LogisticRegressionPassiveAggressiveClassifier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)CheckingClassifierMockDataFrame)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equal)COO_CONTAINERSCSR_CONTAINERS)_num_samplesc                   >    \ rS rSrSrS rS
S jrS rSS jrS r	S	r
g)MockImprovingEstimatorb   z+Dummy classifier to test the learning curvec                 ,    Xl         SU l        S U l        g Nr   )n_max_train_sizestrain_sizesX_subset)selfrU   s     `/var/www/html/venv/lib/python3.13/site-packages/sklearn/model_selection/tests/test_validation.py__init__MockImprovingEstimator.__init__e   s    !2    Nc                 :    Xl         UR                  S   U l        U $ rT   rW   shaperV   rX   rW   y_subsets      rY   fitMockImprovingEstimator.fitj        #>>!,r\   c                     [         eNNotImplementedErrorrX   Xs     rY   predictMockImprovingEstimator.predicto       !!r\   c                     U R                  U5      (       a%  S[        U R                  5      U R                  -  -
  $ [        U R                  5      U R                  -  $ )Ng       @)_is_training_datafloatrV   rU   rX   rj   Ys      rY   scoreMockImprovingEstimator.scorer   sP    !!!$$t//043I3IIII))*T-C-CCCr\   c                     XR                   L $ rf   rW   ri   s     rY   ro   (MockImprovingEstimator._is_training_datay       MM!!r\   )rW   rU   rV   rf   NN__name__
__module____qualname____firstlineno____doc__rZ   rb   rk   rs   ro   __static_attributes__ r\   rY   rQ   rQ   b   s    5

"D"r\   rQ   c                   @   ^  \ rS rSrSrSU 4S jjrS rSS jrSrU =r	$ )!MockIncrementalImprovingEstimator}   z*Dummy classifier that provides partial_fitc                 >   > [         TU ]  U5        S U l        X l        g rf   )superrZ   xexpected_fit_params)rX   rU   r   	__class__s      rY   rZ   *MockIncrementalImprovingEstimator.__init__   s    *+#6 r\   c                      U R                   U;   $ rf   r   ri   s     rY   ro   3MockIncrementalImprovingEstimator._is_training_data   s    vv{r\   c                    U =R                   UR                  S   -  sl         US   U l        U R                  (       a  [	        U R                  5      [	        U5      -
  nU(       a  [        S[        U5       S35      eUR                  5        HU  u  pVXPR                  ;   d  M  [        U5      [        U5      :w  d  M0  [        SU S[        U5       S[        U5       S35      e   g g )Nr   zExpected fit parameter(s) z
 not seen.zFit parameter z has length z; expected .)	rV   r_   r   r   setAssertionErrorlistitemsrO   )rX   rj   yparamsmissingkeyvalues          rY   partial_fit-MockIncrementalImprovingEstimator.partial_fit   s    AGGAJ&1##$223c&kAG$0gzJ  %lln
222|8!!_8% )(\,u:M9N%l1o%6a9 	 - $r\   )r   r   rf   )
r{   r|   r}   r~   r   rZ   ro   r   r   __classcell__r   s   @rY   r   r   }   s    47
 r\   r   c                   >    \ rS rSrSrS
S jrS rS rSS jrS r	S	r
g)MockEstimatorWithParameter   z-Dummy classifier to test the validation curvec                     S U l         Xl        g rf   )rW   param)rX   r   s     rY   rZ   #MockEstimatorWithParameter.__init__   s    
r\   c                 :    Xl         UR                  S   U l        U $ rT   r^   r`   s      rY   rb   MockEstimatorWithParameter.fit   rd   r\   c                     [         erf   rg   ri   s     rY   rk   "MockEstimatorWithParameter.predict   rm   r\   Nc                 d    U R                  U5      (       a  U R                  $ SU R                  -
  $ )N   )ro   r   )rX   rj   r   s      rY   rs    MockEstimatorWithParameter.score   s)    !33A66tzzJA

NJr\   c                     XR                   L $ rf   rv   ri   s     rY   ro   ,MockEstimatorWithParameter._is_training_data   rx   r\   )rW   r   rV   )      ?ry   rz   r   r\   rY   r   r      s    7
"K"r\   r   c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )%MockEstimatorWithSingleFitCallAllowed   z<Dummy classifier that disallows repeated calls of fit methodc                 `   > [        U S5      (       a   S5       eSU l        [        TU ]  X5      $ )Nfit_called_zfit is called the second timeT)hasattrr   r   rb   )rX   rW   ra   r   s      rY   rb   )MockEstimatorWithSingleFitCallAllowed.fit   s3    4//P1PP/w{8..r\   c                     [         erf   rg   ri   s     rY   rk   -MockEstimatorWithSingleFitCallAllowed.predict   rm   r\   )r   )	r{   r|   r}   r~   r   rb   rk   r   r   r   s   @rY   r   r      s    F/
" "r\   r   c                   ^    \ rS rSrSrSS jr         SS jrS rS rSS jr	SS	 jr
S
rg)MockClassifier   z-Dummy classifier to test the cross-validationc                     Xl         X l        g rf   aallow_nd)rX   r   r   s      rY   rZ   MockClassifier.__init__   s     r\   Nc           	      j   Xpl         Xl        Xl        U
b  U
" U 5        U R                  (       a  UR	                  [        U5      S5      nUR                  S:  a  U R                  (       d  [        S5      eUbQ  UR                  S   UR                  S   :X  d1   SR                  UR                  S   UR                  S   5      5       eUby  UR                  S   [        [        R                  " [        5      5      :X  dE   SR                  UR                  S   [        [        R                  " [        5      5      5      5       eUbS  SnUR                  S   UR                  S   :X  d1   UR                  UR                  S   UR                  S   5      5       eUbu  SnUR                  [        R                  :X  dU   UR                  UR                  S   UR                  S	   [        R                  S   [        R                  S	   5      5       e[        R                  " [        5      U l        U $ )
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
ValueErrorr_   formatnpuniquer   Pclasses_)rX   rj   rr   sample_weightclass_priorsparse_sample_weightsparse_paramr   r   r   callbackfmts               rY   rb   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                 l    U R                   (       a  UR                  [        U5      S5      nUS S 2S4   $ )Nr   r   )r   r   r   rX   Ts     rY   rk   MockClassifier.predict  s*    ==		#a&"%AAwr\   c                     U$ rf   r   r   s     rY   predict_probaMockClassifier.predict_proba	  s    r\   c                 N    SS[         R                  " U R                  5      -   -  $ )N      ?r   )r   absr   rq   s      rY   rs   MockClassifier.score  s    a"&&.())r\   c                 4    U R                   U R                  S.$ )Nr   r   )rX   deeps     rY   
get_paramsMockClassifier.get_params  s    VV77r\   )r   r   r   r   r   r   )r   F)	NNNNNNNNNry   )F)r{   r|   r}   r~   r   rZ   rb   rk   r   rs   r   r   r   r\   rY   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                    [        5       nU " [        5      n[        SS5       H  nX1l        [	        U[        [
        5      n[        XAR                  [        [
        5      5        [        R                  " [
        [
        S S S2   /5      n[	        XU5      n[        XAR                  X%5      5        [	        X[
        5      n[        XAR                  U[
        5      5        [	        XU5      n[        XAR                  X%5      5        M     S n[        US9n[	        U[        R                  5       [
        R                  5       SS9n[        US9n[	        U[        [
        R                  5       SS9n[        S S 2S S 2[        R                  4   n[        S	S
9n[	        X[
        5      n[        SS
9n[        R                  " [        5         [	        X[
        SS9  S S S 5        g ! , (       d  f       g = f)Ni
   r   c                 "    [        U [        5      $ rf   
isinstancer   r   s    rY   <lambda>&test_cross_val_score.<locals>.<lambda>5      :a.r\   check_Xr   cvcheck_yT)r   Fraiseerror_score)r   rj   ranger   r/   y2rL   rs   r   column_stackrG   tolistnewaxispytestraisesr   )r   clfX_sparser   scoresmultioutput_y
list_checkX_3ds           rY   test_cross_val_scorer    si   

CQH3^ a,699Q#34 R"X7 >699X#EF 3699Xr#:; !>699X#EF! & /J
Z
0CS!((*biika@F
Z
0CS!RYY[Q7F Q2::D
$
'CS+F
%
(C	z	"27; 
#	"	"s   
G##
G1c                  ^    [        SS9u  p[        SS9n[        USSS/0S9n[        X0US	S
9  g )NT
return_X_yauto)gammaCr   r   )
param_gridr   )n_jobs)r   r?   r%   r0   )rj   r   r  grids       rY   test_cross_validate_many_jobsr  F  s:     %DA
F
Cq"g7D4Aa(r\   c            
         [        SS9u  p[        5       nSn[        R                  " [        US9   [        UU U[        [        5      [        [        5      4S9  S S S 5        [        R                  " [        US9   [        X U[        [        5      4S9  S S S 5        [        R                  " [        US-   S9   [        X USS9  S S S 5        [        R                  " [        US-   S9   [        X US	S9  S S S 5        [        R                  " [        US9   [        X U[        [        5      //S9  S S S 5        [        R                  " [        S
S9   [        X U[        5       S9  S S S 5        [        [        5      nS[        R                   S3n[        R                  " [        US9   [        X XS9  S S S 5        [        R                  " [        US9   [        X USU0S9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       GNq= f! , (       d  f       GNS= f! , (       d  f       GN5= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)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)rj   r   	estimatorerror_message_regexpmulticlass_scorerwarning_messages         rY   )test_cross_validate_invalid_scoring_paramr$  P  s   A.DA I 8 
z)=	> 1;~3NO		
 
? 
z)=	>yQ_1M0OP 
? 
z)=)N	OyQ3 
P 
z)=)M	NyQ0HI 
O 
z)=	>yQ+o2N1O0PQ 
? 
z	9yQ9 
: $$CD
	99; A	  
k	9yQB 
: 
k	9yQ8I0JK 
:	9O 
?	> 
?	> 
P	O 
O	N 
?	> 
:	9 
:	9 
:	9s_   )G-;G?9H)H#H5I*II)-
G<?
H
H #
H25
I
I
I&)
I7c                      [        SS9u  p[        S[        5       4S[        5       4/5      n[	        X USS9nUS   n[        U[        5      (       d   e[        S U 5       5      (       d   eg )NTr	  imputer
classifier)return_estimatorr   c              3   B   #    U  H  n[        U[        5      v   M     g 7frf   )r   r<   ).0r   s     rY   	<genexpr>7test_cross_validate_nested_estimator.<locals>.<genexpr>  s     K
9z)X..
s   )r   r<   r   r   r0   r   r   all)rj   r   pipelineresults
estimatorss        rY   $test_cross_validate_nested_estimatorr1    sx     $'FQ(>+,	
H X!dCG%Jj$''''K
KKKKKr\   
use_sparseFTcsr_containerc           
         [        5       n[        SSS9u  p4[        SS9n[        SSS9u  pg[	        SSS9nU (       a  U" U5      nU" U5      nX4U4XgU44 GH{  u  pn[        USS9n[        US	S9n/ n/ n/ n/ n/ nUR                  X5       H  u  nn[        U5      R                  U	U   U
U   5      nUR                  U" XU   U
U   5      5        UR                  U" XU   U
U   5      5        UR                  U" XU   U
U   5      5        UR                  U" XU   U
U   5      5        UR                  U5        M     [        R                  " U5      n[        R                  " U5      n[        R                  " U5      n[        R                  " U5      n[        R                  " U5      nUUUUU4n[        XU
UU5        [        XU
UU5        GM~     g )
N   r   	n_samplesr  r  linearkernelr  neg_mean_squared_errorr  r2)r(   r   r   r   r?   r   splitr
   rb   appendr   array"check_cross_validate_single_metric!check_cross_validate_multi_metric)r2  r3  r   X_regy_regregX_clfy_clfr  rj   r   est
mse_scorer	r2_scorertrain_mse_scorestest_mse_scorestrain_r2_scorestest_r2_scoresfitted_estimatorstraintestr  s                         rY   test_cross_validaterQ    s    
B #Ra@LE
Q
C '!DLE
XA
.Ce$e$S)E#+>?	c"30HI
!#t4	88A>KE4*..51U84C##JseHah$GH""9SE(AeH#EF"":cT7AdG#DE!!)C4!D'"BC$$S) * 88$45((?3((?3.1HH%67 
 	+31fbA)#!VR@I @r\   c           
      d   Uu  nnnnn	S H  u  pU
(       a  [        U UUSSUS9n[        US   U5        O[        U UUSSUS9n[        U[        5      (       d   e[	        U5      U:X  d   e[        US   U5        U
(       a  [        XUS/SUS9n[        US	   US5        O[        XUS/SUS9n[        U[        5      (       d   e[	        U5      U:X  d   e[        US
   U5        M     [        XUSSUS9n[        US   5       H  u  pUR                  R                  5       n[        U5      (       a  UR                  5       nX   R                  R                  5       n[        U5      (       a  UR                  5       n[        UU5        [        UR                  X   R                  5        M     g )N))Tr   )Fr   r;  Tr  return_train_scorer   train_scoreF
test_scorer<  train_r2test_r2)r  r(  r   r   )r0   rK   r   r  r   	enumeratecoef_copyr   toarrayrJ   
intercept_)r  rj   r   r  r   rJ  rK  rL  rM  rN  rT  dict_lenmse_scores_dictr2_scores_dictkrG  est_coeffitted_est_coefs                     rY   r@  r@    s    	 )@$,0#'O &om&DFVW,0#(O /40000?#x///!/,"?Q +D6drN &nZ&@/SWX+D6eN .$////>"h...!.";^LM )@R %3drO OK8999>>#H'')H+.4499;O$$-557OHo6CNN,=,@,K,KL :r\   c                    Uu  nnnnn	S n
S[        [        5      SS.U
4n1 SknUR                  SS15      nS GH  nU GH  nU(       a+  [        XX/SUS	9n[	        US   U5        [	        US   U5        O[        XX/S
US	9n[        U[        5      (       d   e[        UR                  5       5      U(       a  UOU:X  d   e[	        US   U5        [	        US   U5        [        US   [        R                  5      (       d   e[        US   [        R                  5      (       d   e[        US   [        R                  5      (       d   e[        US   [        R                  5      (       d   e[        R                  " US   S:  5      (       d   e[        R                  " US   S:  5      (       d   e[        R                  " US   S:  5      (       d   e[        R                  " US   S:  5      (       a  GM   e   GM     g )Nc                 T    U R                  U5      n[        X#5      [        X#5      * S.$ )Nr<  r;  )rk   r#   r    )r  rj   r   y_preds       rY   custom_scorer8check_cross_validate_multi_metric.<locals>.custom_scorer  s,    Q1%'9!'D&D
 	
r\   rf  r;  >   rX  fit_time
score_timetest_neg_mean_squared_errorrW  train_neg_mean_squared_error)TFTrS  FrX  rl  rj  rk  r   r   )r   r#   unionr0   rK   r   r  r   keysr   ndarrayr-  )r  rj   r   r  r   rJ  rK  rL  rM  rN  rh  all_scoringkeys_sans_trainkeys_with_trainrT  r  
cv_resultss                    rY   rA  rA    s    	
 	)h'&>	
 	KO &++	34O ,"G!+A4B
 **Z*@/R)=>@P ,A5R
 j$////z()#5?   &j&;^L%89?
 j3RZZ@@@@j)FGTTTTj4bjjAAAAj6

CCCC 66*Z0A5666666*Z025666666*\2a7888866*\2R78888C # ,r\   c            	         [        SSSS9u  p[        SS9n[        5       [        S5      [	        5       [        5       /nSnU H[  n[        R                  " [        US9   [        X XS	9  S S S 5        [        R                  " [        US9   [        X XS	9  S S S 5        M]     g ! , (       d  f       N?= f! , (       d  f       M  = f)
N   r   r   r7  	n_classesr  r8  r:  z*The 'groups' parameter should not be None.r  )r   rj   r   r   )r   r?   r)   r+   r&   r'   r   r   r   r/   r.   )rj   r   r  	group_cvserror_messager   s         rY   #test_cross_val_score_predict_groupsr|  [  s     qqIDA
X
C 		I AM]]:];c!; <]]:];A= <; ;;;;s   B"
B3"
B0	3
C	c                     ^^	 [         [         4/n  SSKJnJn  U R	                  X!45        U  H=  u  m	mT" [        5      T	" [        5      pCU4S jnU	4S jn[        XVS9n[        XsUSS9  M?     g ! [
         a     NPf = f)Nr   	DataFrameSeriesc                    > [        U T5      $ rf   r   r   InputFeatureTypes    rY   r   -test_cross_val_score_pandas.<locals>.<lambda>~      Z+;<r\   c                    > [        U T5      $ rf   r  r   
TargetTypes    rY   r   r        Az!:r\   r   r   r   r   )
rH   pandasr  r  r>  ImportErrorrj   r   rG   r/   
typesr  r  X_dfy_sercheck_dfcheck_seriesr  r  r  s
           @@rY   test_cross_val_score_pandasr  q  s    ]+,E,f() ).$
$ 'q):b>e<: H5Q/ ).     A/ /
A<;A<c                     [        SS9n [        5       nUR                  UR                  p2[	        S5      n[        XX4S9n[	        S5      n/ nUR                  X#5       Hc  u  px[        R                  " [        U5      [        S9n	[        R                  " [        U5      [        S9n
SX'   SX'   UR                  Xx45        Me     [        XX6S9n[        X[5        g )Nr8  ry  r   r   dtyper   )r?   r   datatargetr(   r/   r=  r   zerosr   boolr>  rL   )svmirisrj   r   kfoldscores_indicescv_masksrO  rP  
mask_train	mask_testscores_maskss               rY   test_cross_val_score_maskr    s    
X
C;D99dkkq!HE$SQ9N!HEH{{1(XXc!fD1
HHSV40	
	& ) #31:L~4r\   c                  `   [        SS9n [        5       nUR                  UR                  p2[        R
                  " X"R                  5      n[        XU5      n[        SS9n [        XU5      n[        XV5        [        S S9n [        XU5      n[        XW5        [        SS9n [        R                  " [        5         [        XU5        S S S 5        [        R                  " [        5         [        XR                  5       U5        S S S 5        g ! , (       d  f       NL= f! , (       d  f       g = f)Nprecomputedry  r8  c                 B    [         R                  " XR                  5      $ rf   )r   dotr   )r   r   s     rY   r   2test_cross_val_score_precomputed.<locals>.<lambda>  s    "&&CC.r\   )r?   r   r  r  r   r  r   r/   rK   r   r   r   r   )r  r  rj   r   linear_kernelscore_precomputedscore_linearscore_callables           rY    test_cross_val_score_precomputedr    s    
]
#C;D99dkkqFF1ccNM'A>
X
C"31-L/> 0
1C$SQ/N/@ ]
#C	z	"" 
#
 
z	"113Q7 
#	" 
#	"
 
#	"s   ;D*D
D
D-c           	        ^^	^
 [        5       n[        R                  S   n[        [        R
                  " [        5      5      nU " [        R                  " S/5      [        R                  " S/5      [        R                  " S/5      44SS9nU " [        R                  " S5      5      nSmSm
[        5       m	UU	U
4S jn[        R                  " U5      [        R                  " US	U-  5      UUTT
T	US
.n[        U[        [        US9  g )Nr   r   )r   r   )r_   r   *   42c                 r   > U R                   T:X  d   eU R                  T:X  d   eU R                  T:X  d   eg rf   )r   r   r   )r  	DUMMY_INT	DUMMY_OBJ	DUMMY_STRs    rY   assert_fit_params:test_cross_val_score_fit_params.<locals>.assert_fit_params  s;     }}	)))}}	)))}}	)))r\   r   )r   r   r   r   r   r   r   r   r   )r   rj   r_   r   r   r   r   r?  eyeobjectonesfullr/   r   )r   r  r7  rx  W_sparseP_sparser  
fit_paramsr  r  r  s           @@@rY   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            	        ^ [        5       n / mU4S jn[        R                  " SS9   [        U5      n[	        U [
        [        USS9nS S S 5        [        W/ SQ5        [        T5      S:X  d   eg ! , (       d  f       N.= f)Nc                 *   > TR                  X45        g)Nr   )r>  )y_test	y_predict_score_func_argss     rY   
score_func3test_cross_val_score_score_func.<locals>.score_func  s     34r\   Trecordr   )r  r   )r   r   r   )	r   warningscatch_warningsr   r/   rj   r   rL   r   )r  r  r  rs   r  s       @rY   test_cross_val_score_score_funcr    sp    

C 
	 	 	-j)Q7qA 
. uo. A%%% 
.	-s   !A11
A?c                  @   [        5       n [        SS9n[        XR                  U R                  5      n[        U/ SQS5        [        XR                  U R                  SS9n[        U/ SQS5        [        XR                  U R                  SS9n[        U/ SQS5        g )Nr8  ry  )
ףp=
?r   r  r  r   r   accuracyr  f1_weighted)r   r?   r/   r  r  rK   )r  r  r  	zo_scores	f1_scoress        rY   3test_cross_val_score_with_score_func_classificationr    s    ;D
X
C S))T[[9Ff&BAF  YYZPIi)EqI  YY]SIi)EqIr\   c                  L   [        SSSSS9u  p[        5       n[        X U5      n[        U/ SQS5        [        X USS	9n[        U/ SQS5        [        X US
S	9n[        R
                  " / SQ5      n[        XVS5        [        [        5      n[        X XS	9n[        U/ SQS5        g )Nr5  rv  r   r   )r7  
n_featuresn_informativer  )gGz?r  r  gGz?gq=
ףp?r   r<  r  r;  )g(\؇gzGIgGz&qg\(qg)\G)r   r   r/   rK   r   r?  r   r   )	rj   r   rD  r  	r2_scoresneg_mse_scoresexpected_neg_mser  	ev_scoress	            rY   /test_cross_val_score_with_score_func_regressionr    s    RBaVWXDA
'C SQ'Ff&DaH  48Ii)GK %SQ8PQNxx NOnB 23G;Ii)GKr\   c                    [        5       nUR                  nU " U5      nUR                  n[        SS9n[	        S5      n[        XRUSUSS9u  pxn	US:  d   e[        U	SS	5        [        UUUSUS[        R                  " UR                  5      S
S9u  pnX:X  d   eX:X  d   e[        SS9n[	        S5      n[        UUUSUS[        R                  " UR                  5      S
S9u  pnX:X  d   eX:X  d   eS n[        U5      n[        XRUSUUS
S9u  p{n	[        USS5        [        U	SS5        [        R                  " [        R                  " [        U5      5      S5      n[        XRUSUSS9u  pxn	US:  d   eU	S:  d   eg )Nr8  ry  r   r5  r  )n_permutationsr   r  g?        r   r   )r  r   r  groupsr  c                 l    X:H  R                  5       X:g  R                  5       -
  U R                  S   -  $ rT   )sumr_   )y_truerg  s     rY   custom_score,test_permutation_score.<locals>.custom_score?  s3    !&&(F,<+A+A+CCv||TUVVr\   d   )r  r  r   r  g(\?g{Gz?r   r   皙?)r   r  r  r?   r-   r2   rJ   r   r  sizer   modaranger   )r   r  rj   r  r   r  r   rs   r  pvaluescore_group_pvalue_group
svm_sparse	cv_sparser  scorers                    rY   test_permutation_scorer    s   ;D		AQHA
X
C		B2"ZE6 3;;Q'#9		wwqvv	$ KL !!! H%J"I#9	wwqvv	$ KL !!!W &F-#v"1Ef tQ'a( 	ryyQ !$A2"ZE6 3;;C<<r\   c                  `   [         R                  " S[         R                  S9R                  SS5      n [         R                  U SS S 24'   [         R
                  " SS/U R                  S   S-  5      n[        S[        S	[         R                  S
94S[        5       4/5      n[        X U5        g N   r  r   r   r   r   r   r&  mean)strategymissing_valuesr'  )r   r  float64r   r  repeatr_   r<   r   r   r2   rj   r   ps      rY   &test_permutation_test_score_allow_nansr  T  s    
		#RZZ(00R8AffAadG
		1a&!''!*q.)AvbffMN>+,	
	A 1#r\   c            
         [         R                  " S5      R                  SS5      n [         R                  " S/S-  S/S-  -   5      n[	        SS9nSn[
        R                  " [        US	9   [        X U5        S S S 5        S
n[
        R                  " [        US	9   [        X US[         R                  " S5      0S9  S S S 5        [        X US[         R                  " S5      0S9  g ! , (       d  f       Nu= f! , (       d  f       NA= f)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?  rG   r   r   r   r2   r   r  rj   r   r  err_msgs       rY   "test_permutation_test_score_paramsr  b  s    
		#r2&A
!qA37"#A
D
9C4G	~W	5sq) 
6 AG	z	1sq/2771:1NO 
231orwwr{-KL 
6	5 
2	1s   ,C("C9(
C69
Dc                  `   [         R                  " S[         R                  S9R                  SS5      n [         R                  U SS S 24'   [         R
                  " SS/U R                  S   S-  5      n[        S[        S	[         R                  S
94S[        5       4/5      n[        X U5        g r  )r   r  r  r   r  r  r_   r<   r   r   r/   r  s      rY   test_cross_val_score_allow_nansr  q  s    
		#RZZ(00R8AffAadG
		1a&!''!*q.)AvbffMN>+,	
	A A!r\   c                     [         R                  " SS/SS/SS/SS/SS/SS/SS/SS/SS/SS//
5      n [         R                  " SS/SS/SS/SS/SS/SS/SS/SS/SS/SS//
5      n[        SS	9n[        [        S
S9n[        [        SS9n[        [        SS9n[        X XS9n[        X XS9n[        X XS9n[        U/ SQ5        [        U/ SQ5        [        U/ SQ5        g )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/   rJ   )	rj   r   r  scoring_microscoring_macroscoring_samplesscore_microscore_macroscore_sampless	            rY   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!#!CK!#!CK#CAGM%DE%DE'FGr\   c           
      2   [        SS9u  p[        5       n[        5       n[        R                  " U5      nUR                  X5       H0  u  pgUR                  X   X&   5        UR                  X   5      XW'   M2     [        XAX#S9n[        X5        [        XAU5      n[        U5      [        U5      :X  d   e[        5       n[        XAX#S9n[        U5      [        U5      :X  d   eUR                  5       n	X[        R                  " U	5      :  -  n	U " U	5      n	[        XIU5      n[        [        U5      [        U5      5        [        [        SS9U5      n[        U5      [        U5      :X  d   e " S S5      n
[        R                   " ["        5         [        XAX*" 5       S9  S S S 5        [%        SS9u  pSn[        R&                  " [(        US	9   [        [+        S
S9UUS[        S5      S9  S S S 5        g ! , (       d  f       N[= f! , (       d  f       g = f)NTr	  r   r  )n_initc                       \ rS rSrSS jrSrg)%test_cross_val_predict.<locals>.BadCVi  Nc              3      #    [        S5       H5  n[        R                  " / SQ5      [        R                  " / SQ5      4v   M7     g 7f)Nr   )r   r   r   r   )r   r   r         )r   r   r?  )rX   rj   r   r  is        rY   r=  +test_cross_val_predict.<locals>.BadCV.split  s0     1Xhh|,bhh.GGG s   AAr   ry   )r{   r|   r}   r~   r=  r   r   r\   rY   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=  rb   rk   r.   rK   r   r*   r[  medianr   r   r   r   r   r  RuntimeWarningr   )r   rj   r   r   rG  preds2rO  rP  predsXspr"  r#  s               rY   test_cross_val_predictr-    s   D)DA	B
'C ]]1Fxx~!(#{{17+ & ca/Ee,ca(Eu:Q	Bca/Eu:Q
&&(C3C

Cc*Ec%j#a&1fF3Q7Eu:QH H
 
z	"#!0 
# %DA	< 
 
nO	<k2"Qx	
 
=	< 
#	" 
=	<s   G7H7
H
Hc            
         [        SSSS9u  p[        [        5       XSS9nUR                  S:X  d   e[	        SS	9u  p[        [        5       XSS9nUR                  S
:X  d   eU S S n US S nSn[
        R                  " [        US9   [        [        5       XS[        S5      S9  S S S 5        [        SS	9u  p[        SSS9n[        X@USS9nUR                  S:X  d   e[        R                  " U5      nX   X   pSn[
        R                  " [        US9   [        X@U[        SS9SS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   2   r   rx  r7  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%  r8  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   r_   r   r   r   r   r   r(   r   r?   r   argsort)rj   r   r+  r{  rG  indr!  s          rY   .test_cross_val_predict_decision_function_shaper=    sT   bqIDA02AATUE;;%%DA02AATUE;;(""" 	
$3A	$3A	1  
z	7q,?E!H	
 
8
 $'DA
Xu
=Cca0CDE;;*$$$
**Q-C616q	  
z)=	>#!q(9BUV 
?	>' 
8	7& 
?	>s   D5E5
E
Ec                      [        SSSS9u  p[        [        5       XSS9nUR                  S:X  d   e[	        SS	9u  p[        [        5       XSS9nUR                  S
:X  d   eg )Nr   r/  r   r0  r   r2  r/  r   Tr	  r3  r   r.   r   r_   r   rj   r   r+  s      rY   *test_cross_val_predict_predict_proba_shaperB    sf    bqIDA02AQE;;'!!!%DA02AQE;;("""r\   c                      [        SSSS9u  p[        [        5       XSS9nUR                  S:X  d   e[	        SS	9u  p[        [        5       XSS9nUR                  S
:X  d   eg )Nr   r/  r   r0  predict_log_probar2  r?  Tr	  r3  r@  rA  s      rY   .test_cross_val_predict_predict_log_proba_shaperE    sh    bqIDA02AATUE;;'!!!%DA02AATUE;;("""r\   c                    [        5       nUR                  UR                  p2U " U5      n[        R                  " X3S S S2   /5      n[        SSS9n[        XbU5      nUR                  S:X  d   e[        XdU5      nUR                  S:X  d   e[        XdU5      n[        UR                  S5        [        XdU5      n[        UR                  S5        S n[        US9n[        XbR                  5       UR                  5       5      n[        US	9n[        XbUR                  5       5      n[        [        5       UR                  5       UR                  5       S
S9n[        [        5       UUR                  5       S
S9nUS S 2S S 2[        R                  4   n	S n
[        U
S9n[        XiU5      n[        UR                  S5        g )Nr   Fr   )fit_interceptr  )r4  )r4  r   c                 "    [        U [        5      $ rf   r   r   s    rY   r   4test_cross_val_predict_input_types.<locals>.<lambda>7  r   r\   r   r   r1  r2  c                      U R                   S:H  $ )Nr   )r   r   s    rY   r   rI  N  s    1r\   )r   r  r  r   r   r   r.   r_   rL   rG   r   r   r   )r   r  rj   r   r  r  r  predictionsr  r  check_3ds              rY   "test_cross_val_predict_input_typesrM    s   ;D99dkkqQHOOQ$B$L1M
e!
4C $CA.K&&& $C=AK(((#C15K{((&1 $C=AK{(((3 /J
Z
0C#CQXXZ@K
Z
0C#CAHHJ7K $	
	
"	K $		
"	K Q2::D$H
X
.C#Cq1K{((&1r\   c                     ^^	 [         [         4/n  SSKJnJn  U R	                  X!45        U  H=  u  m	mT" [        5      T	" [        5      pCU4S jnU	4S jn[        XVS9n[        XsUSS9  M?     g ! [
         a     NPf = f)Nr   r~  c                    > [        U T5      $ rf   r  r  s    rY   r   /test_cross_val_predict_pandas.<locals>.<lambda>`  r  r\   c                    > [        U T5      $ rf   r  r  s    rY   r   rP  a  r  r\   r  r   r   )
rH   r  r  r  r>  r  rj   r   rG   r.   r  s
           @@rY   test_cross_val_predict_pandasrR  T  s}    ]+,E,f() ).$
$&q):b>e<: H#Uq1 ).  r  c            	      *   [        SSSSSSS9u  pSUS'   [        SS9n[        SS9n[        UR	                  X5      5      u  pE[        X XSS	9nXS      S   S:X  d   e[        R                  " XeS      S S 2S4   S:H  5      (       d   e[        R                  " XeS      S S 2SS24   S:  5      (       d   e[        R                  " XeS      S:  5      (       d   e[        UR                  SS
9[        R                  " UR                  5      SS9  g )Nr  r   r   r   )r7  r  n_redundantr  n_clusters_per_classr  r  r8  r   r:  axis   )decimal)r   r   r-   r   r=  r.   r   r-  rK   r  r  r_   )rj   r   r  r   rO  rP  
yhat_probas          rY   !test_cross_val_predict_unbalancedr[  f  s   DA AaD
!
,C	!	$Brxx~&KE"31OLJ!W:a=A66*!W%ad+q0111166*!W%a1f-1222266*!W%)****jnn!n4bggagg6FPRSr\   c                      [        5       n [        R                  R                  S5      nUR	                  SS5      n[        XS SSS9n[        US S 2S4   U5        [        XS SSS9n[        X$5        g )	Nr  r  r   r   rk   )r   r   r&  r   r   )r   r   randomRandomStaterandr.   rI   )mock_classifierrngrj   y_haty_hat_probas        rY   test_cross_val_predict_y_nonerd  |  sm    $&O
))


#CbAoDQyQEAadGU##dqK A#r\   c                    [        5       nUR                  UR                  p2[        5       nSU " [        R
                  " UR                  S   5      5      0n[        XBX5SS9n[        U[        R                  " S5      5        g )Nr   r   r   )r   r   )
r   r  r  r   r   r  r_   r/   rL   r  )r   r  rj   r   r  r  r   s          rY   &test_cross_val_score_sparse_fit_paramsrf    s`    ;D99dkkq

C(-qwwqz8J*KLJ;Aq"''!*%r\   c                     Sn Sn[        U SSSSSSS9u  p#[        XS-
  U-  -  5      nS GH  n[        R                  " SS	9 n[	        UUU[        US
9[        R                  " SSS5      USS9u  nnn	n
nS S S 5        [        W5      S:  a  [        SUS   R                  -  5      eWR                  S:X  d   eW	R                  S:X  d   eW
R                  S:X  d   eWR                  S:X  d   e[        W[        R                  " SSS5      5        [        UR                  SS9[        R                  " SSS5      5        [        U	R                  SS9[        R                  " SSS5      5        U
R                  S:X  d   eUR                  S:X  d   e[        R                  " SS	9 n[	        UUU[!        XS9[        R                  " SSS5      US9u  pnS S S 5        [        U5      S:  a  [        SUS   R                  -  5      e[        WU5        [        WU	5        GM     g ! , (       d  f       GN= f! , (       d  f       Nh= f)Nr5  r   r   r   r   r7  r  r  rT  rx  rU  r  FTTr  r8  皙?r   r   )r   rV   rF   return_timesUnexpected warning: %r)r   r   rv  rV  ffffff?r  r9  r7  )r   rV   rF   )r   rQ   r  r  r1   r(   r   linspacer   RuntimeErrormessager_   rL   rK   r  r  r7   )r7  r9  rj   r   r   shuffle_trainwrV   train_scorestest_scores	fit_timesscore_timestrain_sizes2train_scores2test_scores2s                  rY   test_learning_curver{    s>   IHDA 'y\X4M'NOI&$$D1Q (+KKS"5%! 2  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1Q8F"HJKKS"5%95L 2 q6A:7!A$,,FGG!->!,<[ '11@ 21s   3H'(/H9'
H6	9
I	c                     [        SSSSSSSS9u  p[        S5      n[        X S S[        R                  " SS	S
5      S9u  p4n[        U[        R                  " SSS
5      5        [        UR                  SS9[        R                  " SS	S
5      5        [        UR                  SS9[        R                  " SS	S
5      5        g )Nr5  r   r   r   rh  rv  r   rj  r   r   )r   r   rV   rV  rm  )r   rQ   r1   r   ro  rL   rK   r  rj   r  r   rV   rt  ru  s         rY    test_learning_curve_unsupervisedr~    s    DA 'r*I-;Cb0I.*K{ {BKK2r$:;l//Q/7S#r9RSk..A.6Cb8QRr\   c            
         [        SSSSSSSS9u  p[        S5      n[        R                  n[	        5       [        l         [        X USSS9u  pEn[        R                  R                  5       n[        R                  R                  5         U[        l        S	U;   d   eg ! [        R                  R                  5       n[        R                  R                  5         U[        l        f = f)
Nr5  r   r   r   rh  rv  r   )r   verbosez[learning_curve])r   rQ   sysstdoutr   r1   getvalueclose)rj   r   r   
old_stdoutrV   rt  ru  outs           rY   test_learning_curve_verboser    s    DA 'r*IJCJ 1?!12
.; jj!!#


$$$	 jj!!#


s   B   A	C)c            
          [        SSSSSSSS9u  p[        S5      n[        R                  " [        5         [        X USS9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   rh  T)exploit_incremental_learningr   rQ   r   r   r   r1   rj   r   r   s      rY   5test_learning_curve_incremental_learning_not_possibler    sS    DA 'q)I	z	"yQTJ 
#	"	"s   A
Ac                     [        SSSSSSSS9u  p[        S5      nS H  n[        UU USS	[        R                  " S
SS5      US9u  pEn[        U[        R                  " SSS5      5        [        UR                  SS9[        R                  " SSS5      5        [        UR                  SS9[        R                  " S
SS5      5        M     g )Nr5  r   r   r   rh  rv  ri  r   Trj  r   r   )r   r  rV   rF   rV  rm  r   r   r1   r   ro  rL   rK   r  )rj   r   r   rr  rV   rt  ru  s          rY   (test_learning_curve_incremental_learningr    s    DA 2"5I&1?)-Cb1!2
.; 	;Ar2(>?!,"3"3"3";R[[cSU=VW!+"2"2"2":BKKSRT<UV 'r\   c                     [        SSSSSSSS9u  p[        S5      n[        UU S SS[        R                  " S	S
S5      S9u  p4n[        U[        R                  " SSS5      5        [        UR                  SS9[        R                  " SS
S5      5        [        UR                  SS9[        R                  " S	S
S5      5        g )Nr5  r   r   r   rh  rv  r   Trj  r   r   )r   r   r  rV   rV  rm  r  r}  s         rY   5test_learning_curve_incremental_learning_unsupervisedr  '  s    DA 2"5I-;	
%)KKS"-.*K{ {BKK2r$:;l//Q/7S#r9RSk..A.6Cb8QRr\   c            
      ^   [        SSSSSSSS9u  p[        R                  " SSS5      n[        SS S	S
9n[	        UU UUSSS9u  pEn[	        UU USUS	S9u  pxn	[        XG5        [        UR                  SS9UR                  SS95        [        UR                  SS9U	R                  SS95        g )Nr5  r   r   r   rh  r  r   r   Fmax_itertolrF   r   T)rV   r   r  )r   rV   r  rV  )r   r   ro  r   r1   rL   rK   r  )
rj   r   rV   r   train_sizes_inctrain_scores_inctest_scores_inctrain_sizes_batchtrain_scores_batchtest_scores_batchs
             rY   <test_learning_curve_batch_and_incremental_learning_are_equalr  ?  s    DA ++c3*K+QD%PI9G		%):6O @N		%*@<+< :1%'9'>'>A'>'F !$&7&<&<!&<&Dr\   c            
         [        SSSSSSSS9u  p[        S5      n[        R                  " [        5         [        X USSS/S9  S S S 5        [        R                  " [        5         [        X USS	S
/S9  S S S 5        [        R                  " [        5         [        X USSS/S9  S S S 5        [        R                  " [        5         [        X USSS/S9  S S S 5        [        R                  " [        5         [        X USSS/S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ns= f! , (       d  f       g = f)Nr5  r   r   r   rh  rv  r   r   rV   r  r   rj  g?   r  r  s      rY   0test_learning_curve_n_sample_range_out_of_boundsr  f  s   DA 'r*I	z	"yQ11a&A 
#	z	"yQ13*E 
#	z	"yQ13*E 
#	z	"yQ11b'B 
#	z	"yQ11b'B 
#	" 
#	"	"	"	"	"	"	"	"	"s;   D(D$D5
E;E
D!$
D25
E
E
E%c                     [        SSSSSSSS9u  p[        S5      nSn[        R                  " [        US9   [        X US[        R                  " SS	S5      S
9u  n  nS S S 5        [        WSS/5        g ! , (       d  f       N= f)Nr   r   r   r   rh  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   r  )	r   rQ   r   r  r)  r1   r   ro  rL   )rj   r   r   r#  rV   r  s         rY   1test_learning_curve_remove_duplicate_sample_sizesr  }  s    DA 'q)I	G  
nO	<*!r{{4a/H
Q 
= {QF+	 
=	<s   'A66
Bc                     [        SSSSSSSS9u  p[        S5      n[        SS9n[        X X[        R
                  " S	S
S5      S9u  pEn[        U[        R
                  " SSS5      5        [        UR                  SS9[        R
                  " SS
S5      5        [        UR                  SS9[        R
                  " S	S
S5      5        g )Nr5  r   r   r   rh  rv  r   r8  rj  r   r   r  rV  rm  )	r   rQ   r(   r1   r   ro  rL   rK   r  )rj   r   r   r   rV   rt  ru  s          rY   (test_learning_curve_with_boolean_indicesr    s    DA 'r*I		B-;aBKKS",E.*K{ {BKK2r$:;l//Q/7S#r9RSk..A.6Cb8QRr\   c                     [         R                  " SS/SS/SS/SS/S	S
/SS/SS/SS/SS/SS/SS/S	S
/SS/SS/SS//5      n [         R                  " / SQ5      n[         R                  " / SQ5      n[        SS SS9n[        SS9n[	        UU UUS[         R
                  " SSS5      USSS9	u  pVn[        UR                  SS9[         R                  " / SQ5      5        [        UR                  SS9[         R                  " / S Q5      5        [        R                  " [        5         [	        UU UUS[         R
                  " SSS5      US!S"9  S S S 5        [	        UU UUS[         R
                  " SSS5      USSSS#9
u  pn
[        U	R                  SS9UR                  SS95        [        U
R                  SS9UR                  SS95        g ! , (       d  f       N= f)$Nr   r   r   r   r   r   r  r     rX        r               rv  	   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   Fr  r8  333333?r   T)r   r  rV   r  rF   r  rV  )r  r  Iq?)r  r  r  r   )r   r  rV   r  r   )r   r  rV   r  rF   r  r  )r   r?  r   r&   r1   ro  rK   r  r   r   r   )rj   r   r  r   r   r  r  r  r  r  r  s              rY    test_learning_curve_with_shuffler    s     	FFFFHHHHHFGHHHH	
	A& 	>?AXXCDF ,QD%PI	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   *'G
Gc                     [         R                  " S5      R                  SS5      n [         R                  " S/S-  S/S-  -   5      n[	        SS9nSn[
        R                  " [        US	9   [        X US
S9  S S S 5        Sn[
        R                  " [        US	9   [        X US
S[         R                  " S5      0S9  S S S 5        [        X US
S[         R                  " S5      0S9  g ! , (       d  f       Nw= f! , (       d  f       NB= f)Nr  r   r   r   r   Tr  r  r  r   r   z/sample_weight.shape == \(1,\), expected \(2,\)!r   )r   r   )r   r  r   r?  rG   r   r   r   r1   r   r  r  s       rY   test_learning_curve_paramsr    s    
		#r2&A
!qA37"#A
D
9C4G	~W	5sqg6 
6 AG	z	1A7ORWWQZ3P	
 
2 w/M 
6	5 
2	1s   ,C)#C:)
C7:
Dc                  N   [        SSSSSSSS9u  p[        SS/5      nSn[        R                  " [        US	9   [        UU US
S[        R                  " SSS5      SS9  S S S 5        Sn[        R                  " [        US	9   [        UU US
S[        R                  " SSS5      SS[        R                  " S
5      0S9  S S S 5        [        UU US
S[        R                  " SSS5      SS[        R                  " S5      0S9  g ! , (       d  f       N= f! , (       d  f       N\= f)Nr5  r   r   r   rh  rv  r   z9Expected fit parameter\(s\) \['sample_weight'\] not seen.r  r   Trj  r   r   r   )r   r  rV   r   z2Fit parameter sample_weight has length 3; expected)r   r  rV   r   r   )	r   r   r   r   r   r1   r   ro  r  )rj   r   r   r  s       rY   /test_learning_curve_incremental_learning_paramsr    s   DA 2"6GHIJG	~W	5)-Cb1	
 
6 CG	~W	5)-Cb1#RWWQZ0		
 
6 		%)KKS"-,	1 
6	5 
6	5s   &D=D
D
D$c            
         [        SSSSSSSS9u  p[        R                  " SSS5      n[        R                  " SS9 n[        [        5       U USUSS	9u  pES S S 5        [        W5      S:  a  [        S
US   R                  -  5      e[        WR                  SS9U5        [        WR                  SS9SU-
  5        g ! , (       d  f       Nn= f)Nr   r   r   rh  r   Tr  r   
param_nameparam_ranger   rl  rV  )r   r   ro  r  r  r3   r   r   rp  rq  rK   r  )rj   r   r  rs  rt  ru  s         rY   test_validation_curver  8  s    DA ++aB'K		 	 	-$4&(#%
! 
. 1vz3adllBCCl//Q/7Ek..A.6KH 
.	-s   B??
Cc            
          [        SSSSSSSS9u  p[        R                  " SSS5      n[        [	        5       U USUSS9u    ng )Nr   r   r   rh  r   r   r  )r   r   ro  r3   r   )rj   r   r  r  s       rY   %test_validation_curve_clone_estimatorr  S  sZ    DA ++aB'K-/		DAqr\   c                  (   Sn Sn[        SSS9u  p#[        [        SSS9UUS/ SQ[        XS	9S
9n[	        [
        R                  " [
        R                  " U5      SS S 24   S5      6   [        [        SSS9UUS/ SQ[        USS9S
9n[	        [
        R                  " [
        R                  " U5      SS S 24   S5      6   [        [        SSS9UUS/ SQ[        US9S
9n[	        [
        R                  " U5      [
        R                  " U5      5        g )Nr  r   r   r6  r8  r9  r  )rj  rj  r  r  rn  r  )r   r   r   r   r   Tr9  rF   r8  )
r   r3   r?   r7   rK   r   vsplithstackr(   r?  )r7  r9  rj   r   scores1scores2scores3s          rY   +test_validation_curve_cv_splits_consistencyr  i  s    IH1=DA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                  4   [         R                  " S5      R                  SS5      n [         R                  " S/S-  S/S-  -   5      n[	        SS9nSn[
        R                  " [        US	9   [        UU US
/ SQSS9  S S S 5        Sn[
        R                  " [        US	9   [        UU US
/ SQSS[         R                  " S5      0S9  S S S 5        [        UU US
/ SQSS[         R                  " S5      0S9  g ! , (       d  f       N= f! , (       d  f       NG= f)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?  rG   r   r   r   r3   r   r  r  s       rY   test_validation_curve_paramsr    s    
		#r2&A
!qA37"#A
D
9C4G	~W	5"!	
 
6 AG	z	1"!#RWWQZ0	
 
2 		-+ 
6	5 
2	1s   ,C8 (D	8
D	
Dc                     [         R                  R                  S5      n [         R                  " S5      nU R	                  U5        [        US5      (       d   e[        [         R                  " US5      S5      (       a   eSUS'   [        US5      (       a   e[        [         R                  " US45      S5      (       a   eg )Nr   r     )r   r]  r^  r  rF   r4   deleter  )ra  r  s     rY   test_check_is_permutationr    s    
))


"C
		#AKKN C(((($RYYq"%5s;;;;AaD$Q,,,, %RYY1v%6<<<<<r\   c                     [        SSSSSS9u  pU " U5      nU " U5      n[        [        SS95      n[        XQUSS	9n[        XSUSS	9nUR	                  5       n[        Xv5        g )
Nr   r   FT)rx  n_labelsallow_unlabeledreturn_indicatorr  r8  ry  r   r   )r   r9   r?   r.   r\  rK   )r3  rj   r   r  y_sparseclassifr+  preds_sparses           rY   (test_cross_val_predict_sparse_predictionr    sv     *DA QHQH!#X"67Gg!3E$WRHL'')Ll2r\   c                    [        SSS9nUR                  S:X  a   US:X  a  [        U5      4O[        U5      S4nOUR                  n[        R
                  " U5      nUR                  X5       H9  u  px[        U 5      R                  X   X'   5      n [        X5      " X   5      Xh'   M;     X"S-   US-
  UR                  S5      4 H  n	[        [        XXUS9U5        M     g	)
z@Helper for tests of cross_val_predict with binary classificationr   Fr  r   r1  r   strr%  N)r(   r   r   r_   r   r  r=  r
   rb   getattrastyperI   r.   )
rG  rj   r   r&  r   	exp_shapeexpected_predictionsrO  rP  tgs
             rY   check_cross_val_predict_binaryr    s    	5	)B 	vv{!'+>!>SVISVQK	GG	88I.xx~CjnnQXqx0%,S%9!'%B" &
 a%Q0cbB?AU	
 1r\   c                    [        SSS9n[        R                  " [        R                  5      R                  nUUSS.n[        R
                  " [        U5      [        [        U5      5      4Xc   [        R                  S9n[        R                  " USS9u  pUR                  X5       Hg  u  p[        U 5      R                  X   X   5      n [        X5      " X   5      n[        R                  " X   5      nX[        R                  " X5      '   Mi     X"S	-   US
-
  UR                  S5      4 H  n[        [!        XXUS9U5        M     g)zDHelper for tests of cross_val_predict with multiclass classificationr   Fr  r   r1  rD  r   r  Treturn_inverser   r   r  r%  N)r(   r   finfor  minr  r   r   r   r=  r
   rb   r  ix_r  rI   r.   )rG  rj   r   r&  r   	float_mindefault_valuesr  r  y_encrO  rP  
fold_preds
i_cols_fitr  s                  rY   "check_cross_val_predict_multiclassr    s   	5	)B $((I&&N
 77	QSV~5RZZ yy40HAxx)CjnnQXu|4S)!'2
YYu|,
9CRVVD56	 * a%Q0cbB?AU	
 1r\   c           	         [        SSS9n[        R                  " [        R                  5      R                  nUUSS.nUR
                  S   n/ n[        U5       Hy  n	[        [        USS2U	4   5      5      n
U
S:X  a  US	:X  a  [        U5      4nO[        U5      U
4nUR                  [        R                  " XU   [        R                  S
95        M{     [        UR
                  S   5       Vs/ s H7  n[        R                  " USS2U4   SS9S   SS2[        R                  4   PM9     nn[        R                  " USS9nUR                  X5       H  u  nn[        U 5      R!                  X   X   5      n [#        X5      " UU   5      n[        U5       Ha  n	[        R                  " X   SS2U	4   5      nX   R$                  S:X  a  UU	   X   U'   M@  [        R&                  " UU5      nUU	   X   U'   Mc     M     X"S-   US-
  UR)                  S5      4 HT  n[+        XUX4S9n[        U5      [        U5      :X  d   e[        [        U5      5       H  n[-        UU   X   5        M     MV     gs  snf )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   r1  r  Tr  rV  r  r%  )r(   r   r  r  r  r_   r   r   r   r>  r  r   r   concatenater=  r
   rb   r  r   r  r  r.   rI   )rG  rj   r   r&  r   r  r  	n_targetsexpected_predsi_coln_classes_in_labelr  r   
y_enc_colsr  rO  rP  r  	fold_colsidxr  cv_predict_outputs                         rY   "check_cross_val_predict_multilabelr    sQ   
 
5	)B $((I&&N
 
INy! Qq%x[!12"v1D'DQ	IQ!34IGGIf5RZZH	
 " qwwqz""A 			!AqD'$/21bjj=A"   NN:A.Exx)tCjnnQXu|4S)!D'2
9%E		%,q%x"89I$))Q..8.?%d+ffT9--7->%c* & * a%Q0-cbO$%^)<<<<s,-.A-a0.2CD / 1%s   2>I8c                 F    [        SSS9u  pS H  n[        XX#5        M     g )Nr   r   )rx  r  r1  r   rD  )r   r  )rG  rj   r   r&  s       rY   *check_cross_val_predict_with_method_binaryr  C  s'     ;DAM&sq9 Nr\   c                     [        5       nUR                  UR                  p2[        X#SS9u  p#S H  n[	        XX45        M     g )Nr   r  r  )r   r  r  rF   r  )rG  r  rj   r   r&  s        rY   .check_cross_val_predict_with_method_multiclassr  K  s;    ;D99dkkq1a(DAM*31= Nr\   c                  P    [        [        5       5        [        [        5       5        g rf   )r  r   r  r   r\   rY   "test_cross_val_predict_with_methodr  S  s    ./A/CD23E3GHr\   c                      [        5       n U R                  U R                  p![        XSS9u  pS H  n[	        SSS9n[        XAX#5        M     g )Nr   r  r  log_lossr   )lossr  )r   r  r  rF   r   r  )r  rj   r   r&  rG  s        rY   &test_cross_val_predict_method_checkingr  X  sI     ;D99dkkq1a(DAM!<*31= Nr\   c                      [        5       n U R                  U R                  p![        XSS9u  p[	        [        SS9SSS/0SS9nS	 H  n[        X1X$5        M     g )
Nr   r  r  r  rj  r   r   r   r  )r   r  r  rF   r%   r   r  )r  rj   r   rG  r&  s        rY   /test_gridsearchcv_cross_val_predict_with_methodr  c  sX    ;D99dkkq1a(DA
)r:S3(OPQ
RCM*31= Nr\   c                  v    Sn Sn[        U SUSSS9u  p#[        [        SSS	95      nS
 H  n[        XBX5S9  M     g )Nr  r   r   r   r  r7  r  rx  r  r  r#  r   )r$  r  )r   r1  r2  )r   r9   r   r  )n_samprx  rj   r   rG  r&  s         rY   1test_cross_val_predict_with_method_multilabel_ovrr  l  sO     FI)1	aVXDA 0RST
UC8&sq@ 9r\   c                       \ rS rSrS rSrg)RFWithDecisionFunctioniz  c                     U R                  U5      nSn[        U[        5      (       d   U5       eU Vs/ s H   oDR                  S   S:X  a	  US S 2S4   OUPM"     nnU$ s  snf )Nz?This helper should only be used on multioutput-multiclass tasksr   r   r   )r   r   r   r_   )rX   rj   probsmsgr  s        rY   r1  (RFWithDecisionFunction.decision_function~  sg    ""1%O%&&++&=BCUWWQZ1_1b5!3UC Ds   'Ar   N)r{   r|   r}   r~   r1  r   r   r\   rY   r  r  z  s    r\   r  c            	         Sn [        SSU SSS9u  pUS S 2S4==   US S 2S4   -  ss'   S	 HK  n[        SSS
9n[        R                  " 5          [        R                  " S5        [        XAX#S9  S S S 5        MM     g ! , (       d  f       M_  = f)Nr   r  r   r   r  r  r   r   r   rD  r1  n_estimatorsr  ignorer2  )r   r  r  r  simplefilterr  )rx  rj   r   r&  rG  s        rY   0test_cross_val_predict_with_method_multilabel_rfr    s     I)Y1SUDA adGqAwGM$!!D$$&!!(+.sqH '& N&&s   !A<<
B	c                  ^   [         R                  R                  S5      n U R                  SSSS9n[         R                  " / SQ5      n[        5       nS HC  n[        R                  " 5          [        R                  " S5        [        X1X$5        S S S 5        ME     g ! , (       d  f       MW  = f)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  )ra  rj   r   rG  r&  s        rY   -test_cross_val_predict_with_method_rare_classr    s     ))


"C

1ah
'A
;<A

CM$$&!!(+.sqA '& N&&s   -#B
B,	c            	      t   [         R                  R                  S5      n U R                  SSSS9n[         R                  " SS/SS/SS/SS/SS//5      nS HK  n[        SSS9n[        R                  " 5          [        R                  " S	5        [        XAX#S
9  S S S 5        MM     g ! , (       d  f       M_  = f)Nr   r   )r   r   r  r   )r   rD  r   r  r  r2  )
r   r]  r^  r  r?  r  r  r  r  r  )ra  rj   r   r&  rG  s        rY   ;test_cross_val_predict_with_method_multilabel_rf_rare_classr    s     ))


"C

1ag
&A
1a&1a&1a&1a&1a&9:A8$!!D$$&!!(+.sqH '& 9&&s   :!B((
B7	c                    [         R                  " [        U5      U/5      n[        XE5      nUR	                  X5       H  u  pUR                  X   X   5        U" X	   5      n
US:X  a"  [         R                  " [        U	5      U45      nOJ[         R                  " [        U	5      U4[         R                  " UR                  5      R                  5      nXS S 2UR                  4'   XU	'   M     U$ )Nr   )r   r  r   r  r=  rb   r  r  r  r  r   )rj   r   r   classesrG  r&  r  funcrO  rP  expected_predictions_exp_pred_tests               rY   get_expected_predictionsr    s    88SVW$563Dxx~!(# $QW_$HHc$i%9:MGGTG$bhh/C/I/I&J&N&NM *?ao&%2T" &  r\   c            	      l   [         R                  " S5      R                  SS5      n [         R                  " [	        S5       Vs/ s H  oS-  PM	     sn5      nSn[        SS9n[        SS9n[        5       n/ SQnU H  n[        5       n	[        XX(US	9n
[        XXCX5      n[        X5        [        XX(US	9n
[        XXSX5      n[        X5        [        [         R                  " [	        S5      S5      S
S9n[        XX(US	9n
UR                  U5      n[        XXCX5      n[        X5        M     g s  snf )Nr  r  r   r   r   r8  r   r  r%  r   r  )r   r  r   r?  r   r(   r=   r   r.   r  rK   rF   r  fit_transform)rj   r   r   r  kfold3kfold4lemethodsr&  rG  rK  r  s               rY   #test_cross_val_predict_class_subsetr#    s/   
		#sA&A
5:.:ar':./AGAFAF	BIG " (VL  8&3 
 	""6D (VL7&3 
 	""6D BIIeBi,1='VLQ7&3 
 	""6D5  /s   D1c                    ^^ [        5       n U R                  U R                  p![        5       n[        R
                  " SSS9nUR                  S5        UR                  5         [        R                  " UR                  [        R                  S9m[        R                  " UR                  SS[        R                  S9m [        X1UU4S	 jS
9  [        R                  " [        5         [        X1UU4S jS
9  S S S 5        Su  mm[!        S5       H$  n ["        R$                  " UR                  5          g    g ! , (       d  f       NG= f! [&         a    [)        S5         MR  f = f! Su  mm[!        S5       H@  n ["        R$                  " UR                  5          f ! [&         a    [)        S5         M>  f = f   f = f)NwbF)moder  s   Hello world!!!!!r  r   r)r_   r&  r  c                    > T$ rf   r   )rG  rj   r   rs   s      rY   r   #test_score_memmap.<locals>.<lambda>  s    Ur\   r  c                    > T$ rf   r   )rG  rj   r   r  s      rY   r   r)    s    r\   ry   r   r   )r   r  r  r   tempfileNamedTemporaryFilewriter  r   memmapnamer  r/   r   r   r   r   osunlinkOSErrorr   )r  rj   r   r  tfr  rs   r  s         @@rY   test_score_memmapr4    sF   ;D99dkkq

C		$	$$u	=BHH !HHJYYrwwbjj1FIIbggRcDE+BC]]:&CA/GH '
 #qA		"''"  '&  c
 #qA		"''" c
	 sZ   )E( *D;:E(  E;
E	E( E%$E%(F>= FF>F8	4F>7F8	8F>c                  2  ^^ [         [         4/n  SSKJnJn  U R	                  X!45        U  HW  u  mm[        5       nUR                  UR                  pTT" U5      T" U5      pvU4S jnU4S jn	[        XS9n
[        XU5        MY     g ! [
         a     Njf = f)Nr   r~  c                    > [        U T5      $ rf   r  r  s    rY   r   4test_permutation_test_score_pandas.<locals>.<lambda>  r  r\   c                    > [        U T5      $ rf   r  r  s    rY   r   r7    r  r\   r  )rH   r  r  r  r>  r  r   r  r  rG   r2   )r  r  r  r  rj   r   r  r  r  r  r  r  r  s              @@rY   "test_permutation_test_score_pandasr9    s    ]+,E,f() ).$
${yy$++1&q):a=e<: Hs%0 ).  s   B	 	
BBc                     [        [         R                  5      n [        R                  " SS5      n[        R                  " SS5      [        R                  " SS5      p2[	        U US [	        5       UUSS S S S9
nSUS'   [
        R                  " [        S	S
9   [        S0 UD6  S S S 5        U R                  5       S:X  d   eg ! , (       d  f       N%= f)Nr   r   r   r   r  )
r   rj   r   r  rO  rP  r  
parametersr  score_paramsr   r   z%Failing classifier failed as requiredr  r  r   )
r8   FAILING_PARAMETERr   r  r  r   r   r   r5   rs   )failing_clfrj   rO  rP  fit_and_score_argss        rY   test_fit_and_score_failingr@     s    #$5$G$GHK
		!RA))Aq/299Q?4

v )0}%	z)P	Q,+, 
R #%%% 
R	Qs   C
Cc                      [        SSS9u  p[        SSS9n[        [        5       R	                  U 5      5      u  p4[        UU U[        5       UUSSSS.S S S	S
9n[        S0 UD6nUS   US   :X  d   eg )Nr5  r   r6  r8  r9  r  rj  )r  r  T)r   rj   r   r  rO  rP  r  r;  r  r<  return_parametersr;  r   )r   r?   nextr,   r=  r  r5   )rj   r   r  rO  rP  r?  results          rY   test_fit_and_score_workingrE  ;  s    !<DA
XA
.C|~++A./KE

v #C0 101F,#5l#CCCCr\   c                   2    \ rS rSrSS jrSS jrSS jrSrg)	DataDependentFailingClassifieriQ  Nc                     Xl         g rf   max_x_value)rX   rJ  s     rY   rZ   'DataDependentFailingClassifier.__init__R  s    &r\   c                 h    XR                   :  R                  5       nU(       a  [        SU S35      eg )NzClassifier fit failed with z values too high)rJ  r  r   )rX   rj   r   num_values_too_highs       rY   rb   "DataDependentFailingClassifier.fitU  s>     #3#3388:-.A-BBRS  r\   c                     g)Nr  r   rq   s      rY   rs   $DataDependentFailingClassifier.score\  s    r\   rI  rf   ry   )r{   r|   r}   r~   rZ   rb   rs   r   r   r\   rY   rG  rG  Q  s    'r\   rG  r   c                 Z   [        SS9n[        R                  " SS5      n[        R                  " S5      nXU/nSU S.nSn[        R
                  " S	US
    SU 3[        R                  S9n[        R                  " [        US9   [        U0 UD6  S S S 5        g ! , (       d  f       g = f)Nr  rI  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  )rG  r   r  r  recompileDOTALLr   r  r   r0   )r   r>  rj   r   cross_validate_argscross_validate_kwargsindividual_fit_error_messager#  s           rY   -test_cross_validate_some_failing_fits_warningr[  `  s     1Q?K
		!RA

A&1-#$[A 	C ! jj%m45R8T7UW iiO 
&o	>+E/DE 
?	>	>s   B
B*c                 n   [        [         R                  5      n[        R                  " SS5      n[        R                  " S5      nXU/nSU S.nSn[
        R                  " SU 3[
        R                  S9n[        R                  " [        US	9   [        U0 UD6  S S S 5        g ! , (       d  f       g = f)
Nr   r   r  r  rR  z1ValueError: Failing classifier failed as requiredz4All the 7 fits failed.+your model is misconfigured.+rS  r  )r8   r=  r   r  r  rU  rV  rW  r   r   r   r0   )r   r>  rj   r   rX  rY  rZ  r{  s           rY   *test_cross_validate_all_failing_fits_errorr]  |  s     $$5$G$GHK
		!RA

A&1-#$[A#V JJB+,. iiM 
z	7+E/DE 
8	7	7s   B&&
B4c                     [        U5      erf   )r   )r   rj   r   	error_msgs       rY   _failing_scorerr`    s    
Y
r\   zignore:lbfgs failed to converger   c           
         [        SS9u  p[        SS9R                  X5      nSn[        [        US9nU S:X  a/  [
        R                  " [        US9   [        X1US	XPS
9  S S S 5        g SU  3n[
        R                  " [        US9   [        X1US	XPS
9n[        Xp5        S S S 5        g ! , (       d  f       g = f! , (       d  f       g = f)NTr	  r   r  "This scorer is supposed to fail!!!r_  r   r  r   )r   r  r   r  )r   r   rb   r   r`  r   r   r   r/   r  r  rI   )r   rj   r   r  r_  failing_scorerwarning_msgr  s           rY   #test_cross_val_score_failing_scorerrg    s    
 %DA
a
(
,
,Q
2C4I_	BNg]]:Y7a 87//:m= 	 \\+[9$aF F0	 :9 87 :9s   B(B9(
B69
CrT  with_multimetricc                 Z   [        SS9u  p4[        SS9R                  X45      nSn[        [        US9nU(       a  [        [        5      nUUUS.n	OUn	U S:X  a2  [        R                  " [        US	9   [        UUUS
U	UU S9  S S S 5        g SU  3n
[        R                  " [        U
S	9   [        UUUS
U	UU S9nU HC  nSU;   d  M  SU;   a$  X    H  n[        U[        5      (       a  M   e   M5  [        X   U 5        ME     S S S 5        g ! , (       d  f       g = f! , (       d  f       g = f)NTr	  r   rb  rc  rd  )score_1score_2score_3r   r  r   )r   r  rT  r   r  r6   _score_2)r   r   rb   r   r`  r   r    r   r   r   r0   r  r  r   rp   rI   )r   rT  rh  rj   r   r  r_  re  non_failing_scorerr  rf  r/  r   r   s                 rY   "test_cross_validate_failing_scorerro    s>    %DA
a
(
,
,Q
2C4I_	BN();<%)%
 !g]]:Y7#5' 87//:m= 	 \\+[9$#5'G s?!S( ")A#-a#7#77#7 ".
 (kB  :9 87 :9s$   2D)D D*D
D
D*c                     g)Ng;pΈ^@r   )r   jra  s      rY   three_params_scorerrr    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                    [        SSS9u  px[        SSS9n	[        [        5       R	                  U5      5      u  p[        U	UUUU
UUS S S UUUS9n[        S
0 UD6  U R                  5       u  pUR	                  S5      n[        U5      S:  a!  [        R                  " XoS	   5      (       d   eg [        R                  " XoS   5      (       d   eg )Nr5  r   r6  r8  r9  )r   rj   r   r  rO  rP  r  r;  r  r<  rT  split_progresscandidate_progress
r   r   r   )r   r?   rC  r,   r=  r  r5   
readouterrr   rU  r  )capsysrU  r  r  	split_prgcdt_prgexpectedrj   r   r  rO  rP  r?  r  r  outliness                   rY   test_fit_and_score_verbosityr    s    N !<DA
XA
.C|~++A./KE 

& " ('( FCyyH
8}qxx1+....xx1+....r\   c            
          Sn S n[         R                  " [        U S9   [        S S S US [        R
                  S9  S S S 5        g ! , (       d  f       g = f)Nz&scoring must return a number, got Nonec                     g rf   r   )r   X_tests     rY   two_params_scorer%test_score.<locals>.two_params_scorer@	  s    r\   r  )r   r  r  r  r<  r   )r   r   r   r6   r   r  )r{  r  s     rY   rV  rV  =	  sF    <M 
z	7$	
 
8	7	7s   A
Ac                      S n [        SSSS9u  p[        SS9nUR                  X5        [        X1USU S9n/ S	QnU H  nS
R	                  U5      U;   a  M   e   g )Nc                 `    U R                  U5      n[        X#5      nUS   US   US   US   S.$ )N)r   r   rs  )r   r   )r   r   tnfpfntp)rk   r   )r  rj   r   rg  cms        rY   rh  Ptest_callable_multimetric_confusion_matrix_cross_validate.<locals>.custom_scorerO	  s8    Qa(hbhbhbhOOr\   (   r   r  )r7  r  r  r  r   )r   r  r  ztest_{})r   r@   rb   r0   r   )rh  rj   r   rG  rt  score_namesr/  s          rY   9test_callable_multimetric_confusion_matrix_cross_validater  N	  sg    P
 KDA

$CGGAMaGJ*K%333 r\   c                  B    [        SS9u  p[        [        5       XSSS9  g)zVCheck that regressors with partial_fit is supported.

Non-regression test for #22981.
r  r  Tr   )r  r   N)r   r1   r;   )rj   r   s     rY   *test_learning_curve_partial_fit_regressorsr  ^	  s"    
 +DA <>1dqQr\   c           	         [        SSSSU S9u  p[        R                  " U5      nX   X#   p![        5       nSn[        R
                  " [        US9   [        XAUS[        R                  S	9tpgpS
S
S
5        [        S5       H_  n	[        R                  " WU	   5      R                  5       (       d   e[        R                  " WU	   5      R                  5       (       a  M_   e   [        SWR                  S   5       H^  n	[        R                  " Xy   5      R                  5       (       a   e[        R                  " WU	   5      R                  5       (       d  M^   e   g
! , (       d  f       N= f)zKChecks for fit failures in `learning_curve` and raises the required warningr5  r   r   F)r7  rx  r  rF   r  z#10 fits failed out of a total of 25r  r   rR  Nr   r   )r   r   r;  r?   r   r  r   r1   r  r   isnanr-  r_   any)
global_random_seedrj   r   
sorted_idxsvcr#  r  rU  rV  r  s
             rY   -test_learning_curve_some_failing_fits_warningr  i	  s4    'DA AJ=!-q
%C;O	&o	>)7A!*
&
 
? QxxxC()--////xx
3(,,....  Q))!,-88K,-11333388JsO,002222 . 
?	>s   E!!
E/c           	      f   [        SS9u  p[        U5      n[        5       n[        SSU S9n[	        X1X$SSS9nSU;  d   e[	        X1X$SSS9nSU;   d   eUS   S	   nUS   S
   n[        U5      UR                  :X  d   e[        U5      UR                  :X  d   e[        U Vs/ s H  oR                  PM     snS5        [        U Vs/ s H  oR                  PM     snS5        [        UR                  X5      5       H$  u  n	u  p[        Xi   U
5        [        Xy   U5        M&     gs  snf s  snf )z<Check the behaviour of `return_indices` in `cross_validate`.Tr	  r   )r9  rF   r  r   F)r   r  return_indicesindicesrO  rP  r  r/  N)r   r>   r   r(   r0   r   r9  rL   r  rY  r=  )r  rj   r   r   r   rt  train_indicestest_indicesr  	split_idxexpected_train_idxexpected_test_idxs               rY   "test_cross_validate_return_indicesr  	  s5   %DAaA"$I	46H	IB	aqQVWJJ&&&	aqQUVJ
"""y)'2Mi(0L},,,|+++MBMMBCHLALLA2F>GQR>W:	:&=35GH<24EF ?X CAs   #D)	D.zfunc, extra_argsalphar   )r  r  c           
      H   [         R                  " [        SS9   U " S[        5       [        [
        S0 S.UD6  SSS5        [         R                  " [        SS9   U " S[        5       [        [
        0 0 S.UD6  SSS5        g! , (       d  f       NO= f! , (       d  f       g= f)	z2Check that we warn about deprecating `fit_params`.z`fit_params` is deprecatedr  r   )r   rj   r   r   r  Nz1`params` and `fit_params` cannot both be provided)r   rj   r   r  r   r   )r   r  FutureWarningrA   rj   r   r   r   r  
extra_argss     rY   test_fit_param_deprecationr  	  s     
m+G	H 	
)+qA!	
NX	
 
I
 
M
 	 	
)+	
 	

 
 
I	H

 
s   BB
B
B!)enable_metadata_routingc           	          [         R                  " [        SS9   U " S[        5       [        [
        / S.UD6  SSS5        g! , (       d  f       g= f)z{Check 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   rj   r   r  Nr   )r   r   r   rA   rj   r   r  s     rY   #test_groups_with_routing_validationr  	  sF      
z)I	J 	
)+		

 	
 
K	J	Js   A
Ac                 D    [        SSSS9u  p#U " S[        5       X#S.UD6  g)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   rw  )r   rj   r   Nr   )r   rA   )r  r  rj   r   s       rY   test_cross_validate_params_noner  	  s*    " JDAA&(AAjAr\   c                    [         R                  " S5      n[        R                  " [        US9   U " S[        5       [        [        [        / S9S.UD6  SSS5        U [        :X  a  g[         R                  " S5      n[        R                  " [        US9   U " S[        5       R                  SS9R                  SS9[        [        [        / S9S.UD6  SSS5        g! , (       d  f       N= f! , (       d  f       g= f)	zICheck 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   rj   r   r   Nz[metadata] are passed but are not explicitly set as requested or not requested for ConsumingClassifier.score, which is used withinTr   )rU  escaper   r   r   rA   rj   r   r  r.   set_fit_requestset_partial_fit_request)r  r  r  s      rY    test_passed_unrequested_metadatar  	  s      ii	FG 
/w	? 	
)+$		

 	
 
@   ii	HG 
/w	? 	
)+_d_+$$d$3$	
 	
 
@	?# 
@	?" 
@	?s   %C?C0
C-0
C>c                 p   [        5       n[        US9R                  SSS9n[        5       n[        US9R	                  SSS9n[        5       n[        US9R                  SS	S9n[        [        5      n[        R                  R                  S
5      n	U	R                  U5      n
U	R                  U5      nU	R                  S
SU5      nU	R                  U5      nU	R                  U5      nU	R                  U5      n[        [        [        USS9S9[         [        US9["        [        US9[$        [        US9[&        [        US9[(        [        5       0n[        UUUUS9nU [(        La  UR+                  U
US9  U " U4[        [,        US.UU    DUDSU0D6  U [(        La  [/        U5      (       d   eU H  n[1        USU R2                  SU
US9  M     [/        U5      (       d   eU H  n[1        USU R2                  UUS9  M     [/        U5      (       d   eU H  n[1        USU R2                  SUUS9  M     g)zYCheck 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  )rj   r   r   r   rs   objr&  parentsplit_paramsr   r  r=  )r  r&  r  r  r  rb   N)rD   rB   set_score_requestrC   set_split_requestrA   r  rO   rj   r   r]  r^  r_  randintr0   r  r/   r1   r3   r2   r.   updater   r   rE   r{   )r  r  scorer_registryr  splitter_registrysplitterestimator_registryr   r7  ra  r  r  r  r  r  r  scoring_argsr   _scorer	_splitter
_estimators                        rY   !test_validation_functions_routingr  $
  su     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                     [        [        5      n [        R                  R	                  S5      nUR                  U 5      nUR                  U 5      n[        5       n[        US9R                  SSS9n[        U[        [        [        5       S[        X#S9S9  [        U5      (       d   eU H  n[        US	S
SUUS9  M     g)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  )rj   r   r   r  r   r   r1   r  N)rO   rj   r   r]  r^  r_  rD   rA   r  r1   r   rC   r  r   rE   )r7  ra  r  r  r  r   r  s          rY   8test_learning_curve_exploit_incremental_learning_routingr  
  s    
 QI
))


"C+88I&L"##)N    

%)&7S !""""(
 #6+!	
 )r\   )r   r0  rU  r  r+  r  	functoolsr   ior   timer   numpyr   r   scipy.sparser   sklearnr   sklearn.baser   r	   r
   sklearn.clusterr   sklearn.datasetsr   r   r   r   r   r   sklearn.ensembler   sklearn.exceptionsr   r   sklearn.imputer   sklearn.linear_modelr   r   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._mockingrG   rH   sklearn.utils._testingrI   rJ   rK   rL   sklearn.utils.fixesrM   rN   sklearn.utils.validationrO   rQ   r   r   r   r   r  rj   r?  r   r   r  r   markparametrizer  r  r$  r1  r  rQ  r@  rA  r|  r  r  r  r  r  r  r  r  r  r  r  r  r-  r=  rB  rE  rM  rR  r[  rd  rf  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  r#  r4  r9  r@  rE  rG  r  r[  r]  r`  filterwarningsrg  ro  rr  r  rV  r  r  r  r  r  r  r  r  r  r  r   r\   rY   <module>r     sI     	 	 
        ! " > > "  4 I ( 
 
 
 7    " 
 A G 2 2 / % 5 &  " D  ? 1"] "6(> <" ",	",F 	"S8_m S8p GGGHH:; XX;<FF1I .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&%4K W4S0$NC.,,S(K\&-`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< 		$	'"((A3-PQ

( 		"	B		$	'"((A3-PQ
 -
 .

 		"	B		$	'"((A3-PQ
 -B .
B 		"	B		$	'"((A3-PQ
 -"
 .
"
J 		"	B		$	'"((A3-PQ
 -Y
 .
Y
x -"
 ."
r\   