U
    ½mœdpj  ã                
   @   s8  d dl Z d dlZd dlmZ d dlm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 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 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 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' 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/m0Z0 d dlm1Z1 d dl2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8m9Z9 d d l:m;Z; d d!l<m=Z= d d"lm>Z> d#d$„ Z?d%d&„ Z@d'd(„ ZAd)d*„ ZBd+d,„ ZCd-d.„ ZDd/d0„ ZEe F¡ ZGeGjHZIeGjJZKe3eKd1d2�ZLe3eKd3d2�ZMe NeKeLeMf¡ZOeIjP\ZQZReOjPd1 ZSeTe UeK¡ƒZVeWeXejUeKeLeMfƒƒZYd4d5„ ZZd6d7„ Z[d8d9„ Z\d:d;„ Z]d<d=„ Z^d>d?„ Z_d@dA„ Z`dBdC„ ZadDdE„ ZbdFdG„ ZcdHdI„ Zde je fdJdKdLg¡dMdN„ ƒZgdOdP„ ZhdQdR„ ZidSdT„ ZjdUdV„ ZkdWdX„ ZldYdZ„ Zmd[d\„ Znd]d^„ Zod_d`„ Zpe je fdaed3db�e+ed3db�ƒe)ed3db�ƒg¡dcdd„ ƒZqG dedf„ dfe8ƒZrG dgdh„ dhe9ƒZse je tdi¡e je fdje+esdkdl�ƒe ¡ fe,erƒ ƒejdmd dn�fg¡dodp„ ƒƒZudqdr„ Zve je fdse+efe,efg¡dtdu„ ƒZwe je fdveWejxeyg¡dwdx„ ƒZzdydz„ Z{d{d|„ Z|d}d~„ Z}dd€„ Z~dS )�é    N)Ú	cpu_count)Úassert_almost_equal)Úassert_array_equal)Úassert_array_almost_equal)Údatasets)Úclone)Úmake_classification)Úload_linnerud)Úmake_multilabel_classification)Úmake_regression)ÚGradientBoostingRegressorÚRandomForestClassifier)ÚNotFittedError)ÚLasso)ÚLogisticRegression)ÚOrthogonalMatchingPursuit)ÚRidge)ÚSGDClassifier)ÚSGDRegressor)ÚLinearRegression)Újaccard_scoreÚmean_squared_error)ÚOneVsRestClassifier)ÚClassifierChainÚRegressorChain)ÚMultiOutputClassifier)ÚMultiOutputRegressor)Ú	LinearSVC)ÚDecisionTreeClassifier)ÚClassifierMixin)Úshuffle)ÚGridSearchCVÚtrain_test_split)ÚDummyRegressorÚDummyClassifier)Úmake_pipeline)ÚSimpleImputer)ÚStackingRegressorc            
      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>   úW/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/sklearn/tests/test_multioutput.pyÚtest_multi_target_regression)   s    


r@   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   r/   r0   r1   r   rE   r3   r   r   Úhasattrr   ÚAssertionError)r4   r5   r6   r7   r8   r9   r:   Ú
half_indexr;   Úsgrr=   r>   r>   r?   Ú(test_multi_target_regression_partial_fit;   s     
  

rJ   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Ú
ValueErrorr2   )r4   r5   r<   Úmsgr>   r>   r?   Ú'test_multi_target_regression_one_targetR   s
    rR   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   r2   r   r3   )r4   r5   r6   r7   r8   Úsparser<   Z
rgr_sparser>   r>   r?   Ú#test_multi_target_sparse_regression[   s    ûrV   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 )NrK   é   r)   é   rB   é   çTã¥›Ä 	@çX9´Èv¾@gš™™™™™é?g333333ã?zdoes not support sample weightsrL   r   r.   )r   r   rN   rO   rP   r2   r   )r4   r5   Úwr<   rQ   r>   r>   r?   Ú$test_multi_target_sample_weights_apip   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 )NrK   rW   r)   rX   rB   rY   rZ   r[   ç       @ç      ð?r   rC   )r   r   rE   r3   rG   )r4   r5   r\   Úrgr_wr<   r>   r>   r?   Ú+test_multi_target_sample_weight_partial_fit   s    ra   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 )NrK   rW   r)   rX   rB   rY   rZ   r[   r^   r_   r   r.   ç      ø?ç      @ç      @ç      @ç      @)r   r   r2   r   r3   )ÚXwÚywr\   r`   r4   r5   r<   r8   r>   r>   r?   Ú test_multi_target_sample_weights�   s    ri   rK   r.   rW   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_lossrK   rB   ©Úlossr,   rD   rX   )Zn_jobsr   )	r   r   rE   r4   r5   ÚclassesÚestimators_r   rG   )Úsgd_linear_clfZmorÚest1Úest2r>   r>   r?   Ú8test_multi_output_classification_partial_fit_parallelism¯   s    


