
    0Ph>u              
       h   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 ZDd ZEd ZFejG        H                    deAe@z   e?z   eCz   eBz   e>z             d             ZId ZJd ZKd ZL ejM                    ZNeNjO        ZPeNjQ        ZR e8eRd          ZS e8eRd          ZT ejU        eReSeTf          ZVePjW        \  ZXZYeVjW        d         ZZ e[ ej\        eR                    Z] e^ e_ej\        eReSeTf                    Z`d  Zad! Zbd" Zcd# Zdd$ Zed% Zfd& Zgd' Zhd( Zid) Zjd* ZkejG        H                    d+d,d-g          d.             Zld/ Zmd0 ZnejG        H                    d1d-d2g          d3             ZoejG        H                    d4eA          d5             Zpd6 ZqejG        H                    d1g d7          ejG        H                    d+d,d8g          d9                         Zrd: ZsejG        H                    d4eA          d;             Ztd< ZuejG        H                    d=g d>          d?             ZvejG        H                    d@ edA           e. edA                     e- edA                    g          dB             Zw G dC dDe          Zx G dE dFe          ZyejG        H                    dG e. eydHI                     ej                    f e/ ex                       ej        dJd K          fg          dL             ZzdM Z{ejG        H                    dNe.efe/e!fg          dO             Z|ejG        H                    dPe^ej}        e~g          dQ             ZdR ZdS ZdT ZdU ZejG        H                    dVe-dWfe.dXfg          dY             ZdZ Zd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                     t          j        dd          \  } }| d d         |d d         }}| dd          |dd          }}t          j        |          }t	          d          D ]N}t          d          }|                    ||d d |f                    |                    |          |d d |f<   Ot          t          d                    }|                    ||           |                    |          }	t          ||	           d S N   r   	n_targetsrandom_state2   r5   )
r   r
   np
zeros_likeranger   fitpredictr!   r'   )
XyX_trainy_trainX_testy_test
referencesnrgry_preds
             ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/tests/test_multioutput.pytest_multi_target_regressionrH   =   s   #aa@@@DAq"vq"vWGrssVQrssVFFv&&J1XX / /'Q777A''';;v..
111a4
8aHHH
I
ICGGGW[[  F
F+++++    c                  8   t          j        dd          \  } }| d d         |d d         }}| dd          |dd          }}t          j        |          }d}t	          d          D ]}t          dd          }	|	                    |d |         |d ||f                    |	                    ||d          ||d |f                    |	                    |          |d d |f<   t          t          dd                    }	|	                    |d |         |d |                    |	                    ||d          ||d                     |	                    |          }
t          ||
           t          t          t                    d          rJ d S )	Nr2   r   r3   r6         r5   max_iterpartial_fit)r   r
   r8   r9   r:   r   rO   r<   r!   r'   hasattrr   )r=   r>   r?   r@   rA   rB   rC   
half_indexrD   sgrrF   s              rG   (test_multi_target_regression_partial_fitrS   O   s   #aa@@@DAq"vq"vWGrssVQrssVFFv&&JJ1XX / /A666,gkzk1n.EFFF
,gjkk1n.EFFF;;v..
111a4
|QGGG
H
HCOOGKZK('+:+*>???OOGJKK('*++*>???[[  F
F++++E22MBBBBBBBrI   c                  
   t          j        dd          \  } }t          t          d                    }d}t	          j        t          |          5  |                    | |           d d d            d S # 1 swxY w Y   d S )N   r   r3   r7   zat least two dimensionsmatch)r   r
   r!   r   pytestraises
ValueErrorr;   )r=   r>   rE   msgs       rG   'test_multi_target_regression_one_targetr\   f   s    #aa@@@DAq
8aHHH
I
IC
#C	z	-	-	-  1                 s   A88A<?A<sparse_containerc                    t          j        dd          \  }}|d d         |d d         }}|dd          }t          t          d                    }t          t          d                    }|                    ||           |                     | |          |           t          |                    |          |                     | |                               d S r1   )r   r
   r!   r   r;   r'   r<   )r]   r=   r>   r?   r@   rA   rE   
rgr_sparses           rG   #test_multi_target_sparse_regressionr`   o   s     #aa@@@DAq"vq"vWGrssVF
u!444
5
5C%e&;&;&;<<JGGGWNN##G,,g666FZ//0@0@0H0HII    rI   c                  d   g dg dg} ddgddgg}ddg}t          t                                }d}t          j        t          |          5  |                    | ||           d d d            n# 1 swxY w Y   t          t          d	
                    }|                    | ||           d S )NrU      r2      rL      T㥛 	@X9v@g?g333333?zdoes not support sample weightsrV   r   r7   )r!   r   rX   rY   rZ   r;   r   )r=   r>   wrE   r[   s        rG   $test_multi_target_sample_weights_apirj      s    	IIIA
%(A	c
A
8::
;
;C
+C	z	-	-	-  1a               8aHHH
I
ICGGAq!s   A11A58A5c                     g dg dg} ddgddgg}ddg}t          t          dd	                    }|                    | ||           ddg}t          t          dd	                    }|                    | ||           |                    |           d         d         |                    |           d         d         k    sJ d S )
Nrb   rd   rg   rh          @      ?r   rL   rM   )r!   r   rO   r<   )r=   r>   ri   rgr_wrE   s        rG   +test_multi_target_sample_weight_partial_fitro      s    	IIIA
%(A	c
A 1q!I!I!IJJE	aA 
c
A
|QGGG
H
HCOOAq!;;q>>!Q5==#3#3A#6q#9999999rI   c                     g dg dg} ddgddgg}ddg}t          t          d                    }|                    | ||           g dg dg dg}ddgddgddgg}t          t          d                    }|                    ||           g d	g d
g}t          |                    |          |                    |                     d S )Nrb   rd   rg   rh   rl   rm   r   r7   g      ?g      @      @rr   g      @g      @)r!   r   r;   r'   r<   )Xwywri   rn   r=   r>   rE   rA   s           rG    test_multi_target_sample_weightsrv      s    
))YYY	B%.5%.	)B	c
A !:!J!J!JKKE	IIb"a 
IIIyyy)A
%%8A
8aHHH
I
ICGGAqMMMoo/FF++U]]6-B-BCCCCCrI   rU   r7   rc   c                  @   t          ddd          } t          | d          }|                    t          t          t
                     |j        d         }|                    t          t                     |j        d         }t                      dk    r||usJ d S d S )Nlog_lossrU   rL   lossr5   rN   re   )n_jobsr   )r   r    rO   r=   r>   classesestimators_r   )sgd_linear_clfmorest1est2s       rG   8test_multi_output_classification_partial_fit_parallelismr      s    "
