U
    ½mœd!B ã                   @   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
Z
ddlZddlmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZmZ ddlmZ ddlmZm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ddlm%Z% ddlm&Z& ddlm'Z' ddlm(Z( ddlm)Z) ddlm*Z* ddlm+Z+ ddlm,Z, ddl-m.Z. ddl-m/Z/ ddl-m0Z0 ddl1m2Z2 ddl1m3Z3 dd l1m4Z4 dd!l1m5Z5 dd"l6m7Z7 dd#l6m8Z8 dd$l6m9Z9 dd%l6m:Z: dd&l6m;Z; dd'l6m<Z< dd(l6m=Z= dd)l6m>Z> dd*l6m?Z? dd+l@mAZAmBZBmCZC dd,l@mDZDmEZE dd-lFmGZG dd.lHmIZI dd/lJmKZKmLZL dd0lMmNZN dd1lOmPZP dd2lQmRZR dd3lSmTZT dd4lUmVZV dd5lWmXZX dd6lYmZZZ dd7lYm[Z[ dd8l\m]Z] dd9l^m_Z_ dd:l1m`Z` dd;l1maZa dd<lbmcZc dd=lmdZd zee W n efk
�r>   dZeY nX G d>d?„ d?eZƒZgG d@dA„ dAegƒZhG dBdC„ dCeZƒZiG dDdE„ dEeiƒZjG dFdG„ dGƒZke ldH¡ZmeemƒZne odddIdIdJdJdKdKdLdLg
¡Zpe odIdIdIdJdJdJdKdKdKdKg
¡Zqee rdM¡ƒZsdNdO„ ZtdPdQ„ ZudRdS„ ZvdTdU„ ZwdVdW„ ZxdXdY„ ZydZd[„ Zzd\d]„ Z{e
j| }d^¡d_d`„ ƒZ~dadb„ Zdcdd„ Z€dedf„ Z�dgdh„ Z‚didj„ Zƒdkdl„ Z„dmdn„ Z…dodp„ Z†dqdr„ Z‡dsdt„ Zˆdudv„ Z‰dwdx„ ZŠdydz„ Z‹d{d|„ ZŒd}d~„ Z�dd€„ ZŽd�d‚„ Z�e
j| }d^¡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¤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ÄeGƒZ°dÅdÆ„ Z±dÇdÈ„ Z²dÉdÊ„ Z³dËdÌ„ Z´dÍdÎ„ ZµdÏdÐ„ Z¶e
j| }d^¡dÑdÒ„ ƒZ·dÓdÔ„ Z¸dÕdÖ„ Z¹G d×dØ„ dØeZƒZºe
j| »dÙej¼dg¡dÚdÛ„ ƒZ½e
j| »dÙej¼dg¡dÜdÝ„ ƒZ¾dÞdß„ Z¿e
j| }dà¡e
j| »dÙej¼ddág¡dâdã„ ƒƒZÀe
j| }dà¡e
j| »dÙej¼ddág¡e
j| »dädådæg¡e
j| »dçdædåg¡dèdé„ ƒƒƒƒZÁdêdë„ ZÂe
j| »dìdæeÂdJdídîdïfdåeÂeÂdðœdKdídîdñfdæeÂeÂdðœdòdídîdófg¡dôdõ„ ƒZÃdöd÷„ ZÄdødù„ ZÅdúdû„ ZÆdS )üzTest the validation moduleé    N)Úpartial)Úsleep)Ú
coo_matrixÚ
csr_matrix)ÚFitFailedWarning)ÚFailingClassifier)Úassert_almost_equal)Úassert_array_almost_equal)Úassert_array_equal)Úassert_allclose)ÚCheckingClassifierÚMockDataFrame)Ú_num_samples)Úcross_val_scoreÚShuffleSplit)Úcross_val_predict)Úcross_validate)Úpermutation_test_score)ÚKFold)ÚStratifiedKFold)ÚLeaveOneOut)ÚLeaveOneGroupOut)ÚLeavePGroupsOut)Ú
GroupKFold)ÚGroupShuffleSplit)Úlearning_curve)Úvalidation_curve)Ú_check_is_permutation)Ú_fit_and_score)Ú_score)Úmake_regression)Úload_diabetes)Ú	load_iris)Úload_digits)Úexplained_variance_score)Úmake_scorer)Úaccuracy_score)Úconfusion_matrix)Úprecision_recall_fscore_support)Úprecision_score)Úr2_score)Úmean_squared_error)Úcheck_scoring)ÚRidgeÚLogisticRegressionÚSGDClassifier)ÚPassiveAggressiveClassifierÚRidgeClassifier)ÚRandomForestClassifier)ÚKNeighborsClassifier)ÚSVCÚ	LinearSVC)ÚKMeans)ÚMLPRegressor)ÚSimpleImputer)ÚLabelEncoder)ÚPipeline)ÚStringIO)ÚBaseEstimator)Úclone)ÚOneVsRestClassifier)Úshuffle)Úmake_classification)Úmake_multilabel_classification)ÚOneTimeSplitter)ÚGridSearchCVc                   @   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)ÚselfrF   © rJ   úf/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/sklearn/model_selection/tests/test_validation.pyÚ__init__Z   s    zMockImprovingEstimator.__init__Nc                 C   s   || _ |jd | _| S rE   ©rH   ÚshaperG   ©rI   rH   Zy_subsetrJ   rJ   rK   Úfit_   s    zMockImprovingEstimator.fitc                 C   s   t ‚d S ©N©ÚNotImplementedError©rI   ÚXrJ   rJ   rK   Úpredictd   s    zMockImprovingEstimator.predictc                 C   s2   |   |¡rdt| jƒ| j  S t| jƒ| j S d S )Ng       @)Ú_is_training_dataÚfloatrG   rF   ©rI   rU   ÚYrJ   rJ   rK   Úscoreg   s    
zMockImprovingEstimator.scorec                 C   s
   || j kS rQ   ©rH   rT   rJ   rJ   rK   rW   n   s    z(MockImprovingEstimator._is_training_data)N)NN©	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rL   rP   rV   r[   rW   rJ   rJ   rJ   rK   rD   W   s   

rD   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 rQ   )ÚsuperrL   ÚxÚexpected_fit_params)rI   rF   re   ©Ú	__class__rJ   rK   rL   u   s    z*MockIncrementalImprovingEstimator.__init__c                 C   s
   | j |kS rQ   ©rd   rT   rJ   rJ   rK   rW   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 Ú.)	rG   rN   rd   re   ÚsetÚAssertionErrorÚlistÚitemsr   )rI   rU   ÚyÚparamsÚmissingÚkeyÚvaluerJ   rJ   rK   Úpartial_fit}   s"    
ÿÿþÿz-MockIncrementalImprovingEstimator.partial_fit)N)N)r^   r_   r`   ra   rL   rW   rs   Ú__classcell__rJ   rJ   rf   rK   rb   r   s   rb   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 rQ   )rH   Úparam)rI   rw   rJ   rJ   rK   rL   “   s    z#MockEstimatorWithParameter.__init__c                 C   s   || _ |jd | _| S rE   rM   rO   rJ   rJ   rK   rP   —   s    zMockEstimatorWithParameter.fitc                 C   s   t ‚d S rQ   rR   rT   rJ   rJ   rK   rV   œ   s    z"MockEstimatorWithParameter.predictNc                 C   s   |   |¡r| jS d| j S )Né   )rW   rw   )rI   rU   rn   rJ   rJ   rK   r[   Ÿ   s    z MockEstimatorWithParameter.scorec                 C   s
   || j kS rQ   r\   rT   rJ   rJ   rK   rW   ¢   s    z,MockEstimatorWithParameter._is_training_data)rv   )NNr]   rJ   rJ   rJ   rK   ru   �   s   

