o
    \i_i                    @   sn  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#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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8 ddl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZH ddlImJZJmKZKmLZL ddlMmNZN ddlOmPZP ddlQmRZR ddlSmTZT ddlUmVZV ddlWmXZX ddlYmZZZm[Z[ ddl\m]Z]m^Z^ ddl_m`Z`maZambZbmcZcmdZd ddlemfZf ddlgmhZhmiZi ddljmkZkmlZlmmZmmnZn ddlompZpmqZq dd lrmsZs G d!d" d"eZtG d#d$ d$etZuG d%d& d&eZvG d'd( d(evZwG d)d* d*eeZxeyd+Zze{g d,Z|e{g d-Z}e~d.Zejd/epd0d1 Zd2d3 Zd4d5 Zd6d7 Zejd8d9d:gejd;eqd8efd<d=Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI Zejd/epdJdK ZdLdM ZdNdO ZdPdQ Zejd/epdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zejd/epd\d] Zd^d_ Zd`da Zdbdc Zejd/epddde Zdfdg Zdhdi Zdjdk Zejd/epdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejd;eqdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZG dd de!Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZG dd deZejdejdgdd Zejdejdgdd Zdd ZejdáejdejddgddƄ Zejdáejdejddgejdd:d9gejdd9d:gddʄ Zdd̄ Zejdd9eddddfd:e8eedҜdӍddddfd9e8eedҜdӍddddfgddل Zddۄ Zdd݄ Zdd߄ Zdd Zdd ZejdeFi feGi feHde{dgdfgdd ZejdeEi feDi feCi feFi feGi feHde{dgdfged:ddd ZejdeEi feDi feCi feFi feGi feHde{dgdfged:ddd ZejdeEi feDi feCi feFi feGi feHde{dgdfged:ddd ZejdeEi feDi feCi feFi feGi feHde{dgdfged:ddd Zed:ddd ZdS )zTest the validation module    N)partial)StringIO)sleep)issparse)config_context)BaseEstimatorClassifierMixinclone)KMeans)load_diabetesload_digits	load_irismake_classificationmake_multilabel_classificationmake_regression)RandomForestClassifier)FitFailedWarningUnsetMetadataPassedError)SimpleImputer)LogisticRegressionPassiveAggressiveClassifierRidgeRidgeClassifierSGDClassifier)	accuracy_scorecheck_scoringconfusion_matrixexplained_variance_scoremake_scorermean_squared_errorprecision_recall_fscore_supportprecision_scorer2_score)_MultimetricScorer)GridSearchCV
GroupKFoldGroupShuffleSplitKFoldLeaveOneGroupOutLeaveOneOutLeavePGroupsOutShuffleSplitStratifiedKFoldcross_val_predictcross_val_scorecross_validatelearning_curvepermutation_test_scorevalidation_curve)_check_is_permutation_fit_and_score_score)OneTimeSplitter)FailingClassifier)OneVsRestClassifier)KNeighborsClassifier)MLPRegressor)Pipeline)LabelEncoderscale)SVC	LinearSVC)ConsumingClassifierConsumingScorerConsumingSplitter	_Registrycheck_recorded_metadata)shuffle)CheckingClassifierMockDataFrame)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equal)COO_CONTAINERSCSR_CONTAINERS)_num_samplesc                   @   s<   e Zd ZdZdd ZdddZdd Zdd	d
Zdd ZdS )MockImprovingEstimatorz+Dummy classifier to test the learning curvec                 C   s   || _ d| _d | _d S Nr   )n_max_train_sizestrain_sizesX_subset)selfrQ    rU   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/model_selection/tests/test_validation.py__init__e   s   
zMockImprovingEstimator.__init__Nc                 C      || _ |jd | _| S rP   rS   shaperR   rT   rS   y_subsetrU   rU   rV   fitj      zMockImprovingEstimator.fitc                 C      t NNotImplementedErrorrT   XrU   rU   rV   predicto      zMockImprovingEstimator.predictc                 C   s.   |  |rdt| j| j  S t| j| j S )Ng       @)_is_training_datafloatrR   rQ   rT   rd   YrU   rU   rV   scorer   s   
zMockImprovingEstimator.scorec                 C   
   || j u S r`   rS   rc   rU   rU   rV   rg   y      
z(MockImprovingEstimator._is_training_datar`   NN	__name__
__module____qualname____doc__rW   r]   re   rk   rg   rU   rU   rU   rV   rO   b   s    

rO   c                       s4   e Zd ZdZd	 fdd	Zdd Zd	ddZ  ZS )
!MockIncrementalImprovingEstimatorz*Dummy classifier that provides partial_fitNc                    s   t  | d | _|| _d S r`   )superrW   xexpected_fit_params)rT   rQ   rx   	__class__rU   rV   rW      s   
z*MockIncrementalImprovingEstimator.__init__c                 C   s
   | j |v S r`   rw   rc   rU   rU   rV   rg      rn   z3MockIncrementalImprovingEstimator._is_training_datac              	   K   s   |  j |jd 7  _ |d | _| jrOt| jt| }|r'tdt| d| D ]%\}}|| jv rNt|t|krNtd| dt| dt| dq+d S d S )Nr   zExpected fit parameter(s) z
 not seen.zFit parameter z has length z; expected .)	rR   rZ   rw   rx   setAssertionErrorlistitemsrN   )rT   rd   yparamsmissingkeyvaluerU   rU   rV   partial_fit   s,   
z-MockIncrementalImprovingEstimator.partial_fitr`   )rq   rr   rs   rt   rW   rg   r   __classcell__rU   rU   ry   rV   ru   }   s
    ru   c                   @   s<   e Zd ZdZdddZdd Zdd Zdd
dZdd Zd	S )MockEstimatorWithParameterz-Dummy classifier to test the validation curve      ?c                 C   s   d | _ || _d S r`   )rS   param)rT   r   rU   rU   rV   rW         
z#MockEstimatorWithParameter.__init__c                 C   rX   rP   rY   r[   rU   rU   rV   r]      r^   zMockEstimatorWithParameter.fitc                 C   r_   r`   ra   rc   rU   rU   rV   re      rf   z"MockEstimatorWithParameter.predictNc                 C   s   |  |r| jS d| j S )N   )rg   r   )rT   rd   r   rU   rU   rV   rk      s   z MockEstimatorWithParameter.scorec                 C   rl   r`   rm   rc   rU   rU   rV   rg      rn   z,MockEstimatorWithParameter._is_training_data)r   ro   rp   rU   rU   rU   rV   r      s    

r   c                       s(   e Zd ZdZ fddZdd Z  ZS )%MockEstimatorWithSingleFitCallAllowedz<Dummy classifier that disallows repeated calls of fit methodc                    s&   t | dr	J dd| _t ||S )Nfit_called_zfit is called the second timeT)hasattrr   rv   r]   r[   ry   rU   rV   r]      s   z)MockEstimatorWithSingleFitCallAllowed.fitc                 C   r_   r`   ra   rc   rU   rU   rV   re      rf   z-MockEstimatorWithSingleFitCallAllowed.predict)rq   rr   rs   rt   r]   re   r   rU   rU   ry   rV   r      s    r   c                   @   sZ   e Zd ZdZdddZ									dddZd	d
 Zdd ZdddZdddZ	dS )MockClassifierz-Dummy classifier to test the cross-validationr   Fc                 C   s   || _ || _d S r`   aallow_nd)rT   r   r   rU   rU   rV   rW      r   zMockClassifier.__init__Nc                 C   sX  || _ || _|	| _|
