U
    ^»{jNB ã                   @   sj  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mZ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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.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD ddlEmFZFmGZGmHZH ddlImJZJ ddlKmLZL ddlMmNZN ddlOmPZP ddlQmRZR ddlSmTZT ddlUmVZVmWZW ddlXmYZYmZZZ ddl[m\Z\ ddl]m^Z^m_Z_ ddl`maZambZbmcZcmdZd ddlemfZf G dd„ deƒZgG dd „ d egƒZhG d!d"„ d"eƒZiG d#d$„ d$eiƒZjG d%d&„ d&ƒZke ld'¡ZmeemƒZne oddd(d(d)d)d*d*d+d+g
¡Zpe od(d(d(d)d)d)d*d*d*d*g
¡Zqee rd,¡ƒZsd-d.„ Ztd/d0„ Zud1d2„ Zvd3d4„ Zwejx yd5d6d7g¡ezd8œd9d:„ƒZ{d;d<„ Z|d=d>„ Z}d?d@„ Z~ejx dA¡dBdC„ ƒZ€dDdE„ Z�dFdG„ Z‚dHdI„ ZƒdJdK„ Z„dLdM„ Z…dNdO„ Z†dPdQ„ Z‡dRdS„ ZˆdTdU„ Z‰dVdW„ ZŠdXdY„ Z‹dZd[„ ZŒd\d]„ Z�d^d_„ ZŽd`da„ Z�dbdc„ Z�ddde„ Z‘ejx dA¡dfdg„ ƒZ’dhdi„ Z“djdk„ Z”dldm„ Z•dndo„ Z–dpdq„ Z—drds„ Z˜dtdu„ Z™dvdw„ Zšdxdy„ Z›dzd{„ Zœd|d}„ Z�d~d„ Zžd€d�„ ZŸd‚dƒ„ Z d„d…„ Z¡d†d‡„ Z¢dˆd‰„ Z£dŠd‹„ Z¤dŒd�„ Z¥dŽd�„ Z¦d�d‘„ Z§d’d“„ Z¨d”d•„ Z©d–d—„ Zªd˜d™„ Z«dšd›„ Z¬dœd�„ Z­dždŸ„ Z®d d¡„ Z¯d¢d£„ Z°d¤d¥„ Z±G d¦d§„ d§e ƒZ²d¨d©„ Z³dªd«„ Z´d¬d­„ Zµd®d¯„ Z¶d°d±„ Z·d²d³„ Z¸ejx dA¡d´dµ„ ƒZ¹d¶d·„ Zºd¸d¹„ Z»G dºd»„ d»eƒZ¼ejx yd¼ej½dg¡d½d¾„ ƒZ¾ejx yd¼ej½dg¡d¿dÀ„ ƒZ¿dÁdÂ„ ZÀejx dÃ¡ejx yd¼ej½ddÄg¡dÅdÆ„ ƒƒZÁejx dÃ¡ejx yd¼ej½ddÄg¡ejx ydÇd7d6g¡ejx ydÈd6d7g¡dÉdÊ„ ƒƒƒƒZÂdËdÌ„ ZÃejx ydÍd6eÃd)dÎdÏdÐfd7eÃeÃdÑœd*dÎdÏdÒfd6eÃeÃdÑœdÓdÎdÏdÔfg¡dÕdÖ„ ƒZÄd×dØ„ ZÅdÙdÚ„ ZÆdÛdÜ„ ZÇdÝdÞ„ ZÈdS )ßzTest the validation moduleé    N)Úpartial)ÚStringIO)Úsleep)Ú
coo_matrixÚ
csr_matrixÚissparse)ÚBaseEstimatorÚ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)Ú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)Úshuffle)ÚCheckingClassifierÚMockDataFrame)Úassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equal)Ú_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)ÚselfrH   © rL   úl/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/model_selection/tests/test_validation.pyÚ__init__Z   s    zMockImprovingEstimator.__init__Nc                 C   s   || _ |jd | _| S rG   ©rJ   ÚshaperI   ©rK   rJ   Zy_subsetrL   rL   rM   Úfit_   s    zMockImprovingEstimator.fitc                 C   s   t ‚d S ©N©ÚNotImplementedError©rK   ÚXrL   rL   rM   Úpredictd   s    zMockImprovingEstimator.predictc                 C   s2   |   |¡rdt| jƒ| j  S t| jƒ| j S d S )Ng       @)Ú_is_training_dataÚfloatrI   rH   ©rK   rW   ÚYrL   rL   rM   Úscoreg   s    
zMockImprovingEstimator.scorec                 C   s
   || j kS rS   ©rJ   rV   rL   rL   rM   rY   n   s    z(MockImprovingEstimator._is_training_data)N)NN©	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rN   rR   rX   r]   rY   rL   rL   rL   rM   rF   W   s   

rF   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 rS   )ÚsuperrN   ÚxÚexpected_fit_params)rK   rH   rg   ©Ú	__class__rL   rM   rN   u   s    z*MockIncrementalImprovingEstimator.__init__c                 C   s
   | j |kS rS   ©rf   rV   rL   rL   rM   rY   z   s    z3MockIncrementalImprovingEstimator._is_training_datac              	   K   s¢   |  j |jd 7  _ |d | _| jržt| jƒt|ƒ }|rNtdt|ƒ› d�ƒ‚| ¡ D ]F\}}|| jkrVt|ƒt|ƒkrVtd|› dt|ƒ› dt|ƒ› d�ƒ‚qVd S )Nr   zExpected fit parameter(s) z
 not seen.zFit parameter z has length z; expected Ú.)	rI   rP   rf   rg   ÚsetÚAssertionErrorÚlistÚitemsrE   )rK   rW   ÚyÚparamsÚmissingÚkeyÚvaluerL   rL   rM   Úpartial_fit}   s"    
ÿÿþÿz-MockIncrementalImprovingEstimator.partial_fit)N)N)r`   ra   rb   rc   rN   rY   ru   Ú__classcell__rL   rL   rh   rM   rd   r   s   rd   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 rS   )rJ   Úparam)rK   ry   rL   rL   rM   rN   “   s    z#MockEstimatorWithParameter.__init__c                 C   s   || _ |jd | _| S rG   rO   rQ   rL   rL   rM   rR   —   s    zMockEstimatorWithParameter.fitc                 C   s   t ‚d S rS   rT   rV   rL   rL   rM   rX   œ   s    z"MockEstimatorWithParameter.predictNc                 C   s   |   |¡r| jS d| j S )Né   )rY   ry   )rK   rW   rp   rL   rL   rM   r]   Ÿ   s    z MockEstimatorWithParameter.scorec                 C   s
   || j kS rS   r^   rV   rL   rL   rM   rY   ¢   s    z,MockEstimatorWithParameter._is_training_data)rx   )NNr_   rL   rL   rL   rM   rw   �   s   

rw   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tdƒ‚d| _tƒ  ||¡S )NÚfit_called_zfit is called the second timeT)Úhasattrrm   r|   re   rR   rQ   rh   rL   rM   rR   ©   s    z)MockEstimatorWithSingleFitCallAllowed.fitc                 C   s   t ‚d S rS   rT   rV   rL   rL   rM   rX   ®   s    z-MockEstimatorWithSingleFitCallAllowed.predict)r`   ra   rb   rc   rR   rX   rv   rL   rL   rh   rM   r{   ¦   s   r{   c                	   @   sH   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 rS   ©ÚaÚallow_nd)rK   r€   r�   rL   rL   rM   rN   µ   s    zMockClassifier.__init__Nc                 C   sT  || _ || _|	| _|
dk	r"|
| ƒ | jr8| t|ƒd¡}|jdkrP| jsPtdƒ‚|dk	rˆ|jd |jd ksˆt	d 
|jd |jd ¡ƒ‚|dk	rÈ|jd tt t¡ƒksÈt	d 
|jd tt t¡ƒ¡ƒ‚|dk	�rd}|jd |jd k�st	| 
|jd |jd ¡ƒ‚|dk	�rPd	}|jtjk�sPt	| 
|jd |jd
 tjd tjd
 ¡ƒ‚| S )z÷The 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})rz   )Ú	dummy_intÚ	dummy_strÚ	dummy_objr�   ÚreshapeÚlenÚndimÚ