ru   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)Úhasattrrk   rz   rc   rP   rO   rf   rJ   rK   rP   ©   s    z)MockEstimatorWithSingleFitCallAllowed.fitc                 C   s   t ‚d S rQ   rR   rT   rJ   rJ   rK   rV   ®   s    z-MockEstimatorWithSingleFitCallAllowed.predict)r^   r_   r`   ra   rP   rV   rt   rJ   rJ   rf   rK   ry   ¦   s   ry   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 rQ   ©ÚaÚallow_nd)rI   r~   r   rJ   rJ   rK   rL   µ   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})rx   )Ú	dummy_intÚ	dummy_strÚ	dummy_objr   ÚreshapeÚlenÚndimÚ
ValueErrorrN   rk   ÚformatÚnpÚuniquern   ÚP_sparse)rI   rU   rZ   Úsample_weightÚclass_priorÚsparse_sample_weightÚsparse_paramr‚   rƒ   r„   ÚcallbackÚfmtrJ   rJ   rK   rP   ¹   sP     þÿ ÿÿ
ÿ ÿ
ÿüzMockClassifier.fitc                 C   s&   | j r| t|ƒd¡}|d d …df S )Nr€   r   )r   r…   r†   ©rI   ÚTrJ   rJ   rK   rV   ø   s    zMockClassifier.predictc                 C   s   |S rQ   rJ   r“   rJ   rJ   rK   Úpredict_probaý   s    zMockClassifier.predict_probac                 C   s   ddt  | j¡  S )Nç      ð?rx   )rŠ   Úabsr~   rY   rJ   rJ   rK   r[      s    zMockClassifier.scorec                 C   s   | j | jdœS )Nr}   r}   )rI   ÚdeeprJ   rJ   rK   Ú
get_params  s    zMockClassifier.get_params)r   F)	NNNNNNNNN)NN)F)
r^   r_   r`   ra   rL   rP   rV   r•   r[   r™   rJ   rJ   rJ   rK   r|   ²   s    
         õ
?
r|   )é
   é   rx   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 rQ   ©Ú
isinstancerl   rh   rJ   rJ   rK   Ú<lambda>(  ó    z&test_cross_val_score.<locals>.<lambda>©Úcheck_Xr�   ©Úcv©Úcheck_yZsklearn©ÚscoringT)r   FÚraise©Úerror_score)r|   Úranger~   r   rU   Úy2r
   r[   rŠ   Úcolumn_stackÚX_sparser   ÚtolistÚpytestÚraisesrˆ   Únewaxis)Úclfr~   ÚscoresÚmultioutput_yÚ