dur|
|  | jr|t|d}|jdkr(| js(td|durD|jd |jd ksDJ d	|jd |jd |durd|jd tt
tksdJ d	|jd tt
t|durd}|jd |jd ksJ |	|jd |jd |durd	}|jtjksJ |	|jd |jd
 tjd tjd
 t
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
        N   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
ValueErrorrZ   formatnpuniquer   Pclasses_)rT   rd   rj   sample_weightclass_priorsparse_sample_weightsparse_paramr   r   r   callbackfmtrU   rU   rV   r]      sL   zMockClassifier.fitc                 C   s&   | j r|t|d}|d d df S )Nr   r   )r   r   r   rT   TrU   rU   rV   re     s   zMockClassifier.predictc                 C   s   |S r`   rU   r   rU   rU   rV   predict_proba	  rf   zMockClassifier.predict_probac                 C   s   ddt | j  S )N      ?r   )r   absr   ri   rU   rU   rV   rk     s   zMockClassifier.scorec                 C   s   | j | jdS )Nr   r   )rT   deeprU   rU   rV   
get_params  s   zMockClassifier.get_params)r   F)	NNNNNNNNNro   )F)
rq   rr   rs   rt   rW   r]   re   r   rk   r   rU   rU   rU   rV   r      s"    

@
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                 C   st  t  }| t}tddD ]M}||_t|tt}t||tt t	ttd d d g}t|||}t|||| t||t}t|||t t|||}t|||| qdd }t
|d}t|t t dd}t
|d	}t|tt dd}td d d d tjf }t d
d}t||t}t dd}tt t||tdd W d    d S 1 sw   Y  d S )Ni
   r   c                 S   
   t | tS r`   
isinstancer   r{   rU   rU   rV   <lambda>5     
 z&test_cross_val_score.<locals>.<lambda>check_Xr   cvcheck_yT)r   Fraiseerror_score)r   rd   ranger   r.   y2rK   rk   r   column_stackrF   tolistnewaxispytestraisesr   )r   clfX_sparser   scoresmultioutput_y
list_checkX_3drU   rU   rV   test_cross_val_score  s2   



"r   c                  C   s@   t dd\} }tdd}t|dddgid}t|| |d	d
 d S )NT
return_X_yauto)gammaCr   r   )
param_gridr   )n_jobs)r   r>   r$   r/   )rd   r   r   gridrU   rU   rV   test_cross_validate_many_jobsF  s   
r   c                  C   sN  t dd\} }t }d}tjt|d t|| |ttttfd W d    n1 s,w   Y  tjt|d t|| |ttfd W d    n1 sNw   Y  tjt|d d t|| |dd W d    n1 sow   Y  tjt|d d t|| |d	d W d    n1 sw   Y  tjt|d t|| |ttggd W d    n1 sw   Y  tjtd
d t|| |t	 d W d    n1 sw   Y  tt
}dtj d}tjt|d t|| ||d W d    n1 sw   Y  tjt|d t|| |d|id W d    d S 1 s w   Y  d S )Nr   random_statez.*must be unique strings.*matchscoringzEmpty list.*rU   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)rd   r   	estimatorerror_message_regexpmulticlass_scorerwarning_messagerU   rU   rV   )test_cross_validate_invalid_scoring_paramP  sJ   $r   c                  C   sf   t dd\} }tdt fdt fg}t|| |dd}|d }t|ts&J tdd |D s1J d S )	NTr   imputer
classifier)return_estimatorr   c                 s   s    | ]}t |tV  qd S r`   )r   r;   ).0r   rU   rU   rV   	<genexpr>  s    z7test_cross_validate_nested_estimator.<locals>.<genexpr>)r   r;   r   r   r/   r   r   all)rd   r   pipelineresults
estimatorsrU   rU   rV   $test_cross_validate_nested_estimator  s   r   
use_sparseFTcsr_containerc              	   C   s  t  }tddd\}}tdd}tddd\}}tddd}| r(||}||}|||f|||ffD ]\}	}
}t|dd}t|d	d}g }g }g }g }g }||	|
D ]I\}}t||	| |
| }|	|||	| |
|  |	|||	| |
|  |	|||	| |
|  |	|||	| |
|  |	| qSt
|}t
|}t
|}t
|}t
|}|||||f}t||	|
|| t||	|
|| q2d S )
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   rd   r   est
mse_scorer	r2_scorertrain_mse_scorestest_mse_scorestrain_r2_scorestest_r2_scoresfitted_estimatorstraintestr   rU   rU   rV   test_cross_validate  sJ   





r  c              	   C   st  |\}}}}}	dD ]o\}
}|
r!t | ||dd|d}t|d | n
t | ||dd|d}t|ts2J t||ks:J t|d | |
rWt | ||dgd|d}t|d	 |d nt | ||dgd|d}t|tsiJ t||ksqJ t|d
 | q	t | ||dd|d}t|d D ].\}}|j }t|r|	 }|	| j }t|r|	 }t
|| t
|j|	| j qd S )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   rd   r   r   r   r  r  r  r  r  r  dict_lenmse_scores_dictr2_scores_dictkr  est_coeffitted_est_coefrU   rU   rV   r    sj   

r  c              
   C   s  |\}}}}}	dd }
dt tdd|
f}h d}|ddh}dD ]}|D ]}|rCt| |||d	|d
}t|d | t|d | n
t| |||d|d
}t|tsTJ t| |r]|n|ksbJ t|d | t|d | t|d t	j
szJ t|d t	j
sJ t|d t	j
sJ t|d t	j
sJ t	|d dksJ t	|d dk sJ t	|d dksJ t	|d dk sJ q&q"d S )Nc                 S   s"   |  |}t||t|| dS )Nr   r   )re   r"   r   )r   rd   r   y_predrU   rU   rV   custom_scorer  s   

z8check_cross_validate_multi_metric.<locals>.custom_scorerr'  r   >   r  fit_time
score_timetest_neg_mean_squared_errorr  train_neg_mean_squared_error)TFTr  Fr  r,  r*  r+  r   r   )r   r"   unionr/   rJ   r   r   r}   keysr   ndarrayr   )r   rd   r   r   r   r  r  r  r  r  r)  all_scoringkeys_sans_trainkeys_with_trainr  r   
cv_resultsrU   rU   rV   r    sb   	

r  c               	   C   s   t dddd\} }tdd}t tdt t g}d}|D ]@}tjt|d t	|| ||d	 W d    n1 s9w   Y  tjt|d t
|| ||d	 W d    n1 sXw   Y  qd S )
N   r   r   r   	n_classesr   r   r   z*The 'groups' parameter should not be None.r   )r   rd   r   r   )r   r>   r(   r*   r%   r&   r   r   r   r.   r-   )rd   r   r   	group_cvserror_messager   rU   rU   rV   #test_cross_val_score_predict_groups[  s"   
r;  c                        t t fg} zddlm}m} | ||f W n	 ty   Y nw | D ]'\  tt}} fdd}fdd}t||d}t	|||dd q"d S )	Nr   	DataFrameSeriesc                    
   t |  S r`   r   r{   InputFeatureTyperU   rV   r   ~  r   z-test_cross_val_score_pandas.<locals>.<lambda>c                    r@  r`   rA  r{   
TargetTyperU   rV   r     r   r   r   r   r   )
rG   pandasr>  r?  r  ImportErrorrd   r   rF   r.   typesr>  r?  X_dfy_sercheck_dfcheck_seriesr   rU   rC  rE  rV   test_cross_val_score_pandasq  s   
rP  c                  C   s   t dd} t }|j|j}}td}t| |||d}td}g }|||D ]%\}}tjt	|t
d}	tjt	|t
d}
d|	|< d|
|< |||f q't| |||d}t|| d S )Nr   r8  r   r   dtyper   )r>   r   datatargetr'   r.   r  r   zerosr   boolr  rK   )svmirisrd   r   kfoldscores_indicescv_masksr  r  
mask_train	mask_testscores_masksrU   rU   rV   test_cross_val_score_mask  s   
r_  c                  C   s   t dd} t }|j|j}}t||j}t| ||}t dd} t| ||}t|| t dd d} t| ||}t|| t dd} t	
t t| || W d    n1 sYw   Y  t	
t t| | | W d    d S 1 sww   Y  d S )Nprecomputedr8  r   c                 S   s   t | |jS r`   )r   dotr   )rw   r   rU   rU   rV   r     s    z2test_cross_val_score_precomputed.<locals>.<lambda>)r>   r   rS  rT  r   ra  r   r.   rJ   r   r   r   r   )rW  rX  rd   r   linear_kernelscore_precomputedscore_linearscore_callablerU   rU   rV    test_cross_val_score_precomputed  s$   