QOOON
q
9
9
9COOAq'"""?1DOOAq?1D{{Q4 rI   c                  P   t          dd          } t          |           }|                    t          t                     t          |d          rJ t          ddd          } t          |           }|                    t          t                     t          |d          sJ d S )NrU   rL   rM   predict_probarx   ry   )r   r    r;   r=   r>   rP   )r~   multi_target_linears     rG   'test_hasattr_multi_output_predict_probar      s     #A>>>N/??Aq!!!*O<<<<< #
QOOON/??Aq!!!&8888888rI   c                  "   t          dd          } ddi}d }t          | ||dd	          }t          |          }|                    t          t
                     |                    t                     t          dd          } t          |           }|                    t          t
                     d
}d}d}t          j        t          |          5 }|                    t                     d d d            n# 1 swxY w 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 )NrU   rL   rM   rz   )hingerx   modified_huberc                 *    t          | d          rdS dS )Nr   rm   g        )rP   )	estimatorr=   r>   s      rG   custom_scorerz6test_multi_output_predict_proba.<locals>.custom_scorer   s    9o.. 	33rI   r2   raise)
param_gridscoringcverror_scorez8probability estimates are not available for loss='hinge'z0'SGDClassifier' has no attribute 'predict_proba'8'MultiOutputClassifier' has no attribute 'predict_proba'rV   )r   r   r    r;   r=   r>   r   rX   rY   AttributeError
isinstancevalue	__cause__str)	r~   paramr   grid_clfr   
inner2_msg
inner1_msg	outer_msg	exec_infos	            rG   test_multi_output_predict_probar      s   "A>>>N<=E     H 099Aq!!!%%a((( #A>>>N/??Aq!!!KJCJJI	~Y	7	7	7 -9))!,,,- - - - - - - - - - - - - - - io/@@@@@Y_6777777io/9>JJJJJY_6@AAAAAAAAs   C>>DDc                     t          ddd          } t          |           }t          j        d         dz  }|                    t          d |         t
          d |         t                     |                    t                    }t          t          f|j        k    sJ |                    t          |d          t
          |d                     |                    t                    }t          t          f|j        k    sJ t          d          D ]}t          |           } |                     t          d |         t
          d ||f         t          |                    t          |                     t                    |d d |f                    |                     t          |d          t
          |d |f                    t          |                     t                    |d d |f                    d S )	Nrx   rU   rL   ry   r   rc   )r|   r2   )r   r    r=   shaperO   r>   r|   r<   	n_samples	n_outputsr:   r   r)   )r~   r   rQ   first_predictionssecond_predictionsis         rG   ,test_multi_output_classification_partial_fitr     s    #