list_checkÚX_3drJ   rJ   rK   Ú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ÚCrx   rš   )Z
param_gridr›   )Ún_jobs)r"   r4   rC   r   )rU   rn   rµ   ÚgridrJ   rJ   rK   Ú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 d
}tjtdd�� t|| |t	ƒ d� W 5 Q R X tjt|d�� t|| |d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 tjtdd�� ttƒ | |dd� W 5 Q R X d S )Nr   ©Úrandom_statez.*must be unique strings.*©Úmatchr¨   zEmpty list.*rJ   zDuplicate.*)Úf1_microrÆ   zB.*scoring is invalid.*Refer to the scoring glossary for details:.*zAn empty dictr�   ú[Scoring failed. The score on this train-test partition for these parameters will be set to z. Details: 
Zfooz#'mse' is not a valid scoring value.Zmse)r@   r|   r²   r³   rˆ   r   r%   r)   r&   Údictr(   rŠ   ÚnanÚwarnsÚUserWarningr4   )rU   rn   Ú	estimatorÚerror_message_regexpZmulticlass_scorerÚwarning_messagerJ   rJ   rK   Ú)test_cross_validate_invalid_scoring_paramF  sB    ü "ÿÿ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 rQ   )rŸ   r:   )Ú.0rÌ   rJ   rJ   rK   Ú	<genexpr>•  s     z7test_cross_validate_nested_estimator.<locals>.<genexpr>)	r"   r:   r8   r|   r   rŸ   rl   rk   Úall)rU   rn   ZpipelineÚresultsZ
estimatorsrJ   rJ   rK   Ú$test_cross_validate_nested_estimator…  s    þÿr×   c               	   C   sŠ  t ƒ } tddd�\}}tdd�}tddd�\}}tddd�}|||f|||ffD �]2\}}}	t|	dd�}
t|	d	d�}g }g }g }g }g }|  ||¡D ]’\}}t|ƒ || || ¡}	| 	|
|	|| || ƒ¡ | 	||	|| || ƒ¡ | 	|
|	|| || ƒ¡ | 	||	|| || ƒ¡ | 	|	¡ q”t
 |¡}t
 |¡}t
 |¡}t
 |¡}t
 |¡}|||||f}t|	|||ƒ t|	|||ƒ qPd S )
Né   r   ©Ú	n_samplesrÃ   rÂ   Úlinear©ÚkernelrÃ   Úneg_mean_squared_errorr¨   Úr2)r   r    r-   r@   r4   r,   Úsplitr=   rP   ÚappendrŠ   ÚarrayÚ"check_cross_validate_single_metricÚ!check_cross_validate_multi_metric)r¥   ZX_regZy_regÚregZX_clfZy_clfrµ   rU   rn   ÚestZ
mse_scorerZ	r2_scorerÚtrain_mse_scoresÚtest_mse_scoresÚtrain_r2_scoresÚtest_r2_scoresÚfitted_estimatorsÚtrainÚtestr¶   rJ   rJ   rK   Útest_cross_validate˜  sB    
 




ûrî   c                 C   s<  |\}}}}}dD ]Ö\}	}
|	r@t | ||ddd�}t|d |ƒ nt | ||ddd�}t|tƒs`t‚t|ƒ|
kspt‚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 ].\}}t|j|| jƒ t|j	|| j	ƒ �qd S )N))Trœ   )Fr�   rÞ   T©r©   Úreturn_train_scoreÚtrain_scoreFÚ
test_scorerß   Útrain_r2Útest_r2)r©   rÒ   rÌ   )
r   r	   rŸ   rÈ   rk   r†   Ú	enumerater   Zcoef_Z
intercept_)rµ   rU   rn   r¶   rç   rè   ré   rê   rë   rð   Zdict_lenZmse_scores_dictZr2_scores_dictÚkræ   rJ   rJ   rK   rã   Ç  sp    ú    ÿ    ÿ    ÿ    ÿ    ÿrã   c              	   C   s¨  |\}}}}}dd„ }	dt tƒddœ|	f}
ddddh}| d	d
h¡}dD �]X}|
D �]L}|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�sBt‚t |d dk¡�sZt‚t |d dk ¡�srt‚t |d dk¡�sŠt‚t |d dk ¡sRt‚qRqHd S )Nc                 S   s"   |   |¡}t||ƒt||ƒ dœS )N©rß   rÞ   )rV   r*   r+   )rµ   rU   rn   Úy_predrJ   rJ   rK   Ú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   r	   rŸ   rÈ   rk   rj   ÚkeysÚtyperŠ   ZndarrayrÕ   )rµ   rU   rn   r¶   rç   rè   ré   rê   rë   rù   Zall_scoringZkeys_sans_trainZkeys_with_trainrð   r©   Ú
cv_resultsrJ   rJ   rK   rä   ÷  sz    úþú
üÿ

    ÿ ÿ    ÿ

ÿ ÿ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Ì   rU   rn   r¥   )r@   r4   r   r   r   r   r²   r³   rˆ   r   r   )rU   rn   rµ   Z	group_cvsÚerror_messager¥   rJ   rJ   rK   Ú#test_cross_val_score_predict_groups@  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   ©ÚSeriesÚ	DataFramec                    s
   t | ˆ ƒS rQ   ©rŸ   rh   ©ÚInputFeatureTyperJ   rK   r    d  r¡   z-test_cross_val_score_pandas.<locals>.<lambda>c                    s
   t | ˆ ƒS rQ   r  rh   ©Ú
TargetTyperJ   rK   r    e  r¡   ©r£   r§   r�   r¤   )
r   Úpandasr  r  rá   ÚImportErrorrU   r®   r   r   ©Útypesr  r  ÚX_dfÚy_serÚcheck_dfÚcheck_seriesrµ   rJ   ©r  r
  rK   Útest_cross_val_score_pandasV  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¤   ©Údtyperx   )r4   r"   ÚdataÚtargetr   r   rà   rŠ   Úzerosr†   Úboolrá   r
   )ÚsvmÚirisrU   rn   ZkfoldZscores_indicesZcv_masksrì   rí   Z
mask_trainZ	mask_testZscores_masksrJ   rJ   rK   Útest_cross_val_score_maskj  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 rQ   )rŠ   Údotr”   )rd   rn   rJ   rJ   rK   r    ‰  r¡   z2test_cross_val_score_precomputed.<locals>.<lambda>)r4   r"   r  r  rŠ   r  r”   r   r	   r²   r³   rˆ   r±   )r  r  rU   rn   Zlinear_kernelZscore_precomputedZscore_linearZscore_callablerJ   rJ   rK   Ú 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   rx   )rš   rx   ©rN   r�   é*   Z42c                    s.   | j ˆ kst‚| jˆkst‚| jˆks*t‚d S rQ   )r‚   rk   rƒ   r„   )rµ   ©Z	DUMMY_INTZ	DUMMY_OBJZ	DUMMY_STRrJ   rK   Ú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|   rU   rN   r†   rŠ   r‹   rn   r   râ   ÚeyeÚobjectÚonesÚfullr   )rµ   rÚ   rÿ   ZW_sparserŒ   r$  r&  rJ   r#  rK   Útest_cross_val_score_fit_params˜  s,    
" ÿ	ø
r+  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_argsrJ   rK   Ú
score_func¿  s    z3test_cross_val_score_score_func.<locals>.score_funcT©Úrecordr�   )r©   r¥   r–   )
r|   ÚwarningsÚcatch_warningsr%   r   rU   rn   r
   r†   rk   )rµ   r-  r©   r[   rJ   r,  rK   Útest_cross_val_score_score_func»  s    r2  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^   r_   r`   rJ   rJ   rJ   rK   ÚBrokenEstimatorÌ  s   r3  )r²   r³   Ú	TypeErrorr   rU   )r3  rJ   rJ   rK   Útest_cross_val_score_errorsË  s    r5  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"   r4   r   r  r  r	   )r  rµ   r¶   Z	zo_scoresZ	f1_scoresrJ   rJ   rK   Ú3test_cross_val_score_with_score_func_classificationÓ  s    
