U
    _»{j”K  ã                   @   sÞ  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	m
Z
 ddlmZmZ ddlZddlZddlZddl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  ddl!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, ddl-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z=m>Z>m?Z? ddl@mAZAmBZB ddlCmDZDmEZE ddlFmGZGmHZH ddlImJZJmKZKmLZL ddlMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\ dd„ Z]dpdd„Z^ej_ `dee^dd�dfe^dfee^d ƒdfe%d!d"�d#fe%dd$d%d&d'�d(fg¡d)d*„ ƒZadqd+d,„Zbd-d.„ Zce\edeebƒ ecƒ ƒƒƒd/d0„ ƒZed1d2„ Zfd3d4„ Zgd5d6„ Zhej_ `d7ehƒ ¡d8d9„ ƒZieKd:d;„ ƒZjd<d=„ Zkd>d?„ Zld@dA„ ZmdBdC„ ZndDdE„ Zoe\edeoƒ ƒƒdFdG„ ƒZpej_j`dHebƒ eOdI�dJdK„ ƒZqej_j`dHebƒ eOdI�dLdM„ ƒZrdNdO„ Zsedeebƒ e:e%dd"�ƒgedeoƒ ƒesƒ ƒƒZtej_j`dHeteOdI�dPdQ„ ƒZudRdSgZvdTdU„ ZwdVdW„ ebdXƒD ƒZxej_j`dXexeOdI�dYdZ„ ƒZyd[dW„ ebƒ D ƒZzej_j`dHezeOdI�d\d]„ ƒZ{ej_ `d^d_dW„ eEƒ D ƒ¡d`da„ ƒZ|ej_j`dHeebƒ ecƒ enƒ eoƒ ƒeOdI�dbdc„ ƒZ}ej_ `d^eeee3e4e6e7eAeBeee5e,e+e*g¡ddde„ ƒZ~edeebdXƒe:e?ƒ e=ƒ ƒe>dfdg�e<dhdi�gƒƒZej_j`dHeeOdI�djdk„ ƒZ€ej_j`dHeeOdI�dldm„ ƒZ�ej_j`dHeeOdI�dndo„ ƒZ‚dS )rz.