QOOON/?? qJ##AkzkNAkzkNG#TTT+33A66y!%6%<<<<<##AjkkNAjkkNCCC,44Q77y!%7%===== 1XX P P~..""kzkNAkzk1n-wqz 	# 	
 	
 	
 	>11!446G16MNNN""1Z[[>1Z[[!^3DEEE>11!446HA6NOOOOP PrI   c                      t          ddd          } t          |           }d}t          j        t          |          5  |                    t          t                     d d d            d S # 1 swxY w Y   d S )Nrx   rU   rL   ry   z8classes must be passed on the first call to partial_fit.rV   )r   r    rX   rY   rZ   rO   r=   r>   )r~   r   r[   s      rG   Gtest_multi_output_classification_partial_fit_no_first_classes_exceptionr   -  s    "
QOOON/??
DC	z	-	-	- . .''1---. . . . . . . . . . . . . . . . . .s   !A--A14A1c                     t          dd          } t          |           }|                    t          t                     |                    t                    }t          t          f|j        k    sJ |	                    t                    }t          |          t          k    sJ |D ]}t          t          f|j        k    sJ t          t          j        t          j        |          d          |           t!          d          D ]}t#          |           }|                    t          t          d d |f                    t%          |                    t                              t%          |d d |f                   k    sJ t          t%          |	                    t                              t%          ||                              d S )N
   rU   n_estimatorsr5   axisr2   )r   r    r;   r=   r>   r<   r   r   r   r   len	n_classesr)   r8   argmaxdstackr:   r   list)forestmulti_target_forestpredictionsr   class_probabilitiesr   forest_s          rG    test_multi_output_classificationr   5  s    $!DDDF/77 Aq!!!%--a00Ky![%66666'55a88M}****, C C9%)<)BBBBBBry=!9!9BBBKPPP 1XX S S--AqAwGOOA&&''4AAAqD0A+B+BBBBB4 5 5a 8 8994a@P;Q;QRRRR	S SrI   c                  &   t          d          } t          |           }t          |          }|                    t          t
                     |                    t                    }t          t          f|j	        k    sJ t          d          D ]}t          |          }|                    t          t
          d d |f                    t          |                    t                              t          |d d |f                   k    sJ d S )Nr   r7   r2   )r$   r   r    r;   r=   r>   r<   r   r   r   r:   r   r   )svcmulti_class_svcmulti_target_svcr   r   multi_class_svc_s         rG   %test_multiclass_multioutput_estimatorr   R  s   

