a
    �ù»jâ-  ã                   @   sð  d 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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!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/m0Z0 G dd„ dƒZ1e1ddd„ ƒe1ddd„ dgd�e1ddd„ dgd�e1d ed!d"gd�e1d#eg d$¢d�e1d%eg d&¢d�e1d'd(d„ g d)¢d�gZ2d*d+„ Z3d,d-„ Z4d.d/„ Z5g d0¢Z6d1d2„ e5ƒ D ƒZ7d3d4„ Z8ej9j:d5e7e8d6�d7d8„ ƒZ;dS )9zCommon tests for metaestimatorsé    N)Úsuppress)Ú	signature)ÚBaseEstimatorÚis_regressor)Úmake_classification)ÚBaggingClassifier)ÚNotFittedError)ÚTfidfVectorizer)ÚRFEÚRFECV)ÚLogisticRegressionÚRidge)ÚGridSearchCVÚRandomizedSearchCV)ÚPipelineÚmake_pipeline)ÚMaxAbsScalerÚStandardScaler©ÚSelfTrainingClassifier)Úall_estimators)Ú_construct_instances)ÚSkipTestÚset_random_state)Ú_enforce_estimator_tags_XÚ_enforce_estimator_tags_y©Úcheck_is_fittedc                   @   s    e Zd Zdedd�fdd„ZdS )ÚDelegatorData© r   )Zrandom_statec                 C   s   || _ || _|| _|| _d S ©N)ÚnameÚ	constructÚfit_argsÚskip_methods)Úselfr!   r"   r$   r#   r   r   úGE:\soccer\ml_env\Lib\site-packages\sklearn/tests/test_metaestimators.pyÚ__init__    s    zDelegatorData.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r'   r   r   r   r&   r      s   ûr   r   c                 C   s   t d| fgƒS )NÚest)r   ©r+   r   r   r&   Ú<lambda>2   ó    r-   r   c                 C   s   t | ddgidd�S )NÚparamé   é   )Ú
param_gridÚcv)r   r,   r   r   r&   r-   5   r.   Úscore)r$   r   c                 C   s   t | ddgiddd�S )Nr/   r0   r1   é   )Úparam_distributionsr3   Ún_iter)r   r,   r   r   r&   r-   :   s   ÿr
   Ú	transformÚinverse_transformr   )r8   r9   r4   r   )r8   r9   r4   Úpredict_probaÚpredict_log_probaÚpredictr   c                 C   s   t | ƒS r    r   r,   r   r   r&   r-   Q   r.   )r8   r9   r:   c               
      sê  dd„ ‰ G ‡ fdd„dt ƒ} dd„ | j ¡ D ƒ}| ¡  tD �]¦}| ƒ }| |¡}|D ]Ê}||jv rfqVt||ƒstJ ‚t||ƒs�J d|j|f ƒ‚|dkràt	 
t¡�, t||ƒ|jd	 |jd
 ƒ W d   ƒ n1 sÔ0    Y  qVt	 
t¡�$ t||ƒ|jd	 ƒ W d   ƒ qV1 �s0    Y  qV|j|jŽ  |D ]R}||jv �rF�q2|dk�rnt||ƒ|jd	 |jd
 ƒ nt||ƒ|jd	 ƒ �q2|D ]X}||jv �rž�qŠ| |d�}| |¡}t||ƒ�rÂJ ‚t||ƒ�rŠJ d|j|f ƒ‚�qŠq<d S )Nc                    s   t ‡ fdd„ƒ}|S )Nc                    s&   | j ˆ jkrtd| j  ƒ‚t ˆ | ¡S )Nz%r is hidden)Úhidden_methodr(   ÚAttributeErrorÚ	functoolsÚpartial)Úobj©Úmethodr   r&   ÚwrapperZ   s    z=test_metaestimator_delegation.<locals>.hides.<locals>.wrapper)Úproperty)rC   rD   r   rB   r&   ÚhidesY   s    z,test_metaestimator_delegation.<locals>.hidesc                       s|   e Zd Zddd„Z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S )z3test_metaestimator_delegation.<locals>.SubEstimatorr5   Nc                 S   s   || _ || _d S r    )r/   r=   )r%   r/   r=   r   r   r&   r'   c   s    z<test_metaestimator_delegation.<locals>.SubEstimator.__init__c                 _   s   t  |jd ¡| _g | _dS )Nr5   T)ÚnpZarangeÚshapeZcoef_Zclasses_©r%   ÚXÚyÚargsÚkwargsr   r   r&   Úfitg   s    z7test_metaestimator_delegation.<locals>.SubEstimator.fitc                 S   s   t | ƒ d S r    r   )r%   r   r   r&   Ú
_check_fitl   s    z>test_metaestimator_delegation.<locals>.SubEstimator._check_fitc                 _   s   |   ¡  |S r    ©rO   ©r%   rJ   rL   rM   r   r   r&   r9   o   s    zEtest_metaestimator_delegation.<locals>.SubEstimator.inverse_transformc                 _   s   |   ¡  |S r    rP   rQ   r   r   r&   r8   t   s    z=test_metaestimator_delegation.<locals>.SubEstimator.transformc                 _   s   |   ¡  t |jd ¡S ©Nr   ©rO   rG   ZonesrH   rQ   r   r   r&   r<   y   s    z;test_metaestimator_delegation.<locals>.SubEstimator.predictc                 _   s   |   ¡  t |jd ¡S rR   rS   rQ   r   r   r&   r:   ~   s    zAtest_metaestimator_delegation.<locals>.SubEstimator.predict_probac                 _   s   |   ¡  t |jd ¡S rR   rS   rQ   r   r   r&   r;   ƒ   s    zEtest_metaestimator_delegation.<locals>.SubEstimator.predict_log_probac                 _   s   |   ¡  t |jd ¡S rR   rS   rQ   r   r   r&   Údecision_functionˆ   s    zEtest_metaestimator_delegation.<locals>.SubEstimator.decision_functionc                 _   s   |   ¡  dS )Nç      ð?rP   rI   r   r   r&   r4   �   s    z9test_metaestimator_delegation.<locals>.SubEstimator.score)r5   N)N)r(   r)   r*   r'   rN   rO   r9   r8   r<   r:   r;   rT   r4   r   ©rF   r   r&   ÚSubEstimatorb   s"   