rr   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 )NrK   rB   rC   Úpredict_probarj   rk   )r   r   r2   r4   r5   rF   rG   )ro   Úmulti_target_linearr>   r>   r?   Ú'test_hasattr_multi_output_predict_proba¼   s    ru   c               	   C   s˜   t dddd�} ddi}dd„ }t| ||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 )NrK   rB   rj   )r,   rD   rl   rl   )ZhingeÚlogZmodified_huberc                 S   s   t | dƒrdS dS d S )Nrs   r_   g        )rF   )Ú	estimatorr4   r5   r>   r>   r?   Úcustom_scorerÑ   s    
z6test_multi_output_predict_proba.<locals>.custom_scorerr)   )Z
param_gridZscoringÚcvrC   z8probability estimates are not available for loss='hinge'rL   )
r   r!   r   r2   r4   r5   rs   rN   rO   ÚAttributeError)ro   Úparamrx   Zgrid_clfrt   Ú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 )	Nrj   rK   rB   rk   r   rW   )rm   r)   )r   r   r4   ÚshaperE   r5   rm   r3   Ú	n_samplesÚ	n_outputsrG   r1   r   r   )ro   rt   rH   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 )Nrj   rK   rB   rk   z8classes must be passed on the first call to partial_fit.rL   )r   r   rN   rO   rP   rE   r4   r5   )ro   rt   rQ   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é
   rK   ©Ún_estimatorsr,   ©Zaxisr)   )r   r   r2   r4   r5   r3   r   r€   r~   rG   rs   ÚlenÚ	n_classesr   r/   ZargmaxZdstackr1   r   Úlist)ÚforestZmulti_target_forestÚpredictionsrs   Zclass_probabilitiesr�   Zforest_r>   r>   r?   Ú test_multi_output_classification  s    

&r�   c                  C   sš   t dd�} t| ƒ}t|ƒ}| tt¡ | t¡}ttf|j	ksBt
‚tdƒD ]J}t|ƒ}| ttd d …|f ¡ t| t¡ƒt|d d …|f ƒksJt
‚qJd S )Nr   r.   r)   )r   r   r   r2   r4   r5   r3   r   r€   r~   rG   r1   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  )rB   rB   )ÚsizeÚbÚarB   rK   Ú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™˜‘î¥ø´?)r/   ÚrandomÚRandomStateÚnormalÚarrayZreshapeZconcatenater   r   r2   rs   r1   rˆ   r   )
ÚseedÚrngr4   Úy1Úy2ÚYÚclfZy_resultZy_actualr�   r>   r>   r?   Ú3test_multiclass_multioutput_estimator_predict_proba?  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 )NrK   rW   r)   rX   rB   rY   r^   r_   r„   r…   rb   rc   rd   re   rf   )r/   Úasarrayr   r   r2   r   r3   )	rg   rh   r\   r‹   Úclf_wr4   r5   rž   r8   r>   r>   r?   Ú/test_multi_output_classification_sample_weightsn  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 )NrK   rW   r)   rX   rB   rY   rb   rc   rd   r^   r_   é   rC   )r/   r    r   r   r2   r   r3   )	rg   rh   r\   ro   r¡   r4   r5   rž   r8   r>   r>   r?   Ú;test_multi_output_classification_partial_fit_sample_weights‚  s    $r¤   c               	   C   s¦   t t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.   zUnknown label typerL   rK   )r   r   rN   rO   r   Úscorer4   r5   r/   Úcolumn_stackr›   rœ   r2   rP   )ÚmocZy_newrQ   r>   r>   r?   Útest_multi_output_exceptions•  s    r¨   Úresponse_methodrs   r3   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   rN   rO   r   Úgetattrr4   )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ƒ ƒ} t| dƒrJt‚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
    estimatorrs   z3'LinearSVC' object has no attribute 'predict_proba'rL   N)r   r   rF   rG   r2   r4   r5   r   rN   rO   rz   rs   )r§   rQ   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#06brW   N)Úformat)r±   Úyyr>   r>   r?   r²   Ï  s     zAgenerate_multilabel_dataset_with_correlations.<locals>.<listcomp>)r   r/   r˜   )r4   r5   ZY_multir>   r>   r?   Ú-generate_multilabel_dataset_with_correlationsÇ  s        ÿ
