
    e!hg                       d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlZddlZddlmZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZmZmZmZmZmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG ddlHmIZImJZJmKZK ddlLmMZM ddlNmOZO ddlPmQZQ ddlRmSZS ddlTmUZU ddlVmWZW ddlXmYZYmZZZ ddl[m\Z\m]Z] ddl^m_Z_m`Z`maZambZbmcZc ddldmeZe ddlfmgZgmhZh ddlimjZjmkZkmlZlmmZm ddlnmoZompZp dd lqmrZr  G d! d"e      Zs G d# d$es      Zt G d% d&e      Zu G d' d(eu      Zv G d) d*ee      Zw ej                  d+      Zy ej                  g d,      Z{ ej                  g d-      Z| ej                  d.      Z~ej                  j                  d/eo      d0        Zd1 Zd2 Zd3 Zej                  j                  d4d5d6g      ej                  j                  d7ep      d4efd8              Zd9 Zd: Zd; Zd< Zd= Zd> Zej                  j                  d/eo      d?        Zd@ ZdA ZdB Zej                  j                  d/eo      dC        ZdD ZdE ZdF ZdG Zej                  j                  d/eo      dH        ZdI ZdJ ZdK Zej                  j                  d/eo      dL        ZdM ZdN ZdO Zej                  j                  d/eo      dP        ZdQ ZdR ZdS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda Zdb Zej                  j                  d7ep      dc        Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Z G dm dne!      Zdo Zdp Zdq Zdr Zds Zdt Zdu Zdv Zdw Z G dx dye      Zej                  j                  dzej                  dg      d{        Zej                  j                  dzej                  dg      d|        Zd} Zej                  j                  d~      ej                  j                  dzej                  ddg      d               Zej                  j                  d~      ej                  j                  dzej                  ddg      ej                  j                  dd6d5g      ej                  j                  dd5d6g      d                             Zd Zej                  j                  dd5eddddfd6 e7eed      ddddfd5 e7eed      ddddfg      d        Zd Zd Zd Zd Zd Zej                  j                  deEi feFi feGd ej                  dg      dfg      d        Zej                  j                  deDi feCi feBi feEi feFi feGd ej                  dg      dfg       ed6      d               Zej                  j                  deDi feCi feBi feEi feFi feGd ej                  dg      dfg       ed6      d               Zej                  j                  deDi feCi feBi feEi feFi feGd ej                  dg      dfg       ed6      d               Zej                  j                  deDi feCi feBi feEi feFi feGd ej                  dg      dfg       ed6      d               Z ed6      d        Zy)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)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                   2    e Zd ZdZd ZddZd Zd	dZd Zy)
MockImprovingEstimatorz+Dummy classifier to test the learning curvec                 .    || _         d| _        d | _        y Nr   )n_max_train_sizestrain_sizesX_subset)selfrS   s     u/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/sklearn/model_selection/tests/test_validation.py__init__zMockImprovingEstimator.__init__e   s    !2    Nc                 <    || _         |j                  d   | _        | S rR   rU   shaperT   rV   rU   y_subsets      rW   fitzMockImprovingEstimator.fitj        #>>!,rY   c                     t         NNotImplementedErrorrV   Xs     rW   predictzMockImprovingEstimator.predicto       !!rY   c                     | j                  |      r%dt        | j                        | j                  z  z
  S t        | j                        | j                  z  S )Ng       @)_is_training_datafloatrT   rS   rV   rf   Ys      rW   scorezMockImprovingEstimator.scorer   sM    !!!$t//043I3IIII))*T-C-CCCrY   c                     || j                   u S rb   rU   re   s     rW   rj   z(MockImprovingEstimator._is_training_datay       DMM!!rY   rb   NN	__name__
__module____qualname____doc__rX   r_   rg   rn   rj    rY   rW   rP   rP   b   s    5

"D"rY   rP   c                   2     e Zd ZdZd fd	Zd ZddZ xZS )!MockIncrementalImprovingEstimatorz*Dummy classifier that provides partial_fitc                 @    t         |   |       d | _        || _        y rb   )superrX   xexpected_fit_params)rV   rS   r~   	__class__s      rW   rX   z*MockIncrementalImprovingEstimator.__init__   s     *+#6 rY   c                     | j                   |v S rb   r}   re   s     rW   rj   z3MockIncrementalImprovingEstimator._is_training_data   s    vv{rY   c                    | xj                   |j                  d   z  c_         |d   | _        | j                  rt	        | j                        t	        |      z
  }|rt        dt        |       d      |j                         D ]R  \  }}|| j                  v st        |      t        |      k7  s-t        d| dt        |       dt        |       d       y y )Nr   zExpected fit parameter(s) z
 not seen.zFit parameter z has length z; expected .)	rT   r\   r}   r~   setAssertionErrorlistitemsrN   )rV   rf   yparamsmissingkeyvalues          rW   partial_fitz-MockIncrementalImprovingEstimator.partial_fit   s    AGGAJ&1##$223c&kAG$0gzJ  %lln 