"rf  c              	      s   t  }tjd }ttt}| tdgtdgtdgffdd}| td}d dt	  fdd	}t
|t|d
| || |d}t|tt|d d S )Nr   r   )r   r   rZ   r   *   42c                    s.   | j  ksJ | jksJ | jksJ d S r`   )r   r   r   )r   	DUMMY_INT	DUMMY_OBJ	DUMMY_STRrU   rV   assert_fit_params  s   z:test_cross_val_score_fit_params.<locals>.assert_fit_paramsr   )r   r   r   r   r   r   r   r   r   )r   rd   rZ   r   r   r   r   r  eyeobjectonesfullr.   r   )r   r   r   r7  W_sparseP_sparsern  
fit_paramsrU   rj  rV   test_cross_val_score_fit_params  s*   
$	
rw  c                     s~   t  } g   fdd}tjdd t|}t| tt|dd}W d    n1 s)w   Y  t|g d t dks=J d S )Nc                    s     | |f dS )Nr   )r  )y_test	y_predict_score_func_argsrU   rV   
score_func  s   z3test_cross_val_score_score_func.<locals>.score_funcTrecordr   )r   r   )r   r   r   )	r   warningscatch_warningsr   r.   rd   r   rK   r   )r   r|  r   rk   rU   rz  rV   test_cross_val_score_score_func  s   r  c                  C   s|   t  } tdd}t|| j| j}t|g dd t|| j| jdd}t|g dd t|| j| jdd}t|g dd d S )Nr   r8  )
ףp=
?r   r  r  r   r   accuracyr   f1_weighted)r   r>   r.   rS  rT  rJ   )rX  r   r   	zo_scores	f1_scoresrU   rU   rV   3test_cross_val_score_with_score_func_classification  s   
r  c            	      C   s   t ddddd\} }t }t|| |}t|g dd t|| |dd	}t|g dd t|| |d
d	}tg d}t||d tt}t|| ||d	}t|g dd d S )Nr   r5  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   )	rd   r   r  r   	r2_scoresneg_mse_scoresexpected_neg_mser   	ev_scoresrU   rU   rV   /test_cross_val_score_with_score_func_regression  s   r  c              
   C   s|  t  }|j}| |}|j}tdd}td}t|||d|dd\}}}	|dks)J t|	dd	 t|||d|dt|j	d
d\}
}}|
|ksHJ ||	ksNJ tdd}td}t|||d|dt|j	d
d\}
}}|
|kspJ ||	ksvJ dd }t
|}t|||d||d
d\}}}	t|dd t|	dd ttt|d}t|||d|dd\}}}	|dk sJ |	dksJ d S )Nr   r8  r   r   r  )n_permutationsr   r   g?        r   r   )r  r   r   groupsr   c                 S   s"   | |k  | |k   | jd  S rP   )sumrZ   )y_truer(  rU   rU   rV   custom_score?  s   "z,test_permutation_score.<locals>.custom_scored   )r  r   r   r   g(\?g{Gz?r   r   皙?)r   rS  rT  r>   r,   r1   rI   r   rr  sizer   modaranger   )r   rX  rd   r   r   rW  r   rk   r   pvaluescore_group_pvalue_group
svm_sparse	cv_sparser  scorerrU   rU   rV   test_permutation_score  sd   




r  c                  C   t   t jdt jddd} t j| dd d f< t ddg| jd d }tdtd	t jd
fdt	 fg}t
|| | d S N   rQ  r   r   r   r   r   r   mean)strategymissing_valuesr   )r   r  float64r   r   repeatrZ   r;   r   r   r1   rd   r   prU   rU   rV   &test_permutation_test_score_allow_nansT     r  c               	   C   s   t ddd} t dgd dgd  }tdd}d}tjt|d	 t|| | W d    n1 s5w   Y  d
}tjt	|d	 t|| |dt 
did W d    n1 s[w   Y  t|| |dt 
did d S )Nr  r   r   r   r   Texpected_sample_weight#Expected sample_weight to be passedr   /sample_weight.shape == \(1,\), expected \(8,\)!r   ro  )r   r  r   r  rF   r   r   r~   r1   r   rr  rd   r   r   err_msgrU   rU   rV   "test_permutation_test_score_paramsb  s   
r  c                  C   r  r  )r   r  r  r   r   r  rZ   r;   r   r   r.   r  rU   rU   rV   test_cross_val_score_allow_nansq  r  r  c            	      C   s  t 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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d	}ttd
d}ttdd}ttdd}t|| ||d}t|| ||d}t|| ||d}t|g d t|g d t|g d d S )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   )	rd   r   r   scoring_microscoring_macroscoring_samplesscore_microscore_macroscore_samplesrU   rU   rV   test_cross_val_score_multilabel  s4   >
r  c                 C   s  t dd\}}t }t }t|}|||D ]\}}||| ||  ||| ||< qt||||d}t	|| t|||}t
|t
|ksMJ t }t||||d}t
|t
|ksbJ | }	|	|	t|	k9 }	| |	}	t||	|}t	t
|t
| ttdd|}t
|t
|ksJ G dd d}
tt t||||
 d W d    n1 sw   Y  tdd\}}d}tjt|d	 ttd
d||dtdd W d    d S 1 sw   Y  d S )NTr   r   r   )n_initc                   @   s   e Zd ZdddZdS )z%test_cross_val_predict.<locals>.BadCVNc                 s   s2    t dD ]}tg dtg dfV  qd S )Nr   )r   r   r   r   )r   r   r         )r   r   r  )rT   rd   r   r  irU   rU   rV   r    s    z+test_cross_val_predict.<locals>.BadCV.splitro   )rq   rr   rs   r  rU   rU   rU   rV   BadCV  s    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]   re   r-   rJ   r   r)   r  medianr
   r   r   r   r   r   RuntimeWarningr   )r   rd   r   r   r  preds2r  r  predsXspr  r   rU   rU   rV   test_cross_val_predict  sJ   

"r  c                  C   sf  t dddd\} }tt | |dd}|jdksJ tdd	\} }tt | |dd}|jd
ks0J | d d } |d d }d}tjt|d tt | |dt	dd W d    n1 s\w   Y  t
dd	\} }tddd}t|| |dd}|jdks}J t|}| | || } }d}tjt|d t|| |t	dddd W d    d S 1 sw   Y  d S )Nr   2   r   r7  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   rZ   r   r   r   r   r   r'   r   r>   r   argsort)rd   r   r  r:  r  indr   rU   rU   rV   .test_cross_val_predict_decision_function_shape  s4   
"r  c                  C   d   t dddd\} }tt | |dd}|jdksJ tdd	\} }tt | |dd}|jd
ks0J d S )Nr   r  r   r  r   r  r  r   Tr   r  r   r-   r   rZ   r   rd   r   r  rU   rU   rV   *test_cross_val_predict_predict_proba_shape     r  c                  C   r  )Nr   r  r   r  predict_log_probar  r  Tr   r  r  r  rU   rU   rV   .test_cross_val_predict_predict_log_proba_shape  r  r  c                 C   sZ  t  }|j|j}}| |}t||d d d g}tddd}t|||}|jdks-J t|||}|jdks:J t|||}t|jd t|||}t|jd dd }t	|d	}t||
 |
 }t	|d
}t|||
 }tt |
 |
 dd}tt ||
 dd}|d d d d tjf }	dd }
t	|
d	}t||	|}t|jd d S )Nr   Fr   )fit_interceptr   )r  )r  r   c                 S   r   r`   r   r{   rU   rU   rV   r   7  r   z4test_cross_val_predict_input_types.<locals>.<lambda>r   r   r  r  c                 S   s
   | j dkS )Nr   )r   r{   rU   rU   rV   r   N  r   )r   rS  rT  r   r   r   r-   rZ   rK   rF   r   r   r   )r   rX  rd   r   r   r   r   predictionsr   r   check_3drU   rU   rV   "test_cross_val_predict_input_types  sF   


