
    lrix              
          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" 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.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@mAZAmBZB d ZCd ZDd ZEejF        G                    de@e?z   e>z   eBz   eAz   e=z             d             ZHd ZId ZJd ZK ejL                    ZMeMjN        ZOeMjP        ZQ e7eQd          ZR e7eQd          ZS ejT        eQeReSf          ZUeOjV        \  ZWZXeUjV        d         ZY eZ ej[        eQ                    Z\ e] e^ej[        eQeReSf                    Z_ejF        j`        d              Zad! Zbd" Zcd# Zdd$ Zed% Zfd& Zgd' Zhd( Zid) Zjd* ZkejF        G                    d+d,d-g          d.             Zld/ Zmd0 ZnejF        G                    d1d-d2g          d3             ZoejF        G                    d4e@          d5             Zpd6 ZqejF        G                    d1g d7          ejF        G                    d+d,d8g          d9                         Zrd: ZsejF        G                    d4e@          d;             Ztd< ZuejF        G                    d=g d>          d?             ZvejF        G                    d@ edA           e- edA                     e, edA                    g          dB             Zw G dC dDe          Zx G dE dFe          ZyejF        G                    dG e- eydHI                     ej                    f e. ex                       ej        dJd K          fg          dL             ZzdM Z{ejF        G                    dNe-efe.e fg          dO             Z|ejF        G                    dPe]ej}        e~g          dQ             ZdR ZdS ZdT ZdU ZejF        G                    dVe,dWfe-dXfg          dY             ZdZ ZejF        G                    d[e,e/g          d\             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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   r4   )
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/bestrading.cuttalo.com/services/ml-inference/venv/lib/python3.11/site-packages/sklearn/tests/test_multioutput.pytest_multi_target_regressionrG   <   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 )	Nr1   r   r2   r5         r4   max_iterpartial_fit)r   r
   r7   r8   r9   r   rN   r;   r    r&   hasattrr   )r<   r=   r>   r?   r@   rA   rB   
half_indexrC   sgrrE   s              rF   (test_multi_target_regression_partial_fitrR   N   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BrH   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   r2   r6   zat least two dimensionsmatch)r   r
   r    r   pytestraises
ValueErrorr:   )r<   r=   rD   msgs       rF   'test_multi_target_regression_one_targetr[   e   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 r0   )r   r
   r    r   r:   r&   r;   )r\   r<   r=   r>   r?   r@   rD   