ValueErrorrP   rm   ÚformatÚnpÚuniquerp   ÚP_sparse)rK   rW   r\   Úsample_weightÚclass_priorÚsparse_sample_weightÚsparse_paramr„   r…   r†   ÚcallbackÚfmtrL   rL   rM   rR   ¹   sP     þÿ ÿÿ
ÿ ÿ
ÿüzMockClassifier.fitc                 C   s&   | j r| t|ƒd¡}|d d …df S )Nr‚   r   )r�   r‡   rˆ   ©rK   ÚTrL   rL   rM   rX   ø   s    zMockClassifier.predictc                 C   s   |S rS   rL   r•   rL   rL   rM   Úpredict_probaý   s    zMockClassifier.predict_probac                 C   s   ddt  | j¡  S )Nç      ð?rz   )rŒ   Úabsr€   r[   rL   rL   rM   r]      s    zMockClassifier.scorec                 C   s   | j | jdœS )Nr   r   )rK   ÚdeeprL   rL   rM   Ú
get_params  s    zMockClassifier.get_params)r   F)	NNNNNNNNN)NN)F)
r`   ra   rb   rc   rN   rR   rX   r—   r]   r›   rL   rL   rL   rM   r~   ²   s    
         õ
?
r~   )é
   é   rz   r�   rƒ   é   é   c               	   C   s|  t ƒ } tddƒD ]š}|| _t| ttƒ}t||  tt¡ƒ t 	ttd d d… g¡}t| t
|ƒ}t||  t
|¡ƒ t| t
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 t¡� t| ttd
d� W 5 Q R X td d …d d …tjf }t dd�} t| |tƒ}t dd�} t t¡� t| |tdd� W 5 Q R X d S )Niöÿÿÿrœ   r‚   c                 S   s
   t | tƒS rS   ©Ú
isinstancern   rj   rL   rL   rM   Ú<lambda>(  ó    z&test_cross_val_score.<locals>.<lambda>©Úcheck_Xrƒ   ©Úcv©Úcheck_yZsklearn©ÚscoringT)r�   FÚraise©Úerror_score)r~   Úranger€   r,   rW   Úy2rD   r]   rŒ   Úcolumn_stackÚX_sparser?   ÚtolistÚpytestÚraisesrŠ   Únewaxis)Úclfr€   ÚscoresÚmultioutput_yÚ
list_checkÚX_3drL   rL   rM   Ú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©Z
return_X_yÚauto)ÚgammaÚCrz   rœ   )Z
param_gridr�   )Ún_jobs)r   r<   r"   r-   )rW   rp   r·   ÚgridrL   rL   rM   Útest_cross_validate_many_jobs<  s    
rÃ   c               	   C   sª  t dd�\} }tƒ }d}tjt|d��" t|| |ttƒttƒfd� W 5 Q R X tjt|d�� t|| |ttƒfd� W 5 Q R X tjt|d d�� t|| |dd� W 5 Q R X tjt|d d�� t|| |d	d� W 5 Q R X tjt|d�� t|| |ttƒggd� W 5 Q R X tjtd
d�� t|| |t	ƒ d� W 5 Q R X tt
ƒ}dtj› d�}tjt|d�� t|| ||d� W 5 Q R X tjt|d�� t|| |d|id� W 5 Q R X d S )Nr   ©Úrandom_statez.*must be unique strings.*©Úmatchrª   zEmpty list.*rL   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: 
Zfoo)r   r~   r´   rµ   rŠ   r-   r   r    r   Údictr   rŒ   ÚnanÚwarnsÚUserWarning)rW   rp   Ú	estimatorÚerror_message_regexpZmulticlass_scorerÚwarning_messagerL   rL   rM   Ú)test_cross_validate_invalid_scoring_paramF  s6    ü "ÿrÑ   c                  C   sf   t dd�\} }tdtƒ fdtƒ fgƒ}t|| |dd�}|d }t|tƒsLt‚tdd„ |D ƒƒsbt‚d S )	NTr½   ÚimputerÚ
classifier)Úreturn_estimatorrÎ   c                 s   s   | ]}t |tƒV  qd S rS   )r¡   r9   )Ú.0rÎ   rL   rL   rM   Ú	<genexpr>Š  s     z7test_cross_validate_nested_estimator.<locals>.<genexpr>)	r   r9   r   r~   r-   r¡   rn   rm   Úall)rW   rp   ZpipelineÚresultsZ
estimatorsrL   rL   rM   Ú$test_cross_validate_nested_estimatorz  s    þÿrÙ   Ú
use_sparseFT)rÚ   c              	   C   s¢  t ƒ }tddd�\}}tdd�}tddd�\}}tddd�}| rPt|ƒ}t|ƒ}|||f|||ffD �]6\}}	}
t|
dd�}t|
d	d�}g }g }g }g }g }| ||	¡D ]’\}}t|
ƒ 	|| |	| ¡}
| 
||
|| |	| ƒ¡ | 
||
|| |	| ƒ¡ | 
||
|| |	| ƒ¡ | 
||
|| |	| ƒ¡ | 
|
¡ q¨t |¡}t |¡}t |¡}t |¡}t |¡}|||||f}t|
||	||ƒ t|
||	||ƒ qdd S )
Né   r   ©Ú	n_samplesrÅ   rÄ   Úlinear©ÚkernelrÅ   Úneg_mean_squared_errorrª   Úr2)r%   r   r   r   r<   r   r   Úsplitr	   rR   ÚappendrŒ   ÚarrayÚ"check_cross_validate_single_metricÚ!check_cross_validate_multi_metric)rÚ   r§   ZX_regZy_regÚregZX_clfZy_clfr·   rW   rp   ÚestZ
mse_scorerZ	r2_scorerÚtrain_mse_scoresÚtest_mse_scoresÚtrain_r2_scoresÚtest_r2_scoresÚfitted_estimatorsÚtrainÚtestr¸   rL   rL   rM   Útest_cross_validate�  sH    
 




ûrñ   c              	   C   sz  |\}}}}}	dD ]Þ\}
}|
rBt | ||dd|d�}t|d |ƒ nt | ||dd|d�}t|tƒsdt‚t|ƒ|kstt‚t|d |ƒ |
r®t | ||dgd|d�}t|d	 |dƒ nt | ||dgd|d�}t|tƒsÒt‚t|ƒ|ksât‚t|d
 |ƒ qt | ||dd|d�}t|d ƒD ]b\}}|j ¡ }t	|ƒ�r6| 
¡ }|	| j ¡ }t	|ƒ�rV| 
¡ }t||ƒ t|j|	| jƒ �qd S )N))Trž   )Frƒ   rá   T©r«   Úreturn_train_scorer§   Útrain_scoreFÚ
test_scorerâ   Útrain_r2Útest_r2)r«   rÔ   r§   rÎ   )r-   rC   r¡   rÊ   rm   rˆ   Ú	enumerateZcoef_Úcopyr   ÚtoarrayrB   Z
intercept_)r·   rW   rp   r¸   r§   rê   rë   rì   rí   rî   ró   Zdict_lenZmse_scores_dictZr2_scores_dictÚkré   Zest_coefZfitted_est_coefrL   rL   rM   ræ   Å  s†    úúú     ÿ     ÿ     ÿ



ræ   c              
   C   s¬  |\}}}}}	dd„ }
dt tƒddœ|
f}ddddh}| d	d
h¡}dD �]\}|D �]P}|rŽt| |||d|d�}t|d	 |ƒ t|d
 |ƒ nt| |||d|d�}t|tƒs°t‚t| 	¡ ƒ|rÂ|n|ksÌt‚t|d |ƒ t|d |ƒ t
|d ƒtjksþt‚t
|d ƒtjk�st‚t
|d ƒtjk�s.t‚t
|d ƒtjk�sFt‚t |d dk¡�s^t‚t |d dk ¡�svt‚t |d dk¡�sŽt‚t |d dk ¡sRt‚qRqHd S )Nc                 S   s"   |   |¡}t||ƒt||ƒ dœS )N©râ   rá   )rX   r!   r   )r·   rW   rp   Úy_predrL   rL   rM   Úcustom_scorer  s    

þz8check_cross_validate_multi_metric.<locals>.custom_scorerrü   rá   r÷   Ztest_neg_mean_squared_errorZfit_timeZ
score_timerö   Ztrain_neg_mean_squared_error)TFTrò   Fr   rœ   )r   r!   Úunionr-   rC   r¡   rÊ   rm   rl   ÚkeysÚtyperŒ   Zndarrayr×   )r·   rW   rp   r¸   r§   rê   rë   rì   rí   rî   rþ   Zall_scoringZkeys_sans_trainZkeys_with_trainró   r«   Ú
cv_resultsrL   rL   rM   rç     s~    úþú
üÿ

     ÿ ÿ     ÿ

ÿ ÿrç   c               
   C   s˜   t dddd�\} }tdd�}tƒ tdƒtƒ tƒ g}d}|D ]X}tjt|d�� t	|| ||d	� W 5 Q R X tjt|d�� t
|| ||d	� W 5 Q R X q:d S )
Né   r�   r   )rÝ   Ú	n_classesrÅ   rÞ   ©rà   z*The 'groups' parameter should not be None.rÆ   )rÎ   rW   rp   r§   )r   r<   r&   r(   r#   r$   r´   rµ   rŠ   r,   r+   )rW   rp   r·   Z	group_cvsÚerror_messager§   rL   rL   rM   Ú#test_cross_val_score_predict_groupsP  s    
ür  z(ignore: Using or importing the ABCs fromc                     sš   t t fg} z"ddlm}m} |  ||f¡ W n tk
r@   Y nX | D ]N\‰‰ ˆ tƒˆtƒ }}‡ fdd„}‡fdd„}t||d�}t	|||dd� qFd S )	Nr   ©Ú	DataFrameÚSeriesc                    s
   t | ˆ ƒS rS   ©r¡   rj   ©ÚInputFeatureTyperL   rM   r¢   t  r£   z-test_cross_val_score_pandas.<locals>.<lambda>c                    s
   t | ˆ ƒS rS   r  rj   ©Ú
TargetTyperL   rM   r¢   u  r£   ©r¥   r©   rƒ   r¦   )
r@   Úpandasr	  r
  rä   ÚImportErrorrW   r°   r?   r,   ©Útypesr	  r
  ÚX_dfÚy_serÚcheck_dfÚcheck_seriesr·   rL   ©r  r  rM   Útest_cross_val_score_pandasf  s    
r  c                  C   s¸   t dd�} tƒ }|j|j }}tdƒ}t| |||d�}tdƒ}g }| ||¡D ]J\}}tjt	|ƒt
d�}	tjt	|ƒt
d�}
d|	|< d|
|< | ||f¡ qNt| |||d�}t||ƒ d S )NrÞ   r  rŸ   r¦   ©Údtyperz   )r<   r   ÚdataÚtargetr%   r,   rã   rŒ   Úzerosrˆ   Úboolrä   rD   )ÚsvmÚirisrW   rp   ZkfoldZscores_indicesZcv_masksrï   rð   Z
mask_trainZ	mask_testZscores_masksrL   rL   rM   Útest_cross_val_score_maskz  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 5 Q R X t	 
t¡� t| | ¡ |ƒ W 5 Q R X d S )NZprecomputedr  rÞ   c                 S   s   t  | |j¡S rS   )rŒ   Údotr–   )rf   rp   rL   rL   rM   r¢   ™  r£   z2test_cross_val_score_precomputed.<locals>.<lambda>)r<   r   r  r  rŒ   r$  r–   r,   rC   r´   rµ   rŠ   r³   )r!  r"  rW   rp   Zlinear_kernelZscore_precomputedZscore_linearZscore_callablerL   rL   rM   Ú test_cross_val_score_precomputed�  s     




r%  c               	      s²   t ƒ } tjd }tt t¡ƒ}tt dg¡t dg¡t dg¡ffdd�}tt 	d¡ƒ}d‰ d‰t
ƒ ‰‡ ‡‡fdd	„}t |¡t |d
| ¡||ˆ ˆˆ|dœ}t| tt|d� d S )Nr   rz   )rœ   rz   ©rP   rŸ   é*   Z42c                    s.   | j ˆ kst‚| jˆkst‚| jˆks*t‚d S rS   )r„   rm   r…   r†   )r·   ©Z	DUMMY_INTZ	DUMMY_OBJZ	DUMMY_STRrL   rM   Úassert_fit_params¶  s    z:test_cross_val_score_fit_params.<locals>.assert_fit_paramsr˜   )r�   r�   r‘   r’   r„   r…   r†   r“   ©Ú
fit_params)r~   rW   rP   rˆ   rŒ   r�   rp   r   rå   ÚeyeÚobjectÚonesÚfullr,   )r·   rÝ   r  ZW_sparserŽ   r)  r+  rL   r(  rM   Útest_cross_val_score_fit_params¨  s,    
" ÿ	ø
r0  c               	      sl   t ƒ } g ‰ ‡ fdd„}tjdd��  t|ƒ}t| tt|dd�}W 5 Q R X t|dddgƒ tˆ ƒdksht	‚d S )Nc                    s   ˆ   | |f¡ dS )Nr˜   )rä   )Zy_testZ	y_predict©Z_score_func_argsrL   rM   Ú
score_funcÏ  s    z3test_cross_val_score_score_func.<locals>.score_funcT©Úrecordrƒ   )r«   r§   r˜   )
r~   ÚwarningsÚcatch_warningsr   r,   rW   rp   rD   rˆ   rm   )r·   r2  r«   r]   rL   r1  rM   Útest_cross_val_score_score_funcË  s    r7  c               	   C   s4   G dd„ dƒ} t  t¡� t| ƒ tƒ W 5 Q R X d S )Nc                   @   s   e Zd ZdS )z4test_cross_val_score_errors.<locals>.BrokenEstimatorN)r`   ra   rb   rL   rL   rL   rM   ÚBrokenEstimatorÜ  s   r8  )r´   rµ   Ú	TypeErrorr,   rW   )r8  rL   rL   rM   Útest_cross_val_score_errorsÛ  s    r:  c                  C   sŽ   t ƒ } tdd�}t|| j| jƒ}t|dddddgdƒ t|| j| jdd�}t|dddddgdƒ t|| j| jdd�}t|dddddgdƒ d S )	NrÞ   r  ç
×£p=
ï?r˜   r�   Úaccuracyrª   Zf1_weighted)r   r<   r,   r  r  rC   )r"  r·   r¸   Z	zo_scoresZ	f1_scoresrL   rL   rM   Ú3test_cross_val_score_with_score_func_classificationã  s    
r=  c            	      C   sÄ   t ddddd�\} }tƒ }t|| |ƒ}t|ddddd	gd
ƒ t|| |dd�}t|ddddd	gd
ƒ t|| |dd�}t dddddg¡}t||d
ƒ ttƒ}t|| ||d�}t|ddddd	gd
ƒ d S )NrÛ   r  rŸ   r   )rÝ   Ú
n_featuresÚn_informativerÅ   g®Gázî?r;  g®Gáz®ï?gq=
×£pí?r�   râ   rª   rá   gÃõ(\�Ø‡Àgáz®GI�Àg®Gáz&qÀg\�Âõ(qÀg)\�ÂõGšÀ)r   r   r,   rC   rŒ   rå   r   r   )	rW   rp   rè   r¸   Z	r2_scoresZneg_mse_scoresZexpected_neg_mser«   Z	ev_scoresrL   rL   rM   Ú/test_cross_val_score_with_score_func_regressionö  s    r@  c               
   C   s€  t ƒ } | j}t|ƒ}| j}tdd�}tdƒ}t|||d|dd�\}}}|dksRt‚t|dd	ƒ t|||d|dt	 