#
#
#C)#..O,_==A"**1--Ky![%66666 1XX L L 11Q!!!Q$((($,,Q//00DQQQT9J4K4KKKKKKL LrI   c            	         d} t           j                            |           }|                    d          }t          j        g d                              dd          }t          j        g d                              dd          }t          j        ||gd          }t          t          d	| 
                    }|	                    ||           |
                    |          }t          j        ddgddgddgddgddgg          t          j        g dg dg dg dg dg          g}t          t          |                    D ]}	t          ||	         ||	                    d S )Ni  )rL   rL   )size)bar   r   r   rL   rU   )defr   r   r   	liblinear)solverr5   gu)"?gu_|?gtĳ?gv?g/?g ?gK[aS?g[rO?ga]q?g?kDQ?)g 8칌?g?go|̋<?)gOW?gڔ#K?gz~?)gP1s&q?gf^?g]=!?)g{Y;?ghJ?gL$$S?)gXA	?g 7%?g?)r8   randomRandomStatenormalarrayreshapeconcatenater    r   r;   r   r:   r   r'   )
seedrngr=   y1y2Yclfy_resulty_actualr   s
             rG   3test_multiclass_multioutput_estimator_predict_probar   d  s   D )


%
%C 	


A 
+++	,	,	4	4Q	:	:B	+++	,	,	4	4Q	:	:B
Bxa(((A
+DAAA C GGAqMMM  ##H
Z(Z(Z(Z(Z(	
 	
 	333444444444444	
 	
H* 3x==!! 6 6HQK!55556 6rI   c                     g dg dg} ddgddgg}t          j        ddg          }t          dd	          }t          |          }|                    | ||           g dg dg dg}ddgddgddgg}t          dd	          }t          |          }|                    ||           g d
g dg}t          |                    |          |                    |                     d S )Nrb   rd   r2   rc   rl   rm   r   rU   r   rq   rs   )r8   asarrayr   r    r;   r'   r<   )	rt   ru   ri   r   clf_wr=   r>   r   rA   s	            rG   /test_multi_output_classification_sample_weightsr     s   
))YYY	Ba&1a&	B

C:A#!DDDF!&))E	IIb"a 
IIIyyy)A
Q!Q!Q A#!DDDF

'
'CGGAqMMMoo/FF++U]]6-B-BCCCCCrI   c                     g dg dg dg} ddgddgddgg}t          j        g d          }t          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	          }t          |          }|                    ||           g dg}t          |                    |          |                    |                     d S )
Nrb   rd   rq   r2   rc   )rl   rm   rm   rU      rM   )r8   r   r   r    r;   r(   r<   )	rt   ru   ri   r~   r   r=   r>   r   rA   s	            rG   ;test_multi_output_classification_partial_fit_sample_weightsr     s"   
))YYY	0Ba&1a&1a&	!B