rW   c                 S   s$   g | ]}|  d ¡s|  d¡s|‘qS )Ú_rN   )Ú
startswith)Ú.0Úkr   r   r&   Ú
<listcomp>’   s   þz1test_metaestimator_delegation.<locals>.<listcomp>z1%s does not have method %r when its delegate doesr4   r   r5   )r=   z+%s has method %r when its delegate does not)r   Ú__dict__ÚkeysÚsortÚDELEGATING_METAESTIMATORSr"   r$   Úhasattrr!   ÚpytestZraisesr   Úgetattrr#   rN   )rW   ÚmethodsZdelegator_dataZdelegateZ	delegatorrC   r   rV   r&   Útest_metaestimator_delegationW   sf    	0þ


ÿþþÿ$6
ÿ

ÿþþre   c                 C   sH  h d£|@ rŽt | ƒr0ttƒ tƒ ƒ}dddgi}nttƒ tƒ ƒ}dddgi}| ddh¡r‚d|v rhdd	ini }t| ƒ||fi |¤ŽS t| ƒ|ƒS d
|v rÊdttƒ tƒ ƒfdttƒ tdd�ƒfg}t| ƒ|ƒS d|v �rDt | ƒ�rdttƒ tdd�ƒfdttƒ tdd�ƒfg}n,dttƒ tdd�ƒfdttƒ tdd�ƒfg}t| ƒ|ƒS dS )zLGiven a single meta-estimator instance, generate an instance with a pipeline>   Ú	regressorÚ	estimatorÚbase_estimatorZridge__alphagš™™™™™¹?rU   Zlogisticregression__Cr2   r6   r7   r1   Útransformer_listZtrans1Ztrans2F)Z	with_meanÚ
estimatorsZest1)ÚalphaZest2r5   )ÚCN)	r   r   r	   r   r   ÚintersectionÚtyper   r   )Úmeta_estimatorZinit_paramsrg   r2   Zextra_paramsri   r   r   r&   Ú_get_instance_with_pipelineÊ   s<    ÿþþ

þþûrp   c               	   c   sž   t dttƒ ƒƒ ttƒ ƒD ]~\} }tt|ƒjƒ}t d|j|ƒ | h d£¡sNqt	t
ƒ�2 t|ƒD ]}t |ƒ t||ƒV  q`W d  ƒ q1 sŽ0    Y  qdS )zµGenerate instances of meta-estimators fed with a pipeline

    Are considered meta-estimators all estimators accepting one of "estimator",
    "base_estimator" or "estimators".
    zestimators: Ú
>   rj   ri   rh   rf   rg   N)ÚprintÚlenr   ÚsortedÚsetr   Ú
parametersr(   rm   r   r   r   rp   )rX   Z	EstimatorÚsigro   r   r   r&   Ú0_generate_meta_estimator_instances_with_pipelineù   s    ÿ	
rx   )ZAdaBoostClassifierZAdaBoostRegressorr   ZBaggingRegressorZClassifierChainZFrozenEstimatorZIterativeImputerZOneVsOneClassifierZRANSACRegressorr
   r   ZRegressorChainr   ZSequentialFeatureSelectorc                 C   s   g | ]}|j jtvr|‘qS r   )Ú	__class__r(   Ú)DATA_VALIDATION_META_ESTIMATORS_TO_IGNORE)rZ   r+   r   r   r&   r\   )  s   þr\   c                 C   s   | j jS r    )ry   r(   )rg   r   r   r&   Ú_get_meta_estimator_id0  s    r{   rg   )Zidsc                 C   s’   t j d¡}t| ƒ d}|jt jg d¢td�|d�}t| ƒrJ|j|d�}n|j	d|d�}t
| |ƒ ¡ }t| |ƒ ¡ }|  ||¡ t| dƒrŽJ ‚d S )Nr   é   )ZaaZbbÚcc)Zdtype)Úsizeé   Zn_features_in_)rG   ÚrandomZRandomStater   ÚchoiceÚarrayÚobjectr   ÚnormalÚrandintr   Útolistr   rN   ra   )rg   ÚrngZ	n_samplesrJ   rK   r   r   r&   Ú-test_meta_estimators_delegate_data_validation4  s    rˆ   )<Ú__doc__r?   Ú
contextlibr   Úinspectr   ÚnumpyrG   rb   Zsklearn.baser   r   Zsklearn.datasetsr   Zsklearn.ensembler   Zsklearn.exceptionsr   Zsklearn.feature_extraction.textr	   Zsklearn.feature_selectionr
   r   Zsklearn.linear_modelr   r   Zsklearn.model_selectionr   r   Zsklearn.pipeliner   r   Zsklearn.preprocessingr   r   Zsklearn.semi_supervisedr   Zsklearn.utilsr   Z-sklearn.utils._test_common.instance_generatorr   Zsklearn.utils._testingr   r   Zsklearn.utils.estimator_checksr   r   Zsklearn.utils.validationr   r   r`   re   rp   rx   rz   ZDATA_VALIDATION_META_ESTIMATORSr{   ÚmarkZparametrizerˆ   r   r   r   r&   Ú<module>   sx   ýû
ÿýýâ&s/þÿ