rµ   c                  C   sh   t ƒ \} }ttƒ ƒ}| | |¡ | | ¡}|j|jks:t‚| | ¡}|dk}t||ƒ t	|dƒrdt‚d S )Nr   rs   )
rµ   r   r   r2   r3   r~   rG   Zdecision_functionr   rF   )r4   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µ   rS   rT   r   r   r2   r3   r   )r4   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   r2   r3   r   r   rG   )
r4   r�   r6   r8   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>rK   ç      à?)rµ   r   r   r   r   r2   r3   r~   rG   rn   rŠ   r1   rs   r   Ú
isinstancer   )r4   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)   ©ry   )rµ   rS   rT   r   r   r   r   r2   r3   r~   rG   )r4   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Ê   rX   )rµ   r   r   r   r   r   Ú
set_paramsr2   Zorder_r   rŠ   rÊ   r1   rG   rˆ   ÚsetÚziprn   r   rÁ   )r4   r�   r¿   Zchain_randomZchain_fixedrp   rq   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   r2   r   rÌ   r3   r~   rG   r/   ÚallrÄ   r   r   )r4   r�   r¿   Zchain_cvZ	Y_pred_cvr·   r>   r>   r?   Ú(test_base_chain_crossval_fit_and_predict=  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º   )r2   r4   r5   rÄ   Zclasses_rŠ   rG   rˆ   r€   rÎ   rm   r   )rw   Zestimator_classesZexpected_classesr>   r>   r?   Útest_multi_output_classes_Q  s
    rÒ   c                       s   e Zd Zd‡ fdd„	Z‡  ZS )ÚDummyRegressorWithFitParamsNc                    s   || _ tƒ  |||¡S rº   ©Ú_fit_paramsÚsuperr2   ©Úselfr4   r5   Úsample_weightÚ
fit_params©Ú	__class__r>   r?   r2   d  s    zDummyRegressorWithFitParams.fit)N©Ú__name__Ú
__module__Ú__qualname__r2   Ú__classcell__r>   r>   rÛ   r?   rÓ   c  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?   r2   j  s    z DummyClassifierWithFitParams.fit)NrÝ   r>   r>   rÛ   r?   râ   i  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ã   )r/   r0   r2   rn   rÕ   rG   )rw   Zdatasetr4   r5   rã   Zdummy_estimatorr>   r>   r?   Ú*test_multioutput_estimator_with_fit_paramso  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Ö   r2   )rØ   r4   r5   rÚ   rÛ   r>   r?   r2   Œ  s    
z4test_regressor_chain_w_fit_params.<locals>.MySGD.fitrÝ   r>   r>   rÛ   r?   ÚMySGD‹  s   ræ   rÙ   )r/   r•   r–   r   r   Zrandr~   r   r   r2   rn   rå   rG   )rš   r4   r5   Úweightræ   ÚmodelZ	fit_paramZ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-   rW   rK   rÃ   )r-   r)   r   g{®Gáz„?g®Gáz®ï?)Úp)r/   r•   r–   ZrandnZbinomialÚchoicer~   ZastypeÚboolÚnanr%   r&   r2   r¥   )ZMultiOutputEstimatorZ	Estimatorrš   r4   r5   Ú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 )NrK   rW   r)   rX   rB   rY   rb   rc   rd   r   rË   )r   r   r2   r   r3   )rñ   r4   r5   rÊ   r¿   r8   r9   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 )NrK   rW   r)   rX   rB   rY   rb   rc   rd   rË   zinvalid orderrL   )Útupler   r   rN   rO   rP   r2   )r4   r5   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­   rB   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$rK   rW   T©rÊ   r,   Úverbose)	r
   r"   r   r   r2   ÚrerM   Ú
readouterrrG   )	Úcapsysr4   r5   r6   r8   r7   r9   Ú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$rK   rW   Trõ   )	r   r"   r   r   r2   r÷   rM   rø   rG   )	rù   r4   r5   r6   r8   r7   r9   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sgdrK   r.   rW   )Z
estimatorsZfinal_estimatorry   )rw   N)r	   r'   r   r   r   r2   r3   )r4   r5   ZstackerÚregr>   r>   r?   Ú4test_multioutputregressor_ducktypes_fitted_estimatorï  s    ýr   )rN   Únumpyr/   Zscipy.sparserU   rS   Zjoblibr   r÷   Zsklearn.utils._testingr   r   r   Zsklearnr   Zsklearn.baser   Zsklearn.datasetsr   r	   r
   r   Zsklearn.ensembler   r   Zsklearn.exceptionsr   Zsklearn.linear_modelr   r   r   r   r   r   r   Zsklearn.metricsr   r   Zsklearn.multiclassr   Zsklearn.multioutputr   r   r   r   Zsklearn.svmr   Zsklearn.treer   r   Zsklearn.utilsr    Zsklearn.model_selectionr!   r"   Zsklearn.dummyr#   r$   Zsklearn.pipeliner%   Zsklearn.imputer&   r'   r@   rJ   rR   rV   r]   ra   ri   Z	load_irisZirisÚdatar4   Útargetr›   rœ   Zy3r¦   r5   r~   r   r¯   r€   rˆ   Úuniquer‰   rŠ   Úmaprm   rr   ru   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?   Ú<module>   sÚ   	

/
ýþ

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