???##A"B???N!.11E	IIb"a 
IIIyyy///:A
Q!Q!Q!Q(A"B???N

/
/CGGAqMMMooFckk&115==3H3HIIIIIrI   c                     t          t          d                    } t          j        t                    5  |                     t          t                     d d d            n# 1 swxY w Y   t          j	        t          t          f          }|                     t          t                     t          j        t                    5  |                     t          |           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                     t          t          d d df                    d d d            d S # 1 swxY w Y   d S )Nr   r7   zUnknown label typerV   rU   )r    r$   rX   rY   r   scorer=   r>   r8   column_stackr   r   r;   rZ   )mocy_newr[   s      rG   test_multi_output_exceptionsr     s     	q 9 9 9
:
:C	~	&	&  		!Q              
 ORH%%EGGAqMMM	z	"	"  		!U               C	z	-	-	-  1QQQT7                 s5   !A$$A(+A(C00C47C4+EEEresponse_methodr   r<   c                     t          t                                }t          j        t                    5   t          ||           t                     ddd           dS # 1 swxY w Y   dS )zECheck that we raise the proper error when the estimator is not fittedN)r    r   rX   rY   r   getattrr=   )r   r   s     rG   "test_multi_output_not_fitted_errorr     s       2 4 4
5
5C	~	&	& ) )%_%%a((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   A!!A%(A%c                     t          t                                } t          | d          sJ |                     t          t
                     t          | d          sJ t          t                                } t          | d          rJ d}d}t          j        t          |          5 }| 
                    t                     ddd           n# 1 swxY w Y   t          |j        j        t                    sJ |t          |j        j                  k    sJ |                     t          t
                     t          | d          rJ t          j        t          |          5 }| 
                    t                     ddd           n# 1 swxY w 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
    estimatorr   r   z3'LinearSVC' object has no attribute 'predict_proba'rV   N)r    r   rP   r;   r=   r>   r$   rX   rY   r   r   r   r   r   r   )r   r   	inner_msgr   s       rG   (test_multi_output_delegate_predict_probar     s   
   2 4 4
5
5C3(((((GGAqMMM3(((((  	
,
,CsO,,,,,JIEI	~Y	7	7	7 9!              io/@@@@@IO5666666GGAqMMMsO,,,,,	~Y	7	7	7 9!              io/@@@@@IO566666666s$   ,CCC+FFFc                  t    t          ddddd          \  } }t          j        d |D                       }| |fS )Ni  d      r   r   )r   
n_featuresr   n_informativer5   c                 R    g | ]$}d  t          |d          dd         D             %S )c                 ,    g | ]}t          |          S  )int).0yyys     rG   
<listcomp>zLgenerate_multilabel_dataset_with_correlations.<locals>.<listcomp>.<listcomp>  s    DDDcSDDDrI   z#06brc   N)format)r   yys     rG   r   zAgenerate_multilabel_dataset_with_correlations.<locals>.<listcomp>  s:    QQQDDVB-?-?-CDDDQQQrI   )r   r8   r   )r=   r>   Y_multis      rG   -generate_multilabel_dataset_with_correlationsr     sR     3"BUV  DAq hQQqQQQRRGg:rI   chain_methoddecision_functionc                 R   t                      \  }}t          t                      |                               ||          }|                    |          }|j        |j        k    sJ |                    |          }|dk    }t          ||           t          |d          rJ d S )Nr   r   r   )	r   r   r$   r;   r<   r   r   r)   rP   )r   r=   r   classifier_chainY_pred
Y_decisionY_binarys          rG   5test_classifier_chain_fit_and_predict_with_linear_svcr    s     9::DAq&!   
c!Qii 
 %%a((F<17""""!33A66JQHx((('9999999rI   csr_containerc                 n   t                      \  }} | |          }t          t                                                    ||          }|                    |          }t          t                                                    ||          }|                    |          }t          ||           d S N)r   r   r   r;   r<   r)   )r  r=   r   X_sparser   Y_pred_sparseY_pred_denses          rG   6test_classifier_chain_fit_and_predict_with_sparse_datar    s     9::DAq}QH&'9';';<<@@1MM$,,X66M&'9';';<<@@AFF#++A..L}l33333rI   c                      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          t          ||d          k    sJ d S )NiX  samplesaverage)r   r   r   r;   r<   r   r   )
r=   r   r?   rA   Y_trainY_testovr
Y_pred_ovrchainY_pred_chains
             rG   +test_classifier_chain_vs_independent_modelsr  !  s$    9::DAqaaajGsttQQQwZFaaajGsttQQQwZF
022
3
3CGGGWV$$J.0011E	IIgw==((LyAAAM
IE E E      rI   )r<   r   predict_log_probar   r  c           	      H   t                      \  }}t          t                      |           }|                    ||           |                    |          }|j        |j        k    sJ d |j        D             t          t          |j        d         |j        d         |j        d         z                       k    sJ  t          ||          |          }|dk    rt          j        |          }|dk    }t          ||           t          |t                    sJ d S )Nr   c                 &    g | ]}|j         j        S r   coef_r   r   cs     rG   r   z9test_classifier_chain_fit_and_predict.<locals>.<listcomp>D      444QAGL444rI   rU   r        ?)r   r   r   r;   r<   r   r}   r   r:   r   r8   expr)   r   r   )r   r   r=   r   r  r  Y_probr  s           rG   %test_classifier_chain_fit_and_predictr"  8  s$    9::DAq.00|LLLE	IIaOOO]]1F<17""""44%"3444agaj!'!*qwqz1229 9     -WUO,,Q//F---}Hx(((e_-------rI   c            	         t                      \  } }t          t                                }|                    | |           |                    |           }|j        |j        k    sJ d |j        D             t          t          | j        d         | j        d         |j        d         z                       k    sJ d S )Nc                 &    g | ]}|j         j        S r   r  r  s     rG   r   z8test_regressor_chain_fit_and_predict.<locals>.<listcomp>X  r  rI   rU   )	r   r"   r   r;   r<   r   r}   r   r:   )r=   r   r  r  s       rG   $test_regressor_chain_fit_and_predictr%  Q  s    8::DAq577##E	IIaOOO]]1F<17""""44%"3444agaj!'!*qwqz1229 9      rI   c                 6   t                      \  }} | |          }t          t                      d          t          t	                      d          g}|D ]?}|                    ||           |                    |          }|j        |j        k    sJ @d S )Nr2   r   )r   r   r   r"   r   r;   r<   r   )r  r=   r   r  base_chainsr  r  s          rG   7test_base_chain_fit_and_predict_with_sparse_data_and_cvr)  ]  s     9::DAq}QH*,,333uww1%%%K  ' '		(Ax((|qw&&&&&' 'rI   c                      t                      \  } }t          t                                t          t	                                fD ]D}t          |                              dd          }|                    | |           t          |                              |j                  }|                    | |           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                    Fd S )Nr   *   )orderr5   r,  re   )r   r   r   r"   r   r   
set_paramsr;   order_r)   r   r,  r:   r   setzipr}   r(   r  )r=   r   r  chain_randomchain_fixedr   r   s          rG   test_base_chain_random_orderr4  l  sp   8::DAq!"4"6"6779P9PQ > >U||..XB.OOAEll--L4G-HH1;-|/BCCCL&''4a>>9999<&''1,,,,3|*++,,1111 l68OPP 	> 	>JD$%dj$*====	>> >rI   zchain_type, chain_method))
classifierr<   )r5  r   )r5  r  )r5  r   )	regressor c                 z   t                      \  }}| dk    rt          t                      |          }nt          t	                                }|                    ||           t          |                              d          }|                    ||           |                    |          }|                    |          }|j	        |j	        k    sJ t          j        ||k              rJ t          |t                    rt          ||d          dk    sJ d S t          ||          dk     sJ d S )	Nr5  r   r2   r'  r  r  g?g      ?)r   r   r   r"   r   r;   r   r.  r<   r   r8   allr   r   r   )
chain_typer   r=   r   r  chain_cv	Y_pred_cvr  s           rG   (test_base_chain_crossval_fit_and_predictr=  ~  s8    9::DAq\!! 2 4 4<PPPuww''	IIaOOOU||&&!&,,HLLA  ##I]]1F?fl****vf	)*****%)) 7Q	9===CCCCCC!!Y//$666666rI   r   )r   c                    |                      t          t                     t          | j        t
                    sJ t          | j                  t          k    sJ t          t          | j                  D ]\  }}t          ||           d S r  )r;   r=   r>   r   classes_r   r   r   r1  r|   r)   )r   estimator_classesexpected_classess      rG   test_multi_output_classes_rB    s     MM!Qi($/////y!""i/////27I<N/O/O @ @++,.>????@ @rI   c                         e Zd Zd fd	Z xZS )DummyRegressorWithFitParamsNc                 X    || _         t                                          |||          S r  _fit_paramssuperr;   selfr=   r>   sample_weight
fit_params	__class__s        rG   r;   zDummyRegressorWithFitParams.fit  %    %ww{{1a///rI   r  __name__
__module____qualname__r;   __classcell__rM  s   @rG   rD  rD    =        0 0 0 0 0 0 0 0 0 0rI   rD  c                         e Zd Zd fd	Z xZS )DummyClassifierWithFitParamsNc                 X    || _         t                                          |||          S r  rF  rI  s        rG   r;   z DummyClassifierWithFitParams.fit  rN  rI   r  rO  rT  s   @rG   rW  rW    rU  rI   rW  zestimator, datasetprior)strategyr2   r3   c                     |\  }}t          j        |          }|                     |||           | j        D ]}d|j        v sJ d S )N)
some_paramr\  )r8   r9   r;   r}   rG  )r   datasetr=   r>   r\  dummy_estimators         rG   *test_multioutput_estimator_with_fit_paramsr_    sg     DAqq!!JMM!Q:M...$0 ; ;::::::; ;rI   c                  Z   t           j                            d          } t          j        dd          \  }}|                     |j        d                   } G d dt                    }t           |                      }d|i} |j	        ||fi | |j
        D ]}|j        |u sJ d S )Nr   r2   r3   c                        e Zd Z fdZ xZS )0test_regressor_chain_w_fit_params.<locals>.MySGDc                 X    |d         | _          t                      j        ||fi | d S )NrK  )sample_weight_rH  r;   )rJ  r=   r>   rL  rM  s       rG   r;   z4test_regressor_chain_w_fit_params.<locals>.MySGD.fit  s6    ",_"=DEGGK1++