r8  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î?r6  g®Gáz®ï?gq=
×£pí?r›   rß   r¨   rÞ   gÃõ(\�Ø‡Àgáz®GI�Àg®Gáz&qÀg\�Âõ(qÀg)\�ÂõGšÀ)r    r-   r   r	   rŠ   râ   r%   r$   )	rU   rn   rå   r¶   Z	r2_scoresZneg_mse_scoresZexpected_neg_mser©   Z	ev_scoresrJ   rJ   rK   Ú/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Ø   r7  )Ún_permutationsr¥   r©   gÍÌÌÌÌÌì?ç        rx   r   )r<  r¥   r©   ÚgroupsrÃ   c                 S   s"   | |k  ¡ | |k  ¡  | jd  S rE   )ÚsumrN   )Zy_truerø   rJ   rJ   rK   Úcustom_score+  s    z,test_permutation_score.<locals>.custom_scoreéd   )r<  r©   r¥   rÃ   gÃõ(\�Âí?g{®Gáz„?r�   rv   çš™™™™™É?)r"   r  r   r  r4   r   r   rk   r   rŠ   r)  Úsizer%   ÚmodÚaranger†   )r  rU   r°   rn   r  r¥   r[   r¶   ZpvalueZscore_groupÚ_Zpvalue_groupZ
svm_sparseZ	cv_sparser@  ÚscorerrJ   rJ   rK   Útest_permutation_scoreþ  s„    
     ÿ
ø


ø      ÿ     ÿrH  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   rx   rÐ   Úmean)ZstrategyZmissing_valuesrÑ   )rŠ   rE  Úfloat64r…   rÉ   ÚrepeatrN   r:   r8   r|   r   ©rU   rn   ÚprJ   rJ   rK   Ú&test_permutation_test_score_allow_nans@  s    þÿrP  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 )NrA  rš   r   r�   rx   T©Zexpected_sample_weightú#Expected sample_weight to be passedrÄ   ú/sample_weight.shape == \(1,\), expected \(8,\)!r�   r%  )rŠ   rE  r…   râ   r   r²   r³   rk   r   rˆ   r)  ©rU   rn   rµ   Úerr_msgrJ   rJ   rK   Ú&test_permutation_test_score_fit_paramsN  s    
$rV  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 rI  )rŠ   rE  rL  r…   rÉ   rM  rN   r:   r8   r|   r   rN  rJ   rJ   rK   Útest_cross_val_score_allow_nans]  s    þÿrW  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   rx   éþÿÿÿr€   )Zn_neighborsÚmicro)ZaverageÚmacroZsamplesr¨   rv   ç      è?gUUUUUUÕ?ç      Ð?)rŠ   râ   r3   r%   r)   r   r   )	rU   rn   rµ   Zscoring_microZscoring_macroZscoring_samplesZscore_microZscore_macroZscore_samplesrJ   rJ   rK   Útest_cross_val_score_multilabelk  s4    öÿ>ÿ
r^  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   rx   r›   r�   r�   é   é   é   )r­   rŠ   râ   )rI   rU   rn   r>  ÚirJ   rJ   rK   rà   ©  s    z+test_cross_val_predict.<locals>.BadCV.split)NN)r^   r_   r`   rà   rJ   rJ   rJ   rK   ÚBadCV¨  s   rc  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à   rP   rV   r   r	   r†   rk   r   ÚcopyZmedianr   r6   r²   r³   rˆ   r"   rÊ   ÚRuntimeWarningr.   )rU   rn   r¥   ræ   Zpreds2rì   rí   ÚpredsZXsprc  rÎ   rJ   rJ   rK   Útest_cross_val_predict‰  sF    

ÿûrl  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Ã   rd  re  Údecision_function©rh  )rm  Tr»   ©é–   r�   rA  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Ä   rg  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¥   rh  )r@   r   r.   rN   rk   r"   r²   r³   rˆ   r1   r   r#   r4   rŠ   Zargsort)rU   rn   rk  r  ræ   ÚindrÍ   rJ   rJ   rK   Ú.test_cross_val_predict_decision_function_shapeÁ  sL       ÿ   ÿÿ    ÿ
ÿrx  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›   rm  r   rn  rd  re  r•   rp  ©rm  r›   Tr»   rq  ©r@   r   r.   rN   rk   r"   ©rU   rn   rk  rJ   rJ   rK   Ú*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›   rm  r   rn  rd  re  Úpredict_log_probarp  ry  Tr»   rq  rz  r{  rJ   rJ   rK   Ú.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Ã   )rr  )rr  r›   c                 S   s
   t | tƒS rQ   rž   rh   rJ   rJ   rK   r    -  r¡   z4test_cross_val_predict_input_types.<locals>.<lambda>r¢   r¦   rd  re  ro  rp  c                 S   s
   | j dkS )Nr�   )r‡   rh   rJ   rJ   rK   r    D  r¡   )r"   r  r  r   rŠ   r¯   r-   r   rN   rk   r
   r   r±   r.   r´   )
r  rU   rn   r°   r·   rµ   Úpredictionsr¸   r¹   Zcheck_3drJ   rJ   rK   Ú"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 rQ   r  rh   r  rJ   rK   r    X  r¡   z/test_cross_val_predict_pandas.<locals>.<lambda>c                    s
   t | ˆ ƒS rQ   r  rh   r	  rJ   rK   r    Y  r¡   r  r�   r¤   )
r   r  r  r  rá   r  rU   r®   r   r   r  rJ   r  rK   Útest_cross_val_predict_pandasJ  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 )NrA  r›   r   rx   )rÚ   r9  Ún_redundantr:  Ún_clusters_per_classrÃ   rd  ©rÃ   rf  rt  r•   rv  ©Zaxisé   )Údecimal)r@   r.   r   rl   rà   r   rk   rŠ   rÕ   r	   r?  r)  rN   )rU   rn   rµ   r¥   rì   rí   Z
yhat_probarJ   rJ   rK   Ú!test_cross_val_predict_unbalanced^  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"  rA  rš   r�   rV   )rn   r¥   rh  r   r•   )r|   rŠ   ÚrandomÚRandomStateZrandr   r   )Zmock_classifierÚrngrU   Zy_hatZy_hat_probarJ   rJ   rK   Útest_cross_val_predict_y_nonet  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'  rN   r   r
   r)  )r  rU   rn   rµ   r&  r~   rJ   rJ   rK   Ú&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�   rx   r   r›   ©rÚ   r9  r:  r‚  rÿ   rƒ  rÃ   ©FTTr.  rt  çš™™™™™¹?r–   rš   )r¥   rG   r?   Zreturn_timesúUnexpected warning: %r)rš   r�   rþ   r…  çffffffþ?rL  ©ru  rÚ   )r¥   rG   r?   )r@   rD   r0  r1  r   r   rŠ   Úlinspacer†   ÚRuntimeErrorÚmessagerN   rk   r
   r	   rK  r  rB   )rÚ   ru  rU   rn   rÌ   Úshuffle_trainÚwrG   Útrain_scoresÚtest_scoresZ	fit_timesZscore_timesZtrain_sizes2Ztrain_scores2Ztest_scores2rJ   rJ   rK   Ú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Ø   rx   r   r›   rŽ  rþ   r�   r�  r–   rš   )rn   r¥   rG   r…  r’  )r@   rD   r   rŠ   r”  r
   r	   rK  ©rU   rF  rÌ   rG   r™  rš  rJ   rJ   rK   Ú 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Ø   rx   r   r›   rŽ  rþ   r�   )r¥   Úverbosez[learning_curve])	r@   rD   ÚsysÚstdoutr;   ÚgetvalueÚcloser   rk   )rU   rn   rÌ   Z
old_stdoutÚoutrG   r™  rš  rJ   rJ   rK   Ú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›   rx   r   rŽ  T)Úexploit_incremental_learning©r@   rD   r²   r³   rˆ   r   ©rU   rn   rÌ   rJ   rJ   rK   Ú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Ø   rx   r   r›   rŽ  rþ   r�  r�   Tr�  r–   rš   )r¥   r¥  rG   r?   r…  r’  ©r@   rb   r   rŠ   r”  r
   r	   rK  )rU   rn   rÌ   r—  rG   r™  rš  rJ   rJ   rK   Ú(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Ø   rx   r   r›   rŽ  rþ   r�   Tr�  r–   rš   )rn   r¥   r¥  rG   r…  r’  r©  rœ  rJ   rJ   rK   Ú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Ø   rx   r   r›   rŽ  rB  r–   r�   F©Úmax_iterÚtolr?   r�   T)rG   r¥   r¥  )r¥   rG   r¥  r…  )r@   rŠ   r”  r0   r   r
   r	   rK  )
rU   rn   rG   rÌ   Útrain_sizes_incÚtrain_scores_incÚtest_scores_incÚtrain_sizes_batchÚtrain_scores_batchÚtest_scores_batchrJ   rJ   rK   Ú<test_learning_curve_batch_and_incremental_learning_are_equal6  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Ø   rx   r   r›   rŽ  rþ   r�   ©r¥   rG   r=  r–   r�  gš™™™™™ñ?é   r¦  r§  rJ   rJ   rK   Ú0test_learning_curve_n_sample_range_out_of_bounds]  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�   rx   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@   rD   r²   rÊ   rj  r   rŠ   r”  r
   )rU   rn   rÌ   rÎ   rG   rF  rJ   rJ   rK   Ú1test_learning_curve_remove_duplicate_sample_sizest  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Ø   rx   r   r›   rŽ  rþ   r�   rt  r�  r–   rš   r¶  r…  r’  )	r@   rD   r   r   rŠ   r”  r
   r	   rK  )rU   rn   rÌ   r¥   rG   r™  rš  rJ   rJ   rK   Ú(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 )#Nrx   r›   r�   rœ   r�   r_  r`  ra  é   r†  é   é   é   é   é   é   é   rþ   é	   rš   Fr¬  rt  g333333Ó?r–   T)r¥   r¿   rG   r>  r?   rÃ   r…  r\  gIëÅq×?r]  rª   )r¥   r¿   rG   r>  r¬   )r¥   r¿   rG   r>  r?   rÃ   r¥  )rŠ   râ   r0   r   r   r”  r	   rK  r²   r³   rˆ   )rU   rn   r>  rÌ   r¥   r²  r³  r´  r¯  r°  r±  rJ   rJ   rK   Ú 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 )NrA  rš   r   r�   rx   TrQ  rR  rÄ   rª   r«   z/sample_weight.shape == \(1,\), expected \(2,\)!r�   )r¬   r&  )rŠ   rE  r…   râ   r   r²   r³   rk   r   rˆ   r)  rT  rJ   rJ   rK   Ú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Ø   rx   r   r›   rŽ  rþ   r�   z9Expected fit parameter\(s\) \['sample_weight'\] not seen.rÄ   r�   Tr�  r–   rš   rª   )r¥   r¥  rG   r¬   z2Fit parameter sample_weight has length 3; expected)r¥   r¥  rG   r¬   r&  )	r@   rb   r²   r³   rk   r   rŠ   r”  r)  )rU   rn   rÌ   rU  rJ   rJ   rK   Ú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›   rx   r   rŽ  rš   Tr.  rw   ©Ú