rgr_sparses           rF   #test_multi_target_sparse_regressionr_   n   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    rH   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rT      r1      rK      T㥛 	@X9v@g?g333333?zdoes not support sample weightsrU   r   r6   )r    r   rW   rX   rY   r:   r   )r<   r=   wrD   rZ   s        rF   $test_multi_target_sample_weights_apiri      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 )
Nra   rc   rf   rg          @      ?r   rK   rL   )r    r   rN   r;   )r<   r=   rh   rgr_wrD   s        rF   +test_multi_target_sample_weight_partial_fitrn      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9rH   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 )Nra   rc   rf   rg   rk   rl   r   r6   g      ?g      @      @rq   g      @g      @)r    r   r:   r&   r;   )Xwywrh   rm   r<   r=   rD   r@   s           rF    test_multi_target_sample_weightsru      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CrH   rT   r6   rb   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_lossrT   rK   lossr4   rM   rd   )n_jobsr   )r   r   rN   r<   r=   classesestimators_r   )sgd_linear_clfmorest1est2s       rF   8test_multi_output_classification_partial_fit_parallelismr      s    "
QOOON
q
9
9
9COOAq'"""?1DOOAq?1D{{Q4 rH   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 )NrT   rK   rL   predict_probarw   rx   )r   r   r:   r<   r=   rO   )r}   multi_target_linears     rF   'test_hasattr_multi_output_predict_probar      s     #A>>>N/??Aq!!!*O<<<<< #
QOOON/??Aq!!!&8888888rH   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 )NrT   rK   rL   ry   )hingerw   modified_huberc                 *    t          | d          rdS dS )Nr   rl   g        )rO   )	estimatorr<   r=   s      rF   custom_scorerz6test_multi_output_predict_proba.<locals>.custom_scorer   s    9o.. 	33rH   r1   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'rU   )r   r   r   r:   r<   r=   r   rW   rX   AttributeError
isinstancevalue	__cause__str)	r}   paramr   grid_clfr   
inner2_msg
inner1_msg	outer_msg	exec_infos	            rF   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 )	Nrw   rT   rK   rx   r   rb   )r{   r1   )r   r   r<   shaperN   r=   r{   r;   	n_samples	n_outputsr9   r   r(   )r}   r   rP   first_predictionssecond_predictionsis         rF   ,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rH   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 )Nrw   rT   rK   rx   z8classes must be passed on the first call to partial_fit.rU   )r   r   rW   rX   rY   rN   r<   r=   )r}   r   rZ   s      rF   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
   rT   n_estimatorsr4   axisr1   )r   r   r:   r<   r=   r;   r   r   r   r   len	n_classesr(   r7   argmaxdstackr9   r   list)forestmulti_target_forestpredictionsr   class_probabilitiesr   forest_s          rF    test_multi_output_classificationr   7  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rH   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   r6   r1   )r#   r   r   r:   r<   r=   r;   r   r   r   r9   r   r   )svcmulti_class_svcmulti_target_svcr   r   multi_class_svc_s         rF   %test_multiclass_multioutput_estimatorr   T  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rH   c            	         d} t           j                            |           }|                    d          }t          j        g d                              dd          }t          j        g d                              dd          }t          j        ||gd          }t          t          | 	                    }|	                    ||           |
                    |          }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  )rK   rK   )size)bar   r   r   rK   rT   )defr   r   r   r6   g7E-?gd]7 v?gYA?gzXP?gZ]3?gJE?gJo8?g[|c?gx?g{du?)ggK
?g!U5?g}i?)gg362?gPm?gKɱ?)g?gn۔~?g	2b?)g_E֖?glE?g
̖B?)g͢?g ?g}DBˉ?)r7   randomRandomStatenormalarrayreshapeconcatenater   r   r:   r   r9   r   r&   )
seedrngr<   y1y2Yclfy_resulty_actualr   s
             rF   3test_multiclass_multioutput_estimator_predict_probar   f  s   D )


%
%C 	


A 
+++	,	,	4	4Q	:	:B	+++	,	,	4	4Q	:	:B
Bxa(((A
 2 E E E
F
FCGGAqMMM  ##H
Z(Z(Z(Z(Z(	
 	
 	444444444444333	
 	
H* 3x==!! 6 6HQK!55556 6rH   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 )Nra   rc   r1   rb   rk   rl   r   rT   r   rp   rr   )r7   asarrayr   r   r:   r&   r;   )	rs   rt   rh   r   clf_wr<   r=   r   r@   s	            rF   /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CrH   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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 )
Nra   rc   rp   r1   rb   )rk   rl   rl   rT      )r4   rM   tol)r7   r   r   r   r:   r'   r;   )	rs   rt   rh   r}   r   r<   r=   r   r@   s	            rF   ;test_multi_output_classification_partial_fit_sample_weightsr     s&   
))YYY	0Ba&1a&1a&	!B

