U
    _»{jÕl  ã                
   @   sî  d dl Z d dlZd dl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mZmZ d dlmZmZ d dlmZmZmZ d dlmZ d d	lmZ d d
lmZm Z m!Z!m"Z"m#Z#m$Z$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/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z=m>Z>m?Z? dd„ Z@dd„ ZAdd„ ZBdd„ ZCdd„ ZDdd„ ZEd d!„ ZFe
 G¡ ZHeHjIZJeHjKZLe;eLd"d#�ZMe;eLd$d#�ZNe OeLeMeNf¡ZPeJjQ\ZRZSePjQd" ZTeUe VeL¡ƒZWeXeYejVeLeMeNfƒƒZZd%d&„ Z[d'd(„ Z\d)d*„ Z]d+d,„ Z^d-d.„ Z_d/d0„ Z`d1d2„ Zad3d4„ Zbd5d6„ Zcd7d8„ Zdd9d:„ Zeejf gd;d<d=g¡d>d?„ ƒZhd@dA„ ZidBdC„ ZjdDdE„ ZkdFdG„ ZldHdI„ ZmdJdK„ ZndLdM„ ZodNdO„ ZpdPdQ„ Zqejf gdRed$dS�e1ed$dS�ƒe0ed$dS�ƒg¡dTdU„ ƒZrG dVdW„ dWeƒZsG dXdY„ dYeƒZtejf udZ¡ejf gd[e1etd\d]�ƒe
 ¡ fe2esƒ ƒe
jd^d d_�fg¡d`da„ ƒƒZvdbdc„ Zwejf gdde1e!fe2e$fg¡dedf„ ƒZxejf gdgeXejyezg¡dhdi„ ƒZ{djdk„ Z|dldm„ Z}dndo„ Z~dpdq„ Zejf gdre0dsfe1dtfg¡dudv„ ƒZ€dwdx„ Z�dS )yé    N)Ú	cpu_count)Údatasets)ÚClassifierMixinÚclone)Úload_linnerudÚmake_classificationÚmake_multilabel_classificationÚmake_regression)ÚDummyClassifierÚDummyRegressor)ÚGradientBoostingRegressorÚRandomForestClassifierÚStackingRegressor)ÚNotFittedError)ÚSimpleImputer)ÚLassoÚLinearRegressionÚLogisticRegressionÚOrthogonalMatchingPursuitÚPassiveAggressiveClassifierÚRidgeÚSGDClassifierÚSGDRegressor)Újaccard_scoreÚmean_squared_error)ÚGridSearchCVÚtrain_test_split)ÚOneVsRestClassifier)ÚClassifierChainÚMultiOutputClassifierÚMultiOutputRegressorÚRegressorChain)Úmake_pipeline)Ú	LinearSVC)ÚDecisionTreeClassifier)Úshuffle)Úassert_almost_equalÚassert_array_almost_equalÚassert_array_equalc            
      C   sÈ   t jddd�\} }| d d… |d d…  }}| dd … |dd …  }}t |¡}tdƒD ]<}tdd�}| ||d d …|f ¡ | |¡|d d …|f< qXttdd�ƒ}| ||¡ | |¡}	t	||	ƒ d S ©Né   r   ©Ú	n_targetsÚrandom_stateé2   ©r-   )
r   r	   ÚnpÚ
zeros_likeÚranger   ÚfitÚpredictr    r&   )
ÚXÚyÚX_trainÚy_trainÚX_testÚy_testÚ
referencesÚnÚrgrÚy_pred© r?   ú]/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/tests/test_multioutput.pyÚtest_multi_target_regression6   s    


rA   c                  C   s8  t jddd�\} }| d d… |d d…  }}| dd … |dd …  }}t |¡}d}tdƒD ]f}tddd�}	|	 |d |… |d |…|f ¡ |	 ||d … ||d …|f ¡ |	 |¡|d d …|f< q\ttddd�ƒ}	|	 |d |… |d |… ¡ |	 ||d … ||d … ¡ |	 |¡}
t	||
ƒ t
ttƒdƒ�r4t‚d S )	Nr*   r   r+   r.   é   é   ©r-   Úmax_iterÚpartial_fit)r   r	   r0   r1   r2   r   rF   r4   r    r&   Úhasattrr   ÚAssertionError)r5   r6   r7   r8   r9   r:   r;   Ú
half_indexr<   Úsgrr>   r?   r?   r@   Ú(test_multi_target_regression_partial_fitH   s     
  

rK   c               	   C   sN   t jddd�\} }ttdd�ƒ}d}tjt|d�� | | |¡ W 5 Q R X d S )Né   r   r+   r/   zat least two dimensions©Úmatch)r   r	   r    r   ÚpytestÚraisesÚ
ValueErrorr3   )r5   r6   r=   Úmsgr?   r?   r@   Ú'test_multi_target_regression_one_target_   s
    rS   c                  C   s¬   t jddd�\} }| d d… |d d…  }}| dd … }tjtjtjtjtjfD ]V}tt	dd�ƒ}tt	dd�ƒ}| 
||¡ | 
||ƒ|¡ t| |¡| ||ƒ¡ƒ qPd S r)   )r   r	   ÚspÚ
csr_matrixZ
csc_matrixZ
coo_matrixZ
dok_matrixZ
lil_matrixr    r   r3   r&   r4   )r5   r6   r7   r8   r9   Úsparser=   Z
rgr_sparser?   r?   r@   Ú#test_multi_target_sparse_regressionh   s    ûrW   c               	   C   s‚   dddgdddgg} ddgddgg}d	d
g}t tƒ ƒ}d}tjt|d�� | | ||¡ W 5 Q R X t tdd�ƒ}| | ||¡ d S )NrL   é   r*   é   rC   é   çTã¥›Ä 	@çX9´Èv¾@gš™™™™™é?g333333ã?zdoes not support sample weightsrM   r   r/   )r    r   rO   rP   rQ   r3   r   )r5   r6   Úwr=   rR   r?   r?   r@   Ú$test_multi_target_sample_weights_api}   s    
r^   c                  C   sœ   dddgdddgg} ddgddgg}d	d
g}t tddd�ƒ}| | ||¡ d	d	g}t tddd�ƒ}| | ||¡ | | ¡d d | | ¡d d ks˜t‚d S )NrL   rX   r*   rY   rC   rZ   r[   r\   ç       @ç      ð?r   rD   )r    r   rF   r4   rH   )r5   r6   r]   Úrgr_wr=   r?   r?   r@   Ú+test_multi_target_sample_weight_partial_fitŒ   s    rb   c                  C   sÂ   dddgdddgg} ddgddgg}d	d
g}t tdd�ƒ}| | ||¡ dddgdddgdddgg}ddgddgddgg}t tdd�ƒ}| ||¡ dddgdddgg}t| |¡| |¡ƒ d S )NrL   rX   r*   rY   rC   rZ   r[   r\   r_   r`   r   r/   ç      ø?ç      @ç      @ç      @ç      @)r    r   r3   r&   r4   )ÚXwÚywr]   ra   r5   r6   r=   r9   r?   r?   r@   Ú test_multi_target_sample_weightsœ   s    rj   rL   r/   rX   c                  C   sb   t dddd�} t| dd�}| ttt¡ |jd }| tt¡ |jd }tƒ dkr^||k	s^t‚d S )NÚlog_lossrL   rC   ©Úlossr-   rE   rY   )Zn_jobsr   )	r   r   rF   r5   r6   ÚclassesÚestimators_r   rH   )Úsgd_linear_clfZmorÚest1Úest2r?   r?   r@   Ú8test_multi_output_classification_partial_fit_parallelism¼   s    