+++++rI   rO  rT  s   @rG   MySGDrb    s8        	, 	, 	, 	, 	, 	, 	, 	, 	,rI   re  rK  )r8   r   r   r   r
   randr   r   r"   r;   r}   rd  )r   r=   r>   weightre  model	fit_paramests           rG   !test_regressor_chain_w_fit_paramsrk    s    
)


"
"C#aa@@@DAqXXagaj!!F, , , , , , , ,
 5577##E !&)IEIa  i     , ,!V+++++, ,rI   zMultiOutputEstimator, Estimatorc                    t           j                            d          }|                    dd          |                    ddd          }}|                    ddg|j        dd	g
                              t                    }t           j	        ||<   t          t                       |                      } | |                              ||                              ||           d S )Nr+  r6   rc   rU   r  )r6   r2   r   g{Gz?gGz?)p)r8   r   r   randnbinomialchoicer   astypeboolnanr#   r   r;   r   )MultiOutputEstimator	Estimatorr   r=   r>   maskpipes          rG   test_support_missing_valuesrx    s     )


#
#C99RS\\!S'::qA::q!fag$:66==dCCDfAdG))++66D""1a((..q!44444rI   
order_typec                    g dg dg dg}ddgddgddgg} | ddg          }t          t          dd          |	          }|                    ||           g dg}ddgg}t          |                    |          |           d S )
Nrb   rd   rq   r2   rc   rU   r   r   r-  )r   r   r;   r(   r<   )ry  r=   r>   r,  r  rA   rB   s          rG   !test_classifier_chain_tuple_orderr{    s    	III/A
Q!Q!Q AJ1vEAA>>>e  E 
IIaOOOooF!fXFemmF33V<<<<<rI   c                  "   g dg dg dg} ddgddgddgg}t          ddg          }t          t                      |          }t          j        t
          d	          5  |                    | |           d d d            d S # 1 swxY w Y   d S )
Nrb   rd   rq   r2   rc   rU   r-  zinvalid orderrV   )tupler   r   rX   rY   rZ   r;   )r=   r>   r,  r  s       rG   )test_classifier_chain_tuple_invalid_orderr~  
  s    	III/A
