a
    �ù»j x  ã                	   @   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	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,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z;m<Z< d dl=m>Z>m?Z?m@Z@mAZAmBZBmCZC dd„ ZDdd„ ZEdd„ ZFejG HdeAe@ e? eC eB e> ¡dd„ ƒZIdd„ ZJd d!„ ZKd"d#„ ZLe M¡ ZNeNjOZPeNjQZRe8eRd$d%�ZSe8eRd&d%�ZTe UeReSeTf¡ZVePjW\ZXZYeVjWd$ ZZe[e \eR¡ƒZ]e^e_ej\eReSeTfƒƒZ`d'd(„ Zad)d*„ Zbd+d,„ Zcd-d.„ Zdd/d0„ Zed1d2„ Zfd3d4„ Zgd5d6„ Zhd7d8„ Zid9d:„ Zjd;d<„ ZkejG Hd=d>d?g¡d@dA„ ƒZldBdC„ ZmdDdE„ ZnejG HdFd?dGg¡dHdI„ ƒZoejG HdJeA¡dKdL„ ƒZpdMdN„ ZqejG HdFg dO¢¡ejG Hd=d>dPg¡dQdR„ ƒƒZrdSdT„ ZsejG HdJeA¡dUdV„ ƒZtdWdX„ ZuejG HdYg dZ¢¡d[d\„ ƒZvejG Hd]ed&d^�e.ed&d^�ƒe-ed&d^�ƒg¡d_d`„ ƒZwG dadb„ dbeƒZxG dcdd„ ddeƒZyejG Hdee.eydfdg�ƒe ¡ fe/exƒ ƒejdhd di�fg¡djdk„ ƒZzdldm„ Z{ejG Hdne.efe/e!fg¡dodp„ ƒZ|ejG Hdqe^ej}e~g¡drds„ ƒZdtdu„ Z€dvdw„ Z�dxdy„ Z‚dzd{„ ZƒejG Hd|e-d}fe.d~fg¡dd€„ ƒZ„d�d‚„ Z…dS )ƒé    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_equal)ÚBSR_CONTAINERSÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSÚDOK_CONTAINERSÚLIL_CONTAINERSc            
      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   ©r3   )
r   r	   ÚnpÚ
zeros_likeÚranger   ÚfitÚpredictr    r&   )
ÚXÚyÚX_trainÚy_trainÚX_testÚy_testÚ
referencesÚnÚrgrÚy_pred© rE   úDE:\soccer\ml_env\Lib\site-packages\sklearn/tests/test_multioutput.pyÚtest_multi_target_regression=   s    


rG   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ƒ�r4J ‚d S )	Nr0   r   r1   r4   é   é   ©r3   Úmax_iterÚpartial_fit)r   r	   r6   r7   r8   r   rL   r:   r    r&   Úhasattrr   )r;   r<   r=   r>   r?   r@   rA   Ú
half_indexrB   ÚsgrrD   rE   rE   rF   Ú(test_multi_target_regression_partial_fitO   s     
  

rP   c                  C   sb   t jddd�\} }ttdd�ƒ}d}tjt|d�� | | |¡ W d   ƒ n1 sT0    Y  d S )Né   r   r1   r5   zat least two dimensions©Úmatch)r   r	   r    r   ÚpytestÚraisesÚ
ValueErrorr9   )r;   r<   rC   ÚmsgrE   rE   rF   Ú'test_multi_target_regression_one_targetf   s
    rX   Úsparse_containerc                 C   sŽ   t jddd�\}}|d d… |d d…  }}|dd … }ttdd�ƒ}ttdd�ƒ}| ||¡ | | |ƒ|¡ t| |¡| | |ƒ¡ƒ d S r/   )r   r	   r    r   r9   r&   r:   )rY   r;   r<   r=   r>   r?   rC   Z