|j¡d
d�\}	}
}|	|ks�t‚||ksœt‚tdd�}tdƒ}t|||d|dt	 
|j¡d
d�\}	}
}|	|ksàt‚||ksìt‚dd„ }t|ƒ}t|||d||d
d�\}}
}t|ddƒ t|ddƒ t	 t	 t|ƒ¡d¡}t|||d|dd�\}}}|dk �snt‚|dk�s|t‚d S )NrÞ   r  r�   rÛ   r<  )Ún_permutationsr§   r«   gÍÌÌÌÌÌì?ç        rz   r   )rA  r§   r«   ÚgroupsrÅ   c                 S   s"   | |k  ¡ | |k  ¡  | jd  S rG   )ÚsumrP   )Zy_truerý   rL   rL   rM   Úcustom_score;  s    z,test_permutation_score.<locals>.custom_scoreéd   )rA  r«   r§   rÅ   gÃõ(\�Âí?g{®Gáz„?rƒ   rx   çš™™™™™É?)r   r  r   r  r<   r*   r/   rm   rB   rŒ   r.  Úsizer   ÚmodÚarangerˆ   )r"  rW   r²   rp   r!  r§   r]   r¸   ZpvalueZscore_groupÚ_Zpvalue_groupZ
svm_sparseZ	cv_sparserE  ÚscorerrL   rL   rM   Útest_permutation_score  s„    
     ÿ