r  c                     r<  )	Nr   r=  c                    r@  r`   rA  r{   rB  rU   rV   r   `  r   z/test_cross_val_predict_pandas.<locals>.<lambda>c                    r@  r`   rA  r{   rD  rU   rV   r   a  r   rF  r   r   )
rG   rG  r>  r?  r  rH  rd   r   rF   r-   rI  rU   rO  rV   test_cross_val_predict_pandasT  s   
r  c                  C   s   t ddddddd\} }d|d< tdd}tdd}t|| |\}}t|| ||dd	}||d  d dks9J t||d  d d df dksLJ t||d  d d ddf dksaJ t||d  dksnJ t|j	dd
t
|jdd d S )Nr  r   r   r   )r   r  n_redundantr  n_clusters_per_classr   r   r  r   r  axis   )decimal)r   r   r,   r   r  r-   r   r   rJ   r  rr  rZ   )rd   r   r   r   r  r  
yhat_probarU   rU   rV   !test_cross_val_predict_unbalancedf  s$   
	

&*"r  c                  C   sf   t  } tjd}|dd}t| |d ddd}t|d d df | t| |d ddd}t|| d S )	Nrh  r  r   r   re   )r   r   r  r   r   )r   r   randomRandomStaterandr-   rH   )mock_classifierrngrd   y_haty_hat_probarU   rU   rV   test_cross_val_predict_y_none|  s   
r  c                 C   sX   t  }|j|j}}t }d| t|jd i}t||||dd}t|t	d d S )Nr   r   r   )r   r   )
r   rS  rT  r   r   rp  rZ   r.   rK   rr  )r   rX  rd   r   r   rv  r   rU   rU   rV   &test_cross_val_score_sparse_fit_params  s   r  c                  C   s  d} d}t | ddddddd\}}t| |d |  }dD ]}tjdd	 }t|||t|d
tddd|dd\}}}	}
}W d    n1 sHw   Y  t|dkr\t	d|d j
 |jdkscJ |	jdksjJ |
jdksqJ |jdksxJ t|tddd t|jddtddd t|	jddtddd |
jdksJ |jdksJ tjdd	}t|||t|| dtddd|d\}}}W d    n1 sw   Y  t|dkrt	d|d j
 t|| t||	 qd S )Nr   r   r   r   r   r   r  r  r  r7  r  r   FTTr}  r  皙?r   r   )r   rR   rE   return_timesUnexpected warning: %r)r   r   r5  r  ffffff?r  r  r   )r   rR   rE   )r   rO   r  r  r0   r'   r   linspacer   RuntimeErrormessagerZ   rK   rJ   r  rR  r6   )r   r  rd   r   r   shuffle_trainwrR   train_scorestest_scores	fit_timesscore_timestrain_sizes2train_scores2test_scores2rU   rU   rV   test_learning_curve  sp   
	
	
r  c               
   C   s   t dddddddd\} }td}t|| d dtdd	d
d\}}}t|tddd
 t|jddtdd	d
 t|jddtdd	d
 d S )Nr   r   r   r   r  r5  r   r  r   r   )r   r   rR   r  r  )r   rO   r0   r   r
  rK   rJ   r  rd   r  r   rR   r  r  rU   rU   rV    test_learning_curve_unsupervised  s    
	 r  c               	   C   s   t dddddddd\} }td}tj}t t_zt|| |ddd\}}}W tj }tj  |t_ntj }tj  |t_w d	|v sHJ d S )
Nr   r   r   r   r  r5  r   )r   verbosez[learning_curve])r   rO   sysstdoutr   r0   getvalueclose)rd   r   r   
old_stdoutrR   r  r  outrU   rU   rV   test_learning_curve_verbose  s.   
	




r   c               	   C   sb   t dddddddd\} }td}tt t|| |dd W d    d S 1 s*w   Y  d S )Nr   r   r   r  T)exploit_incremental_learningr   rO   r   r   r   r0   rd   r   r   rU   rU   rV   5test_learning_curve_incremental_learning_not_possible  s   

"r$  c                  C   s   t dddddddd\} }td}dD ];}t|| |dd	td
dd|d\}}}t|tddd t|jddtddd t|jddtd
dd qd S )Nr   r   r   r   r  r5  r  r   Tr  r   r   )r   r!  rR   rE   r  r  r   ru   r0   r   r
  rK   rJ   r  )rd   r   r   r  rR   r  r  rU   rU   rV   (test_learning_curve_incremental_learning  s0   
		r&  c                  C   s   t dddddddd\} }td}t|| d ddtd	d
dd\}}}t|tddd t|jddtdd
d t|jddtd	d
d d S )Nr   r   r   r   r  r5  r   Tr  r   r   )r   r   r!  rR   r  r  r%  r  rU   rU   rV   5test_learning_curve_incremental_learning_unsupervised'  s*   
	 r'  c            
   	   C   s   t dddddddd\} }tddd}tdd d	d
}t|| ||ddd\}}}t|| |d|d	d\}}}	t|| t|jdd|jdd t|jdd|	jdd d S )Nr   r   r   r   r  r  r   r   Fmax_itertolrE   r   T)rR   r   r!  )r   rR   r!  r  )r   r   r
  r   r0   rK   rJ   r  )
rd   r   rR   r   train_sizes_inctrain_scores_inctest_scores_inctrain_sizes_batchtrain_scores_batchtest_scores_batchrU   rU   rV   <test_learning_curve_batch_and_incremental_learning_are_equal?  sD   
	
	r1  c               	   C   sh  t dddddddd\} }td}tt t|| |dddgd W d    n1 s,w   Y  tt t|| |dd	d
gd W d    n1 sLw   Y  tt t|| |dddgd W d    n1 slw   Y  tt t|| |dddgd W d    n1 sw   Y  tt t|| |dddgd W d    d S 1 sw   Y  d S )Nr   r   r   r   r  r5  r   r   rR   r  r   r  g?   r"  r#  rU   rU   rV   0test_learning_curve_n_sample_range_out_of_boundsf  s2   
	"r4  c                  C   s   t dddddddd\} }td}d}tjt|d t|| |dtdd	dd
\}}}W d    n1 s6w   Y  t|ddg d S )Nr   r   r   r   r  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   r2  )	r   rO   r   r   r  r0   r   r
  rK   )rd   r   r   r   rR   r  rU   rU   rV   1test_learning_curve_remove_duplicate_sample_sizes}  s$   
	r5  c               
   C   s   t dddddddd\} }td}tdd}t|| ||td	d
dd\}}}t|tddd t|jddtdd
d t|jddtd	d
d d S )Nr   r   r   r   r  r5  r   r  r  r   r   r2  r  r  )	r   rO   r'   r0   r   r
  rK   rJ   r  )rd   r   r   r   rR   r  r  rU   rU   rV   (test_learning_curve_with_boolean_indices  s"   
	
 r6  c                  C   s  t 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 g d}t g d}tdd dd}tdd}t|| ||dt ddd|ddd	\}}}t|jddt g d t|jddt g d  t	t
 t|| ||dt ddd|d!d" W d    n1 sw   Y  t|| ||dt ddd|dddd#
\}}	}
t|	jdd|jdd t|
jdd|jdd d S )$Nr   r   r   r   r   r   r  r     r        r               r5  	   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Fr(  r  333333?r   T)r   r   rR   r  rE   r   r  )r  r?  Iq?)r@  r  r  r   )r   r   rR   r  r   )r   r   rR   r  rE   r   r!  )r   r  r   r%   r0   r
  rJ   r  r   r   r   )rd   r   r  r   r   r.  r/  r0  r+  r,  r-  rU   rU   rV    test_learning_curve_with_shuffle  s   
rA  c               
   C   s   t ddd} t dgd dgd  }tdd}d}tjt|d	 t|| |d
d W d    n1 s7w   Y  d}tjt	|d	 t|| |d
dt 
did W d    n1 s^w   Y  t|| |d
dt 
did d S )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   rr  r  rU   rU   rV   test_learning_curve_params  s    

rB  c                  C   s  t dddddddd\} }tddg}d}tjt|d	 t|| |d
dtddddd W d    n1 s7w   Y  d}tjt|d	 t|| |d
dtdddddtd
id W d    n1 sfw   Y  t|| |d
dtdddddtdid d S )Nr   r   r   r   r  r5  r   z9Expected fit parameter\(s\) \['sample_weight'\] not seen.r   r   Tr  r   r   r   )r   r!  rR   r   z2Fit parameter sample_weight has length 3; expected)r   r!  rR   r   r   )	r   ru   r   r   r~   r0   r   r
  rr  )rd   r   r   r  rU   rU   rV   /test_learning_curve_incremental_learning_params  sZ   
	
rC  c               	   C   s   t dddddddd\} }tddd}tjdd}tt | |d|dd	\}}W d    n1 s2w   Y  t|dkrFtd
|d j	 t
|jdd| t
|jddd|  d S )Nr   r   r   r  r   Tr}  r   
param_nameparam_ranger   r  r  )r   r   r
  r  r  r2   r   r   r  r  rJ   r  )rd   r   rF  r  r  r  rU   rU   rV   test_validation_curve8  s0   
		rG  c               	   C   sF   t dddddddd\} }tddd}tt | |d|dd\}}d S )Nr   r   r   r  r   r   rD  )r   r   r
  r2   r   )rd   r   rF  r  rU   rU   rV   %test_validation_curve_clone_estimatorS  s$   

rH  c               
   C   s   d} d}t ddd\}}ttddd||dg dt|| d	d
}ttt|dd d f d  ttddd||dg dt|ddd
}ttt|dd d f d  ttddd||dg dt|dd
}tt	|t	| d S )Nr  r   r   r   r   r   r   )r  r  r  r  r	  rD  )r   r   r   r   r   Tr  rE   r  )
r   r2   r>   r6   rJ   r   vsplithstackr'   r  )r   r  rd   r   scores1scores2scores3rU   rU   rV   +test_validation_curve_cv_splits_consistencyi  s<   

"

"

rO  c                  C   s   t ddd} t dgd dgd  }tdd}d}tjt|d	 t|| |d
g ddd W d    n1 s;w   Y  d}tjt	|d	 t|| |d
g dddt 
did W d    n1 sfw   Y  t|| |d
g dddt 
did d S )Nr  r   r   r   r   Tr  r  r   	foo_param)r   r   r   r   )rE  rF  r   r  r   )rE  rF  r   r   )r   r  r   r  rF   r   r   r~   r2   r   rr  r  rU   rU   rV   test_validation_curve_params  sF   



rQ  c                  C   sv   t jd} t d}| | t|dsJ tt |ddr"J d|d< t|dr-J tt |dfdr9J d S )Nr   r     )r   r  r  r  rE   r3   deleterK  )r  r  rU   rU   rV   test_check_is_permutation  s   

rT  c                 C   sj   t dddddd\}}| |}| |}ttdd}t|||dd	}t|||dd	}| }t|| d S )
Nr   r   FT)r7  n_labelsallow_unlabeledreturn_indicatorr   r   r8  r   r   )r   r8   r>   r-   r  rJ   )r   rd   r   r   y_sparseclassifr  preds_sparserU   rU   rV   (test_cross_val_predict_sparse_prediction  s   
r[  c           
   	   C   s   t ddd}|jdkr|dkrt|fnt|df}n|j}t|}|||D ]\}}t| || || } t	| ||| ||< q)||d |d |
dfD ]}	tt| ||	||d| qRd	S )
z@Helper for tests of cross_val_predict with binary classificationr   FrI  r   r  r   strr  N)r'   r   r   rZ   r   rU  r  r	   r]   getattrastyperH   r-   )
r  rd   r   r  r   	exp_shapeexpected_predictionsr  r  tgrU   rU   rV   check_cross_val_predict_binary  s   
 
rb  c              	   C   s   t ddd}ttjj}||dd}tjt|tt|f|| tjd}tj|dd\}}	|	||	D ](\}
}t
| ||
 |	|
 } t| ||| }t|	|
 }||t||< q5||d	 |d
 |dfD ]}tt| ||||d| qkdS )zDHelper for tests of cross_val_predict with multiclass classificationr   FrI  r   r  r  r   rQ  Treturn_inverser   r   r\  r  N)r'   r   finfor  minrs  r   r}   r   r  r	   r]   r]  ix_r^  rH   r-   )r  rd   r   r  r   	float_mindefault_valuesr`  r  y_encr  r  