rgr_sparserE   rE   rF   Ú#test_multi_target_sparse_regressiono   s    
ÿrZ   c                  C   s’   g d¢g d¢g} ddgddgg}ddg}t tƒ ƒ}d}tjt|d�� | | ||¡ W d   ƒ n1 sh0    Y  t td	d
�ƒ}| | ||¡ d S )N©rQ   é   r0   ©é   rI   é   çTã¥›Ä 	@çX9´Èv¾@gš™™™™™é?g333333ã?zdoes not support sample weightsrR   r   r5   )r    r   rT   rU   rV   r9   r   )r;   r<   ÚwrC   rW   rE   rE   rF   Ú$test_multi_target_sample_weights_apiˆ   s    
,rc   c                  C   s˜   g d¢g d¢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”J ‚d S )
Nr[   r]   r`   ra   ç       @ç      ð?r   rI   rJ   )r    r   rL   r:   )r;   r<   rb   Úrgr_wrC   rE   rE   rF   Ú+test_multi_target_sample_weight_partial_fit—   s    rg   c                  C   s´   g d¢g d¢g} ddgddgg}ddg}t tdd�ƒ}| | ||¡ g d¢g d¢g d¢g}ddgddgddgg}t tdd�ƒ}| ||¡ g d	¢g d
¢g}t| |¡| |¡ƒ d S )Nr[   r]   r`   ra   rd   re   r   r5   ©g      ø?g      @ç      @©ri   g      @g      @)r    r   r9   r&   r:   )ÚXwÚywrb   rf   r;   r<   rC   r?   rE   rE   rF   Ú test_multi_target_sample_weights§   s    rm   rQ   r5   r\   c                  C   sb   t dddd�} t| dd�}| ttt¡ |jd }| tt¡ |jd }tƒ dkr^||us^J ‚d S )NÚlog_lossrQ   rI   ©Úlossr3   rK   r^   )Zn_jobsr   )r   r   rL   r;   r<   ÚclassesÚestimators_r   )Úsgd_linear_clfZmorÚest1Úest2rE   rE   rF   Ú8test_multi_output_classification_partial_fit_parallelismÇ   s    