rs   c                  C   sb   t ddd�} t| ƒ}| tt¡ t|dƒr.t‚t dddd�} t| ƒ}| tt¡ t|dƒs^t‚d S )NrL   rC   rD   Úpredict_probark   rl   )r   r   r3   r5   r6   rG   rH   )rp   Úmulti_target_linearr?   r?   r@   Ú'test_hasattr_multi_output_predict_probaÉ   s    rv   c               	   C   s˜   t ddd�} ddi}dd„ }t| ||dd	d
�}t|ƒ}| tt¡ | t¡ t ddd�} t| ƒ}| tt¡ d}tjt	|d�� | t¡ W 5 Q R X d S )NrL   rC   rD   rm   )Zhingerk   Zmodified_huberc                 S   s   t | dƒrdS dS d S )Nrt   r`   g        )rG   )Ú	estimatorr5   r6   r?   r?   r@   Úcustom_scorerÞ   s    
z6test_multi_output_predict_proba.<locals>.custom_scorerr*   Úraise)Z
param_gridZscoringÚcvZerror_scorez8probability estimates are not available for loss='hinge'rM   )
r   r   r   r3   r5   r6   rt   rO   rP   ÚAttributeError)rp   Úparamrx   Zgrid_clfru   Úerr_msgr?   r?   r@   Útest_multi_output_predict_probaÙ   s&    û
r~   c                  C   s2  t dddd�} t| ƒ}tjd d }|jtd |… td |… td� | t¡}tt	f|jks`t
‚| t|d … t|d … ¡ | t¡}tt	f|jks˜t
‚tdƒD ]Œ}t| ƒ} | jtd |… td |…|f t| d� t|  t¡|d d …|f ƒ |  t|d … t|d …|f ¡ t|  t¡|d d …|f ƒ q d S )	Nrk   rL   rC   rl   r   rX   )rn   r*   )r   r   r5   ÚshaperF   r6   rn   r4   Ú	n_samplesÚ	n_outputsrH   r2   r   r(   )rp   ru   rI   Zfirst_predictionsZsecond_predictionsÚir?   r?   r@   Ú,test_multi_output_classification_partial_fitú   s&     


  ÿ rƒ   c               	   C   sD   t dddd�} t| ƒ}d}tjt|d�� | tt¡ W 5 Q R X d S )Nrk   rL   rC   rl   z8classes must be passed on the first call to partial_fit.rM   )r   r   rO   rP   rQ   rF   r5   r6   )rp   ru   rR   r?   r?   r@   ÚGtest_multi_output_classification_partial_fit_no_first_classes_exception  s
    r„   c                  C   s   t ddd�} t| ƒ}| tt¡ | t¡}ttf|jks<t	‚| 
