U
    9%e:(                     @   s  d Z ddl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+ G dd dZ,e,ddd e,ddd dgde,ddd dgde,dedd gde,d!edd gde,d"edd dd#d$d%gde,d&d'd dd d#gdgZ-d(d) Z.d*d+ Z/d,d-d"d.d/d0d1d2dd!d3d&d4gZ0d5d6 e/ D Z1d7d8 Z2ej3j4d9e1e2d:d;d< Z5dS )=zCommon tests for metaestimators    N)	signature)BaseEstimatoris_regressor)make_classification)BaggingClassifier)NotFittedError)TfidfVectorizer)RFERFECV)LogisticRegressionRidge)GridSearchCVRandomizedSearchCV)Pipelinemake_pipeline)MaxAbsScalerStandardScalerSelfTrainingClassifier)all_estimators)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   `/var/www/html/Darija-Ai-API/env/lib/python3.8/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>+       r*   r   c                 C   s   t | ddgiddS )Nparam      )
param_gridcv)r   r)   r   r   r#   r*   .   r+   score)r!   r   c                 C   s   t | ddgidddS )Nr,   r-   r.      )param_distributionsr0   n_iter)r   r)   r   r   r#   r*   3   s
      r	   	transforminverse_transformr
   r   predict_probapredict_log_probapredictr   c                 C   s   t | S r   r   r)   r   r   r#   r*   H   r+   c                     s  dd  G  fdddt } dd | j D }|  tD ]|}|  }||}|D ]}||jkrfqVt||sttt||std|j	|f |dkrt
t" t|||jd	 |jd
  W 5 Q R X qVt
t t|||jd	  W 5 Q R X qV|j|j  |D ]R}||jkrq|dkrDt|||jd	 |jd
  nt|||jd	  q|D ]X}||jkrtq`| |d}||}t||rtt||r`t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#   wrapperQ   s    z=test_metaestimator_delegation.<locals>.hides.<locals>.wrapper)property)r@   rA   r   r?   r#   hidesP   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>.SubEstimatorr2   Nc                 S   s   || _ || _d S r   )r,   r:   )r"   r,   r:   r   r   r#   r$   Z   s    z<test_metaestimator_delegation.<locals>.SubEstimator.__init__c                 _   s   t |jd | _g | _dS )Nr2   T)npZarangeshapeZcoef_Zclasses_r"   Xyargskwargsr   r   r#   fit^   s    z7test_metaestimator_delegation.<locals>.SubEstimator.fitc                 S   s   t |  d S r   r   )r"   r   r   r#   
_check_fitc   s    z>test_metaestimator_delegation.<locals>.SubEstimator._check_fitc                 _   s   |    |S r   rL   r"   rG   rI   rJ   r   r   r#   r6   f   s    zEtest_metaestimator_delegation.<locals>.SubEstimator.inverse_transformc                 _   s   |    |S r   rM   rN   r   r   r#   r5   k   s    z=test_metaestimator_delegation.<locals>.SubEstimator.transformc                 _   s   |    t|jd S Nr   rL   rD   ZonesrE   rN   r   r   r#   r9   p   s    z;test_metaestimator_delegation.<locals>.SubEstimator.predictc                 _   s   |    t|jd S rO   rP   rN   r   r   r#   r7   u   s    zAtest_metaestimator_delegation.<locals>.SubEstimator.predict_probac                 _   s   |    t|jd S rO   rP   rN   r   r   r#   r8   z   s    zEtest_metaestimator_delegation.<locals>.SubEstimator.predict_log_probac                 _   s   |    t|jd S rO   rP   rN   r   r   r#   decision_function   s    zEtest_metaestimator_delegation.<locals>.SubEstimator.decision_functionc                 _   s   |    dS )N      ?rM   rF   r   r   r#   r1      s    z9test_metaestimator_delegation.<locals>.SubEstimator.score)r2   N)N)r%   r&   r'   r$   rK   rL   r6   r5   r9   r7   r8   rQ   r1   r   rC   r   r#   SubEstimatorY   s"   







rT   c                 S   s$   g | ]}| d s| ds|qS )_rK   )
startswith).0kr   r   r#   
<listcomp>   s   
 
z1test_metaestimator_delegation.<locals>.<listcomp>z1%s does not have method %r when its delegate doesr1   r   r2   )r:   z+%s has method %r when its delegate does not)r   __dict__keyssortDELEGATING_METAESTIMATORSr   r!   hasattrAssertionErrorr   pytestZraisesr   getattrr    rK   )rT   methodsZdelegator_dataZdelegateZ	delegatorr@   r   rS   r#   test_metaestimator_delegationN   sn    	0


   
 

 rc   c                  c   sv  t t D ]d\} }tt|j}d|ks:d|ks:d|krt|r^tt t }dddgi}ntt t	 }dddgi}d|ksd	|krd
|krd
dini }|||f|V  n
||V  q
d|krdtt t
 fdtt tddfg}||V  q
d|kr
t|r6d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}||V  q
q
q
dS )zGenerate instances of meta-estimators fed with a pipeline

    Are considered meta-estimators all estimators accepting one of "estimator",
    "base_estimator" or "estimators".
    	estimatorZbase_estimatorZ	regressorZridge__alphag?rR   Zlogisticregression__Cr/   r3   r4   r.   transformer_listZtrans1Ztrans2F)Z	with_meanZ
estimatorsZest1)alphaZest2r2   )CN)sortedr   setr   
parametersr   r   r   r   r   r   r   )rU   Z	Estimatorsigrd   r/   Zextra_paramsre   r   r   r#   0_generate_meta_estimator_instances_with_pipeline   s>    
rl   ZAdaBoostClassifierZAdaBoostRegressorZBaggingRegressorZClassifierChainZIterativeImputerZOneVsOneClassifierZRANSACRegressorZRegressorChainZSequentialFeatureSelectorc                 C   s   g | ]}|j jtkr|qS r   )	__class__r%   )DATA_VALIDATION_META_ESTIMATORS_TO_IGNORE)rW   r(   r   r   r#   rY     s   rY   c                 C   s   | j jS r   )rm   r%   )rd   r   r   r#   _get_meta_estimator_id  s    ro   rd   )Zidsc                 C   s   t jd}t|  d}|jt jdddgtd|d}t| rL|j|d}n|j	d|d}t
| | }t| | }| || t| d	rtd S )
Nr      ZaaZbbcc)Zdtype)size   Zn_features_in_)rD   randomZRandomStater   choicearrayobjectr   normalrandintr   tolistr   rK   r^   r_   )rd   rngZ	n_samplesrG   rH   r   r   r#   -test_meta_estimators_delegate_data_validation  s    r|   )6__doc__r<   inspectr   numpyrD   r`   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._testingr   Zsklearn.utils.estimator_checksr   r   Zsklearn.utils.validationr   r   r]   rc   rl   rn   ZDATA_VALIDATION_META_ESTIMATORSro   markZparametrizer|   r   r   r   r#   <module>   s   $s<  