ø


ø      ÿ     ÿrM  c                  C   st   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éÈ   r  rœ   r‚   r�   r   rz   rÒ   Úmean)ZstrategyZmissing_valuesrÓ   )rŒ   rJ  Úfloat64r‡   rË   ÚrepeatrP   r9   r   r~   r/   ©rW   rp   ÚprL   rL   rM   Ú&test_permutation_test_score_allow_nansP  s    þÿrU  c               	   C   s¶   t  d¡ dd¡} t  dgd dgd  ¡}tdd�}d}tjt|d	�� t|| |ƒ W 5 Q R X d
}tjt	|d	��  t|| |dt  
d¡id� W 5 Q R X t|| |dt  
d¡id� d S )NrF  rœ   r   rŸ   rz   T©Zexpected_sample_weightú#Expected sample_weight to be passedrÆ   ú/sample_weight.shape == \(1,\), expected \(8,\)!r�   r*  )rŒ   rJ  r‡   rå   r?   r´   rµ   rm   r/   rŠ   r.  ©rW   rp   r·   Úerr_msgrL   rL   rM   Ú&test_permutation_test_score_fit_params^  s    
$r[  c                  C   st   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 rN  )rŒ   rJ  rQ  r‡   rË   rR  rP   r9   r   r~   r,   rS  rL   rL   rM   Útest_cross_val_score_allow_nansm  s    þÿ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|dddddgƒ t|dddddgƒ t|dddddgƒ d S )Néýÿÿÿrž   r�   rƒ   r   rz   éþÿÿÿr‚   )Zn_neighborsÚmicro)ZaverageÚmacroZsamplesrª   rx   ç      è?gUUUUUUÕ?ç      Ð?)rŒ   rå   r7   r   r    r,   rB   )	rW   rp   r·   Zscoring_microZscoring_macroZscoring_samplesZscore_microZscore_macroZscore_samplesrL   rL   rM   Útest_cross_val_score_multilabel{  s4    öÿ>ÿ
rc  c               	   C   s¬  t dd�\} }tƒ }tƒ }t |¡}| | |¡D ].\}}| | | || ¡ | | | ¡||< q0t|| ||d�}t	||ƒ t|| |ƒ}t
|ƒt
|ƒksšt‚tƒ }t|| ||d�}t
|ƒt
|ƒksÄt‚|  ¡ }||t |¡k9 }t|ƒ}t|||ƒ}t	t
|ƒt
|ƒƒ ttdd�| ƒ}t
|ƒt
|ƒk�s*t‚G dd„ dƒ}	t t¡� t|| ||	ƒ d� W 5 Q R X tdd�\} }d}
tjt|
d	��" ttd
d�| |dtdƒd� W 5 Q R X d S )NTr½   r¦   r¾   )Zn_initc                   @   s   e Zd Zddd„ZdS )z%test_cross_val_predict.<locals>.BadCVNc              	   s   s:   t dƒD ],}t ddddg¡t ddddd	g¡fV  qd S )
Nrž   r   rz   r�   rƒ   rŸ   é   é   é   )r¯   rŒ   rå   )rK   rW   rp   rC  ÚirL   rL   rM   rã   ¹  s    z+test_cross_val_predict.<locals>.BadCV.split)NN)r`   ra   rb   rã   rL   rL   rL   rM   ÚBadCV¸  s   rh  zˆNumber 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Œ   Z
zeros_likerã   rR   rX   r+   rC   rˆ   rm   r'   rù   Zmedianr   r
   r´   rµ   rŠ   r   rÌ   ÚRuntimeWarningr   )rW   rp   r§   ré   Zpreds2rï   rð   ÚpredsZXsprh  rÐ   rL   rL   rM   Útest_cross_val_predict™  sF    

ÿûrp  c               	   C   sD  t dddd�\} }ttdd�| |dd�}|jd	ks6t‚td
d�\} }ttdd�| |dd�}|jdksht‚| d d… } |d d… }d}tjt|d�� tt	ƒ | |dt
dƒd� W 5 Q R X td
d�\} }tddd�}t|| |dd�}|jdksît‚t |¡}| | ||  } }d}tjt|d�� t|| |t
dd�dd� W 5 Q R X d S )Nr�   é2   r   ©r  rÝ   rÅ   ri  rj  Údecision_function©rm  )rq  Tr½   ©é–   rƒ   rF  zÓOnly 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Æ   rl  rÞ   Zovo)rà   Zdecision_function_shape)i  é-   z€Output shape \(599L?, 21L?\) of decision_function does not match number of classes \(7\) in fold. Irregular decision_function .*rƒ   ©Ún_splits©r§   rm  )r   r+   r   rP   rm   r   r´   rµ   rŠ   r   r%   r   r<   rŒ   Zargsort)rW   rp   ro  r  ré   ÚindrÏ   rL   rL   rM   Ú.test_cross_val_predict_decision_function_shapeÑ  sL       ÿ   ÿÿ    ÿ
ÿr|  c                  C   sl   t dddd�\} }ttdd�| |dd�}|jd	ks6t‚td
d�\} }ttdd�| |dd�}|jdksht‚d S )Nr�   rq  r   rr  ri  rj  r—   rt  ©rq  r�   Tr½   ru  ©r   r+   r   rP   rm   r   ©rW   rp   ro  rL   rL   rM   Ú*test_cross_val_predict_predict_proba_shape  s        ÿ   ÿr€  c                  C   sl   t dddd�\} }ttdd�| |dd�}|jd	ks6t‚td
d�\} }ttdd�| |dd�}|jdksht‚d S )Nr�   rq  r   rr  ri  rj  Úpredict_log_probart  r}  Tr½   ru  r~  r  rL   rL   rM   Ú.test_cross_val_predict_predict_log_proba_shape  s        ÿ   ÿr‚  c            
      C   sb  t ƒ } | j| j }}t|ƒ}t ||d d d… g¡}tddd�}t|||ƒ}|jdksZt	‚t|||ƒ}|jdkstt	‚t|||ƒ}t
|jdƒ t|||ƒ}t
|jdƒ dd„ }t|d	�}t|| ¡ | ¡ ƒ}t|d
�}t||| ¡ ƒ}ttdd�| ¡ | ¡ dd�}ttdd�|| ¡ dd�}|d d …d d …tjf }dd„ }	t|	d	�}t|||ƒ}t
|jdƒ d S )Nr‚   Fr   )Zfit_interceptrÅ   )rv  )rv  r�   c                 S   s
   t | tƒS rS   r    rj   rL   rL   rM   r¢   =  r£   z4test_cross_val_predict_input_types.<locals>.<lambda>r¤   r¨   ri  rj  rs  rt  c                 S   s
   | j dkS )Nrƒ   )r‰   rj   rL   rL   rM   r¢   T  r£   )r   r  r  r   rŒ   r±   r   r+   rP   rm   rD   r?   r³   r   r¶   )
r"  rW   rp   r²   r¹   r·   Úpredictionsrº   r»   Zcheck_3drL   rL   rM   Ú"test_cross_val_predict_input_types%  sF    

üü
r„  c                     sš   t t fg} z"ddlm}m} |  ||f¡ W n tk
r@   Y nX | D ]N\‰‰ ˆ tƒˆtƒ }}‡ fdd„}‡fdd„}t||d�}t	|||dd� qFd S )	Nr   r  c                    s
   t | ˆ ƒS rS   r  rj   r  rL   rM   r¢   h  r£   z/test_cross_val_predict_pandas.<locals>.<lambda>c                    s
   t | ˆ ƒS rS   r  rj   r  rL   rM   r¢   i  r£   r  rƒ   r¦   )
r@   r  r	  r
  rä   r  rW   r°   r?   r+   r  rL   r  rM   Útest_cross_val_predict_pandasZ  s    
r…  c                  C   s   t ddddddd�\} }d|d< tddd�}tdd�}t| | |¡ƒ\}}t|| ||d	d
�}||d  d dkstt‚t ||d  d d …df dk¡sšt‚t ||d  d d …dd…f dk¡sÄt‚t ||d  dk¡sÞt‚t	|j
dd�t |j¡dd� d S )NrF  r�   r   rz   )rÝ   r>  Ún_redundantr?  Ún_clusters_per_classrÅ   ri  ©rÅ   rk  rx  r—   rz  ©Zaxisé   )Údecimal)r   r   r*   rn   rã   r+   rm   rŒ   r×   rC   rD  r.  rP   )rW   rp   r·   r§   rï   rð   Z
yhat_probarL   rL   rM   Ú!test_cross_val_predict_unbalancedn  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 )	Nr'  rF  rœ   rŸ   rX   )rp   r§   rm  r   r—   )r~   rŒ   ÚrandomÚRandomStateZrandr+   rA   )Zmock_classifierÚrngrW   Zy_hatZy_hat_probarL   rL   rM   Útest_cross_val_predict_y_none„  s        ÿr�  c                  C   sX   t ƒ } | j| j }}tƒ }dtt |jd ¡ƒi}t||||dd�}t	|t 
d¡ƒ d S )Nr‘   r   rƒ   )r+  r§   )r   r  r  r~   r   rŒ   r,  rP   r,   rD   r.  )r"  rW   rp   r·   r+  r€   rL   rL   rM   Ú&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	��6}t|||t|d
�t ddd¡|dd�\}}}	}
}W 5 Q R X t|ƒdkr¦t	d|d j
 ƒ‚|jdks´t‚|	jdksÂt‚|
jdksÐt‚|jdksÞt‚t|t ddd¡ƒ t|jdd�t ddd¡ƒ t|	jdd�t ddd¡ƒ |
jdk�s:t‚|jdk�sJt‚tjdd	��2}t|||t|| d�t ddd¡|d�\}}}W 5 Q R X t|ƒdk�r®t	d|d j
 ƒ‚t||ƒ t||	ƒ q:d S )NrÛ   rƒ   rz   r   r�   ©rÝ   r>  r?  r†  r  r‡  rÅ   ©FTTr3  rx  çš™™™™™¹?r˜   rœ   )r§   rI   r>   Zreturn_timesúUnexpected warning: %r)rœ   rƒ   r  r‰  çffffffþ?rQ  ©ry  rÝ   )r§   rI   r>   )r   rF   r5  r6  r.   r%   rŒ   Úlinspacerˆ   ÚRuntimeErrorÚmessagerP   rm   rD   rC   rP  r  r4   )rÝ   ry  rW   rp   rÎ   Úshuffle_trainÚwrI   Útrain_scoresÚtest_scoresZ	fit_timesZscore_timesZtrain_sizes2Ztrain_scores2Ztest_scores2rL   rL   rM   Útest_learning_curveš  sl    ù
	
ùúû

ú
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Û   rz   r   r�   r’  r  rƒ   r”  r˜   rœ   )rp   r§   rI   r‰  r–  )r   rF   r.   rŒ   r˜  rD   rC   rP  ©rW   rK  rÎ   rI   r�  rž  rL   rL   rM   Ú test_learning_curve_unsupervised×  s(    ù
	    ÿr¡  c               	   C   sz   t dddddddd�\} }tdƒ}tj}tƒ t_zt|| |ddd�\}}}W 5 tj ¡ }tj ¡  |t_X d	|ksvt‚d S )
NrÛ   rz   r   r�   r’  r  rƒ   )r§   Úverbosez[learning_curve])	r   rF   ÚsysÚstdoutr   ÚgetvalueÚcloser.   rm   )rW   rp   rÎ   Z
old_stdoutÚoutrI   r�  rž  rL   rL   rM   Útest_learning_curve_verboseê  s0    ù
	    ÿ

r¨  c               	   C   sL   t dddddddd�\} }tdƒ}t t¡� t|| |dd� W 5 Q R X d S )Nr�   rz   r   r’  T)Úexploit_incremental_learning©r   rF   r´   rµ   rŠ   r.   ©rW   rp   rÎ   rL   rL   rM   Ú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 ]v}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Û   rz   r   r�   r’  r  r“  rƒ   Tr”  r˜   rœ   )r§   r©  rI   r>   r‰  r–  ©r   rd   r.   rŒ   r˜  rD   rC   rP  )rW   rp   rÎ   r›  rI   r�  rž  rL   rL   rM   Ú(test_learning_curve_incremental_learning  s.    ù
	ù	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Û   rz   r   r�   r’  r  rƒ   Tr”  r˜   rœ   )rp   r§   r©  rI   r‰  r–  r­  r   rL   rL   rM   Ú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Û   rz   r   r�   r’  rG  r˜   rŸ   F©Úmax_iterÚtolr>   rƒ   T)rI   r§   r©  )r§   rI   r©  r‰  )r   rŒ   r˜  r   r.   rD   rC   rP  )
rW   rp   rI   rÎ   Útrain_sizes_incÚtrain_scores_incÚtest_scores_incÚtrain_sizes_batchÚtrain_scores_batchÚtest_scores_batchrL   rL   rM   Ú<test_learning_curve_batch_and_incremental_learning_are_equalF  sH    ù
	úú	

 
ÿ
 
ÿr¹  c               	   C   s  t dddddddd�\} }tdƒ}t t¡� t|| |dddgd� W 5 Q R X t t¡� t|| |dd	d
gd� W 5 Q R X t t¡� t|| |dddgd� W 5 Q R X t t¡� t|| |dddgd� W 5 Q R X t t¡� t|| |dddgd� W 5 Q R X d S )NrÛ   rz   r   r�   r’  r  rƒ   ©r§   rI   rB  r˜   r”  gš™™™™™ñ?é   rª  r«  rL   rL   rM   Ú0test_learning_curve_n_sample_range_out_of_boundsm  s(    ù
	    r¼  c                  C   st   t dddddddd�\} }tdƒ}d}tjt|d��( t|| |dt dd	d¡d
�\}}}W 5 Q R X t|ddgƒ d S )Nrƒ   rz   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˜   rº  )	r   rF   r´   rÌ   rn  r.   rŒ   r˜  rD   )rW   rp   rÎ   rÐ   rI   rK  rL   rL   rM   Ú1test_learning_curve_remove_duplicate_sample_sizes„  s*    ù
	ÿ    ÿr½  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Û   rz   r   r�   r’  r  rƒ   rx  r”  r˜   rœ   rº  r‰  r–  )	r   rF   r%   r.   rŒ   r˜  rD   rC   rP  )rW   rp   rÎ   r§   rI   r�  rž  rL   rL   rM   Ú(test_learning_curve_with_boolean_indicesš  s*    ù
	
    ÿ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ddgd	d
gddgddgddgg¡} t  dddddddddddddddg¡}t  dddddddddddddddg¡}tdd dd�}tdd�}t|| ||dt  ddd¡|ddd�	\}}}t|jdd�t  dddg¡ƒ t|jdd�t  dddg¡ƒ t 	t
¡�( t|| ||dt  ddd¡|d d!� W 5 Q R X 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 )#Nrz   r�   rƒ   rž   rŸ   rd  re  rf  é   rŠ  é   é   é   é   é   é   é   r  é	   rœ   Fr°  rx  g333333Ó?r˜   T)r§   rÁ   rI   rC  r>   rÅ   r‰  ra  gIëÅq×?rb  r¬   )r§   rÁ   rI   rC  r®   )r§   rÁ   rI   rC  r>   rÅ   r©  )rŒ   rå   r   r#   r.   r˜  rC   rP  r´   rµ   rŠ   )rW   rp   rC  rÎ   r§   r¶  r·  r¸  r³  r´  rµ  rL   rL   rM   Ú test_learning_curve_with_shuffle®  s�    ñÿ((
÷
 ÿ
 ÿøö
 
ÿ
 
ÿrÈ  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 5 Q R X d}tjt	|d	��" t|| |d
dt  
d¡id� W 5 Q R X t|| |d
dt  
d¡id� d S )NrF  rœ   r   rŸ   rz   TrV  rW  rÆ   r¬   r­   z/sample_weight.shape == \(1,\), expected \(2,\)!r�   )r®   r+  )rŒ   rJ  r‡   rå   r?   r´   rµ   rm   r.   rŠ   r.  rY  rL   rL   rM   Útest_learning_curve_fit_paramsü  s,    
    ÿ    ÿrÉ  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 5 Q R X d}tjt|d	��2 t|| |d
dt ddd¡ddt d
¡id� W 5 Q R X t|| |d
dt ddd¡ddt d¡id� d S )NrÛ   rz   r   r�   r’  r  r�   z9Expected fit parameter\(s\) \['sample_weight'\] not seen.rÆ   rƒ   Tr”  r˜   rœ   r¬   )r§   r©  rI   r®   z2Fit parameter sample_weight has length 3; expected)r§   r©  rI   r®   r+  )	r   rd   r´   rµ   rm   r.   rŒ   r˜  r.  )rW   rp   rÎ   rZ  rL   rL   rM   Ú3test_learning_curve_incremental_learning_fit_params  sV    ù
	ù
øørÊ  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 5 Q R X t|ƒdkrxtd
|d j	 ƒ‚t
|jdd�|ƒ t
|jdd�d| ƒ d S )Nr�   rz   r   r’  rœ   Tr3  ry   ©Ú
param_nameÚparam_ranger§   r•  r‰  )r   rŒ   r˜  r5  r6  r0   rw   rˆ   r™  rš  rC   rP  )rW   rp   rÍ  rœ  r�  rž  rL   rL   rM   Útest_validation_curve?  s.    ù
	úrÎ  c               	   C   sF   t dddddddd�\} }t ddd¡}ttƒ | |d|dd�\}}d S )Nr�   rz   r   r’  rœ   ry   rË  )r   rŒ   r˜  r0   r{   )rW   rp   rÍ  rK  rL   rL   rM   Ú%test_validation_curve_clone_estimatorZ  s$    ù

úrÏ  c               
   C   sø   d} d}t ddd�\}}ttddd�||dddd	d	gt|| d
�d�}tt t |¡dd d …f d¡Ž  ttddd�||dddd	d	gt|dd�d�}tt t |¡dd d …f d¡Ž  ttddd�||dddd	d	gt|d�d�}tt 	|¡t 	|¡ƒ d S )NrF  rŸ   r   rÜ   rÞ   rß   rÀ   r”  rG  r—  rË  )r   r�   rz   rƒ   r�   T©ry  r>   rx  )
r   r0   r<   r4   rC   rŒ   ZvsplitÚhstackr%   rå   )rÝ   ry  rW   rp   Zscores1Zscores2Zscores3rL   rL   rM   Ú+test_validation_curve_cv_splits_consistencyp  s<    


ú"


ú"

ú
rÒ  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ddgdd� W 5 Q R X d}tjt	|d	��, t|| |d
dddgddt  
d¡id� W 5 Q R X t|| |d
dddgddt  
d¡id� d S )NrF  rœ   r   rŸ   rz   TrV  rW  rÆ   Z	foo_paramr�   rƒ   r¬   )rÌ  rÍ  r®   rX  r�   )rÌ  rÍ  r®   r+  )rŒ   rJ  r‡   rå   r?   r´   rµ   rm   r0   rŠ   r.  rY  rL   rL   rM   Ú test_validation_curve_fit_paramsž  sB    
ú	ù	ùrÓ  c                  C   sv   t j d¡} t  d¡}|  |¡ t|dƒs.t‚tt  |d¡dƒrDt‚d|d< t|dƒrZt‚tt  |df¡dƒrrt‚d S )Nr   rF  é   )	rŒ   r�  rŽ  rJ  r>   r1   rm   ÚdeleterÑ  )r�  rT  rL   rL   rM   Útest_check_is_permutationÄ  s    

rÖ  c                  C   sj   t dddddd�\} }t| ƒ}t|ƒ}ttdd�ƒ}t|| |dd	�}t|||dd	�}| ¡ }t||ƒ d S )
Nr�   rz   FT)r  Ún_labelsZallow_unlabeledZreturn_indicatorrÅ   rÞ   r  rœ   r¦   )r   r   r6   r<   r+   rú   rC   )rW   rp   r²   Zy_sparseZclassifro  Zpreds_sparserL   rL   rM   Ú(test_cross_val_predict_sparse_predictionÒ  s    û
rØ  c           
   	   C   sÆ   t ddd�}|jdkr6|dkr(t|ƒfn
t|ƒdf}n|j}t |¡}| ||¡D ]6\}}t| ƒ || || ¡} t	| |ƒ|| ƒ||< qR||d |d | 
d¡fD ]}	tt| ||	||d�|ƒ q¤d	S )
z@Helper for tests of cross_val_predict with binary classificationrƒ   FrÐ  rz   rs  r�   Ústrrl  N)r%   r‰   rˆ   rP   rŒ   r  rã   r	   rR   ÚgetattrÚastyperA   r+   )
ré   rW   rp   rm  r§   Ú	exp_shapeÚexpected_predictionsrï   rð   ÚtgrL   rL   rM   Úcheck_cross_val_predict_binaryä  s    
 
 ÿrß  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 ]P\}
}t
| ƒ ||
 |	|
 ¡} t| |ƒ|| ƒ}t |	|
 ¡}||t ||¡< qj||d	 |d
 | d¡fD ]}tt| ||||d�|ƒ qÖdS )zDHelper for tests of cross_val_predict with multiclass classificationrƒ   FrÐ  r   ©rs  r�  r—   r  T©Zreturn_inverserz   r�   rÙ  rl  N)r%   rŒ   ÚfinforQ  Úminr/  rˆ   rl   r�   rã   r	   rR   rÚ  Úix_rÛ  rA   r+   )ré   rW   rp   rm  r§   Ú	float_minÚdefault_valuesrÝ  rK  Úy_encrï   rð   Ú
fold_predsZ
i_cols_fitrÞ  rL   rL   rM   Ú"check_cross_val_predict_multiclassù  s,    ý  ÿ ÿré  c                    sä  t ddd�}t tj¡j}||ddœ}ˆ jd }g }t|ƒD ]`}	ttˆ dd…|	f ƒƒ}
|
dkrt|d	krtt|ƒf}nt|ƒ|
f}| 	tj
||| tjd
�¡ q<‡ fdd„tˆ jd ƒD ƒ}tj|dd�}| ||¡D ]š\}}t| ƒ || || ¡} t| |ƒ|| ƒ}t|ƒD ]^}	t || dd…|	f ¡}||	 jdk�rN||	 ||	 |< nt ||¡}||	 ||	 |< �qqÔˆ ˆ d ˆ d ˆ  d¡fD ]T}t| ||||d�}t|ƒt|ƒk�s¶t‚tt|ƒƒD ]}t|| || ƒ �qÂ�qŠdS )z”Check 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à  rz   Nr�   rs  r  c                    s8   g | ]0}t jˆ d d …|f dd�d d d …t jf ‘qS )NTrá  rz   )rŒ   r�   r¶   )rÕ   rg  ©rp   rL   rM   Ú
<listcomp>0  s   ÿz6check_cross_val_predict_multilabel.<locals>.<listcomp>r‰  rÙ  rl  )r%   rŒ   râ  rQ  rã  rP   r¯   rˆ   rl   rä   r/  Zconcatenaterã   r	   rR   rÚ  r�   r‰   rä  rÛ  r+   rm   rA   )ré   rW   rp   rm  r§   rå  ræ  Ú	n_targetsZexpected_predsZi_colZn_classes_in_labelrÜ  Z
y_enc_colsrç  rï   rð   rè  Z	fold_colsÚidxrÞ  Zcv_predict_outputrg  rL   rê  rM   Ú"check_cross_val_predict_multilabel  sD    ý
ÿ
þrî  c                 C   s,   t ddd�\}}dD ]}t| |||ƒ qd S )Nr�   r   )r  rÅ   ©rs  r—   r�  )r   rß  )ré   rW   rp   rm  rL   rL   rM   Ú*check_cross_val_predict_with_method_binaryI  s    rð  c                 C   sB   t ƒ }|j|j }}t||dd�\}}dD ]}t| |||ƒ q*d S )Nr   rÄ   rï  )r   r  r  r>   ré  )ré   r"  rW   rp   rm  rL   rL   rM   Ú.check_cross_val_predict_with_method_multiclassQ  s
    rñ  c                   C   s    t tdd�ƒ ttdd�ƒ d S )Nri  rj  )rð  r   rñ  rL   rL   rL   rM   Ú"test_cross_val_predict_with_methodY  s    ÿrò  c                  C   sN   t ƒ } | j| j }}t||dd�\}}dD ]}tddd�}t||||ƒ q*d S )Nr   rÄ   rï  Zlog_lossr�   )ZlossrÅ   )r   r  r  r>   r   ré  )r"  rW   rp   rm  ré   rL   rL   rM   Ú&test_cross_val_predict_method_checking`  s    ró  c                  C   s`   t ƒ } | j| j }}t||dd�\}}ttddd�dddgid	d