t¡}t|ƒtksVt	‚|D ]}ttf|jksZt	‚qZttjt |¡dd�|ƒ tdƒD ]f}t| ƒ}| ttd d …|f ¡ t| t¡ƒt|d d …|f ƒksÞt	‚tt| 
t¡ƒt|| ƒƒ q”d S )Né
   rL   ©Ún_estimatorsr-   ©Zaxisr*   )r   r   r3   r5   r6   r4   r€   r�   r   rH   rt   ÚlenÚ	n_classesr(   r0   ZargmaxZdstackr2   r   Úlist)ÚforestZmulti_target_forestÚpredictionsrt   Zclass_probabilitiesr‚   Zforest_r?   r?   r@   Ú test_multi_output_classification!  s    

&rŽ   c                  C   sœ   t ddd�} t| ƒ}t|ƒ}| tt¡ | t¡}ttf|j	ksDt
‚tdƒD ]J}t|ƒ}| ttd d …|f ¡ t| t¡ƒt|d d …|f ƒksLt
‚qLd S )NÚautor   ©Údualr-   r*   )r#   r   r   r3   r5   r6   r4   r€   r�   r   rH   r2   r   r‹   )ZsvcZmulti_class_svcZmulti_target_svcr�   r‚   Zmulti_class_svc_r?   r?   r@   Ú%test_multiclass_multioutput_estimator>  s    
r’   c            
   
   C   s  d} t j | ¡}|jdd�}t  dddddg¡ dd¡}t  dd	d