param_nameÚparam_ranger¥   r‘  r…  )r@   rŠ   r”  r0  r1  r   ru   r†   r•  r–  r	   rK  )rU   rn   rÉ  r˜  r™  rš  rJ   rJ   rK   Ú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›   rx   r   rŽ  rš   rw   rÇ  )r@   rŠ   r”  r   ry   )rU   rn   rÉ  rF  rJ   rJ   rK   Ú%test_validation_curve_clone_estimatorJ  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 )NrA  r�   r   rÙ   rÛ   rÜ   r¾   r�  rB  r“  rÇ  )r   r›   rx   r�   r›   T©ru  r?   rt  )
r@   r   r4   rB   r	   rŠ   ZvsplitÚhstackr   râ   )rÚ   ru  rU   rn   Zscores1Zscores2Zscores3rJ   rJ   rK   Ú+test_validation_curve_cv_splits_consistency`  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 )NrA  rš   r   r�   rx   TrQ  rR  rÄ   Z	foo_paramr›   r�   rª   )rÈ  rÉ  r¬   rS  r�   )rÈ  rÉ  r¬   r&  )rŠ   rE  r…   râ   r   r²   r³   rk   r   rˆ   r)  rT  rJ   rJ   rK   Ú 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   rA  é   )	rŠ   r‰  rŠ  rE  r?   r   rk   ÚdeleterÍ  )r‹  rO  rJ   rJ   rK   Ú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›   rx   FT)rÿ   Ún_labelsZallow_unlabeledZreturn_indicatorrÃ   rÛ   r   rš   r¤   )rA   r   r>   r4   r   Ztoarrayr	   )rU   rn   r°   Zy_sparseZclassifrk  Zpreds_sparserJ   rJ   rK   Ú(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Ì  rx   ro  r›   Ústrrg  N)r   r‡   r†   rN   rŠ   r  rà   r=   rP   ÚgetattrÚastyper   r   )
ræ   rU   rn   rh  r¥   Ú	exp_shapeÚexpected_predictionsrì   rí   ÚtgrJ   rJ   rK   Ú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   ©ro  r}  r•   r  T©Zreturn_inverserx   r›   rÕ  rg  N)r   rŠ   ÚfinforL  Úminr*  r†   rj   r‹   rà   r=   rP   rÖ  Úix_r×  r   r   )ræ   rU   rn   rh  r¥   Ú	float_minÚdefault_valuesrÙ  rF  Úy_encrì   rí   Ú
fold_predsZ
i_cols_fitrÚ  rJ   rJ   rK   Ú"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Ü  rx   Nr›   ro  r  c                    s8   g | ]0}t jˆ d d …|f dd�d d d …t jf ‘qS )NTrÝ  rx   )rŠ   r‹   r´   )rÓ   rb  ©rn   rJ   rK   Ú
<listcomp>   s   ÿz6check_cross_val_predict_multilabel.<locals>.<listcomp>r…  rÕ  rg  )r   rŠ   rÞ  rL  rß  rN   r­   r†   rj   rá   r*  Zconcatenaterà   r=   rP   rÖ  r‹   r‡   rà  r×  r   rk   r   )ræ   rU   rn   rh  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_outputrb  rJ   ræ  rK   Ú"check_cross_val_predict_multilabel  sD    ý
ÿ
þrê  c                 C   s,   t ddd�\}}dD ]}t| |||ƒ qd S )Nr›   r   )rÿ   rÃ   ©ro  r•   r}  )r@   rÛ  )ræ   rU   rn   rh  rJ   rJ   rK   Ú*check_cross_val_predict_with_method_binary9  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  rU   rn   rh  rJ   rJ   rK   Ú.check_cross_val_predict_with_method_multiclassA  s
    rí  c                   C   s    t tdd�ƒ ttdd�ƒ d S )Nrd  re  )rì  r.   rí  rJ   rJ   rJ   rK   Ú"test_cross_val_predict_with_methodI  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  rU   rn   rh  ræ   rJ   rJ   rK   Ú&test_cross_val_predict_method_checkingP  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"  rd  r„  r¾   r�  rx   r›   r¤   rë  )r"   r  r  r?   rC   r.   rå  )r  rU   rn   ræ   rh  rJ   rJ   rK   Ú/test_gridsearchcv_cross_val_predict_with_method[  s    
 
 ÿrð  c                  C   sL   d} d}t | d|ddd�\}}ttddd	�ƒ}d
D ]}t||||d� q2d S )NrA  rœ   r�   r�   r"  ©rÚ   rÓ  rÿ   r9  rÃ   rd  r   )rf  rÃ   )r•   ro  rp  )rA   r>   r.   rÛ  )Zn_samprÿ   rU   rn   ræ   rh  rJ   rJ   rK   Ú1test_cross_val_predict_with_method_multilabel_ovrf  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 )rx   r›   Nr€   r!  )rÓ   rO  rJ   rJ   rK   rç  |  s     z<RFWithDecisionFunction.decision_function.<locals>.<listcomp>)r•   rŸ   rl   rk   )rI   rU   ZprobsÚmsgrJ   rJ   rK   ro  x  s
    
z(RFWithDecisionFunction.decision_functionN)r^   r_   r`   ro  rJ   rJ   rJ   rK   ró  t  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œ   rA  r�   r�   r"  rñ  r   rx   ©r•   r}  ro  ©Zn_estimatorsrÃ   Úignorerp  )rA   ró  r0  r1  Úsimplefilterrê  )rÿ   rU   rn   rh  ræ   rJ   rJ   rK   Ú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   rx   )r½  rš   ©rC  r›   r�   rd  re  rõ  r÷  )
rŠ   r‰  rŠ  Únormalrâ   r.   r0  r1  rø  rå  )r‹  rU   rn   ræ   rh  rJ   rJ   rK   Ú-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   rx   )r�   rš   rú  r›   )r•   r}  r�   rö  r÷  rp  )
rŠ   r‰  rŠ  rû  râ   ró  r0  r1  rø  rê  )r‹  rU   rn   rh  ræ   rJ   rJ   rK   Ú;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à   rP   r*  rÞ  r  rß  Zclasses_)rU   rn   r¥   Úclassesræ   rh  rÙ  Úfuncrì   rí   Zexpected_predictions_Zexp_pred_testrJ   rJ   rK   Ú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 )NrJ  rA  r›   c                 S   s   g | ]}|d  ‘qS )rš   rJ   )rÓ   rd   rJ   rJ   rK   rç  È  s     z7test_cross_val_predict_class_subset.<locals>.<listcomp>rš   r�   rt  rœ   ro  r•   r}  rd  re  rg  r   rÂ   )rŠ   rE  r…   râ   r­   r   r9   r.   r   r   r	   r?   rM  Zfit_transform)rU   rn   rþ  Zkfold3Zkfold4ÚleÚmethodsrh  ræ   r  rÙ  rJ   rJ   rK   Ú#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  rJ   Úr)rN   r  r  )NNr�   r–   c                    s   ˆ S rQ   rJ   ©ræ   rU   rn   )r[   rJ   rK   r    ù  r¡   z#test_score_memmap.<locals>.<lambda>r¨   c                    s   ˆ S rQ   rJ   r  )r¶   rJ   rK   r    û  r¡   )r"   r  r  r|   ÚtempfileÚNamedTemporaryFileÚwriter¢  rŠ   ZmemmapÚnamerL  r­   ÚosÚunlinkÚWindowsErrorr   r   r²   r³   rˆ   )r  rU   rn   rµ   ÚtfrF  rJ   )r[   r¶   rK   Ú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 rQ   r  rh   r  rJ   rK   r      r¡   z4test_permutation_test_score_pandas.<locals>.<lambda>c                    s
   t | ˆ ƒS rQ   r  rh   r	  rJ   rK   r      r¡   r  )r   r  r  r  rá   r  r"   r  r  r   r   )r  r  r  r  rU   rn   r  r  r  r  rµ   rJ   r  rK   Ú"test_permutation_test_score_pandas  s    