fold_preds
i_cols_fitra  rU   rU   rV   "check_cross_val_predict_multiclass  s(   rn  c                    s  t ddd}ttjj}||dd} jd }g }t|D ]0}	tt dd|	f }
|
dkr:|d	kr:t|f}nt||
f}|	tj
||| tjd
 q fddt jd D }tj|dd}|||D ]K\}}t| || || } t| ||| }t|D ]-}	t|| dd|	f }||	 jdkr||	 ||	 |< qt||}||	 ||	 |< qqj  d  d  dfD ]'}t| ||||d}t|t|ksJ tt|D ]}t|| ||  qqdS )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   FrI  r   rc  r   Nr   r  rQ  c                    s8   g | ]}t j d d |f ddd d d t jf qS )NTrd  r   )r   r   r   )r   r  r   rU   rV   
<listcomp>*  s    *z6check_cross_val_predict_multilabel.<locals>.<listcomp>r  r\  r  )r'   r   rf  r  rg  rZ   r   r   r}   r  rs  concatenater  r	   r]   r]  r   r   rh  r^  r-   rH   )r  rd   r   r  r   ri  rj  	n_targetsexpected_predsi_coln_classes_in_labelr_  
y_enc_colsrk  r  r  rl  	fold_colsidxra  cv_predict_outputr  rU   ro  rV   "check_cross_val_predict_multilabel  sJ   


