U
    Ovf#                     @   s  d dl Zd dlZd dlmZmZmZ d dlmZm	Z	m
Z
mZ d dlmZmZmZmZ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mZmZmZ e	d	d
\ZZ ed	d
\Z!Z"ej#j$de
ddede fdeddfdedddfgddfe
ddede fdeddfdedddfgdfeddede fdeddfdedddfgddfeddede fdeddfdedddfgdfgddddgddd Z%ej#$d eeegd!d" Z&ej#$d#e
ddefe
ddefeddefeddefgd$d% Z'ej#j$de
ddede fgdfe
ddede fgdfeddede fgdfeddede fgdfgddddgdd&d' Z(ej#$d(eeee feee!e"feeee feee!e"fgd)d* Z)dS )+    N)ClassifierMixincloneis_classifier)load_diabetes	load_irismake_classificationmake_regression)RandomForestClassifierRandomForestRegressorStackingClassifierStackingRegressorVotingClassifierVotingRegressor)SimpleImputer)LinearRegressionLogisticRegression)make_pipeline)SVCSVR	LinearSVC	LinearSVRT)Z
return_X_yzX, y, estimator
   Z	n_sampleslrsvmauto)Zdualrf      )Zn_estimators	max_depth   )
estimatorsZcvr!   zstacking-classifierzvoting-classifierzstacking-regressorzvoting-regressor)idsc                 C   s  d|j kst|j j|jd d ks(t|j j|j d ks>t|| | t|j dks\tt|jdksnttt|j	 tdddgkstt
|}t|rt nt }|j|d| | t|drt|j j |j j kst|j j |j j ks
tt
|}|jdd || | t|j dks>t|j jdksPtt|jdksdttt|j	 tdddgkst|jD ]}t|t|j jrtq|jdd	 |jd
d | d | d  d kst| d | d  d kstd S )Nr      r   r   r   )r   dropg      $@)svm__Cr   )rf__max_depthr&   Cr'   r   )Znamed_estimatorsAssertionErrorr   r!   fitlenZnamed_estimators_sortedlistkeysr   r   r   r   
set_paramshasattrr   
get_paramsr   
isinstancetype)Xy	estimatorZestimator_new_paramsZsvm_estimatorZestimator_droppedZsub_est r7   F/tmp/pip-unpacked-wheel-qu3nn_q2/sklearn/ensemble/tests/test_common.py/test_ensemble_heterogeneous_estimators_behavior   sT    ;







r9   Ensemblec              	   C   s   t | tr*tdd\}}dt fg}d}ntdd\}}dt fg}d}| |d}d|}tjt	|d |
|| W 5 Q R X d S )	Nr   r   r   
classifierZ	regressorr"   zshould be a {}match)
issubclassr   r   r   r   r   formatpytestraises
ValueErrorr*   )r:   r4   r5   r!   Zensemble_typeensembleerr_msgr7   r7   r8   +test_ensemble_heterogeneous_estimators_type   s    


rE   zX, y, Ensemblec              	   C   s  t |trdt fg}ndt fg}||d}d}tjt|d || | W 5 Q R X t |trxdt fdt fg}ndt fdt fg}||d}d}tjt|d || | W 5 Q R X t |trdt fg}ndt fg}||d}d}tjt|d || | W 5 Q R X d S )	NZlr__r"   z3Estimator names must not contain __: got \['lr__'\]r<   r   z-Names provided are not unique: \['lr', 'lr'\]r!   z3Estimator names conflict with constructor arguments)r>   r   r   r   r@   rA   rB   r*   )r4   r5   r:   r!   rC   rD   r7   r7   r8   6test_ensemble_heterogeneous_estimators_name_validation   s*    





rF   c              	   C   s6   |j dd tjtdd || | W 5 Q R X d S )Nr%   )r   zAll estimators are dropped.r<   )r/   r@   rA   rB   r*   )r4   r5   r6   r7   r7   r8   2test_ensemble_heterogeneous_estimators_all_dropped   s    rG   zEnsemble, Estimator, X, yc                 C   sp   |  }tjjddg|jddgdt}tj||< tt	 | }| d|fd|fgd}|
|||| d S )	Nr$   r   g?g?)pZpipe1pipe2r"   )copynprandomchoiceshapeZastypeboolnanr   r   r*   Zscore)r:   Z	Estimatorr4   r5   maskpiperC   r7   r7   r8   2test_heterogeneous_ensemble_support_missing_values   s    "
rS   )*ZnumpyrK   r@   Zsklearn.baser   r   r   Zsklearn.datasetsr   r   r   r   Zsklearn.ensembler	   r
   r   r   r   r   Zsklearn.imputer   Zsklearn.linear_modelr   r   Zsklearn.pipeliner   Zsklearn.svmr   r   r   r   r4   r5   ZX_rZy_rmarkZparametrizer9   rE   rF   rG   rS   r7   r7   r7   r8   <module>   s    -5
;
	
#