r  c               
   C   s8  t t jƒ} t dd¡}t d¡}| |d tƒ d d dd d g	}ddi}tjtdd�� t	||Ž W 5 Q R X t
 d	¡}tjt|d�� t| |d
dd� W 5 Q R X tjt|d�� t| |d
dd� W 5 Q R X tjt|d�� t| ||d
dd� W 5 Q R X tjt|d��  t| ||dt jgd
dd� W 5 Q R X |  ¡ dk�s4t‚d S )Nrx   rš   rÃ  r   r¬   rª   z%Failing classifier failed as requiredrÄ   z‰error_score must be the string 'raise' or a numeric value. (Hint: if using 'raise', please make sure that it has been spelled correctly.)r�   zunvalid-string©r¥   r¬   Z	parameter)rÈ  rÉ  r¥   r¬   r=  )r   ÚFAILING_PARAMETERrŠ   rE  r)  rÈ   r²   r³   rˆ   r   ÚreÚescaper   r   r   r   r[   rk   )Úfailing_clfrU   rn   Úfit_and_score_argsÚfit_and_score_kwargsr  rJ   rJ   rK   Útest_fit_and_score_failing  s6    

ÿù
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Ü   rA  r�  )r­  r®  T)Ú
parametersr&  Zreturn_parametersr  )r@   r4   Únextr   rà   rÈ   r   rk   )rU   rn   rµ   rì   rí   r  r  ÚresultrJ   rJ   rK   Útest_fit_and_score_workingF  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 rQ   ©Úmax_x_value)rI   r   rJ   rJ   rK   rL   V  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   r?  rˆ   )rI   rU   rn   Znum_values_too_highrJ   rJ   rK   rP   Y  s
    