rz  c                 C   s,   t ddd\}}dD ]	}t| ||| q
d S )Nr   r   )r7  r   r  r   r  )r   rb  )r  rd   r   r  rU   rU   rV   *check_cross_val_predict_with_method_binaryC  s   r|  c                 C   sB   t  }|j|j}}t||dd\}}dD ]	}t| ||| qd S )Nr   r   r{  )r   rS  rT  rE   rn  )r  rX  rd   r   r  rU   rU   rV   .check_cross_val_predict_with_method_multiclassK  s   r}  c                   C   s   t t  tt  d S r`   )r|  r   r}  rU   rU   rU   rV   "test_cross_val_predict_with_methodS  s   
r~  c                  C   sN   t  } | j| j}}t||dd\}}dD ]}tddd}t|||| qd S )Nr   r   r{  log_lossr   )lossr   )r   rS  rT  rE   r   rn  )rX  rd   r   r  r  rU   rU   rV   &test_cross_val_predict_method_checkingX  s   r  c                  C   s^   t  } | j| j}}t||dd\}}ttdddddgidd}d	D ]	}t|||| q#d S )
Nr   r   rh  r   r  r   r   r   r{  )r   rS  rT  rE   r$   r   rn  )rX  rd   r   r  r  rU   rU   rV   /test_gridsearchcv_cross_val_predict_with_methodc  s   r  c                  C   sL   d} d}t | d|ddd\}}ttddd	}d
D ]
}t||||d qd S )Nr  r   r   r   rh  r   rU  r7  r  r   r  r   )r  r   )r   r  r  )r   r8   r   rb  )n_sampr7  rd   r   r  r  rU   rU   rV   1test_cross_val_predict_with_method_multilabel_ovrl  s   

r  c                   @   s   e Zd Zdd ZdS )RFWithDecisionFunctionc                 C   s2   |  |}d}t|tsJ |dd |D }|S )Nz?This helper should only be used on multioutput-multiclass tasksc                 S   s.   g | ]}|j d  dkr|dddf n|qS )r   r   Nr   rg  )r   r  rU   rU   rV   rp    s   . z<RFWithDecisionFunction.decision_function.<locals>.<listcomp>)r   r   r   )rT   rd   probsmsgrU   rU   rV   r  ~  s
   
z(RFWithDecisionFunction.decision_functionN)rq   rr   rs   r  rU   rU   rU   rV   r  z  s    r  c               	   C   s   d} t dd| ddd\}}|d d df  |d d df 7  < d	D ])}tddd
}t  td t||||d W d    n1 sEw   Y  q!d S )Nr   r  r   r   rh  r  r   r   r   r  r  n_estimatorsr   ignorer  )r   r  r  r  simplefilterrz  )r7  rd   r   r  r  rU   rU   rV   0test_cross_val_predict_with_method_multilabel_rf  s   

$

r  c               	   C   s~   t jd} | jdddd}t g d}t }dD ]"}t  td t	|||| W d    n1 s7w   Y  qd S )Nr   r   )r9  r   r  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  )
r   r  r  normalr  r   r  r  r  rn  )r  rd   r   r  r  rU   rU   rV   -test_cross_val_predict_with_method_rare_class  s   

r  c               	   C   s   t jd} | jdddd}t ddgddgddgddgddgg}dD ])}tddd}t  td	 t	||||d
 W d    n1 sHw   Y  q$d S )Nr   r   )r   r   r  r   )r   r  r   r  r  r  )
r   r  r  r  r  r  r  r  r  rz  )r  rd   r   r  r  rU   rU   rV   ;test_cross_val_predict_with_method_multilabel_rf_rare_class  s   (

r  c                 C   s   t t||g}t||}|| |D ]>\}}	|| | ||  || |	 }
|dkr6t t|	|f}nt t|	|ft |jj	}|
|d d |j
f< |||	< q|S )Nr   )r   rU  r   r]  r  r]   rs  rf  rR  rg  r   )rd   r   r   classesr  r  r`  funcr  r  expected_predictions_exp_pred_testrU   rU   rV   get_expected_predictions  s   

r  c                  C   s  t ddd} t dd tdD }d}tdd}td	d}t }g d
}|D ][}t }t|| |||d}	t	| |||||}
t
|
|	 t|| |||d}	t	| |||||}
t
|
|	 tt tdddd}t|| |||d}	||}t	| |||||}
t
|
|	 q*d S )Nr  r  r   c                 S   s   g | ]}|d  qS )r   rU   )r   rw   rU   rU   rV   rp    s    z7test_cross_val_predict_class_subset.<locals>.<listcomp>r   r   r  r   r{  r  r   r   )r   r  r   r  r   r'   r<   r   r-   r  rJ   rE   r  fit_transform)rd   r   r  kfold3kfold4lemethodsr  r  r  r`  rU   rU   rV   #test_cross_val_predict_class_subset  s6   