d	dg¡ dd¡}t j||gdd�}ttd| d�ƒ}| 	||¡ | 
|¡}t  ddgddgddgddgddgg¡t  dddgdddgddd gd!d"d#gd$d%d&gg¡g}tt|ƒƒD ]}	t||	 ||	 ƒ qòd S )'Ni  )rC   rC   )ÚsizeÚbÚarC   rL   ÚdÚeÚfrˆ   Z	liblinear)Zsolverr-   gšu)"�Î?g™¢u·_|è?gt“Ä³€å?gÑÙv˜þÔ?g/‰’�á?g¢íÚÖý Ý?gK[ÇaSÖ?g[ÒrOÖä?gaÊ]×q”ç?g?kDQ×Ð?g 8öì¹Œà?g°ªŒ�Î?gèo|Ì‹<Ï?g¨©§‡OWÌ?g˜Ú”#Kƒä?gÚz~ÿƒ›Á?gP1s&qÅ?g„çþf^Ç?g„]=¼!Ìä?gâ{Y;‚Ñ?gë®hJªá?g�L$$SÆ?g»XA¡Ø	å?gó 7%®Ð?g™˜‘î¥ø´?)r0   ÚrandomÚRandomStateÚnormalÚarrayZreshapeZconcatenater   r   r3   rt   r2   r‰   r&   )
ÚseedÚrngr5   Úy1Úy2ÚYÚclfZy_resultZy_actualr‚   r?   r?   r@   Ú3test_multiclass_multioutput_estimator_predict_probaP  s<    
ÿ
ûÿ	ûÿör£   c            	      C   sÔ   dddgdddgg} ddgddgg}t  ddg¡}td	dd
�}t|ƒ}| | ||¡ dddgdddgdddgg}ddgddgddgg}td	dd
�}t|ƒ}| ||¡ dddgdddgg}t| |¡| |¡ƒ d S )NrL   rX   r*   rY   rC   rZ   r_   r`   r…   r†   rc   rd   re   rf   rg   )r0   Úasarrayr   r   r3   r&   r4   )	rh   ri   r]   rŒ   Úclf_wr5   r6   r¢   r9   r?   r?   r@   Ú/test_multi_output_classification_sample_weights  s    r¦   c            	      C   sê   dddgdddgddd	gg} ddgddgddgg}t  d
ddg¡}tddd�}t|ƒ}| | ||¡ dddgdddgdddgddd	gg}ddgddgddgddgg}tddd�}t|ƒ}| ||¡ ddd	gg}t| |¡| |¡ƒ d S )NrL   rX   r*   rY   rC   rZ   rc   rd   re   r_   r`   é   rD   )r0   r¤   r   r   r3   r'   r4   )	rh   ri   r]   rp   r¥   r5   r6   r¢   r9   r?   r?   r@   Ú;test_multi_output_classification_partial_fit_sample_weights“  s    $r¨   c               	   C   s¨   t tddd�ƒ} t t¡� |  tt¡ W 5 Q R X t 	t
tf¡}|  tt¡ t t¡� |  t|¡ W 5 Q R X d}tjt|d�� |  ttd d …df ¡ W 5 Q R X d S )Nr�   r   r�   zUnknown label typerM   rL   )r   r#   rO   rP   r   Úscorer5   r6   r0   Úcolumn_stackrŸ   r    r3   rQ   )ÚmocZy_newrR   r?   r?   r@   Útest_multi_output_exceptions¦  s    r¬   Úresponse_methodrt   r4   c              	   C   s2   t tƒ ƒ}t t¡� t|| ƒtƒ W 5 Q R X dS )zECheck that we raise the proper error when the estimator is not fittedN)r   r   rO   rP   r   Úgetattrr5   )r­   r«   r?   r?   r@   Ú"test_multi_output_not_fitted_errorº  s    
r¯   c               	   C   s¸   t tƒ ƒ} t| dƒst‚|  tt¡ t| dƒs2t‚t tdd�ƒ} t| dƒrNt‚d}tj	t
|d�� |  t¡ W 5 Q R X |  tt¡ t| dƒr�t‚tj	t
|d�� |  t¡ W 5 Q R X dS )zVCheck the behavior for the delegation of predict_proba to the underlying
    estimatorrt   r�   ©r‘   z3'LinearSVC' object has no attribute 'predict_proba'rM   N)r   r   rG   rH   r3   r5   r6   r#   rO   rP   r{   rt   )r«   rR   r?   r?   r@   Ú(test_multi_output_delegate_predict_probaÂ  s    
r±   c                  C   s2   t dddddd�\} }t dd„ |D ƒ¡}| |fS )	Niè  éd   é   r…   r   )r€   Ú
n_featuresrŠ   Zn_informativer-   c                 S   s(   g | ] }d d„ t |dƒdd… D ƒ‘qS )c                 S   s   g | ]}t |ƒ‘qS r?   )Úint)Ú.0Zyyyr?   r?   r@   Ú
<listcomp>à  s     zLgenerate_multilabel_dataset_with_correlations.<locals>.<listcomp>.<listcomp>z#06brX   N)Úformat)r¶   Úyyr?   r?   r@   r·   à  s     zAgenerate_multilabel_dataset_with_correlations.<locals>.<listcomp>)r   r0   rœ   )r5   r6   ZY_multir?   r?   r@   Ú-generate_multilabel_dataset_with_correlationsØ  s        ÿ
rº   c                  C   sl   t ƒ \} }ttdd�ƒ}| | |¡ | | ¡}|j|jks>t‚| | ¡}|dk}t||ƒ t	|dƒrht‚d S )Nr�   r°   r   rt   )
rº   r   r#   r3   r4   r   rH   Zdecision_functionr(   rG   )r5   r¡   Úclassifier_chainÚY_predZ
Y_decisionÚY_binaryr?   r?   r@   Ú5test_classifier_chain_fit_and_predict_with_linear_svcä  s    