General tests for all estimators in sklearn.
é    N)Úpartial)ÚisgeneratorÚ	signature)ÚchainÚproduct)ÚOPTICSÚAffinityPropagationÚBirchÚ	MeanShiftÚSpectralClustering)ÚColumnTransformer)Ú
make_blobs)ÚPCA)ÚConvergenceWarningÚFitFailedWarning)Úenable_halving_search_cvÚenable_iterative_imputer)ÚLogisticRegressionÚRidge)ÚLinearClassifierMixin)ÚTSNEÚIsomapÚLocallyLinearEmbedding)ÚGridSearchCVÚHalvingGridSearchCVÚHalvingRandomSearchCVÚRandomizedSearchCV)ÚKNeighborsClassifierÚKNeighborsRegressorÚLocalOutlierFactorÚRadiusNeighborsClassifierÚRadiusNeighborsRegressor)ÚPipelineÚmake_pipeline)ÚFunctionTransformerÚMinMaxScalerÚOneHotEncoderÚStandardScaler)ÚLabelPropagationÚLabelSpreading)ÚIS_PYPYÚall_estimators)Ú_DEFAULT_TAGSÚ
_safe_tags)ÚSkipTestÚignore_warningsÚset_random_state)Ú_construct_instanceÚ_get_check_estimator_idsÚ_set_checking_parametersÚ-check_class_weight_balanced_linear_classifierÚ(check_dataframe_column_names_consistencyÚcheck_estimatorÚ!check_get_feature_names_out_errorÚ$check_global_output_transform_pandasÚ!check_n_features_in_after_fittingÚcheck_param_validationÚcheck_set_output_transformÚ!check_set_output_transform_pandasÚ'check_transformer_get_feature_names_outÚ.check_transformer_get_feature_names_out_pandasÚparametrize_with_checksc                  C   s4   t ƒ D ](\} }d | ¡}|  ¡  d¡rt|ƒ‚qd S )NzDBase estimators such as {0} should not be included in all_estimatorsÚbase)r+   ÚformatÚlowerÚ
startswithÚAssertionError)ÚnameÚ	EstimatorÚmsg© rH   úX/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/tests/test_common.pyÚ test_all_estimator_no_base_classY   s    ÿÿrJ   é   c                 C   s   d S ©NrH   )ÚxÚyrH   rH   rI   Ú_sample_funcb   s    rO   zval, expected)rN   z_sample_func(y=1)Zworldg       @)ÚCzLogisticRegression(C=2.0)z	newton-cgZbalancedT)Úrandom_stateZsolverÚclass_weightZ
warm_startz]LogisticRegression(class_weight='balanced',random_state=1,solver='newton-cg',warm_start=True)c                 C   s   t | ƒ|kst‚d S rL   )r2   rD   )ÚvalÚexpectedrH   rH   rI   Útest_get_check_estimator_idsf   s    rU   c              	   c   sD   t | d�D ]4\}}zt|ƒ}W n tk
r6   Y q
Y nX |V  q
d S )N©Útype_filter)r+   r1   r.   )rW   rE   rF   Ú	estimatorrH   rH   rI   Ú_tested_estimators   s    
rY   c                  c   s0   t ƒ tƒ fD ]} tdtƒ fd| fgd�V  qd S )NZscalerÚfinal_estimator)Zsteps)r   r   r"   r'   )rZ   rH   rH   rI   Ú_generate_pipeline‰   s    þÿr[   c              	   C   s0   t tttfd�� t| ƒ || ƒ W 5 Q R X d S ©N©Úcategory)r/   ÚFutureWarningr   ÚUserWarningr3   ©rX   ÚcheckÚrequestrH   rH   rI   Útest_estimators“   s    rd   c                  C   s   t tƒ dd�} t| ƒst‚d S )NT)Zgenerate_only)r6   r   r   rD   )Zall_instance_gen_checksrH   rH   rI   Ú"test_check_estimator_generate_only›   s    re   c               
   C   sÐ   t  d¡ t ¡ } tj tj tjd d¡¡}tj |d¡}tj 	|¡sRt  