Q!Q!Q A1a&MME244EBBBE	z	9	9	9  		!Q                 s    BBBc                 2   t          ddddd          \  }}t          ||d          \  }}}}d}t          t                      g ddd	
          }|                    ||           t          j        ||                                 d                   sJ d S )Nr   rL   r2   r   )r   r   r   n_labelsr5   r7   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   rU   rc   Tr,  r5   verbose)r	   r   r   r%   r;   rerW   
readouterr)	capsysr=   r>   r?   rA   r@   rB   patternr5  s	            rG   test_classifier_chain_verboser    s    )!q11  DAq (811'M'M'M$GVWf	A  !  ii	  J NN7G$$$8GV..0034444444rI   c                 .   t          ddd          \  }}t          ||d          \  }}}}d}t          t                      g ddd	          }|                    ||           t          j        ||                                 d                   sJ d S )
N}   r2   r   )r   r4   r5   r7   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$)rU   r   rc   Tr  )r
   r   r"   r   r;   r  rW   r  )	r  r=   r>   r?   rA   r@   rB   r  r6  s	            rG   test_regressor_chain_verboser  +  s    SAAFFFDAq'711'M'M'M$GVWf	A 
 ii	  I MM'7###8GV..0034444444rI   c                      t          d          \  } }t          dt          d          fgt                      d          }t	          |                              | |          }|                    |            d	S )