�}dD ]}t||||ƒ qHd S )Nr   rÄ   r'  ri  rˆ  rÀ   r”  rz   r�   r¦   rï  )r   r  r  r>   r"   r   ré  )r"  rW   rp   ré   rm  rL   rL   rM   Ú/test_gridsearchcv_cross_val_predict_with_methodk  s    
 
 ÿrô  c                  C   sL   d} d}t | d|ddd�\}}ttddd	�ƒ}d
D ]}t||||d� q2d S )NrF  rž   rƒ   rŸ   r'  ©rÝ   r×  r  r>  rÅ   ri  r   )rk  rÅ   )r—   rs  rt  )r   r6   r   rß  )Zn_sampr  rW   rp   ré   rm  rL   rL   rM   Ú1test_cross_val_predict_with_method_multilabel_ovrv  s        ÿ
rö  c                   @   s   e Zd Zdd„ ZdS )ÚRFWithDecisionFunctionc                 C   s2   |   |¡}d}t|tƒs t|ƒ‚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 )rz   r�   Nr‚   r&  )rÕ   rT  rL   rL   rM   rë  Œ  s     z<RFWithDecisionFunction.decision_function.<locals>.<listcomp>)r—   r¡   rn   rm   )rK   rW   ZprobsÚmsgrL   rL   rM   rs  ˆ  s
    