U$222|8!!_8% )(\,u:M9N%l1o%6a9 	 $rY   rb   )rt   ru   rv   rw   rX   rj   r   __classcell__r   s   @rW   rz   rz   }   s    47
rY   rz   c                   2    e Zd ZdZddZd Zd Zd	dZd Zy)
MockEstimatorWithParameterz-Dummy classifier to test the validation curvec                      d | _         || _        y rb   )rU   param)rV   r   s     rW   rX   z#MockEstimatorWithParameter.__init__   s    
rY   c                 <    || _         |j                  d   | _        | S rR   r[   r]   s      rW   r_   zMockEstimatorWithParameter.fit   r`   rY   c                     t         rb   rc   re   s     rW   rg   z"MockEstimatorWithParameter.predict   rh   rY   Nc                 Z    | j                  |      r| j                  S d| j                  z
  S )N   )rj   r   )rV   rf   r   s      rW   rn   z MockEstimatorWithParameter.score   s&    !33A6tzzJA

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

$**1-qwwqzA > #6   %%0 #**""1%""1%

	3 0 		!rY   c                 b    | j                   r|j                  t        |      d      }|d d df   S )Nr   r   )r   r   r   rV   Ts     rW   rg   zMockClassifier.predict  s*    ==		#a&"%AAwrY   c                     |S rb   rx   r   s     rW   predict_probazMockClassifier.predict_proba	  s    rY   c                 L    ddt        j                  | j                        z   z  S )N      ?r   )r   absr   rl   s      rW   rn   zMockClassifier.score  s    a"&&.())rY   c                 4    | j                   | j                  dS )Nr   r   )rV   deeps     rW   
get_paramszMockClassifier.get_params  s    VV77rY   )r   F)	NNNNNNNNNrr   )F)
rt   ru   rv   rw   rX   r_   rg   r   rn   r   rx   rY   rW   r   r      sA    7! !>@
*8rY   r   )      )r   r   r   r   r   r   r   r      r      r      r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   coo_containerc                    t               } | t              }t        dd      D ]  }||_        t	        |t        t
              }t        ||j                  t        t
                     t        j                  t
        t
        d d d   g      }t	        |||      }t        ||j                  ||             t	        ||t
              }t        ||j                  |t
                     t	        |||      }t        ||j                  ||              d }t        |      }t	        |t        j                         t
        j                         d      }t        |      }t	        |t        t
        j                         d      }t        d d d d t        j                  f   }t        d	
      }t	        ||t
              }t        d
      }t        j                  t              5  t	        ||t
        d       d d d        y # 1 sw Y   y xY w)Ni
   r   c                 "    t        | t              S rb   
isinstancer   r   s    rW   <lambda>z&test_cross_val_score.<locals>.<lambda>5      :a. rY   check_Xr   cvcheck_yT)r   Fraiseerror_score)r   rf   ranger   r.   y2rK   rn   r   column_stackrF   tolistnewaxispytestraisesr   )r   clfX_sparser   scoresmultioutput_y
list_checkX_3ds           rW   test_cross_val_scorer     s   

CQH3^ G a,6399Q#34 R"X7 h>6399X}#EF h36399Xr#:; !h>6399X}#EF!G& /J
Z
0CS!((*biika@F
Z
0CS!RYY[Q7F Q2::D
$
'CS$+F
%
(C	z	" <T27;< < <s   #H  H	c                  z    t        d      \  } }t        d      }t        |dddgi      }t        || |d	
       y )NT
return_X_yauto)gammaCr   r   )
param_gridr   )n_jobs)r   r>   r$   r/   )rf   r   r   grids       rW   test_cross_validate_many_jobsr   F  s>     %DAq
F
Cq"g7D4Aa(rY   c            
         t        d      \  } }t               }d}t        j                  t        |      5  t        || |t        t              t        t              f       d d d        t        j                  t        |      5  t        || |t        t              f       d d d        t        j                  t        |dz         5  t        || |d       d d d        t        j                  t        |dz         5  t        || |d	       d d d        t        j                  t        |      5  t        || |t        t              gg       d d d        t        j                  t        d
      5  t        || |t                      d d d        t        t              }dt        j                   d}t        j                  t        |      5  t        || ||       d d d        t        j                  t        |      5  t        || |d|i       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   cxY w# 1 sw Y   :xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   random_statez.*must be unique strings.*matchscoringzEmpty list.*rx   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   r/   r   r!   r   dictr    r   nanwarnsUserWarning)rf   r   	estimatorerror_message_regexpmulticlass_scorerwarning_messages         rW   )test_cross_validate_invalid_scoring_paramr  P  s@   A.DAq I 8 
z)=	> 
 1;~3NO		

 
z)=	> Qy!Q_1M0OPQ 
z)=)N	O 4y!Q34 
z)=)M	N Jy!Q0HIJ 
z)=	> Ry!Q+o2N1O0PQR 
z	9 :y!Q9: $$CD
	99; A	  
k	9 Cy!Q0ABC 
k	9 Ly!Q8I0JKL LO
 
Q Q4 4J JR R: :C CL Ls_   ,H!H.
H; I3I5I"I.I:!H+.H8;III"I+.I7:Jc                      t        d      \  } }t        dt               fdt               fg      }t	        || |d      }|d   }t        |t              sJ t        d |D              sJ y )NTr   imputer
classifier)return_estimatorr  c              3   <   K   | ]  }t        |t                y wrb   )r   r;   ).0r  s     rW   	<genexpr>z7test_cross_validate_nested_estimator.<locals>.<genexpr>  s     K9z)X.Ks   )r   r;   r   r   r/   r   r   all)rf   r   pipelineresults
estimatorss        rW   $test_cross_validate_nested_estimatorr    sv     $'FQ(>+,	
H Xq!dCG%Jj$'''K
KKKKrY   
use_sparseFTcsr_containerc           
         t               }t        dd      \  }}t        d      }t        dd      \  }}t	        dd      }| r ||      } ||      }|||f|||ffD ]  \  }	}
}t        |d      }t        |d	      }g }g }g }g }g }|j                  |	|
      D ]  \  }}t        |      j                  |	|   |
|         }|j                   |||	|   |
|                |j                   |||	|   |
|                |j                   |||	|   |
|                |j                   |||	|   |
|                |j                  |        t        j                  |      }t        j                  |      }t        j                  |      }t        j                  |      }t        j                  |      }|||||f}t        ||	|
||       t        ||	|
||        y )
N   r   	n_samplesr   r   linearkernelr   neg_mean_squared_errorr   r2)r'   r   r   r   r>   r   splitr
   r_   appendr   array"check_cross_validate_single_metric!check_cross_validate_multi_metric)r  r  r   X_regy_regregX_clfy_clfr   rf   r   est
mse_scorer	r2_scorertrain_mse_scorestest_mse_scorestrain_r2_scorestest_r2_scoresfitted_estimatorstraintestr   s                         rW   test_cross_validater2    s    
B #Ra@LE5
Q
C '!DLE5
XA
.Ce$e$eS)E5#+>? $A	1c"30HI
!#t4	88Aq> 	*KE4*..51U84C##JsAeHah$GH""9S!E(AeH#EF"":c1T7AdG#DE!!)C4!D'"BC$$S)	* 88$45((?3((?3.1HH%67 
 	+31fbA)#q!VR@I$ArY   c           	      H   |\  }}}}}	dD ]  \  }
}|
r!t        | ||dd|      }t        |d   |       nt        | ||dd|      }t        |t              sJ t	        |      |k(  sJ t        |d   |       |
r#t        | ||dgd|      }t        |d	   |d       nt        | ||dgd|      }t        |t              sJ t	        |      |k(  sJ t        |d
   |        t        | ||dd|      }t        |d         D ]  \  }}|j                  j                         }t        |      r|j                         }|	|   j                  j                         }t        |      r|j                         }t        ||       t        |j                  |	|   j                          y )N))Tr   )Fr   r  Tr   return_train_scorer   train_scoreF
test_scorer  train_r2test_r2)r   r
  r   r  )r/   rJ   r   r   r   	enumeratecoef_copyr   toarrayrI   
intercept_)r   rf   r   r   r   r+  r,  r-  r.  r/  r5  dict_lenmse_scores_dictr2_scores_dictkr(  est_coeffitted_est_coefs                     rW   r!  r!    s    	 )@ &M$H,0#'O &om&DFVW,0#(O /4000?#x///!/,"?Q +QD6drN &nZ&@/SWX+QD6eN .$///>"h...!.";^LM&MR %Q3drO OK89 
M399>>#H'')H+A.4499;O$-557OHo6CNN,=a,@,K,KL
MrY   c           
         |\  }}}}}	d }
dt        t              dd|
f}h d}|j                  ddh      }dD ]  }|D ]  }|r0t        | |||d|	      }t	        |d   |       t	        |d   |       nt        | |||d
|	      }t        |t              sJ t        |j                               |r|n|k(  sJ t	        |d   |       t	        |d   |       t        |d   t        j                        sJ t        |d   t        j                        sJ t        |d   t        j                        sJ t        |d   t        j                        sJ t        j                  |d   dk\        sJ t        j                  |d   dk        sJ t        j                  |d   dk\        sJ t        j                  |d   dk        rJ   y )Nc                 X    | j                  |      }t        ||      t        ||       dS )Nr  r  )rg   r"   r   )r   rf   r   y_preds       rW   custom_scorerz8check_cross_validate_multi_metric.<locals>.custom_scorer  s0    Q1f%'9!V'D&D
 	
rY   rG  r  >   r9  fit_time
score_timetest_neg_mean_squared_errorr8  train_neg_mean_squared_error)TFTr4  Fr9  rL  rJ  rK  r   r   )r   r"   unionr/   rJ   r   r   r   keysr   ndarrayr  )r   rf   r   r   r   r+  r,  r-  r.  r/  rI  all_scoringkeys_sans_trainkeys_with_trainr5  r   
cv_resultss                    rW   r"  r"    s    	
 	)h'&>	
 	KO &++	34O , "9" !	9G!+Aw4B
 **Z*@/R)=>@P ,Aw5R
 j$///z()#5?   &j&;^L%89?
 j3RZZ@@@j)FGTTTj4bjjAAAj6

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

 $'DAq
Xu
=Cc1a0CDE;;*$$$
**Q-CS61S6qA	  
z)=	> W#q!q(9BUVW W'
 
&W Ws   "E">E."E+.E7c                      t        ddd      \  } }t        t        d      | |d      }|j                  d	k(  sJ t	        d
      \  } }t        t        d      | |d      }|j                  dk(  sJ y )Nr   r
  r   r  r  r  r   r  r
  r   Tr   r  r   r-   r   r\   r   rf   r   r  s      rW   *test_cross_val_predict_predict_proba_shaper  
  sz    bqIDAq+.1_E ;;'!!!%DAq+.1_E ;;("""rY   c                      t        ddd      \  } }t        t        d      | |d      }|j                  d	k(  sJ t	        d
      \  } }t        t        d      | |d      }|j                  dk(  sJ y )Nr   r
  r   r  r  r  predict_log_probar  r  Tr   r  r  r  s      rW   .test_cross_val_predict_predict_log_proba_shaper     s|    bqIDAq+.1=PE ;;'!!!%DAq+.1=PE ;;("""rY   c                    t               }|j                  |j                  }} | |      }t        j                  ||d d d   g      }t        dd      }t        |||      }|j                  dk(  sJ t        |||      }|j                  dk(  sJ t        |||      }t        |j                  d       t        |||      }t        |j                  d       d }t        |      }t        ||j                         |j                               }t        |	      }t        |||j                               }t        t        d
      |j                         |j                         d      }t        t        d
      ||j                         d      }|d d d d t        j                  f   }	d }
t        |
      }t        ||	|      }t        |j                  d       y )Nr   Fr   )fit_interceptr   )r  )r  r   c                 "    t        | t              S rb   r   r   s    rW   r   z4test_cross_val_predict_input_types.<locals>.<lambda>C  r   rY   r   r   r  r  r  r  c                      | j                   dk(  S )Nr   )r   r   s    rW   r   z4test_cross_val_predict_input_types.<locals>.<lambda>Z  s    1 rY   )r   rx  ry  r   r   r   r-   r\   rK   rF   r   r   r   )r   r}  rf   r   r   r   r   predictionsr   r   check_3ds              rW   "test_cross_val_predict_input_typesr'  *  s   ;D99dkkqAQHOOQ$B$L1M
e!
4C $CA.K&&& $C=AK(((#C15K{((&1 $C=AK{(((3 /J
Z
0C#CQXXZ@K
Z
0C#CAHHJ7K $+.	
	
"	K $+.		
"	K Q2::D$H
X
.C#Cq1K{((&1rY   c                    	 t         t         fg} 	 ddlm}m} | j	                  ||f       | D ]C  \  	 t               	t              }}fd}	fd}t        ||      }t        |||d       E y # t
        $ r Y Tw xY w)Nr   r^  c                     t        |       S rb   rb  rc  s    rW   r   z/test_cross_val_predict_pandas.<locals>.<lambda>l  re  rY   c                     t        |       S rb   rb  rg  s    rW   r   z/test_cross_val_predict_pandas.<locals>.<lambda>m  ri  rY   rj  r   r   )
rG   rk  r_  r`  r  rl  rf   r   rF   r-   rm  s
           @@rW   test_cross_val_predict_pandasr+  `  s    ]+,E,fi() ). 2$
$&q):b>e<: <H#tUq12  rt  c                  :   t        dddddd      \  } }d|d<   t        dd      }t        d      }t        |j	                  | |            \  }}t        || ||d	
      }||d      d   dk(  sJ t        j                  ||d      d d df   dk(        sJ t        j                  ||d      d d ddf   dkD        sJ t        j                  ||d      dkD        sJ t        |j                  d      t        j                  |j                        d       y )Nr  r   r   r   )r  r  n_redundantr  n_clusters_per_classr   r  r   r  r  r   r  axis   )decimal)r   r   r,   r   r  r-   r   r  rJ   r  r  r\   )rf   r   r   r   r0  r1  
yhat_probas          rW   !test_cross_val_predict_unbalancedr5  r  s"   DAq AaD
!K
@C	!	$Brxx1~&KE4"31OLJT!W:a=A66*T!W%ad+q011166*T!W%a1f-122266*T!W%)***jnn!n4bggagg6FPRSrY   c                      t               } t        j                  j                  d      }|j	                  dd      }t        | |d dd      }t        |d d df   |       t        | |d dd      }t        ||       y )	Nr  r  r   r   rg   )r   r   r  r   r   )r   r   randomRandomStaterandr-   rH   )mock_classifierrngrf   y_haty_hat_probas        rW   test_cross_val_predict_y_noner>    ss    $&O
))


#CbAoqDQyQEAadGU##dqK A{#rY   c                    t               }|j                  |j                  }}t               }d | t	        j
                  |j                  d               i}t        ||||d      }t        |t	        j                  d             y )Nr   r   r   )r   r   )
r   rx  ry  r   r   r  r\   r.   rK   r  )r   r}  rf   r   r   r  r   s          rW   &test_cross_val_score_sparse_fit_paramsr@    sf    ;D99dkkqA

C(-qwwqz8J*KLJQ*;Aq"''!*%rY   c                     d} d}t        | dddddd      \  }}t        | |dz
  |z  z        }dD ]   }t        j                  d	      5 }t	        |||t        |
      t        j                  ddd      |d      \  }}}	}
}d d d        t              dkD  rt        d|d   j                  z        j                  dk(  sJ 	j                  dk(  sJ 
j                  dk(  sJ j                  dk(  sJ t        t        j                  ddd             t        |j                  d      t        j                  ddd             t        |	j                  d      t        j                  ddd             |
j                  dk(  sJ |j                  dk(  sJ t        j                  d	      5 }t	        |||t!        ||       t        j                  ddd      |      \  }}}d d d        t        |      dkD  rt        d|d   j                  z        t        |       t        |	        y # 1 sw Y   xY w# 1 sw Y   [xY w)Nr  r   r   r   r   r  r  r  r-  rX  r.  r   FTTr  r  皙?r   r   )r   rT   rE   return_timesUnexpected warning: %r)r   r   rV  r0  ffffff?r  r  r  )r   rT   rE   )r   rP   r  r  r0   r'   r   linspacer   RuntimeErrormessager\   rK   rJ   r  rw  r6   )r  r  rf   r   r  shuffle_trainwrT   train_scorestest_scores	fit_timesscore_timestrain_sizes2train_scores2test_scores2s                  rW   test_learning_curverU    s[   IHDAq 'yX\X4M'NOI& -=$$D1 	Q (+KKS"5%!	  q6A:7!A$,,FGG!!W,,,  G+++')))  G+++;Ar2(>?!,"3"3"3";R[[cSU=VW!+"2"2"2":BKKSRT<UV )+++  I--- $$D1 	Q8F"H	JKKS"5%95L-	 q6A:7!A$,,FGG!->!,<[-=	 	@	 	s   
8H526I5H?	I	c                     t        ddddddd      \  } }t        d      }t        || d dt        j                  dd	d
            \  }}}t        |t        j                  ddd
             t        |j                  d      t        j                  dd	d
             t        |j                  d      t        j                  dd	d
             y )Nr  r   r   r   rB  rV  r   rD  r   r   )r   r   rT   r0  rG  )r   rP   r0   r   rI  rK   rJ   r  rf   r  r  rT   rN  rO  s         rW    test_learning_curve_unsupervisedrX    s    DAq 'r*I-;1Cb0I.*K{ {BKK2r$:;l//Q/7S#r9RSk..A.6Cb8QRrY   c            	         t        ddddddd      \  } }t        d      }t        j                  }t	               t        _        	 t        || |dd      \  }}}t        j                  j                         }t        j                  j                          |t        _        d	|v sJ y # t        j                  j                         }t        j                  j                          |t        _        w xY w)
Nr  r   r   r   rB  rV  r   )r   verbosez[learning_curve])r   rP   sysstdoutr   r0   getvalueclose)rf   r   r  
old_stdoutrT   rN  rO  outs           rW   test_learning_curve_verbosera    s    DAq 'r*IJCJ 1?q!12
.\; jj!!#

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


s   B' 'A	C0c            	          t        ddddddd      \  } }t        d      }t        j                  t              5  t        || |d       d d d        y # 1 sw Y   y xY w)Nr   r   r   rB  T)exploit_incremental_learningr   rP   r   r   r   r0   rf   r   r  s      rW   5test_learning_curve_incremental_learning_not_possiblerf  	  sd    DAq 'q)I	z	" Ky!QTJK K Ks   AAc                     t        ddddddd      \  } }t        d      }dD ]  }t        || |dd	t        j                  d
dd      |      \  }}}t        |t        j                  ddd             t        |j                  d      t        j                  ddd             t        |j                  d      t        j                  d
dd              y )Nr  r   r   r   rB  rV  rC  r   TrD  r   r   )r   rc  rT   rE   r0  rG  r   rz   r0   r   rI  rK   rJ   r  )rf   r   r  rL  rT   rN  rO  s          rW   (test_learning_curve_incremental_learningri    s    DAq 2"5I& W1?)-Cb1!2
.\; 	;Ar2(>?!,"3"3"3";R[[cSU=VW!+"2"2"2":BKKSRT<UVWrY   c                     t        ddddddd      \  } }t        d      }t        || d ddt        j                  d	d
d            \  }}}t        |t        j                  ddd             t        |j                  d      t        j                  dd
d             t        |j                  d      t        j                  d	d
d             y )Nr  r   r   r   rB  rV  r   TrD  r   r   )r   r   rc  rT   r0  rG  rh  rW  s         rW   5test_learning_curve_incremental_learning_unsupervisedrk  3  s    DAq 2"5I-;	
%)KKS"-.*K{ {BKK2r$:;l//Q/7S#r9RSk..A.6Cb8QRrY   c            	         t        ddddddd      \  } }t        j                  ddd      }t        dd d	
      }t	        || ||dd      \  }}}t	        || |d|d	      \  }}}	t        ||       t        |j                  d      |j                  d             t        |j                  d      |	j                  d             y )Nr  r   r   r   rB  r  r   r   Fmax_itertolrE   r   T)rT   r   rc  )r   rT   rc  r0  )r   r   rI  r   r0   rK   rJ   r  )
rf   r   rT   r  train_sizes_inctrain_scores_inctest_scores_inctrain_sizes_batchtrain_scores_batchtest_scores_batchs
             rW   <test_learning_curve_batch_and_incremental_learning_are_equalrv  K  s    DAq ++c3*K+QD%PI9G		%):6O% @N		%*@<)+< (9:1%'9'>'>A'>'F !$&7&<&<!&<&DrY   c            	         t        ddddddd      \  } }t        d      }t        j                  t              5  t        || |dddg       d d d        t        j                  t              5  t        || |dd	d
g       d d d        t        j                  t              5  t        || |dddg       d d d        t        j                  t              5  t        || |dddg       d d d        t        j                  t              5  t        || |dddg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   y xY w)Nr  r   r   r   rB  rV  r   r   rT   r  r   rD  g?   rd  re  s      rW   0test_learning_curve_n_sample_range_out_of_boundsrz  r  sT   DAq 'r*I	z	" By!Q11a&AB	z	" Fy!Q13*EF	z	" Fy!Q13*EF	z	" Cy!Q11b'BC	z	" Cy!Q11b'BC CB BF FF FC CC Cs;   D&.D2"D>E

E&D/2D;>E
EEc                     t        ddddddd      \  } }t        d      }d}t        j                  t        |      5  t        || |dt        j                  dd	d      
      \  }}}d d d        t        ddg       y # 1 sw Y   xY w)Nr   r   r   r   rB  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   rx  )	r   rP   r   r   r  r0   r   rI  rK   )rf   r   r  r  rT   r  s         rW   1test_learning_curve_remove_duplicate_sample_sizesr|    s    DAq 'q)I	G  
nO	< 
*q!r{{4a/H
Q
 {QF+	
 
s   *A??Bc                     t        ddddddd      \  } }t        d      }t        d      }t        || ||t	        j
                  d	d
d            \  }}}t        |t	        j
                  ddd             t        |j                  d      t	        j
                  dd
d             t        |j                  d      t	        j
                  d	d
d             y )Nr  r   r   r   rB  rV  r   r  rD  r   r   rx  r0  rG  )	r   rP   r'   r0   r   rI  rK   rJ   r  )rf   r   r  r   rT   rN  rO  s          rW   (test_learning_curve_with_boolean_indicesr~    s    DAq 'r*I		B-;1aBBKKS",E.*K{ {BKK2r$:;l//Q/7S#r9RSk..A.6Cb8QRrY   c                     t        j                  ddgddgddgddgd	d
gddgddgddgddgddgddgd	d
gddgddgddgg      } t        j                  g d      }t        j                  g d      }t        dd d      }t        d      }t	        || ||dt        j
                  ddd      |dd	      \  }}}t        |j                  d      t        j                  g d             t        |j                  d      t        j                  g d              t        j                  t              5  t	        || ||dt        j
                  ddd      |d!"       d d d        t	        || ||dt        j
                  ddd      |ddd#
      \  }}	}
t        |	j                  d      |j                  d             t        |
j                  d      |j                  d             y # 1 sw Y   xY w)$Nr   r   r   r   r   r   r  r     r2        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   Frm  r  333333?r   T)r   r   rT   r  rE   r   r0  )r  r  Iq?)r  r  r  r   )r   r   rT   r  r   )r   r   rT   r  rE   r   rc  )r   r   r   r%   r0   rI  rJ   r  r   r   r   )rf   r   r  r  r   rs  rt  ru  rp  rq  rr  s              rW    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   3)G++G4c                      t        j                  d      j                  dd      } t        j                  dgdz  dgdz  z         }t	        d      }d}t        j                  t        |	      5  t        || |d
       d d d        d}t        j                  t        |	      5  t        || |d
dt        j                  d      i       d d d        t        || |d
dt        j                  d      i       y # 1 sw Y   zxY w# 1 sw Y   ;xY w)Nr  r   r   r   r   Tr  r  r   r   r   z/sample_weight.shape == \(1,\), expected \(2,\)!r   )r   r   )r   r  r   r   rF   r   r   r   r0   r   r  r  s       rW   test_learning_curve_paramsr    s    
		#r2&A
!qA37"#A
D
9C4G	~W	5 7sAqg67 AG	z	1 
A7ORWWQZ3P	

 Qw/M7 7
 
s   /C8$&D8DDc                  R   t        ddddddd      \  } }t        ddg      }d}t        j                  t        |	      5  t        || |d
dt        j                  ddd      d       d d d        d}t        j                  t        |	      5  t        || |d
dt        j                  ddd      ddt        j                  d
      i       d d d        t        || |d
dt        j                  ddd      ddt        j                  d      i       y # 1 sw Y   xY w# 1 sw Y   SxY w)Nr  r   r   r   rB  rV  r   z9Expected fit parameter\(s\) \['sample_weight'\] not seen.r   r   TrD  r   r   r   )r   rc  rT   r   z2Fit parameter sample_weight has length 3; expected)r   rc  rT   r   r   )	r   rz   r   r   r   r0   r   rI  r  )rf   r   r  r  s       rW   /test_learning_curve_incremental_learning_paramsr    s)   DAq 2"6GHIJG	~W	5 	
)-Cb1	
	
 CG	~W	5 

)-Cb1#RWWQZ0		


 		%)KKS"-,	1	
 	


 

s    (D>DDD&c            	         t        ddddddd      \  } }t        j                  ddd      }t        j                  d      5 }t        t               | |d|d	      \  }}d d d        t              dkD  rt        d
|d   j                  z        t        j                  d      |       t        j                  d      d|z
         y # 1 sw Y   nxY w)Nr   r   r   rB  r   Tr  r   
param_nameparam_ranger   rF  r0  )r   r   rI  r  r  r2   r   r   rJ  rK  rJ   r  )rf   r   r  rM  rN  rO  s         rW   test_validation_curver  D  s    DAq ++aB'K		 	 	- 
$4&(#%
!k
 1vz3adllBCCl//Q/7Ek..A.6KH
 
s   CCc            	          t        ddddddd      \  } }t        j                  ddd      }t        t	               | |d|d      \  }}y )Nr   r   r   rB  r   r   r  )r   r   rI  r2   r   )rf   r   r  r  s       rW   %test_validation_curve_clone_estimatorr  _  s\    DAq ++aB'K-/		DAqrY   c                  \   d} d}t        dd      \  }}t        t        dd      ||dg dt        || 	      
      }t	        t        j                  t        j                  |      dd d f   d        t        t        dd      ||dg dt        |d      
      }t	        t        j                  t        j                  |      dd d f   d        t        t        dd      ||dg dt        |      
      }t	        t        j                  |      t        j                  |             y )Nr  r   r   r  r  r  r   )rD  rD  r  r  rH  r  )r   r   r   r   r   Tr  rE   r  )
r   r2   r>   r6   rJ   r   vsplithstackr'   r   )r  r  rf   r   scores1scores2scores3s          rW   +test_validation_curve_cv_splits_consistencyr  u  s   IH1=DAq8!,		(H	BG ryy7);L!O)LaPQ8!,		((D1G ryy7);L!O)LaPQ8!,		((#G bhhw/'1BCrY   c                  8   t        j                  d      j                  dd      } t        j                  dgdz  dgdz  z         }t	        d      }d}t        j                  t        |	      5  t        || |d
g dd       d d d        d}t        j                  t        |	      5  t        || |d
g dddt        j                  d      i       d d d        t        || |d
g dddt        j                  d      i       y # 1 sw Y   xY w# 1 sw Y   ?xY w)Nr  r   r   r   r   Tr  r  r   	foo_param)r   r   r   r   )r  r  r   r  r   )r  r  r   r   )r   r  r   r   rF   r   r   r   r2   r   r  r  s       rW   test_validation_curve_paramsr    s   
		#r2&A
!qA37"#A
D
9C4G	~W	5 
"!	

 AG	z	1 	
"!#RWWQZ0	
	
 		-+
 
	
 	
s   /D(*DDDc                  Z   t         j                  j                  d      } t        j                  d      }| j	                  |       t        |d      sJ t        t        j                  |d      d      rJ d|d<   t        |d      rJ t        t        j                  |df      d      rJ y )Nr   r     )r   r7  r8  r  rE   r3   deleter  )r;  r  s     rW   test_check_is_permutationr    s    
))


"C
		#AKKN C((($RYYq"%5s;;;AaD$Q,,, %RYY1v%6<<<<rY   c                     t        ddddd      \  }} | |      } | |      }t        t        d            }t        |||d	      }t        |||d	      }|j	                         }t        ||       y )
Nr   r   FT)rX  n_labelsallow_unlabeledreturn_indicatorr   r  rY  r   r   )r   r8   r>   r-   r=  rJ   )r  rf   r   r   y_sparseclassifr  preds_sparses           rW   (test_cross_val_predict_sparse_predictionr    s~     *DAq QHQH!#X"67Ggq!3E$WhRHL'')LlE2rY   c           
         t        dd      }|j                  dk(  r|dk(  rt        |      fnt        |      df}n|j                  }t	        j
                  |      }|j                  ||      D ]>  \  }}t        |       j                  ||   ||         }  t        | |      ||         ||<   @ ||dz   |dz
  |j                  d      fD ]  }	t        t        | ||	||      |        y	)
z@Helper for tests of cross_val_predict with binary classificationr   Fr  r   r  r   strr   N)r'   r   r   r\   r   rz  r  r
   r_   getattrastyperH   r-   )
r(  rf   r   r  r   	exp_shapeexpected_predictionsr0  r1  tgs
             rW   check_cross_val_predict_binaryr    s    	5	)B 	vv{!'+>!>SVISVQK	GG	88I.xx1~ CtCjnnQuXqx0%9WS&%9!D'%BT"C
 !a%Q0 
c1bB?AU	

rY   c           
         t        dd      }t        j                  t        j                        j                  }||dd}t        j
                  t        |      t        t        |            f||   t        j                        }t        j                  |d      \  }}	|j                  ||	      D ]l  \  }
}t        |       j                  ||
   |	|
         }  t        | |      ||         }t        j                  |	|
         }||t        j                  ||      <   n ||d	z   |d
z
  |j                  d      fD ]  }t        t!        | ||||      |        y)zDHelper for tests of cross_val_predict with multiclass classificationr   Fr  r   r  r  r   rv  Treturn_inverser   r   r  r   N)r'   r   finfor  minr  r   r   r   r  r
   r_   r  ix_r  rH   r-   )r(  rf   r   r  r   	float_mindefault_valuesr  r  y_encr0  r1  
fold_preds
i_cols_fitr  s                  rW   "check_cross_val_predict_multiclassr    s@   	5	)B $((I&&N
 77	QSV~f5RZZ yy40HAuxx5) DtCjnnQuXuU|4)WS&)!D'2
YYuU|,
9CRVVD*56	D !a%Q0 
c1bB?AU	

rY   c                    t        dd      }t        j                  t        j                        j                  }||dd}|j
                  d   }g }t        |      D ]y  }	t        t        |dd|	f               }
|
dk(  r|d	k(  rt        |      f}nt        |      |
f}|j                  t        j                  |||   t        j                  
             { t        |j
                  d         D cg c]8  }t        j                  |dd|f   d      d   ddt        j                  f   : }}t        j                  |d      }|j                  ||      D ]  \  }}t        |       j!                  ||   ||         }  t#        | |      ||         }t        |      D ]`  }	t        j                  ||   dd|	f         }||	   j$                  dk(  r||	   ||	   |<   @t        j&                  ||      }||	   ||	   |<   b  ||dz   |dz
  |j)                  d      fD ]V  }t+        | ||||      }t        |      t        |      k(  sJ t        t        |            D ]  }t-        ||   ||           X yc c}w )zCheck the output of cross_val_predict for 2D targets using
    Estimators which provide a predictions as a list with one
    element per class.
    r   Fr  r   r  r   Nr   r  rv  Tr  r0  r  r   )r'   r   r  r  r  r\   r   r   r   r  r  r   r   concatenater  r
   r_   r  r   r  r  r-   rH   )r(  rf   r   r  r   r  r  	n_targetsexpected_predsi_coln_classes_in_labelr  r  
y_enc_colsr  r0  r1  r  	fold_colsidxr  cv_predict_outputs                         rW   "check_cross_val_predict_multilabelr    s   
 
5	)B $((I&&N
 
INy! 
 Qq%x[!12"v1D'DQ	IQ!34IGGI~f5RZZH	

 qwwqz" 			!AqD'$/21bjj=AJ  NN:A.Exx5) 
?tCjnnQuXuU|4)WS&)!D'2
9% 	?E		%,q%x"89Ie$))Q..8.?u%d+ffT9--7->u%c*	?
? !a%Q0 E-c1bBO$%^)<<<<s,-. 	EA-a0.2CD	EE%s   3=I<c                 N    t        dd      \  }}dD ]  }t        | |||        y )Nr   r   )rX  r   r  r   r  )r   r  )r(  rf   r   r  s       rW   *check_cross_val_predict_with_method_binaryr  O  s1     ;DAqM :&sAq&9:rY   c                     t               }|j                  |j                  }}t        ||d      \  }}dD ]  }t	        | |||        y )Nr   r   r  )r   rx  ry  rE   r  )r(  r}  rf   r   r  s        rW   .check_cross_val_predict_with_method_multiclassr  W  sI    ;D99dkkqA1aa(DAqM >*31f=>rY   c                  X    t        t        d             t        t        d             y )Nr  r  )r  r   r  rx   rY   rW   "test_cross_val_predict_with_methodr  _  s     ./A/UV2+.rY   c                      t               } | j                  | j                  }}t        ||d      \  }}dD ]  }t	        dd      }t        ||||        y )Nr   r   r  log_lossr   )lossr   )r   rx  ry  rE   r   r  )r}  rf   r   r  r(  s        rW   &test_cross_val_predict_method_checkingr  f  sW     ;D99dkkqA1aa(DAqM >!<*31f=>rY   c                      t               } | j                  | j                  }}t        ||d      \  }}t	        t        dd      dddgid	
      }dD ]  }t        ||||        y )Nr   r   r  r  r/  r   rD  r   r   r   r  )r   rx  ry  rE   r$   r   r  )r}  rf   r   r(  r  s        rW   /test_gridsearchcv_cross_val_predict_with_methodr  q  sm    ;D99dkkqA1aa(DAq
;?#QxUVC N >*31f=>rY   c                      d} d}t        | d|dd      \  }}t        t        dd	            }d
D ]  }t        ||||        y )Nr  r   r   r   r  r  r  rX  r  r   r  r   )r  r   )r   r  r  )r   r8   r   r  )n_samprX  rf   r   r(  r  s         rW   1test_cross_val_predict_with_method_multilabel_ovrr  |  s\     FI)1	aVXDAq 0RST
UC8 A&sAq@ArY   c                       e Zd Zd Zy)RFWithDecisionFunctionc                     | j                  |      }d}t        |t              sJ |       |D cg c]  }|j                  d   dk(  r	|d d df   n|! }}|S c c}w )Nz?This helper should only be used on multioutput-multiclass tasksr   r   r   )r   r   r   r\   )rV   rf   probsmsgr  s        rW   r  z(RFWithDecisionFunction.decision_function  se    ""1%O%&++&=BCQWWQZ1_1b5!3CC Ds   $AN)rt   ru   rv   r  rx   rY   rW   r  r    s    rY   r  c                      d} t        dd| dd      \  }}|d d dfxx   |d d df   z  cc<   d	D ]P  }t        dd
      }t        j                         5  t        j                  d       t        ||||       d d d        R y # 1 sw Y   ]xY w)Nr   r  r   r   r  r  r   r   r   r  r  n_estimatorsr   ignorer  )r   r  r  r  simplefilterr  )rX  rf   r   r  r(  s        rW   0test_cross_val_predict_with_method_multilabel_rfr    s     I)Y1SUDAq adGqAwGM I$!!D$$& 	I!!(+.sAqH	I 	II	I 	Is   %BB	c                  V   t         j                  j                  d      } | j                  ddd      }t        j                  g d      }t        d      }dD ]B  }t        j                         5  t        j                  d	       t        ||||       d d d        D y # 1 sw Y   OxY w)