r¾   c                  C   sb   t ƒ \} }t | ¡}ttƒ ƒ}| ||¡ | |¡}ttƒ ƒ}| | |¡ | | ¡}t||ƒ d S ©N)rº   rT   rU   r   r   r3   r4   r(   )r5   r¡   ÚX_sparser»   ZY_pred_sparseZY_pred_denser?   r?   r@   Ú6test_classifier_chain_fit_and_predict_with_sparse_dataô  s    





rÁ   c            
      C   s¾   t ƒ \} }| d d…d d …f }| dd …d d …f }|d d…d d …f }|dd …d d …f }ttƒ ƒ}| ||¡ | |¡}ttƒ ƒ}| ||¡ | |¡}	t||	dd�t||dd�ksºt‚d S )NiX  Úsamples©Zaverage)rº   r   r   r3   r4   r   r   rH   )
r5   r¡   r7   r9   ZY_trainZY_testZovrZ
Y_pred_ovrÚchainZY_pred_chainr?   r?   r@   Ú+test_classifier_chain_vs_independent_models  s     




  ÿrÅ   c                  C   s¼   t ƒ \} }ttƒ ƒttƒ ƒg}|D ]b}| | |¡ | | ¡}|j|jksLt‚dd„ |j	D ƒt
t| jd | jd |jd  ƒƒks"t‚q"|d  | ¡}|dk}t||ƒ t|d tƒs¸t‚d S )Nc                 S   s   g | ]}|j j‘qS r?   )Úcoef_r“   )r¶   Úcr?   r?   r@   r·   #  s     z3test_base_chain_fit_and_predict.<locals>.<listcomp>rL   ç      à?)rº   r!   r   r   r   r3   r4   r   rH   ro   r‹   r2   rt   r(   Ú
isinstancer   )r5   r¡   ÚchainsrÄ   r¼   ZY_probr½   r?   r?   r@   Útest_base_chain_fit_and_predict  s    

ÿ
rË   c                  C   sd   t ƒ \} }t | ¡}ttƒ dd�ttƒ dd�g}|D ]*}| ||¡ | |¡}|j	|j	ks4t
‚q4d S )Nr*   ©rz   )rº   rT   rU   r   r   r!   r   r3   r4   r   rH   )r5   r¡   rÀ   Zbase_chainsrÄ   r¼   r?   r?   r@   Ú7test_base_chain_fit_and_predict_with_sparse_data_and_cv.  s    

þ
rÍ   c                  C   sÚ   t ƒ \} }ttƒ ƒttƒ ƒfD ]¶}t|ƒjddd�}| | |¡ t|ƒj|jd�}| | |¡ t	|j|jƒ t
|jƒt
tdƒƒks†t‚t|jƒdks˜t‚tt|jƒƒdks®t‚t|j|jƒD ]\}}t|j|jƒ q¼qd S )Nr™   é*   )Úorderr-   ©rÏ   rY   )rº   r   r   r!   r   r   Ú
set_paramsr3   Zorder_r(   r‹   rÏ   r2   rH   r‰   ÚsetÚzipro   r'   rÆ   )r5   r¡   rÄ   Zchain_randomZchain_fixedrq   rr   r?   r?   r@   Útest_base_chain_random_order<  s    
rÔ   c                  C   sº   t ƒ \} }ttƒ ƒttƒ ƒfD ]–}| | |¡ t|ƒjdd�}| | |¡ | | ¡}| | ¡}|j	|j	ksnt
‚t ||k¡r€t
‚t|tƒr¢t||dd�dks´t
‚qt||ƒdk st
‚qd S )Nr*   rÌ   rÂ   rÃ   gš™™™™™Ù?g      Ð?)rº   r   r   r!   r   r3   r   rÑ   r4   r   rH   r0   ÚallrÉ   r   r   )r5   r¡   rÄ   Zchain_cvZ	Y_pred_cvr¼   r?   r?   r@   Ú(test_base_chain_crossval_fit_and_predictN  s    



rÖ   rw   )r‡   c                 C   sR   |   tt¡ t| jtƒst‚t| jƒtks.t‚t	t
| jƒD ]\}}t||ƒ q:d S r¿   )r3   r5   r6   rÉ   Zclasses_r‹   rH   r‰   r�   rÓ   rn   r(   )rw   Zestimator_classesZexpected_classesr?   r?   r@   Útest_multi_output_classes_b  s
    r×   c                       s   e Zd Zd‡ fdd„	Z‡  ZS )ÚDummyRegressorWithFitParamsNc                    s   || _ tƒ  |||¡S r¿   ©Ú_fit_paramsÚsuperr3   ©Úselfr5   r6   Úsample_weightÚ