zkTest that MultiOutputRegressor checks the fitted estimator for
    predict. Non-regression test for #16549.T)
return_X_ysgdrU   r7   rc   )
estimatorsfinal_estimatorr   )r   N)r   r   r   r   r!   r;   r<   )r=   r>   stackerregs       rG   4test_multioutputregressor_ducktypes_fitted_estimatorr  >  s     D)))DAqLa8889:  G 
1
1
1
5
5a
;
;C KKNNNNNrI   zCls, methodr;   rO   c                     t          d          \  }} | t                                }t          j        t          d          5   t          ||          ||d           ddd           dS # 1 swxY w Y   dS )zgCheck that we raise an error when passing metadata not requested by the
    underlying classifier.
    r6   )r   zis only supported ifrV   rU   )testN)r   r   rX   rY   rZ   r   )Clsmethodr=   r>   r   s        rG   test_fit_params_no_routingr  N  s     ,,,DAq
#)++
,
,C	z)?	@	@	@ + +VQ****+ + + + + + + + + + + + + + + + + +s   A00A47A4c                      t          t                                } d}t          j        t          |          5  t          | d           d d d            d S # 1 swxY w Y   d S )Nz:This 'MultiOutputRegressor' has no attribute 'partial_fit'rV   rO   )r!   r   rX   rY   r   r   )rj  r[   s     rG   *test_multioutput_regressor_has_partial_fitr  \  s     /11
2
2C
FC	~S	1	1	1 $ $]###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   AAA)r  numpyr8   rX   joblibr   sklearnr   sklearn.baser   r   sklearn.datasetsr   r   r	   r
   sklearn.dummyr   r   sklearn.ensembler   r   r   sklearn.exceptionsr   sklearn.imputer   sklearn.linear_modelr   r   r   r   r   r   r   r   sklearn.metricsr   r   sklearn.model_selectionr   r   sklearn.multiclassr   sklearn.multioutputr   r    r!   r"   sklearn.pipeliner#   sklearn.svmr$   sklearn.treer%   sklearn.utilsr&   sklearn.utils._testingr'   r(   r)   sklearn.utils.fixesr*   r+   r,   r-   r.   r/   rH   rS   r\   markparametrizer`   rj   ro   rv   	load_irisirisdatar=   targetr   r   y3r   r>   r   r   r   r   r   uniquer   r   mapr|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r"  r%  r)  r4  r=  rB  rD  rW  r_  rk  rx  r   r}  r{  r~  r  r  r  r  r  r   rI   rG   <module>r     sA	   				                  / / / / / / / /            : 9 9 9 9 9 9 9         
 . - - - - - ( ( ( ( ( (	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 > = = = = = = = B B B B B B B B 2 2 2 2 2 2            + * * * * * ! ! ! ! ! ! / / / / / / ! ! ! ! ! !         
               , , ,$C C C.     	
       : : : D D D& xI	[WRa   WRa   BORRL!! 	:GAJ	C		"	
$ss29r2rl++
,
,	  	  	 9 9 9 'B 'B 'BTP P P>. . .S S S:L L L$,6 ,6 ,6^D D D(J J J&  ( *_i,HII) ) JI)7 7 7:	 	 	 )5H)IJJ: : KJ:$ .994 4 :94  . JJJ  *_>Q,RSS. . TS	 
.(	 	 	 .99' ' :9'> > >$   	 	7 7	 	7. A...44!DDDEE..A>>>?? @ @ @0 0 0 0 0. 0 0 00 0 0 0 0? 0 0 0  "!">">"P"P"PQQ3H355	

 ! !<!<!>!>??$H$qqAAA	
	 ; ; ;, , ,* %/03G2OP 
5 
5 
5 bh'>??= = @?=  5 5 5,5 5 5&    _e,/Dm.TU + + +$ $ $ $ $rI   