r  c                     sL  t  } | j| j}}t }tjddd}|d |  tj	|j
tjdtj	|j
ddtjd zRt||| fd	d
d tt t|||fdd
d W d    n1 sZw   Y  W d\ tdD ]}z
t|j
 W  d S  ty   td Y qhw d S d\ tdD ]}z	t|j
 W  w  ty   td Y qw w )NwbF)moderS  s   Hello world!!!!!rQ  rU   r)rZ   r  rR  c                        S r`   rU   r  rd   r   )rk   rU   rV   r         z#test_score_memmap.<locals>.<lambda>r   c                    r  r`   rU   r  )r   rU   rV   r     r  ro   r   r   )r   rS  rT  r   tempfileNamedTemporaryFilewriter  r   memmapnamer  r.   r   r   r   r   osunlinkOSErrorr   )rX  rd   r   r   tfr  rU   )rk   r   rV   test_score_memmap  s@   
r  c                     s   t t fg} zddlm}m} | ||f W n	 ty   Y nw | D ]/\ t }|j|j}} ||}} fdd}fdd}	t	||	d}
t
|
|| q"d S )Nr   r=  c                    r@  r`   rA  r{   rB  rU   rV   r     r   z4test_permutation_test_score_pandas.<locals>.<lambda>c                    r@  r`   rA  r{   rD  rU   rV   r     r   rF  )rG   rG  r>  r?  r  rH  r   rS  rT  rF   r1   )rJ  r>  r?  rX  rd   r   rK  rL  rM  rN  r   rU   rO  rV   "test_permutation_test_score_pandas  s    
r  c                  C   s   t t j} tdd}tddtdd}}t| |d t ||dd d d d
}d|d< tjtd	d
 tdi | W d    n1 sDw   Y  | 	 dksQJ d S )Nr   r   r   r   r>  )
r   rd   r   r  r  r  r  
parametersrv  score_paramsr   r   z%Failing classifier failed as requiredr   r  rU   )
r7   FAILING_PARAMETERr   r  r   r   r   r   r4   rk   )failing_clfrd   r  r  fit_and_score_argsrU   rU   rV   test_fit_and_score_failing   s(   
r  c                  C   s|   t ddd\} }tddd}tt | \}}t|| |t ||ddddd d d	d
}tdi |}|d |d ks<J d S )Nr   r   r   r   r   r  r  )r)  r*  T)r   rd   r   r  r  r  r  r  rv  r  return_parametersr  rU   )r   r>   nextr+   r  r   r4   )rd   r   r   r  r  r  resultrU   rU   rV   test_fit_and_score_working;  s$   r  c                   @   s*   e Zd ZdddZdddZd	ddZdS )
DataDependentFailingClassifierNc                 C   s
   || _ d S r`   max_x_value)rT   r  rU   rU   rV   rW   R  rn   z'DataDependentFailingClassifier.__init__c                 C   s&   || j k }|rtd| dd S )NzClassifier fit failed with z values too high)r  r  r   )rT   rd   r   num_values_too_highrU   rU   rV   r]   U  s   
z"DataDependentFailingClassifier.fitc                 C      dS )Nr  rU   ri   rU   rU   rV   rk   \  rf   z$DataDependentFailingClassifier.scorer`   ro   )rq   rr   rs   rW   r]   rk   rU   rU   rU   rV   r  Q  s    

r  r   c                 C   s   t dd}tdd}td}|||g}d| d}d}tjd	|d
  d| tjd}tjt	|d t
|i | W d    d S 1 sFw   Y  d S )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  rr  recompileDOTALLr   r   r   r/   )r   r  rd   r   cross_validate_argscross_validate_kwargsindividual_fit_error_messager   rU   rU   rV   -test_cross_validate_some_failing_fits_warning`  s$   



	"r  c                 C   s   t t j}tdd}td}|||g}d| d}d}tjd| tjd}tj	t
|d	 t|i | W d    d S 1 sAw   Y  d S )
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  rr  r  r  r  r   r   r   r/   )r   r  rd   r   r  r  r  r:  rU   rU   rV   *test_cross_validate_all_failing_fits_error|  s   



"r  c                 C   s   t |r`   )r   )r   rd   r   	error_msgrU   rU   rV   _failing_scorer  s   r  zignore:lbfgs failed to converger   c              	   C   s   t dd\}}tdd||}d}tt|d}| dkr@tjt|d t|||d	|| d
 W d    d S 1 s9w   Y  d S d|  }tj	t
|d t|||d	|| d
}t||  W d    d S 1 sgw   Y  d S )NTr   r   r)  "This scorer is supposed to fail!!!r  r   r   r   )r   r   r   r   )r   r   r]   r   r  r   r   r   r.   r   r   rH   )r   rd   r   r   r  failing_scorerwarning_msgr   rU   rU   rV   #test_cross_val_score_failing_scorer  s(   ""r  r  with_multimetricc              
   C   s:  t dd\}}tdd||}d}tt|d}|r%tt}|||d}	n|}	| dkrPtjt	|d	 t