fit_params©Ú	__class__r?   r@   r3   u  s    zDummyRegressorWithFitParams.fit)N©Ú__name__Ú
__module__Ú__qualname__r3   Ú__classcell__r?   r?   rà   r@   rØ   t  s   rØ   c                       s   e Zd Zd‡ fdd„	Z‡  ZS )ÚDummyClassifierWithFitParamsNc                    s   || _ tƒ  |||¡S r¿   rÙ   rÜ   rà   r?   r@   r3   {  s    z DummyClassifierWithFitParams.fit)Nrâ   r?   r?   rà   r@   rç   z  s   rç   z%ignore:`n_features_in_` is deprecatedzestimator, datasetZprior)Zstrategyr*   r+   c                 C   s@   |\}}t  |¡}| j|||d� | jD ]}d|jks(t‚q(d S )N)Ú
some_paramrè   )r0   r1   r3   ro   rÚ   rH   )rw   Zdatasetr5   r6   rè   Zdummy_estimatorr?   r?   r@   Ú*test_multioutput_estimator_with_fit_params€  s
    

ré   c                  C   s~   t j d¡} tjddd�\}}|  |jd ¡}G dd„ dtƒ}t|ƒ ƒ}d|i}|j	||f|Ž |j
D ]}|j|ksft‚qfd S )Nr   r*   r+   c                       s   e Zd Z‡ fdd„Z‡  ZS )z0test_regressor_chain_w_fit_params.<locals>.MySGDc                    s    |d | _ tƒ j||f|Ž d S )NrÞ   )Úsample_weight_rÛ   r3   )rÝ   r5   r6   rß   rà   r?   r@   r3   �  s    
z4test_regressor_chain_w_fit_params.<locals>.MySGD.fitrâ   r?   r?   rà   r@   ÚMySGDœ  s   rë   rÞ   )r0   r™   rš   r   r	   Zrandr   r   r!   r3   ro   rê   rH   )rž   r5   r6   Úweightrë   ÚmodelZ	fit_paramÚestr?   r?   r@   Ú!test_regressor_chain_w_fit_params–  s    

rï   zMultiOutputEstimator, Estimatorc                 C   s|   t j d¡}| dd¡| ddd¡ }}|jddg|jdd	gd
� t¡}t j	||< t
tƒ |ƒ ƒ}| |ƒ ||¡ ||¡ d S )NrÎ   r.   rX   rL   rÈ   )r.   r*   r   g{®Gáz„?g®Gáz®ï?)Úp)r0   r™   rš   ZrandnZbinomialÚchoicer   ZastypeÚboolÚnanr"   r   r3   r©   )ZMultiOutputEstimatorZ	Estimatorrž   r5   r6   ÚmaskÚpiper?   r?   r@   Útest_support_missing_values«  s    
 