d¡ zft |¡ tj}ddgt_t ¡ �: t dt¡ tdƒ�}t| ¡ tdd	�ƒ W 5 Q R X W 5 Q R X W 5 |t_t | ¡ X d S )
NÚCythonr   z..zsetup.pyzsetup.py not availableÚconfigÚignoreÚ__main__)Ú__name__)ÚpytestZimportorskipÚosÚgetcwdÚpathÚabspathÚjoinÚsklearnÚ__path__ÚexistsÚskipÚsysÚargvÚchdirÚwarningsÚcatch_warningsÚsimplefilterr`   ÚopenÚexecÚreadÚdict)ÚcwdZ
setup_pathZsetup_filenameZold_argvÚfrH   rH   rI   Útest_configure    s     





,r�   c               	   c   sp   t dd�} tjdd��P | D ]D\}}t|dg ƒ}t|ƒr:qd|ƒ  ¡  ¡ krt|tƒr||fV  qW 5 Q R X d S )NÚ
classifierrV   T©ÚrecordZ_required_parametersrR   )	r+   rx   ry   ÚgetattrÚlenÚ
get_paramsÚkeysÚ
issubclassr   )ÚclassifiersrE   ZclazzZrequired_parametersrH   rH   rI   Ú_tested_linear_classifiers¼   s    
 ÿr‹   zname, Classifierc                 C   s   t | |ƒ d S rL   )r4   )rE   Ú
ClassifierrH   rH   rI   Ú-test_class_weight_balanced_linear_classifiersÌ   s    r�   c                  C   sš   t jtjddd„ d�} dd„ | D ƒ}|dg D ]f}d|kr<q.d	|krFq.tr\d
|ks.d|kr\q.t|dd�}t|ddƒD ]}t||ƒsttd 	||¡ƒ‚qtq.d S )Núsklearn.c                 S   s   d S rL   rH   ©Ú_rH   rH   rI   Ú<lambda>Ö   ó    z-test_import_all_consistency.<locals>.<lambda>)rn   ÚprefixÚonerrorc                 S   s   g | ]\}}}|‘qS rH   rH   )Ú.0r�   ÚmodnamerH   rH   rI   Ú
<listcomp>Ø   s     z/test_import_all_consistency.<locals>.<listcomp>rq   z.tests.zsklearn._build_utilsZ_svmlight_format_ioz feature_extraction._hashing_fastÚdummy)ÚfromlistÚ__all__rH   z#Module '{0}' has no attribute '{1}')
ÚpkgutilÚwalk_packagesrq   rr   r*   Ú
__import__r…   ÚhasattrrD   rA   )ÚpkgsZsubmodsr–   ÚpackagerE   rH   rH   rI   Útest_import_all_consistencyÑ   s.      ÿÿþ ÿr¡   c                  C   sR   d} t jtjdd„ d�D ]4\}}}d|ks| d¡s|| kr>q|tjkst‚qd S )N)ÚutilsZtestsr@   ÚsetupZconftestc                 S   s   d S rL   rH   r�   rH   rH   rI   r‘   î   r’   z3test_root_import_all_completeness.<locals>.<lambda>)rn   r”   Ú.r�   )r›   rœ   rq   rr   rC   rš   rD   )Z
EXCEPTIONSr�   r–   rH   rH   rI   Ú!test_root_import_all_completenessë   s     ÿr¥   c                     sb   t  d¡‰ dddh‰dd„ tjtjdd�D ƒ‰‡ ‡‡fd	d
„ˆ ¡ D ƒ} | g ks^td | ¡ƒ‚d S )NzÃ(?x)
                                      \.externals(\.|$)|
                                      \.tests(\.|$)|
                                      \._
                                      zsklearn.datasets.datazsklearn.datasets.descrzsklearn.datasets.imagesc                 S   s   i | ]\}}}||“qS rH   rH   )r•   r�   rE   ÚispkgrH   rH   rI   Ú
<dictcomp>  s   ÿ z1test_all_tests_are_importable.<locals>.<dictcomp>rŽ   )r“   c                    s6   g | ].\}}|r|ˆkrˆ   |¡s|d  ˆkr|‘qS )z.tests)Úsearch)r•   rE   r¦   ©ZHAS_TESTS_EXCEPTIONSÚlookupZresource_modulesrH   rI   r—     s   
ûz1test_all_tests_are_importable.<locals>.<listcomp>z{{0} do not have `tests` subpackages. Perhaps they require __init__.py or an add_subpackage directive in the parent setup.py)	ÚreÚcompiler›   rœ   rq   rr   ÚitemsrD   rA   )Zmissing_testsrH   r©   rI   Útest_all_tests_are_importableõ   s     
ýþþ
üÿr®   c               	   C   sN   d} t jt| d�� ttƒ W 5 Q R X t jt| d�� ttgƒ W 5 Q R X d S )Nz8Passing a class was deprecated.* isn't supported anymore)Úmatch)rk   ZraisesÚ	TypeErrorr6   r   r?   ©rG   rH   rH   rI   Útest_class_support_removed  s
    r²   c                   c   s   t dtƒ ddgfgd�V  d S )NZtrans1r   rK   )Ztransformers)r   r'   rH   rH   rH   rI   Ú&_generate_column_transformer_instances$  s    ÿÿr³   c                  c   s  t ttttgtdddgiftdddgifgƒD ]P\} \}}t| ƒj}d|krTddini }| |ƒ |fddi|—Ž}t|ƒ |V  q.t tttt	gtd	ddgiftd
ddgifgƒD ]`\} \}}t| ƒj}d|krÔddini }| t
tƒ |ƒ ƒ|fddi|—Žjdd�}t|ƒ |V  q®d S )NÚalphagš™™™™™¹?ç      ð?rP   Zmin_resourcesÚsmallestZcvé   Zridge__alphaZlogisticregression__CÚraise)Zerror_score)r   r   r   r   r   r   r   Ú
parametersr0   r   r#   r   Ú
set_params)ZSearchCVrF   Z
param_gridZinit_paramsZextra_paramsZ	search_cvrH   rH   rI   Ú_generate_search_cv_instances,  sR    üþù
ÿüþù
ÿ ÿÿÿþr»   c              	   C   s*   t ttttfd�� || ƒ W 5 Q R X d S r\   )r/   r_   r   r`   r   ra   rH   rH   rI   Útest_search_cvX  s    üÿr¼   rX   )Zidsc                 C   sH   t | ƒ}| ¡ D ]2\}}tt| ƒ}|dkr4|tf}t||ƒst‚qdS )z$Check that estimator tags are valid.Z_xfail_checksN)r-   r­   Útyper,   r~   Ú
isinstancerD   )rX   ÚtagsrE   ÚtagZcorrect_tagsrH   rH   rI   Útest_valid_tag_typesh  s    rÁ   c                 C   s   t | ƒ t| jj| ƒ d S rL   )r3   r9   Ú	__class__rj   )rX   rH   rH   rI   Ú&test_check_n_features_in_after_fittingw  s    rÃ   c                  c   s’   t ƒ D ]†} t|  ¡ ƒ}d|kr0| jddd�V  qd|krv| jddd�}|jjdkrntj|tjj	dd	�d
�V  qŒ|V  qd|kr| jdd�V  qd S )NÚ	oob_scoreT)rÄ   Z	bootstrapÚearly_stoppingrK   )rÅ   Ún_iter_no_change>   ÚMLPClassifierÚMLPRegressorzMLP still validates in fitr±   )ZmarksrÆ   )rÆ   )
rY   Úsetr‡   rº   rÂ   rj   rk   ÚparamÚmarkZxfail)rX   Z
est_paramsÚestrH   rH   rI   Ú_estimators_that_predict_in_fit  s    
 ÿ
rÍ   c              
   C   sd   t | ƒ ttd��H tjdd��}t| jj| ƒ W 5 Q R X |D ]}dt|j	ƒks>t
‚q>W 5 Q R X d S )Nr]   Trƒ   z was fitted without feature names)r3   r/   r_   rx   ry   r5   rÂ   rj   ÚstrÚmessagerD   )rX   r„   ÚwarningrH   rH   rI   Ú#test_pandas_column_name_consistencyž  s     ÿrÑ   ZensembleZkernel_approximationc                 C   s&   t | dƒrdS | j d¡d }|tkS )NÚget_feature_names_outTr¤   rK   )rž   Ú
__module__ÚsplitÚ"GET_FEATURES_OUT_MODULES_TO_IGNORE)ÚtransformerÚmodulerH   rH   rI   Ú'_include_in_get_feature_names_out_check´  s    
rØ   c                 C   s   g | ]}t |ƒr|‘qS rH   )rØ   ©r•   rÌ   rH   rH   rI   r—   »  s   þr—   rÖ   c              	   C   s>   t | ƒ ttd��" t| jj| ƒ t| jj| ƒ W 5 Q R X d S r\   )r3   r/   r_   r=   rÂ   rj   r>   )rÖ   rH   rH   rI   Ú'test_transformers_get_feature_names_outÂ  s     ÿ ÿrÚ   c                 C   s   g | ]}t |d ƒr|‘qS )rÒ   )rž   rÙ   rH   rH   rI   r—   Ñ  s    
 c                 C   s   | j j}t| ƒ t|| ƒ d S rL   )rÂ   rj   r3   r7   )rX   Zestimator_namerH   rH   rI   Ú+test_estimators_get_feature_names_out_errorÖ  s    rÛ   rF   c                 C   s   g | ]\}}|‘qS rH   rH   )r•   rE   rÌ   rH   rH   rI   r—   á  s     c                    s^   t | ƒj}dddt ddg¡dgi g g}|D ],‰ ‡ fdd„|D ƒ}| f |Ž}|jf |Ž q,d	S )
z3Check that init or set_param does not raise errors.éÿÿÿÿg      @Z
helloworldrµ   g      @rK   c                    s   i | ]
}|ˆ “qS rH   rH   )r•   Úkey©ÚvaluerH   rI   r§   é  s      zMtest_estimators_do_not_raise_errors_in_init_or_set_params.<locals>.<dictcomp>N)r   r¹   ÚnpÚarrayrº   )rF   ÚparamsZsmoke_test_valuesÚ
new_paramsrÌ   rH   rÞ   rI   Ú9test_estimators_do_not_raise_errors_in_init_or_set_paramsß  s    

rä   c                 C   s   | j j}t| ƒ t|| ƒ d S rL   )rÂ   rj   r3   r:   ©rX   rE   rH   rH   rI   Útest_check_param_validationò  s    ræ   c                 C   sp   t dddd�\}}t |¡}t |d d …df ¡}| ƒ }| ||¡ t|dƒrX| |¡ t|dƒrl| |¡ d S )NéP   é   r   )Z	n_samplesZ
n_featuresrQ   Ú	transformÚpredict)r   rà   ZasfortranarrayÚroundÚfitrž   ré   rê   )rF   ÚXr�   rN   rÌ   rH   rH   rI   Ú!test_f_contiguous_array_estimator  s    



rî   F)Zsparse_outputz
one-to-one)Zfeature_names_outc              	   C   sT   | j j}t| dƒs$t d|› d�¡ t| ƒ ttd�� t| j j| ƒ W 5 Q R X d S )NÚ
set_outputz(Skipping check_set_output_transform for z!: Does not support set_output APIr]   )	rÂ   rj   rž   rk   rt   r3   r/   r_   r;   rå   rH   rH   rI   Útest_set_output_transform5  s    

ÿrð   c              	   C   sT   | j j}t| dƒs$t d|› d�¡ t| ƒ ttd�� t| j j| ƒ W 5 Q R X d S )Nrï   z/Skipping check_set_output_transform_pandas for ú%: Does not support set_output API yetr]   )	rÂ   rj   rž   rk   rt   r3   r/   r_   r<   rå   rH   rH   rI   Ú test_set_output_transform_pandasD  s    

ÿrò   c              	   C   sT   | j j}t| dƒs$t d|› d�¡ t| ƒ ttd�� t| j j| ƒ W 5 Q R X d S )Nrï   z2Skipping check_global_output_transform_pandas for rñ   r]   )	rÂ   rj   rž   rk   rt   r3   r/   r_   r8   rå   rH   rH   rI   Ú#test_global_output_transform_pandasS  s    

ÿró   )rK   )N)ƒÚ__doc__rl   r›   r«   ru   rx   Ú	functoolsr   Úinspectr   r   Ú	itertoolsr   r   Únumpyrà   rk   rq   Zsklearn.clusterr   r   r	   r
   r   Zsklearn.composer   Zsklearn.datasetsr   Zsklearn.decompositionr   Zsklearn.exceptionsr   r   Zsklearn.experimentalr   r   Zsklearn.linear_modelr   r   Zsklearn.linear_model._baser   Zsklearn.manifoldr   r   r   Zsklearn.model_selectionr   r   r   r   Zsklearn.neighborsr   r   r   r    r!   Zsklearn.pipeliner"   r#   Zsklearn.preprocessingr$   r%   r&   r'   Zsklearn.semi_supervisedr(   r)   Zsklearn.utilsr*   r+   Zsklearn.utils._tagsr,   r-   Zsklearn.utils._testingr.   r/   r0   Zsklearn.utils.estimator_checksr1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   rJ   rO   rË   ZparametrizerU   rY   r[   Úlistrd   re   r�   r‹   r�   r¡   r¥   r®   r²   r³   r»   r¼   rÁ   rÃ   rÍ   Zcolumn_name_estimatorsrÑ   rÕ   rØ   ZGET_FEATURES_OUT_ESTIMATORSrÚ   Z%ESTIMATORS_WITH_GET_FEATURE_NAMES_OUTrÛ   rä   ræ   rî   ZSET_OUTPUT_ESTIMATORSrð   rò   ró   rH   rH   rH   rI   Ú<module>   sd  D	
üøûþ







#,
  ÿ
  ÿ
üÿ
  ÿ
þþ  ÿ
ÿ  ÿ
þ
üø

ñþ
ýþÿ  ÿ
  ÿ
  ÿ