Nr   r   )r  r   r  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  )
r   r7  r8  normalr   r   r  r  r  r  )r;  rf   r   r(  r  s        rW   -test_cross_val_predict_with_method_rare_classr    s     ))


"C

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

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

    Non-regression test for #22981.
    r  r   Tr   )rc  r   N)r   r0   r:   )rf   r   s     rW   *test_learning_curve_partial_fit_regressorsrf  n	  s&    
 +DAq <>1adqQrY   c                    t        dddd|       \  }}t        j                  |      }||   ||   }}t               }d}t	        j
                  t        |      5  t        |||dt        j                  	      ^}}}}d
d
d
       t        d      D ]R  }	t        j                  |	         j                         sJ t        j                  |	         j                         rRJ  t        dj                  d         D ]R  }	t        j                  ||	         j                         rJ t        j                  |	         j                         sRJ  y
# 1 sw Y   xY w)zKChecks for fit failures in `learning_curve` and raises the required warningr  r   r   F)r  rX  r  rE   r   z#10 fits failed out of a total of 25r   r   r&  Nr   r   )r   r   r  r>   r   r   r   r0   r   r   isnanr  r\   any)
global_random_seedrf   r   
sorted_idxsvcr  r  r6  r7  r  s
             rW   -test_learning_curve_some_failing_fits_warningrm  y	  sI    'DAq AJZ=!J-qA