rö   Ú
order_typec                 C   s‚   dddgdddgddd	gg}ddgddgddgg}| dd
gƒ}t tƒ |d�}| ||¡ ddd	gg}ddgg}t| |¡|ƒ d S )NrL   rX   r*   rY   rC   rZ   rc   rd   re   r   rÐ   )r   r   r3   r'   r4   )r÷   r5   r6   rÏ   rÄ   r9   r:   r?   r?   r@   Ú!test_classifier_chain_tuple_order¾  s    
rø   c               	   C   sv   dddgdddgddd	gg} ddgddgddgg}t ddgƒ}ttƒ |d
�}tjtdd�� | | |¡ W 5 Q R X d S )NrL   rX   r*   rY   rC   rZ   rc   rd   re   rÐ   zinvalid orderrM   )Útupler   r   rO   rP   rQ   r3   )r5   r6   rÏ   rÄ   r?   r?   r@   Ú)test_classifier_chain_tuple_invalid_orderÌ  s    rú   c           	      C   sp   t dddddd�\}}t||dd�\}}}}d}ttƒ ddd	gdd
d�}| ||¡ t ||  ¡ d ¡slt‚d S )Nr²   rC   r*   r   )r€   r´   rŠ   Zn_labelsr-   r/   z�\[Chain\].*\(1 of 3\) Processing order 0, total=.*\n\[Chain\].*\(2 of 3\) Processing order 1, total=.*\n\[Chain\].*\(3 of 3\) Processing order 2, total=.*\n$rL   rX   T©rÏ   r-   Úverbose)	r   r   r   r$   r3   ÚrerN   Ú
readouterrrH   )	Úcapsysr5   r6   r7   r9   r8   r:   ÚpatternÚ
classifierr?   r?   r@   Útest_classifier_chain_verbose×  s$        ÿ
ÿür  c           	      C   sl   t dddd�\}}t||dd�\}}}}d}ttƒ dddgdd	d
�}| ||¡ t ||  ¡ d ¡sht‚d S )Né}   r*   r   )r€   r,   r-   r/   z�\[Chain\].*\(1 of 3\) Processing order 1, total=.*\n\[Chain\].*\(2 of 3\) Processing order 0, total=.*\n\[Chain\].*\(3 of 3\) Processing order 2, total=.*\n$rL   rX   Trû   )	r	   r   r!   r   r3   rý   rN   rþ   rH   )	rÿ   r5   r6   r7   r9   r8   r:   r   Z	regressorr?   r?   r@   Útest_regressor_chain_verboseí  s    ÿür  c                  C   sJ   t dd�\} }tdtdd�fgtƒ dd�}t|d� | |¡}| | ¡ d	S )
zkTest that MultiOutputRegressor checks the fitted estimator for
    predict. Non-regression test for #16549.T)Z
return_X_yZsgdrL   r/   rX   )Z
estimatorsZfinal_estimatorrz   )rw   N)r   r   r   r   r    r3   r4   )r5   r6   ZstackerÚregr?   r?   r@   Ú4test_multioutputregressor_ducktypes_fitted_estimator   s    ýr  zCls, methodr3   rF   c              	   C   sJ   t dd�\}}| tƒ ƒ}tjtdd�� t||ƒ||dd� W 5 Q R X dS )zgCheck that we raise an error when passing metadata not requested by the
    underlying classifier.
    r.   )r€   zis only supported ifrM   rL   )ÚtestN)r   r   rO   rP   rQ   r®   )ZClsÚmethodr5   r6   r¢   r?   r?   r@   Útest_fit_params_no_routing  s    
r	  c               	   C   s6   t tƒ ƒ} d}tjt|d�� t| dƒ W 5 Q R X d S )Nz:This 'MultiOutputRegressor' has no attribute 'partial_fit'rM   rF   )r    r   rO   rP   r{   r®   )rî   rR   r?   r?   r@   Ú*test_multioutput_regressor_has_partial_fit  s    
r
  )‚rý   Únumpyr0   rO   Zscipy.sparserV   rT   Zjoblibr   Zsklearnr   Zsklearn.baser   r   Zsklearn.datasetsr   r   r   r	   Zsklearn.dummyr
   r   Zsklearn.ensembler   r   r   Zsklearn.exceptionsr   Zsklearn.imputer   Zsklearn.linear_modelr   r   r   r   r   r   r   r   Zsklearn.metricsr   r   Zsklearn.model_selectionr   r   Zsklearn.multiclassr   Zsklearn.multioutputr   r   r    r!   Zsklearn.pipeliner"   Zsklearn.svmr#   Zsklearn.treer$   Zsklearn.utilsr%   Zsklearn.utils._testingr&   r'   r(   rA   rK   rS   rW   r^   rb   rj   Z	load_irisZirisÚdatar5   ÚtargetrŸ   r    Zy3rª   r6   r   r€   r´   r�   r‰   ÚuniquerŠ   r‹   Úmaprn   rs   rv   r~   rƒ   r„   rŽ   r’   r£   r¦   r¨   r¬   ÚmarkZparametrizer¯   r±   rº   r¾   rÁ   rÅ   rË   rÍ   rÔ   rÖ   r×   rØ   rç   Úfilterwarningsré   rï   rö   rœ   rù   rø   rú   r  r  r  r	  r
  r?   r?   r?   r@   Ú<module>   sÈ   (
	

!/
ýþ


þþûþþ

 ÿ