ÿz"DataDependentFailingClassifier.fitc                 C   s   dS )Nr=  rJ   rY   rJ   rJ   rK   r[   `  s    z$DataDependentFailingClassifier.score)N)N)NN)r^   r_   r`   rL   rP   r[   rJ   rJ   rJ   rK   r  U  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 )Nra  r  rx   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Š   rE  r)  r  ÚcompileÚDOTALLr²   rÊ   r   r   )r¬   r  rU   rn   Úcross_validate_argsÚcross_validate_kwargsÚindividual_fit_error_messagerÎ   rJ   rJ   rK   Ú-test_cross_validate_some_failing_fits_warningd  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 )
Nrx   rš   rÃ  r`  r  z1ValueError: Failing classifier failed as requiredz4All the 7 fits failed.+your model is misconfigured.+r!  rÄ   )r   r  rŠ   rE  r)  r  r#  r$  r²   r³   rˆ   r   )r¬   r  rU   rn   r%  r&  r'  r  rJ   rJ   rK   Ú*test_cross_validate_all_failing_fits_error~  s    



ýr)  c                 C   s   t |ƒ‚d S rQ   )rˆ   )rÌ   rU   rn   Ú	error_msgrJ   rJ   rK   Ú_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.   rP   r   r+  r²   r³   rˆ   r   rÊ   rË   r   )r¬   rU   rn   rµ   r*  Úfailing_scorerÚwarning_msgr¶   rJ   rJ   rK   Ú#test_cross_val_score_failing_scorer˜  s4         ÿÿ     ÿr1  rð   TFÚ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,  r-  r.  )Zscore_1Zscore_2Zscore_3rª   rÄ   r�   )r¥   r©   rð   r¬   rÇ   r   Z_score_2)r"   r.   rP   r   r+  r%   r+   r²   r³   rˆ   r   rÊ   rË   rŸ   rX   rk   r   )r¬   rð   r2  rU   rn   rµ   r*  r/  Znon_failing_scorerr©   r0  rÖ   rq   rb  rJ   rJ   rK   Ú"test_cross_validate_failing_scorer´  sP    ýùÿù	r3  c                 C   s   dS )Ng;pÎˆÒ^@rJ   )rb  Újrö   rJ   rJ   rK   Úthree_params_scorerõ  s    r5  z:train_score, scorer, verbose, split_prg, cdt_prg, expected)rx   r�   ©r   rx   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›   rx   )r@   r4   r  r   rà   r   Z
readouterrr†   r  rÅ   rk   )Zcapsysrñ   rG  rž  Z	split_prgZcdt_prgÚexpectedrU   rn   rµ   rì   rí   r  r  r£  rF  ZoutlinesrJ   rJ   rK   Útest_fit_and_score_verbosityù  s    #ý

r9  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 rQ   rJ   )rÌ   ZX_testrJ   rJ   rK   Útwo_params_scorer3	  s    z%test_score.<locals>.two_params_scorerrÄ   r¬   )r²   r³   rˆ   r   rŠ   rÉ   )r  r:  r  rJ   rJ   rK   rò   0	  s
    rò   c                  C   sn   dd„ } t dddd�\}}tdd�}| ||¡ t|||d| d	�}d
dddg}|D ]}d |¡|ksRt‚qRd S )Nc                 S   s2   |   |¡}t||ƒ}|d |d |d |d dœS )N)r   r   r6  )rx   r   )rx   rx   )ÚtnÚfpÚfnÚtp)rV   r'   )rµ   rU   rn   rø   ÚcmrJ   rJ   rK   rù   <	  s    

zPtest_callable_multimetric_confusion_matrix_cross_validate.<locals>.custom_scoreré(   rœ   r"  )rÚ   r9  rÃ   rÂ   r�   )r¥   r©   r;  r<  r=  r>  ztest_{})r@   r5   rP   r   r‰   rk   )rù   rU   rn   ræ   rý   Zscore_namesr  rJ   rJ   rK   Ú9test_callable_multimetric_confusion_matrix_cross_validate;	  s    
rA  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   r7   )rU   rn   rJ   rJ   rK   Ú*test_learning_curve_partial_fit_regressorsK	  s    rB  )Çra   r  r  rŸ  r  r0  Ú	functoolsr   Útimer   r²   ÚnumpyrŠ   Zscipy.sparser   r   Zsklearn.exceptionsr   Z)sklearn.model_selection.tests.test_searchr   Zsklearn.utils._testingr   r	   r
   r   Zsklearn.utils._mockingr   r   Zsklearn.utils.validationr   Zsklearn.model_selectionr   r   r   r   r   r   r   r   r   r   r   r   r   r   Z#sklearn.model_selection._validationr   r   r   Zsklearn.datasetsr    r!   r"   r#   Zsklearn.metricsr$   r%   r&   r'   r(   r)   r*   r+   r,   Zsklearn.linear_modelr-   r.   r/   r0   r1   Zsklearn.ensembler2   Zsklearn.neighborsr3   Zsklearn.svmr4   r5   Zsklearn.clusterr6   Zsklearn.neural_networkr7   Zsklearn.imputer8   Zsklearn.preprocessingr9   Zsklearn.pipeliner:   Úior;   Zsklearn.baser<   r=   Zsklearn.multiclassr>   Zsklearn.utilsr?   r@   rA   Z$sklearn.model_selection.tests.commonrB   rC   r  Ú	NameErrorrD   rb   ru   ry   r|   r)  rU   r°   râ   rn   r®   r'  rŒ   rº   rÁ   rÏ   r×   rî   rã   rä   r  ÚmarkÚfilterwarningsr  r  r   r+  r2  r5  r8  r;  rH  rP  rV  rW  r^  rl  rx  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  ZparametrizerÉ   r(  r)  r+  r1  r3  r5  r9  rò   rA  rB  rJ   rJ   rJ   rK   Ú<module>   s†  
W
*
?/0I

#B845

	='N0.&4)

)



=ú
ú
úíþ 