z(RFWithDecisionFunction.decision_functionN)r`   ra   rb   rs  rL   rL   rL   rM   r÷  „  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 5 Q R X qBd S )Nrž   rF  rƒ   rŸ   r'  rõ  r   rz   ©r—   r�  rs  ©Zn_estimatorsrÅ   Úignorert  )r   r÷  r5  r6  Úsimplefilterrî  )r  rW   rp   rm  ré   rL   rL   rM   Ú0test_cross_val_predict_with_method_multilabel_rf�  s        ÿ
$

rý  c                  C   s†   t j d¡} | jdddd�}t  ddddddddddddddg¡}tdd�}d	D ]0}t ¡ � t d
¡ t	||||ƒ W 5 Q R X qPd S )Nr   rz   )rÁ  rœ   ©rH  r�   rƒ   ri  rj  rù  rû  )
rŒ   r�  rŽ  Únormalrå   r   r5  r6  rü  ré  )r�  rW   rp   ré   rm  rL   rL   rM   Ú-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 5 Q R X qHd S )Nr   rz   )rŸ   rœ   rþ  r�   )r—   r�  rŸ   rú  rû  rt  )
rŒ   r�  rŽ  rÿ  rå   r÷  r5  r6  rü  rî  )r�  rW   rp   rm  ré   rL   rL   rM   Ú;test_cross_val_predict_with_method_multilabel_rf_rare_class¯  s    (

r  c                 C   sª   t  t|ƒ|g¡}t||ƒ}| | |¡D ]|\}}	| | | || ¡ || |	 ƒ}
|dkrlt  t|	ƒ|f¡}nt  t|	ƒ|ft  |j¡j	¡}|
|d d …|j
f< |||	< q(|S )Nr—   )rŒ   r  rˆ   rÚ  rã   rR   r/  râ  r  rã  Zclasses_)rW   rp   r§   Úclassesré   rm  rÝ  Úfuncrï   rð   Zexpected_predictions_Zexp_pred_testrL   rL   rM   Ú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ƒ }d
ddg}|D ]º}tdd�}t|| |||d�}	t	| |||||ƒ}
t
|
|	ƒ t|| |||d�}	t	| |||||ƒ}
t
|
|	ƒ tt  tdƒd¡dd�}t|| |||d�}	| |¡}t	| |||||ƒ}
t
|
|	ƒ qVd S )NrO  rF  r�   c                 S   s   g | ]}|d  ‘qS )rœ   rL   )rÕ   rf   rL   rL   rM   rë  Ö  s     z7test_cross_val_predict_class_subset.<locals>.<listcomp>rœ   rƒ   rx  rž   rs  r—   r�  ri  rj  rl  r   rÄ   )rŒ   rJ  r‡   rå   r¯   r%   r:   r   r+   r  rC   r>   rR  Zfit_transform)rW   rp   r  Zkfold3Zkfold4ÚleÚmethodsrm  ré   rƒ  rÝ  rL   rL   rM   Ú#test_cross_val_predict_class_subsetÔ  sR    



     ÿ
     ÿ

     ÿr  c                     sþ   t ƒ } | j| j }}tƒ }tjddd�}| d¡ | ¡  tj	|j
tjd�‰tj	|j
ddtjd�‰ zJt|||‡ fdd„d� t t¡� t|||‡fdd„d� W 5 Q R X W 5 d	\‰‰ td
ƒD ]8}zt |j
¡ W  qøW q¾ tk
rô   tdƒ Y q¾X q¾X d S )NÚwbF)ÚmoderÕ  s   Hello world!!!!!r  rL   Úr)rP   r	  r  )NNrƒ   r˜   c                    s   ˆ S rS   rL   ©ré   rW   rp   )r]   rL   rM   r¢     r£   z#test_score_memmap.<locals>.<lambda>rª   c                    s   ˆ S rS   rL   r  )r¸   rL   rM   r¢   	  r£   )r   r  r  r~   ÚtempfileÚNamedTemporaryFileÚwriter¦  rŒ   ZmemmapÚnamerQ  r¯   ÚosÚunlinkÚOSErrorr   r,   r´   rµ   rŠ   )r"  rW   rp   r·   ÚtfrK  rL   )r]   r¸   rM   Útest_score_memmapü  s&    
&
r  c                     sª   t t fg} z"ddlm}m} |  ||f¡ W n tk
r@   Y nX | D ]^\‰‰ tƒ }|j|j }}ˆ |ƒˆ|ƒ }}‡ fdd„}‡fdd„}	t	||	d�}
t
|
||ƒ qFd S )Nr   r  c                    s
   t | ˆ ƒS rS   r  rj   r  rL   rM   r¢   %  r£   z4test_permutation_test_score_pandas.<locals>.<lambda>c                    s
   t | ˆ ƒS rS   r  rj   r  rL   rM   r¢   &  r£   r  )r@   r  r	  r
  rä   r  r   r  r  r?   r/   )r  r	  r
  r"  rW   rp   r  r  r  r  r·   rL   r  rM   Ú"test_permutation_test_score_pandas  s    
r  c               	   C   sœ   t t jƒ} t dd¡}| |d tƒ d d dd d g	}ddi}tjtdd�� t||Ž W 5 Q R X d}tjt|d�� t	| |d	d
d� W 5 Q R X |  
¡ dks˜t‚d S )Nrz   rœ   r   r®   r¬   z%Failing classifier failed as requiredrÆ   zIThe 'error_score' parameter of cross_validate must be .*. Got .* instead.rƒ   zunvalid-string©r§   r®   rB  )r5   ÚFAILING_PARAMETERrŒ   rJ  rÊ   r´   rµ   rŠ   r2   r,   r]   rm   )Úfailing_clfrW   Úfit_and_score_argsÚfit_and_score_kwargsZerror_message_cross_validaterL   rL   rM   Útest_fit_and_score_failing+  s    
ÿr  c                  C   sx   t ddd�\} }tddd�}ttƒ  | ¡ƒ\}}|| |tƒ ||dg}dddœd d	d
œ}t||Ž}|d |d kstt‚d S )NrÛ   r   rÜ   rÞ   rß   rF  r”  )r±  r²  T)Ú
parametersr+  Zreturn_parametersr  )r   r<   Únextr)   rã   rÊ   r2   rm   )rW   rp   r·   rï   rð   r  r  ÚresultrL   rL   rM   Útest_fit_and_score_workingB  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 rS   ©Úmax_x_value)rK   r"  rL   rL   rM   rN   R  s    z'DataDependentFailingClassifier.__init__c                 C   s&   || j k ¡ }|r"td|› d�ƒ‚d S )NzClassifier fit failed with z values too high)r"  rD  rŠ   )rK   rW   rp   Znum_values_too_highrL   rL   rM   rR   U  s
    
ÿz"DataDependentFailingClassifier.fitc                 C   s   dS )NrB  rL   r[   rL   rL   rM   r]   \  s    z$DataDependentFailingClassifier.score)N)N)NN)r`   ra   rb   rN   rR   r]   rL   rL   rL   rM   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
||Ž W 5 Q R X d S )Nrf  r!  rz   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Œ   rJ  r.  ÚreÚcompileÚDOTALLr´   rÌ   r   r-   )r®   r  rW   rp   Úcross_validate_argsÚcross_validate_kwargsÚindividual_fit_error_messagerÐ   rL   rL   rM   Ú-test_cross_validate_some_failing_fits_warning`  s    



ÿú	r+  c              	   C   sv   t t jƒ}t dd¡}t d¡}|||g}d| dœ}d}tjd|› �tjd�}tj	t
|d	�� t||Ž W 5 Q R X d S )
Nrz   rœ   rÇ  re  r  z1ValueError: Failing classifier failed as requiredz4All the 7 fits failed.+your model is misconfigured.+r#  rÆ   )r5   r  rŒ   rJ  r.  r%  r&  r'  r´   rµ   rŠ   r-   )r®   r  rW   rp   r(  r)  r*  r  rL   rL   rM   Ú*test_cross_validate_all_failing_fits_error|  s    



ûr,  c                 C   s   t |ƒ‚d S rS   )rŠ   )rÎ   rW   rp   Ú	error_msgrL   rL   rM   Ú_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rhtjt|d�� t|||d	|| d
� W 5 Q R X nBd| › �}tj	t
|d��$ t|||d	|| d
�}t|| ƒ W 5 Q R X d S )NTr½   rŸ   ©r±  ú"This scorer is supposed to fail!!!©r-  r¬   rÆ   rƒ   )r§   r«   r®   rÉ   )r   r   rR   r   r.  r´   rµ   rŠ   r,   rÌ   rÍ   rA   )r®   rW   rp   r·   r-  Úfailing_scorerÚwarning_msgr¸   rL   rL   rM   Ú#test_cross_val_score_failing_scorer˜  s4         ÿÿ     ÿr4  ró   Úwith_multimetricc              
   C   s  t dd�\}}tdd� ||¡}d}tt|d�}|rJttƒ}|||dœ}	n|}	| dkrˆtjt	|d	�� t
|||d
|	|| d� W 5 Q R X n€d| › �}
tjt|
d	��b t
|||d
|	|| d�}|D ]@}d|kr¼d|krî|| D ]}t|tƒsØt‚qØq¼t|| | ƒ q¼W 5 Q R X d S )NTr½   rŸ   r/  r0  r1  )Zscore_1Zscore_2Zscore_3r¬   rÆ   rƒ   )r§   r«   ró   r®   rÉ   r3   Z_score_2)r   r   rR   r   r.  r   r   r´   rµ   rŠ   r-   rÌ   rÍ   r¡   rZ   rm   rA   )r®   ró   r5  rW   rp   r·   r-  r2  Znon_failing_scorerr«   r3  rØ   rs   rg  rL   rL   rM   Ú"test_cross_validate_failing_scorer´  sP    ýùÿù	r6  c                 C   s   dS )Ng;pÎˆÒ^@rL   )rg  Újrû   rL   rL   rM   Úthree_params_scorerõ  s    r8  z:train_score, scorer, verbose, split_prg, cdt_prg, expected)rz   rƒ   ©r   rz   zS\[CV\] END .................................................... total time=   0.\ds)Zsc1Zsc2ze\[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ƒ  |¡ƒ\}
}|	||||
||d d g	}|||dœ}t||Ž |  ¡ \}}| d¡}t|ƒdkr”t 	||d	 ¡s¨t
‚nt 	||d ¡s¨t
‚d S )
NrÛ   r   rÜ   rÞ   rß   )ró   Zsplit_progressZcandidate_progressÚ
r�   rz   )r   r<   r  r)   rã   r2   Z
readouterrrˆ   r%  rÇ   rm   )Zcapsysrô   rL  r¢  Z	split_prgZcdt_prgÚexpectedrW   rp   r·   rï   rð   r  r  r§  rK  ZoutlinesrL   rL   rM   Útest_fit_and_score_verbosityù  s    #ý

r<  c               	   C   sF   d} dd„ }d d d |g}t jt| d�� t|dtjiŽ W 5 Q R X d S )Nz&scoring must return a number, got Nonec                 S   s   d S rS   rL   )rÎ   ZX_testrL   rL   rM   Útwo_params_scorer3	  s    z%test_score.<locals>.two_params_scorerrÆ   r®   )r´   rµ   rŠ   r3   rŒ   rË   )r  r=  r  rL   rL   rM   rõ   0	  s
    rõ   c                  C   sp   dd„ } t dddd�\}}tddd�}| ||¡ t|||d	| d
�}ddddg}|D ]}d |¡|ksTt‚qTd S )Nc                 S   s2   |   |¡}t||ƒ}|d |d |d |d dœS )N)r   r   r9  )rz   r   )rz   rz   )ÚtnÚfpÚfnÚtp)rX   r   )r·   rW   rp   rý   ÚcmrL   rL   rM   rþ   <	  s    

zPtest_callable_multimetric_confusion_matrix_cross_validate.<locals>.custom_scoreré(   rž   r'  )rÝ   r>  rÅ   r¾   )ZdualrÅ   rŸ   )r§   r«   r>  r?  r@  rA  ztest_{})r   r=   rR   r-   r‹   rm   )rþ   rW   rp   ré   r  Zscore_namesr  rL   rL   rM   Ú9test_callable_multimetric_confusion_matrix_cross_validate;	  s    rD  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.
    r'  rÄ   Tr�   )r©  r§   N)r   r.   r8   )rW   rp   rL   rL   rM   Ú*test_learning_curve_partial_fit_regressorsK	  s    rE  c                 C   s  t dd�\}}t|ƒ}tƒ }tdd| d�}t||||ddd�}d|ksJt‚t||||ddd�}d|ksjt‚|d d	 }|d d
 }t|ƒ|jks”t‚t|ƒ|jks¦t‚tdd„ |D ƒdƒ tdd„ |D ƒdƒ t	| 
||¡ƒD ](\}\}	}
t|| |	ƒ t|| |
ƒ qÞdS )z<Check the behaviour of `return_indices` in `cross_validate`.Tr½   rƒ   )ry  r>   rÅ   r�   F)r§   rÁ   Zreturn_indicesÚindicesrï   rð   c                 S   s   g | ]
}|j ‘qS rL   rþ  ©rÕ   rF  rL   rL   rM   rë  g	  s     z6test_cross_validate_return_indices.<locals>.<listcomp>rF  c                 S   s   g | ]
}|j ‘qS rL   rþ  rG  rL   rL   rM   rë  h	  s     rq  N)r   r;   r   r%   r-   rm   rˆ   ry  rD   rø   rã   )Zglobal_random_seedrW   rp   rÎ   r§   r  Ztrain_indicesZtest_indicesZ	split_idxZexpected_train_idxZexpected_test_idxrL   rL   rM   Ú"test_cross_validate_return_indicesV	  s"    rH  )Érc   r  r%  r£  r  r5  Ú	functoolsr   Úior   Útimer   ÚnumpyrŒ   r´   Zscipy.sparser   r   r   Zsklearn.baser   r	   Zsklearn.clusterr
   Zsklearn.datasetsr   r   r   r   r   r   Zsklearn.ensembler   Zsklearn.exceptionsr   Zsklearn.imputer   Zsklearn.linear_modelr   r   r   r   r   Zsklearn.metricsr   r   r   r   r   r   r   r    r!   Zsklearn.model_selectionr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   Z#sklearn.model_selection._validationr1   r2   r3   Z$sklearn.model_selection.tests.commonr4   Z)sklearn.model_selection.tests.test_searchr5   Zsklearn.multiclassr6   Zsklearn.neighborsr7   Zsklearn.neural_networkr8   Zsklearn.pipeliner9   Zsklearn.preprocessingr:   r;   Zsklearn.svmr<   r=   Zsklearn.utilsr>   Zsklearn.utils._mockingr?   r@   Zsklearn.utils._testingrA   rB   rC   rD   Zsklearn.utils.validationrE   rF   rd   rw   r{   r~   r.  rW   r²   rå   rp   r°   r,  rŽ   r¼   rÃ   rÑ   rÙ   ÚmarkZparametrizer   rñ   ræ   rç   r  Úfilterwarningsr  r#  r%  r0  r7  r:  r=  r@  rM  rU  r[  r\  rc  rp  r|  r€  r‚  r„  r…  rŒ  r�  r‘  rŸ  r¡  r¨  r¬  r®  r¯  r¹  r¼  r½  r¾  rÈ  rÉ  rÊ  rÎ  rÏ  rÒ  rÓ  rÖ  rØ  rß  ré  rî  rð  rñ  rò  ró  rô  rö  r÷  rý  r   r  r  r  r  r  r  r  r   rË   r+  r,  r.  r4  r6  r8  r<  rõ   rD  rE  rH  rL   rL   rL   rM   Ú<module>   s@   ,DW
*
47BI

#B845

	='N0.&4(





=ú
ú
úíþ 