%C;O	&o	> 
)7A!*
&;
Q
 Qx /xxC()--///xx
3(,,.../ Q))!,- 388K,-1133388JsO,002223
 
s   #EEc                 x   t        d      \  }}t        |      }t               }t        dd|       }t	        ||||dd      }d|vsJ t	        ||||dd      }d|v sJ |d   d	   }|d   d
   }t        |      |j                  k(  sJ t        |      |j                  k(  sJ t        |D cg c]  }|j                   c}d       t        |D cg c]  }|j                   c}d       t        |j                  ||            D ]&  \  }	\  }
}t        ||	   |
       t        ||	   |       ( yc c}w c c}w )z<Check the behaviour of `return_indices` in `cross_validate`.Tr   r   )r  rE   r   r   F)r   r   return_indicesindicesr0  r1  r  r
  N)r   r=   r   r'   r/   r   r  rK   r  r:  r  )rj  rf   r   r  r   rT  train_indicestest_indicesrp  	split_idxexpected_train_idxexpected_test_idxs               rW   "test_cross_validate_return_indicesrv  	  sK   %DAqaA"$I	46H	IB	1aBqQVWJJ&&&	1aBqQUVJ
"""y)'2Mi(0L},,,|+++MBBCHLAA2F>GQRTU>W G:	:&(9=35GH<	24EFG CAs   .D2D7zfunc, extra_argsalphar   )r  r  c           
      <   t        j                  t        d      5   | dt               t        t
        di d| ddd       t        j                  t        d      5   | dt               t        t
        i i d| ddd       y# 1 sw Y   LxY w# 1 sw Y   yxY w)	z2Check that we warn about deprecating `fit_params`.z`fit_params` is deprecatedr   r   )r  rf   r   r   r  Nz1`params` and `fit_params` cannot both be provided)r  rf   r   r  r   rx   )r   r   FutureWarningr@   rf   r   r   r   r  
extra_argss     rW   test_fit_param_deprecationr|  	  s     
m+G	H 
 	
)+qA!	
NX	


 
M
 

 	 	
)+	
 	


 


 



 

s   BBBB)enable_metadata_routingc           	          t        j                  t        d      5   | dt               t        t
        g d| ddd       y# 1 sw Y   yxY w)zCheck that we raise an error if `groups` are passed to the cv method instead
    of `params` when metadata routing is enabled.
    z`groups` can only be passed ifr   )r  rf   r   r  Nrx   )r   r   r   r@   rf   r   rz  s     rW   #test_groups_with_routing_validationr  	  sN      
z)I	J 
 	
)+		

 	

 
 
s   AAc                 N    t        ddd      \  }} | dt               ||d| y)zTest that no errors are raised when passing `params=None`, which is the
    default value.
    Non-regression test for: https://github.com/scikit-learn/scikit-learn/issues/30447
    r  r   r   rW  )r  rf   r   Nrx   )r   r@   )r  r{  rf   r   s       rW   test_cross_validate_params_noner  	  s.    " JDAqA&(AAjArY   c           
          t        j                  d      }t        j                  t        |      5   | dt               t        t        t        g       d| ddd       y# 1 sw Y   yxY w)zMCheck that we raise an error when passing metadata that is not
    requested.z8but are not explicitly set as requested or not requestedr   )metadata)r  rf   r   r   Nrx   )	r)  escaper   r   r   r@   rf   r   r   )r  r{  r  s      rW    test_passed_unrequested_metadatar  
  sa     iiRSG	z	1 
 	
)+$		

 	

 
 
s   (A""A+c                    t               }t        |      j                  dd      }t               }t        |      j	                  dd      }t               }t        |      j                  dd	      }t        t              }t        j                  j                  d
      }	|	j                  |      }
|	j                  |      }|	j                  d
d|      }|	j                  |      }|	j                  |      }|	j                  |      }t        t        t        |d            t         t        |      t"        t        |      t$        t        |      t&        t        |      t(        t               i}t        ||||      }| t(        ur|j+                  |
|        | |ft        t,        |d||    |d|i | t(        urt/        |      sJ |D ]  }t1        |d| j2                  d|
|        t/        |      sJ |D ]  }t1        |d| j2                  ||        t/        |      sJ |D ]  }t1        |d| j2                  d||        y)z]Check that the respective cv method is properly dispatching the metadata
    to the consumer.registryscore_weightsscore_metadatar   r  split_groupssplit_metadata)r  r  fit_sample_weightfit_metadatar   r   r  )	my_scorerr  r   )r  r  r  r  )r  r  )rf   r   r   r   rn   objr  parentsplit_paramsr   r  r  )r  r  r  r  r  r_   N)rC   rA   set_score_requestrB   set_split_requestr@   set_fit_requestrN   rf   r   r7  r8  r9  randintr/   r   r.   r0   r2   r1   r-   updater   r   rD   rt   )r  r{  scorer_registryr  splitter_registrysplitterestimator_registryr  r  r;  r  r  r  r  r  r  scoring_argsr   _scorer	_splitter
_estimators                        rW   !test_validation_functions_routingr  
  s{     kOo6HH%0@ I F " *;<NN(8 O H ##-?@PP)N Q I QI
))


"CHHY'MXXi(N;;q!Y/LXXi(N+88I&L 	TFZ%PQf-V,$v.V 446L !%+!	F $$') 	 	

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

==6+!	

rY   c                     t        t              } t        j                  j	                  d      }|j                  |       }|j                  |       }t               }t        |      j                  dd      }t        |t        t        t               dt        ||             t        |      sJ |D ]  }t        |d	d
d||        y)zTest that learning_curve routes metadata to the estimator correctly while
    partial_fitting it with `exploit_incremental_learning=True`.r   r  r  r  r  T)r  r  )rf   r   r   rc  r   r   r0   r  N)rN   rf   r   r7  r8  r9  rC   r@   set_partial_fit_requestr0   r   rB   r   r   rD   )r  r;  r  r  r  r  r  s          rW   8test_learning_curve_exploit_incremental_learning_routingr  
  s    
 QI
))


"C+88I&L"##)N    

%)&7lS !"""( 

 #6+!	

rY   )rw   r  r)  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   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.   r/   r0   r1   r2   #sklearn.model_selection._validationr3   r4   r5   $sklearn.model_selection.tests.commonr6   )sklearn.model_selection.tests.test_searchr7   sklearn.multiclassr8   sklearn.neighborsr9   sklearn.neural_networkr:   sklearn.pipeliner;   sklearn.preprocessingr<   r=   sklearn.svmr>   r?   %sklearn.tests.metadata_routing_commonr@   rA   rB   rC   rD   sklearn.utilsrE   sklearn.utils._mockingrF   rG   sklearn.utils._testingrH   rI   rJ   rK   sklearn.utils.fixesrL   rM   sklearn.utils.validationrN   rP   rz   r   r   r   r  rf   r   r   r   r  r   markparametrizer   r   r  r  r{  r2  r!  r"  r\  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r'  r+  r5  r>  r@  rU  rX  ra  rf  ri  rk  rv  rz  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/  r1  r4  filterwarningsr;  rC  rF  rU  r7  rd  rf  rm  rv  r|  r  r  r  r  r  rx   rY   rW   <module>r     sY     	 	 
        ! " > > "  4 / ( 
 
 
 7    " 
 A G 2 2 / % 5 &  " D  ? 1"] "6(> <" ",	",F 	"S8_m S8p BGGGBHH:; RXX;<
BFF1I .9%< :%<P)1LhL& t}5.94AD 4A : 64An?MDF9R>,0&5&86 .9 3 : 3F& J&L0 .9? :?D$MH< .95
 :5
p1Wh# #  .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:>>>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
 -
 .

 		"	B		$	'("((A3-PQ
 -Y
 .
Y
x -"
 ."
rY   