|||d
|	|| d W d    d S 1 sIw   Y  d S d|  }
tjt|
d	7 t
|||d
|	|| d}|D ] }d|v rd|v r|| D ]	}t|tsJ qxqjt|| |  qjW d    d S 1 sw   Y  d S )NTr   r   r  r  r  )score_1score_2score_3r   r   r   )r   r   r  r   r   r5   _score_2)r   r   r]   r   r  r   r   r   r   r   r/   r   r   r   rh   rH   )r   r  r  rd   r   r   r  r  non_failing_scorerr   r  r   r   r  rU   rU   rV   "test_cross_validate_failing_scorer  s^   "	"r  c                 C   r  )Ng;pΈ^@rU   )r  jr$  rU   rU   rV   three_params_scorer  rf   r  z:train_score, scorer, verbose, split_prg, cdt_prg, expectedr   )r   r   r   r   zS\[CV\] END .................................................... total time=   0.\ds)sc1sc2)scorersr   ze\[CV 2/3\] END  sc1: \(train=3.421, test=3.421\) sc2: \(train=3.421, test=3.421\) total time=   0.\dsr   zW\[CV 2/3; 1/1\] END ....... sc1: \(test=3.421\) sc2: \(test=3.421\) total time=   0.\dsc                 C   s   t ddd\}}tddd}	tt |\}
}t|	||||
||d d d |||d}td
i | |  \}}|d}t|dkrMt	
||d	 sKJ d S t	
||d sWJ d S )Nr   r   r   r   r   )r   rd   r   r  r  r  r  r  rv  r  r  split_progresscandidate_progress
r   r   rU   )r   r>   r  r+   r  r   r4   
readouterrr   r  r   )capsysr  r  r  	split_prgcdt_prgexpectedrd   r   r   r  r  r  r  r  outlinesrU   rU   rV   test_fit_and_score_verbosity  s0   '
r  c               	   C   sV   d} dd }t jt| d td d d |d tjd W d    d S 1 s$w   Y  d S )Nz&scoring must return a number, got Nonec                 S   s   d S r`   rU   )r   X_testrU   rU   rV   two_params_scorer@	  rf   z%test_score.<locals>.two_params_scorerr   )r   r  rx  r  r  r   )r   r   r   r5   r   r   )r:  r  rU   rU   rV   r  =	  s   "r  c                  C   sj   dd } t dddd\}}tdd}||| t|||d| d	}g d
}|D ]}d||v s2J q'd S )Nc                 S   s2   |  |}t||}|d |d |d |d dS )N)r   r   r  )r   r   )r   r   tnfpfntp)re   r   )r   rd   r   r(  cmrU   rU   rV   r)  O	  s   

zPtest_callable_multimetric_confusion_matrix_cross_validate.<locals>.custom_scorer(   r   rh  )r   r  r   r   r   )r   r   r  ztest_{})r   r?   r]   r/   r   )r)  rd   r   r  r4  score_namesr  rU   rU   rV   9test_callable_multimetric_confusion_matrix_cross_validateN	  s   
r  c                  C   s&   t dd\} }tt | |ddd dS )z^Check that regressors with partial_fit is supported.

    Non-regression test for #22981.
    rh  r   Tr   )r!  r   N)r   r0   r:   )rd   r   rU   rU   rV   *test_learning_curve_partial_fit_regressors^	  s   r  c           
      C   s  t dddd| d\}}t|}|| || }}t }d}tjt|d t|||dtjd	^}}}}W d
   n1 s>w   Y  t	dD ]}	t
||	  sTJ t
||	  s_J qGt	d|jd D ]}	t
||	  ruJ t
||	  rJ qhd
S )zKChecks for fit failures in `learning_curve` and raises the required warningr   r   r   F)r   r7  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   rZ   any)
global_random_seedrd   r   
sorted_idxsvcr   r  r  r  rx  rU   rU   rV   -test_learning_curve_some_failing_fits_warningi	  s.   

	r  c                 C   s  t dd\}}t|}t }tdd| d}t||||ddd}d|vs%J t||||ddd}d|v s5J |d d	 }|d d
 }t||jksJJ t||jksSJ tdd |D d tdd |D d t|	||D ]\}\}	}
t|| |	 t|| |
 qodS )z<Check the behaviour of `return_indices` in `cross_validate`.Tr   r   )r  rE   r   r   F)r   r   return_indicesindicesr  r  c                 S      g | ]}|j qS rU   r  r   r  rU   rU   rV   rp  	      z6test_cross_validate_return_indices.<locals>.<listcomp>r  c                 S   r  rU   r  r  rU   rU   rV   rp  	  r  r  N)
r   r=   r   r'   r/   r   r  rK   r  r  )r  rd   r   r   r   r4  train_indicestest_indices	split_idxexpected_train_idxexpected_test_idxrU   rU   rV   "test_cross_validate_return_indices	  s$   r  zfunc, extra_argsalphar   )rE  rF  c              	   C   s   t jtdd | dt ttdi d| W d   n1 s w   Y  t jtdd | dt tti i d| W d   dS 1 sFw   Y  dS )	z2Check that we warn about deprecating `fit_params`.z`fit_params` is deprecatedr   r   )r   rd   r   r   rv  Nz1`params` and `fit_params` cannot both be provided)r   rd   r   rv  r   rU   )r   r   FutureWarningr@   rd   r   r   r   r  
extra_argsrU   rU   rV   test_fit_param_deprecation	  s(   
"r	  )enable_metadata_routingc                 C   sN   t jtdd | dt ttg d| W d   dS 1 s w   Y  dS )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   rd   r   r  NrU   )r   r   r   r@   rd   r   r  rU   rU   rV   #test_groups_with_routing_validation	  s   "r  c                 C   s.   t dddd\}}| dt ||d| dS )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   r6  )r   rd   r   NrU   )r   r@   )r  r  rd   r   rU   rU   rV   test_cross_validate_params_none	  s   r  c              	   C   s   t d}tjt|d | dt tttg dd| W d   n1 s'w   Y  | t	kr2dS t d}tjt|d! | dt j
ddjddtttg dd| W d   dS 1 sbw   Y  dS )	zMCheck that we raise an error when passing metadata that is not
    requested.z[metadata] are passed but are not explicitly set as requested or not requested for ConsumingClassifier.fit, which is used withinr   )metadata)r   rd   r   r   Nz[metadata] are passed but are not explicitly set as requested or not requested for ConsumingClassifier.score, which is used withinTrU   )r  escaper   r   r   r@   rd   r   r   r-   set_fit_requestset_partial_fit_request)r  r  r  rU   rU   rV    test_passed_unrequested_metadata	  s@   
"r  c                 C   s  t  }t|djddd}t  }t|djddd}t  }t|djdd	d}tt}t	j
d
}	|	|}
|	|}|	d
d|}|	|}|	|}|	|}ttt|dddtt|dtt|dtt|dtt|dtt i}t||||d}| tur|j|
|d | |ftt|d||  |d|i | turt|sJ |D ]}t|d| jd|
|d qt|sJ |D ]}t|d| j||d qt|sJ |D ]}t|d| jd||d qdS )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  )rd   r   r   r   rk   objr  parentsplit_paramsr   r  r  )r  r  r  r  r  r]   N)rC   rA   set_score_requestrB   set_split_requestr@   r  rN   rd   r   r  r  r  randintr/   r   r.   r0   r2   r1   r-   updater   r   rD   rq   )r  r  scorer_registryr  splitter_registrysplitterestimator_registryr   r   r  r  r  r  r  r  r  scoring_argsr   _scorer	_splitter
_estimatorrU   rU   rV   !test_validation_functions_routing$
  s   











	
	r,  c               
   C   s   t t} tjd}|| }|| }t }t|djddd}t	|tt
t dt||dd t|s6J |D ]}t|d	d
d||d q8dS )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  )rd   r   r   r!  r   r   r0   r  N)rN   rd   r   r  r  r  rC   r@   r  r0   r   rB   r   r   rD   )r   r  r  r  r'  r   r+  rU   rU   rV   8test_learning_curve_exploit_incremental_learning_routing
  s<   


	r-  )rt   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   r   sklearn.imputer   sklearn.linear_modelr   r   r   r   r   sklearn.metricsr   r   r   r   r   r   r    r!   r"   sklearn.metrics._scorerr#   sklearn.model_selectionr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   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   rO   ru   r   r   r   rr  rd   r  r   r   rp  r   markparametrizer   r   r   r   rV  r  r  r  r;  rP  r_  rf  rw  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  r5  r6  rA  rB  rC  rG  rH  rO  rQ  rT  r[  rb  rn  rz  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  filterwarningsr  r  r  r  r  r  r  r  r  r	  r  r  r  r,  r-  rU   rU   rU   rV   <module>   s    ,D
X

(
47BI
#
B
80
5
	='N0.&
4	(



=

$ !
	%\