rv   c                  C   sb   t ddd�} t| ƒ}| tt¡ t|dƒr.J ‚t dddd�} t| ƒ}| tt¡ t|dƒs^J ‚d S )NrQ   rI   rJ   Úpredict_probarn   ro   )r   r   r9   r;   r<   rM   )rs   Úmulti_target_linearrE   rE   rF   Ú'test_hasattr_multi_output_predict_probaÔ   s    ry   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}d}d}tjt	|d��}| t¡ W d   ƒ n1 s¦0    Y  t
|jjt	ƒsÂJ ‚|t|jjƒv sÖJ ‚t
|jjjt	ƒsêJ ‚|t|jjjƒv �sJ ‚d S )NrQ   rI   rJ   rp   )Zhingern   Zmodified_huberc                 S   s   t | dƒrdS dS d S )Nrw   re   g        )rM   )Ú	estimatorr;   r<   rE   rE   rF   Úcustom_scoreré   s    
z6test_multi_output_predict_proba.<locals>.custom_scorerr0   Úraise)Z
param_gridZscoringÚcvZerror_scorez8probability estimates are not available for loss='hinge'z0'SGDClassifier' has no attribute 'predict_proba'ú8'MultiOutputClassifier' has no attribute 'predict_proba'rR   )r   r   r   r9   r;   r<   rw   rT   rU   ÚAttributeErrorÚ
isinstanceÚvalueÚ	__cause__Ústr)	rs   Úparamr{   Zgrid_clfrx   Z
inner2_msgZ
inner1_msgÚ	outer_msgÚ	exec_inforE   rE   rF   Útest_multi_output_predict_probaä   s2    û
(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`J ‚| t|d … t|d … ¡ | t¡}tt	f|jks˜J ‚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 )	Nrn   rQ   rI   ro   r   r\   )rq   r0   )r   r   r;   ÚshaperL   r<   rq   r:   Ú	n_samplesÚ	n_outputsr8   r   r(   )rs   rx   rN   Zfirst_predictionsZsecond_predictionsÚirE   rE   rF   Ú,test_multi_output_classification_partial_fit  s"     

ÿ rŒ   c                  C   sX   t dddd�} t| ƒ}d}tjt|d�� | tt¡ W d   ƒ n1 sJ0    Y  d S )Nrn   rQ   rI   ro   z8classes must be passed on the first call to partial_fit.rR   )r   r   rT   rU   rV   rL   r;   r<   )rs   rx   rW   rE   rE   rF   Ú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<J ‚| 	t¡}t
|ƒtksVJ ‚|D ]}ttf|jksZJ ‚qZttjt |¡dd�|ƒ tdƒD ]f}t| ƒ}| ttd d …|f ¡ t| t¡ƒt|d d …|f ƒksÞJ ‚tt| 	t¡ƒt|| ƒƒ q”d S )Né
   rQ   ©Ún_estimatorsr3   ©Zaxisr0   )r   r   r9   r;   r<   r:   r‰   rŠ   rˆ   rw   ÚlenÚ	n_classesr(   r6   ZargmaxZdstackr8   r   Úlist)ÚforestZmulti_target_forestÚpredictionsrw   Zclass_probabilitiesr‹   Zforest_rE   rE   rF   Ú test_multi_output_classification5  s    

&r—   c                  C   sš   t dd�} t| ƒ}t|ƒ}| tt¡ | t¡}ttf|j	ksBJ ‚t
dƒD ]J}t|ƒ}| ttd d …|f ¡ t| t¡ƒt|d d …|f ƒksJJ ‚qJd S )Nr   r5   r0   )r#   r   r   r9   r;   r<   r:   r‰   rŠ   rˆ   r8   r   r”   )ZsvcZmulti_class_svcZmulti_target_svcr–   r‹   Zmulti_class_svc_rE   rE   rF   Ú%test_multiclass_multioutput_estimatorR  s    

r˜   c            
   	   C   sø   d} t j | ¡}|jdd�}t  g d¢¡ dd¡}t  g d¢¡ 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  g d¢g d¢g d¢g d¢g d¢g¡g}tt|ƒƒD ]}	t||	 ||	 ƒ qÜd S )Ni  )rI   rI   )Úsize)ÚbÚar›   rš   r›   rI   rQ   )ÚdÚeÚfr�   rœ   r‘   Z	liblinear)Zsolverr3   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™˜‘î¥ø´?)r6   ÚrandomÚRandomStateÚnormalÚarrayZreshapeZconcatenater   r   r9   rw   r8   r’   r&   )
ÚseedÚrngr;   Úy1Úy2ÚYÚclfZy_resultZy_actualr‹   rE   rE   rF   Ú3test_multiclass_multioutput_estimator_predict_probad  s<    
ÿ
ûÿ	ûÿör©   c            	      C   sÆ   g d¢g d¢g} ddgddgg}t  ddg¡}tddd	�}t|ƒ}| | ||¡ g d¢g d¢g d¢g}ddgddgddgg}tddd	�}t|ƒ}| ||¡ g d
¢g d¢g}t| |¡| |¡ƒ d S )Nr[   r]   r0   r\   rd   re   rŽ   rQ   r�   rh   rj   )r6   Úasarrayr   r   r9   r&   r:   )	rk   rl   rb   r•   Úclf_wr;   r<   r¨   r?   rE   rE   rF   Ú/test_multi_output_classification_sample_weights“  s    r¬   c            	      C   sØ   g d¢g d¢g d¢g} ddgddgddgg}t  g d¢¡}tddd	�}t|ƒ}| | ||¡ g d¢g d¢g d¢g d¢g}ddgddgddgddgg}tddd	�}t|ƒ}| ||¡ g d¢g}t| |¡| |¡ƒ d S )
Nr[   r]   rh   r0   r\   )rd   re   re   rQ   é   rJ   )r6   rª   r   r   r9   r'   r:   )	rk   rl   rb   rs   r«   r;   r<   r¨   r?   rE   rE   rF   Ú;test_multi_output_classification_partial_fit_sample_weights§  s    
r®   c                  C   sâ   t tdd�ƒ} t t¡� |  tt¡ W d   ƒ n1 s:0    Y  t 	t
tf¡}|  tt¡ t t¡� |  t|¡ W d   ƒ n1 sŠ0    Y  d}tjt|d��( |  ttd d …df ¡ W d   ƒ n1 sÔ0    Y  d S )Nr   r5   zUnknown label typerR   rQ   )r   r#   rT   rU   r   Úscorer;   r<   r6   Úcolumn_stackr¥   r¦   r9   rV   )ÚmocZy_newrW   rE   rE   rF   Útest_multi_output_exceptionsº  s    **r²   Úresponse_methodrw   r:   c                 C   sF   t tƒ ƒ}t t¡� t|| ƒtƒ W d  ƒ n1 s80    Y  dS )zECheck that we raise the proper error when the estimator is not fittedN)r   r   rT   rU   r   Úgetattrr;   )r³   r±   rE   rE   rF   Ú"test_multi_output_not_fitted_errorÎ  s    
rµ   c                  C   s0  t tƒ ƒ} t| dƒsJ ‚|  tt¡ t| dƒs2J ‚t tƒ ƒ} t| dƒrJJ ‚d}d}tjt	|d��}|  
t¡ W d  ƒ n1 s€0    Y  t|jjt	ƒsœJ ‚|t|jjƒks°J ‚|  tt¡ t| dƒrÊJ ‚tjt	|d��}|  
t¡ W d  ƒ n1 sø0    Y  t|jjt	ƒ�sJ ‚|t|jjƒk�s,J ‚dS )zVCheck the behavior for the delegation of predict_proba to the underlying
    estimatorrw   r~   z3'LinearSVC' object has no attribute 'predict_proba'rR   N)r   r   rM   r9   r;   r<   r#   rT   rU   r   rw   r€   r�   r‚   rƒ   )r±   r…   Z	inner_msgr†   rE   rE   rF   Ú(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_informativer3   c                 S   s(   g | ] }d d„ t |dƒdd… D ƒ‘qS )c                 S   s   g | ]}t |ƒ‘qS rE   )Úint)Ú.0ZyyyrE   rE   rF   Ú
<listcomp>û  ó    zLgenerate_multilabel_dataset_with_correlations.<locals>.<listcomp>.<listcomp>z#06br\   N)Úformat)r»   ÚyyrE   rE   rF   r¼   û  r½   zAgenerate_multilabel_dataset_with_correlations.<locals>.<listcomp>)r   r6   r¢   )r;   r<   ZY_multirE   rE   rF   Ú-generate_multilabel_dataset_with_correlationsó  s
    
ÿ
rÀ   Úchain_methodÚdecision_functionc                 C   sh   t ƒ \}}ttƒ | d� ||¡}| |¡}|j|jks:J ‚| |¡}|dk}t||ƒ t|dƒrdJ ‚d S )N©rÁ   r   rw   )	rÀ   r   r#   r9   r:   rˆ   rÂ   r(   rM   )rÁ   r;   r§   Úclassifier_chainÚY_predZ
Y_decisionÚY_binaryrE   rE   rF   Ú5test_classifier_chain_fit_and_predict_with_linear_svcÿ  s    
þý


rÇ   Úcsr_containerc                 C   sX   t ƒ \}}| |ƒ}ttƒ ƒ ||¡}| |¡}ttƒ ƒ ||¡}| |¡}t||ƒ d S ©N)rÀ   r   r   r9   r:   r(   )rÈ   r;   r§   ÚX_sparserÄ   ZY_pred_sparseZY_pred_denserE   rE   rF   Ú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ºJ ‚d S )NiX  Úsamples©Zaverage)rÀ   r   r   r9   r:   r   r   )
r;   r§   r=   r?   ZY_trainZY_testZovrZ
Y_pred_ovrÚchainZY_pred_chainrE   rE   rF   Ú+test_classifier_chain_vs_independent_models!  s    




ÿrÏ   )r:   rw   Úpredict_log_probarÂ   rÐ   c                 C   sº   t ƒ \}}ttƒ | d�}| ||¡ | |¡}|j|jks>J ‚dd„ |jD ƒtt|jd |jd |jd  ƒƒksvJ ‚t	||ƒ|ƒ}|dkr–t
 |¡}|dk}t||ƒ t|tƒs¶J ‚d S )NrÃ   c                 S   s   g | ]}|j j‘qS rE   ©Úcoef_r™   ©r»   ÚcrE   rE   rF   r¼   D  r½   z9test_classifier_chain_fit_and_predict.<locals>.<listcomp>rQ   rÐ   ç      à?)rÀ   r   r   r9   r:   rˆ   rr   r”   r8   r´   r6   Úexpr(   r€   r   )rÁ   r³   r;   r§   rÎ   rÅ   ZY_probrÆ   rE   rE   rF   Ú%test_classifier_chain_fit_and_predict8  s    

ÿ


r×   c                  C   sv   t ƒ \} }ttƒ ƒ}| | |¡ | | ¡}|j|jks:J ‚dd„ |jD ƒtt| jd | jd |jd  ƒƒksrJ ‚d S )Nc                 S   s   g | ]}|j j‘qS rE   rÑ   rÓ   rE   rE   rF   r¼   X  r½   z8test_regressor_chain_fit_and_predict.<locals>.<listcomp>rQ   )	rÀ   r!   r   r9   r:   rˆ   rr   r”   r8   )r;   r§   rÎ   rÅ   rE   rE   rF   Ú$test_regressor_chain_fit_and_predictQ  s    


ÿrØ   c                 C   sb   t ƒ \}}| |ƒ}ttƒ dd�ttƒ dd�g}|D ]*}| ||¡ | |¡}|j|jks2J ‚q2d S )Nr0   ©r}   )rÀ   r   r   r!   r   r9   r:   rˆ   )rÈ   r;   r§   rÊ   Zbase_chainsrÎ   rÅ   rE   rE   rF   Ú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†J ‚t|jƒdks˜J ‚tt|jƒƒdks®J ‚t|j|jƒD ]\}}t|j|jƒ q¼qd S )NrŸ   é*   )Úorderr3   ©rÜ   r^   )rÀ   r   r   r!   r   r   Ú
set_paramsr9   Úorder_r(   r”   rÜ   r8   r’   ÚsetÚziprr   r'   rÒ   )r;   r§   rÎ   Zchain_randomZchain_fixedrt   ru   rE   rE   rF   Útest_base_chain_random_orderl  s    
râ   zchain_type, chain_method))Ú
classifierr:   )rã   rw   )rã   rÐ   )rã   rÂ   )Ú	regressorÚ c                 C   sÂ   t ƒ \}}| dkr"ttƒ |d�}n
ttƒ ƒ}| ||¡ t|ƒjdd�}| ||¡ | |¡}| |¡}|j	|j	ksxJ ‚t
 ||k¡rŠJ ‚t|tƒr¬t||dd�dks¾J ‚nt||ƒdk s¾J ‚d S )	Nrã   rÃ   r0   rÙ   rÌ   rÍ   gš™™™™™Ù?g      Ð?)rÀ   r   r   r!   r   r9   r   rÞ   r:   rˆ   r6   Úallr€   r   r   )Z
chain_typerÁ   r;   r§   rÎ   Zchain_cvZ	Y_pred_cvrÅ   rE   rE   rF   Ú(test_base_chain_crossval_fit_and_predict~  s    




rç   rz   )r�   c                 C   sR   |   tt¡ t| jtƒsJ ‚t| jƒtks.J ‚tt	| jƒD ]\}}t
||ƒ q:d S rÉ   )r9   r;   r<   r€   Zclasses_r”   r’   rŠ   rá   rq   r(   )rz   Zestimator_classesZexpected_classesrE   rE   rF   Útest_multi_output_classes_Ÿ  s
    rè   c                       s   e Zd Zd‡ fdd„	Z‡  ZS )ÚDummyRegressorWithFitParamsNc                    s   || _ tƒ  |||¡S rÉ   ©Ú_fit_paramsÚsuperr9   ©Úselfr;   r<   Úsample_weightÚ
fit_params©Ú	__class__rE   rF   r9   ²  s    zDummyRegressorWithFitParams.fit)N©Ú__name__Ú
__module__Ú__qualname__r9   Ú__classcell__rE   rE   rñ   rF   ré   ±  s   ré   c                       s   e Zd Zd‡ fdd„	Z‡  ZS )ÚDummyClassifierWithFitParamsNc                    s   || _ tƒ  |||¡S rÉ   rê   rí   rñ   rE   rF   r9   ¸  s    z DummyClassifierWithFitParams.fit)Nró   rE   rE   rñ   rF   rø   ·  s   rø   zestimator, datasetZprior)Zstrategyr0   r1   c                 C   s@   |\}}t  |¡}| j|||d� | jD ]}d|jv s(J ‚q(d S )N)Ú
some_paramrù   )r6   r7   r9   rr   rë   )rz   Zdatasetr;   r<   rù   Zdummy_estimatorrE   rE   rF   Ú*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i |¤Ž |j
D ]}|j|u sjJ ‚qjd S )Nr   r0   r1   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i |¤Ž d S )Nrï   )Úsample_weight_rì   r9   )rî   r;   r<   rð   rñ   rE   rF   r9   Ù  s    
z4test_regressor_chain_w_fit_params.<locals>.MySGD.fitró   rE   rE   rñ   rF   ÚMySGDØ  s   rü   rï   )r6   rŸ   r    r   r	   Zrandrˆ   r   r!   r9   rr   rû   )r¤   r;   r<   Úweightrü   ÚmodelZ	fit_paramÚestrE   rE   rF   Ú!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Û   r4   r\   rQ   rÕ   )r4   r0   r   g{®Gáz„?g®Gáz®ï?)Úp)r6   rŸ   r    ZrandnZbinomialÚchoicerˆ   ZastypeÚboolÚnanr"   r   r9   r¯   )ZMultiOutputEstimatorZ	Estimatorr¤   r;   r<   ÚmaskÚpiperE   rE   rF   Útest_support_missing_valuesç  s    
 
r  Ú
order_typec                 C   s€   g d¢g d¢g d¢g}ddgddgddgg}| ddgƒ}t tddd�|d	�}| ||¡ g d¢g}ddgg}t| |¡|ƒ d S )
Nr[   r]   rh   r0   r\   rQ   r   r�   rÝ   )r   r   r9   r'   r:   )r  r;   r<   rÜ   rÎ   r?   r@   rE   rE   rF   Ú!test_classifier_chain_tuple_orderú  s    ÿ

r	  c                  C   s„   g d¢g d¢g d¢g} ddgddgddgg}t ddgƒ}ttƒ |d�}tjtdd	�� | | |¡ W d   ƒ n1 sv0    Y  d S )
Nr[   r]   rh   r0   r\   rQ   rÝ   zinvalid orderrR   )Útupler   r   rT   rU   rV   r9   )r;   r<   rÜ   rÎ   rE   rE   rF   Ú)test_classifier_chain_tuple_invalid_order
  s    r  c           	      C   sn   t dddddd�\}}t||dd�\}}}}d}ttƒ g d¢dd	d
�}| ||¡ t ||  ¡ d ¡sjJ ‚d S )Nr·   rI   r0   r   )r‰   r¹   r“   Zn_labelsr3   r5   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$)r   rQ   r\   T©rÜ   r3   Úverbose)r   r   r   r$   r9   ÚrerS   Ú
readouterr)	Úcapsysr;   r<   r=   r?   r>   r@   Úpatternrã   rE   rE   rF   Útest_classifier_chain_verbose  s    
ÿ
ÿür  c           	      C   sj   t dddd�\}}t||dd�\}}}}d}ttƒ g d¢ddd	�}| ||¡ t ||  ¡ d ¡sfJ ‚d S )
Né}   r0   r   )r‰   r2   r3   r5   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$)rQ   r   r\   Tr  )r	   r   r!   r   r9   r  rS   r  )	r  r;   r<   r=   r?   r>   r@   r  rä   rE   rE   rF   Ú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sgdrQ   r5   r\   )Z
estimatorsZfinal_estimatorr}   )rz   N)r   r   r   r   r    r9   r:   )r;   r<   ZstackerÚregrE   rE   rF   Ú4test_multioutputregressor_ducktypes_fitted_estimator>  s    ýr  zCls, methodr9   rL   c                 C   s^   t dd�\}}| tƒ ƒ}tjtdd��$ t||ƒ||dd� W d  ƒ n1 sP0    Y  dS )zgCheck that we raise an error when passing metadata not requested by the
    underlying classifier.
    r4   )r‰   zis only supported ifrR   rQ   )ÚtestN)r   r   rT   rU   rV   r´   )ZClsÚmethodr;   r<   r¨   rE   rE   rF   Útest_fit_params_no_routingN  s    
r  c                  C   sJ   t tƒ ƒ} d}tjt|d�� t| dƒ W d   ƒ n1 s<0    Y  d S )Nz:This 'MultiOutputRegressor' has no attribute 'partial_fit'rR   rL   )r    r   rT   rU   r   r´   )rÿ   rW   rE   rE   rF   Ú*test_multioutput_regressor_has_partial_fit\  s    
r  )†r  Únumpyr6   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(   Zsklearn.utils.fixesr)   r*   r+   r,   r-   r.   rG   rP   rX   ÚmarkZparametrizerZ   rc   rg   rm   Z	load_irisZirisÚdatar;   Útargetr¥   r¦   Zy3r°   r<   rˆ   r‰   r¹   rŠ   r’   Úuniquer“   r”   Úmaprq   rv   ry   r‡   rŒ   r�   r—   r˜   r©   r¬   r®   r²   rµ   r¶   rÀ   rÇ   rË   rÏ   r×   rØ   rÚ   râ   rç   rè   ré   rø   rú   r   r  r¢   r
  r	  r  r  r  r  r  r  rE   rE   rE   rF   Ú<module>   sú   (
 
	ÿþýüûþ	


*/


þ
þ

ýþ

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