???##A"BDIIIN!.11E	IIb"a 
IIIyyy///:A
Q!Q!Q!Q(A"BDIIIN

/
/CGGAqMMMooFckk&115==3H3HIIIIIrH   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   r6   zUnknown label typerU   rT   )r   r#   rW   rX   r   scorer<   r=   r7   column_stackr   r   r:   rY   )mocy_newrZ   s      rF   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   rW   rX   r   getattrr<   )r   r   s     rF   "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'rU   N)r   r   rO   r:   r<   r=   r#   rW   rX   r   r   r   r   r   r   )r   r   	inner_msgr   s       rF   (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_informativer4   c                 R    g | ]$}d  t          |d          dd         D             %S )c                 ,    g | ]}t          |          S  )int).0yyys     rF   
<listcomp>zLgenerate_multilabel_dataset_with_correlations.<locals>.<listcomp>.<listcomp>  s    DDDcSDDDrH   z#06brb   N)format)r   yys     rF   r   zAgenerate_multilabel_dataset_with_correlations.<locals>.<listcomp>  s:    QQQDDVB-?-?-CDDDQQQrH   )r   r7   r   )r<   r=   Y_multis      rF   -generate_multilabel_dataset_with_correlationsr     sR     3"BUV  DAq hQQqQQQRRGg:rH   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(   rO   )r   r<   r   classifier_chainY_pred
Y_decisionY_binarys          rF   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9rH   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          rF   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3rH   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>   r@   Y_trainY_testovr
Y_pred_ovrchainY_pred_chains
             rF   +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      rH   )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     rF   r   z9test_classifier_chain_fit_and_predict.<locals>.<listcomp>D      444QAGL444rH   rT   r        ?)r   r   r   r:   r;   r   r|   r   r9   r   r7   expr(   r   r   )r   r   r<   r   r  r   Y_probr  s           rF   %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_-------rH   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     rF   r   z8test_regressor_chain_fit_and_predict.<locals>.<listcomp>X  r  rH   rT   )	r   r!   r   r:   r;   r   r|   r   r9   )r<   r   r  r   s       rF   $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      rH   c                 6   t                      \  }} | |          }t          t                      d          t          t	                      d          g}|D ]?}|                    ||           |                    |          }|j        |j        k    sJ @d S )Nr1   r   )r   r   r   r!   r   r:   r;   r   )r  r<   r   r  base_chainsr  r   s          rF   7test_base_chain_fit_and_predict_with_sparse_data_and_cvr'  ]  s     9::DAq}QH*,,333uww1%%%K  ' '		(Ax((|qw&&&&&' 'rH   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   *   )orderr4   r*  rd   )r   r   r   r!   r   r   
