o
    i,                     @   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   p/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/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   s    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   s    score)r$   r   c                 C   s   t | ddgidddS )Nr.   r/   r0      )param_distributionsr2   n_iter)r   r,   r   r   r&   r-   :   s    r
   	transforminverse_transformr   )r7   r8   r3   r   )r7   r8   r3   predict_probapredict_log_probapredictr   c                 C   s   t | S r    r   r,   r   r   r&   r-   Q   s    )r7   r8   r9   c               
      s  dd  G  fdddt } dd | j D }|  tD ]}|  }||}|D ]d}||jv r2q*t||s9J t||sGJ d|j|f |dkrot	
t t|||jd	 |jd
  W d    n1 siw   Y  q*t	
t t|||jd	  W d    n1 sw   Y  q*|j|j  |D ]%}||jv rq|dkrt|||jd	 |jd
  qt|||jd	  q|D ]'}||jv rq| |d}||}t||rJ t||rJ d|j|f qq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)rB   rC   r   rA   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>.SubEstimatorr4   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 )Nr4   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 r    rN   r%   rI   rK   rL   r   r   r&   r8   o      zEtest_metaestimator_delegation.<locals>.SubEstimator.inverse_transformc                 _   rO   r    rP   rQ   r   r   r&   r7   t   rR   z=test_metaestimator_delegation.<locals>.SubEstimator.transformc                 _      |    t|jd S Nr   rN   rF   ZonesrG   rQ   r   r   r&   r;   y      z;test_metaestimator_delegation.<locals>.SubEstimator.predictc                 _   rS   rT   rU   rQ   r   r   r&   r9   ~   rV   zAtest_metaestimator_delegation.<locals>.SubEstimator.predict_probac                 _   rS   rT   rU   rQ   r   r   r&   r:      rV   zEtest_metaestimator_delegation.<locals>.SubEstimator.predict_log_probac                 _   rS   rT   rU   rQ   r   r   r&   decision_function   rV   zEtest_metaestimator_delegation.<locals>.SubEstimator.decision_functionc                 _   s   |    dS )N      ?rP   rH   r   r   r&   r3      rR   z9test_metaestimator_delegation.<locals>.SubEstimator.score)r4   Nr    )r(   r)   r*   r'   rM   rN   r8   r7   r;   r9   r:   rW   r3   r   rE   r   r&   SubEstimatorb   s$    







rZ   c                 S   s$   g | ]}| d s| ds|qS )_rM   )
startswith).0kr   r   r&   
<listcomp>   s    z1test_metaestimator_delegation.<locals>.<listcomp>z1%s does not have method %r when its delegate doesr3   r   r4   )r<   z+%s has method %r when its delegate does not)r   __dict__keyssortDELEGATING_METAESTIMATORSr"   r$   hasattrr!   pytestZraisesr   getattrr#   rM   )rZ   methodsZdelegator_dataZdelegateZ	delegatorrB   r   rY   r&   test_metaestimator_delegationW   sn   	0





rh   c                 C   sD  h d|@ rGt | rtt t }dddgi}ntt t }dddgi}|ddhrAd|v r4dd	ini }t| ||fi |S t| |S d
|v redtt t fdtt tddfg}t| |S d|v rt | rd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>   base_estimator	estimator	regressorZridge__alphag?rX   Zlogisticregression__Cr1   r5   r6   r0   transformer_listZtrans1Ztrans2F)Z	with_mean
estimatorsZest1)alphaZest2r4   )CN)	r   r   r	   r   r   intersectiontyper   r   )meta_estimatorZinit_paramsrj   r1   Zextra_paramsrl   r   r   r&   _get_instance_with_pipeline   s>   rs   c               	   c   s    t dtt  tt D ]?\} }tt|j}t d|j| |h ds(qt	t
 t|D ]}t | t||V  q1W d   n1 sHw   Y  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".
    zestimators: 
>   ri   rk   rl   rj   rm   N)printlenr   sortedsetr   
parametersr(   rp   r   r   r   rs   )r[   Z	Estimatorsigrr   r   r   r&   0_generate_meta_estimator_instances_with_pipeline   s"   	
r{   )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)r]   r+   r   r   r&   r_   +  s
    r_   c                 C   s   | j jS r    )r|   r(   )rj   r   r   r&   _get_meta_estimator_id2  s   r~   rj   )Zidsc                 C   s   t jd}t|  d}|jt jg dtd|d}t| r%|j|d}n|j	d|d}t
| | }t| | }| || t| drGJ d S )Nr      )ZaaZbbcc)Zdtype)size   Zn_features_in_)rF   randomZRandomStater   choicearrayobjectr   normalrandintr   tolistr   rM   rd   )rj   rngZ	n_samplesrI   rJ   r   r   r&   -test_meta_estimators_delegate_data_validation6  s   r   )<__doc__r>   
contextlibr   inspectr   numpyrF   re   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   rc   rh   rs   r{   r}   ZDATA_VALIDATION_META_ESTIMATORSr~   markZparametrizer   r   r   r   r&   <module>   sz    
&u/