set_paramsr:   order_r(   r   r*  r9   r   setzipr|   r'   r  )r<   r   r  chain_randomchain_fixedr   r   s          rF   test_base_chain_random_orderr2  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$*====	>> >rH   zchain_type, chain_method))
classifierr;   )r3  r   )r3  r  )r3  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 )	Nr3  r   r1   r%  r  r  g?g      ?)r   r   r   r!   r   r:   r   r,  r;   r   r7   allr   r   r   )
chain_typer   r<   r   r  chain_cv	Y_pred_cvr   s           rF   (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6rH   r   )r   c                 6   t          |                               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=   r   classes_r   r   r   r/  r{   r(   )r   estimator_classesexpected_classess      rF   test_multi_output_classes_r@    s     i  $$Q**Ii($/////y!""i/////27I<N/O/O @ @++,.>????@ @rH   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        rF   r:   zDummyRegressorWithFitParams.fit  %    %ww{{1a///rH   r  __name__
__module____qualname__r:   __classcell__rK  s   @rF   rB  rB    =        0 0 0 0 0 0 0 0 0 0rH   rB  c                         e Zd Zd fd	Z xZS )DummyClassifierWithFitParamsNc                 X    || _         t                                          |||          S r  rD  rG  s        rF   r:   z DummyClassifierWithFitParams.fit  rL  rH   r  rM  rR  s   @rF   rU  rU    rS  rH   rU  zestimator, datasetprior)strategyr1   r2   c                     t          |           } |\  }}t          j        |          }|                     |||           | j        D ]}d|j        v sJ d S )N)
some_paramrZ  )r   r7   r8   r:   r|   rE  )r   datasetr<   r=   rZ  dummy_estimators         rF   *test_multioutput_estimator_with_fit_paramsr]    st     i  IDAqq!!JMM!Q:M...$0 ; ;::::::; ;rH   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   r1   r2   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 )NrI  )sample_weight_rF  r:   )rH  r<   r=   rJ  rK  s       rF   r:   z4test_regressor_chain_w_fit_params.<locals>.MySGD.fit  s6    ",_"=DEGGK1++
+++++rH   rM  rR  s   @rF   MySGDr`    s8        	, 	, 	, 	, 	, 	, 	, 	, 	,rH   rc  rI  )r7   r   r   r   r
   randr   r   r!   r:   r|   rb  )r   r<   r=   weightrc  model	fit_paramests           rF   !test_regressor_chain_w_fit_paramsri    s    
)


"
"C#aa@@@DAqXXagaj!!F, , , , , , , ,
 5577##E !&)IEIa  i     , ,!V+++++, ,rH   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)  r5   rb   rT   r  )r5   r1   r   g{Gz?gGz?)p)r7   r   r   randnbinomialchoicer   astypeboolnanr"   r   r:   r   )MultiOutputEstimator	Estimatorr   r<   r=   maskpipes          rF   test_support_missing_valuesrv    s     )


#
#C99RS\\!S'::qA::q!fag$:66==dCCDfAdG))++66D""1a((..q!44444rH   
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 )
Nra   rc   rp   r1   rb   rT   r   r   r+  )r   r   r:   r'   r;   )rw  r<   r=   r*  r  r@   rA   s          rF   !test_classifier_chain_tuple_orderry    s    	III/A
Q!Q!Q AJ1vEAA>>>e  E 
IIaOOOooF!fXFemmF33V<<<<<rH   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 )
Nra   rc   rp   r1   rb   rT   r+  zinvalid orderrU   )tupler   r   rW   rX   rY   r:   )r<   r=   r*  r  s       rF   )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   rK   r1   r   )r   r   r   n_labelsr4   r6   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   rT   rb   Tr*  r4   verbose)r	   r   r   r$   r:   rerV   
readouterr)	capsysr<   r=   r>   r@   r?   rA   patternr3  s	            rF   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4rH   c                 .   t          ddd          \  }}t          ||d          \  }}}}d}t          t                      g ddd	          }|                    ||           t          j        ||                                 d                   sJ d S )
N}   r1   r   )r   r3   r4   r6   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$)rT   r   rb   Tr  )r
   r   r!   r   r:   r  rV   r  )	r  r<   r=   r>   r@   r?   rA   r  r4  s	            rF   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4rH   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sgdrT   r6   rb   )
estimatorsfinal_estimatorr   )r   N)r   r   r   r   r    r:   r;   )r<   r=   stackerregs       rF   4test_multioutputregressor_ducktypes_fitted_estimatorr  ?  s     D)))DAqLa8889:  G 
1
1
1
5
5a
;
;C KKNNNNNrH   zCls, methodr:   rN   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.
    r5   )r   zis only supported ifrU   rT   )testN)r   r   rW   rX   rY   r   )Clsmethodr<   r=   r   s        rF   test_fit_params_no_routingr  O  s     ,,,DAq
#moo

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'rU   rN   )r    r   rW   rX   r   r   )rh  rZ   s     rF   *test_multioutput_regressor_has_partial_fitr  ]  s     /11
2
2C
FC	~S	1	1	1 $ $]###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   AAArs  c                    t          j        ddgddgg          }t          j        ddgddgg          }t                      }t          j        t
                    5   | |                              ||           ddd           n# 1 swxY w Y   t          j        t                    5   | ||                              ||           ddd           dS # 1 swxY w Y   dS )	z=Check that we warn about the deprecation of `base_estimator`.rT   rb   r1   rd   r   )base_estimatorN)r  r   )	r7   r   r   rW   warnsFutureWarningr:   rX   rY   )rs  r<   r=   r   s       rF   test_base_estimator_deprecationr  g  s~    	1a&1a&!""A
1a&1a&!""A"$$I	m	$	$ 6 6	+++//15556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 
z	"	" K K	i@@@DDQJJJK K K K K K K K K K K K K K K K K Ks$   !B		BB-"CC #C )r  numpyr7   rW   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   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.   rG   rR   r[   markparametrizer_   ri   rn   ru   	load_irisirisdatar<   targetr   r   y3r   r=   r   r   r   r   r   uniquer   r   mapr{   thread_unsafer   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r   r#  r'  r2  r;  r@  rB  rU  r]  ri  rv  r   r{  ry  r|  r  r  r  r  r  r  r   rH   rF   <module>r     s	   				                  / / / / / / / /            : 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 *6Z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 + + +$ $ $ &GHHK K IHK K KrH   