
    >[g>u              
          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j                  j                  deAe@z   e?z   eCz   eBz   e>z         d        ZId ZJd ZKd ZL ej                         ZNeNj                  ZPeNj                  ZR e8eRd      ZS e8eRd      ZT ej                  eReSeTf      ZVePj                  \  ZXZYeVj                  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j                  j                  d+d,d-g      d.        Zld/ Zmd0 Znej                  j                  d1d-d2g      d3        Zoej                  j                  d4eA      d5        Zpd6 Zqej                  j                  d1g d7      ej                  j                  d+d,d8g      d9               Zrd: Zsej                  j                  d4eA      d;        Ztd< Zuej                  j                  d=g d>      d?        Zvej                  j                  d@ edA       e. edA             e- edA            g      dB        Zw G dC dDe      Zx G dE dFe      Zyej                  j                  dG e. eydHI             ej                         f e/ ex              ej                  dJd K      fg      dL        ZzdM Z{ej                  j                  dNe.efe/e!fg      dO        Z|ej                  j                  dPe^ej                  e~g      dQ        ZdR ZdS ZdT ZdU Zej                  j                  dVe-dWfe.dXfg      dY        ZdZ Zy)[    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 ]?  }t        d      }|j                  ||d d |f          |j                  |      |d d |f<   A t        t        d            }|j                  ||       |j                  |      }	t        ||	       y 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
             Y/var/www/html/bid-api/venv/lib/python3.12/site-packages/sklearn/tests/test_multioutput.pytest_multi_target_regressionrH   =   s    ##aa@DAq"vq"vWGrsVQrsVFFv&J1X'Q7A';;v.
1a4 
 8aH
ICGGGW[[ F
F+    c                  d   t        j                  dd      \  } }| d d |d d }}| dd  |dd  }}t        j                  |      }d}t	        d      D ]_  }t        dd      }	|	j                  |d | |d ||f          |	j                  ||d  ||d |f          |	j                  |      |d d |f<   a t        t        dd            }	|	j                  |d | |d |        |	j                  ||d  ||d         |	j                  |      }
t        ||
       t        t        t              d      rJ y )	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   sD   ##aa@DAq"vq"vWGrsVQrsVFFv&JJ1XA6,gkzk1n.EF
,gjk1n.EF;;v.
1a4	  |QG
HCOOGKZ('+:*>?OOGJK('*+*>?[[ F
F++E2MBBBBrI   c                      t        j                  dd      \  } }t        t        d            }d}t	        j
                  t        |      5  |j                  | |       d d d        y # 1 sw Y   y xY w)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   sT    ##aa@DAq
8aH
IC
#C	z	-1 
.	-	-s   A))A2sparse_containerc                 ^   t        j                  dd      \  }}|d d |d d }}|dd  }t        t        d            }t        t        d            }|j	                  ||       |j	                   | |      |       t        |j                  |      |j                   | |                   y 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rsVF
u!4
5C%e&;<JGGGWNN#G,g6FZ//0@0HIrI   c                  ,   g dg dg} ddgddgg}ddg}t        t                     }d}t        j                  t        |      5  |j                  | ||       d d d        t        t        d	
            }|j                  | ||       y # 1 sw Y   2xY w)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    	IA
%(A	c
A
8:
;C
+C	z	-1a 
. 8aH
ICGGAq! 
.	-s   B

Bc                  :   g dg dg} ddgddgg}ddg}t        t        dd	            }|j                  | ||       ddg}t        t        dd	            }|j                  | ||       |j                  |       d   d   |j                  |       d   d   k7  sJ y )
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    	IA
%(A	c
A 1q!IJE	aA 
c
A
|QG
HCOOAq!;;q>!Q5==#3A#6q#9999rI   c                  Z   g dg dg} ddgddgg}ddg}t        t        d            }|j                  | ||       g dg dg dg}ddgddgddgg}t        t        d            }|j                  ||       g d	g d
g}t        |j	                  |      |j	                  |             y )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    
Y	B%.5%.	)B	c
A !:!JKE	IIb"a 
Iy)A
%%8A
8aH
ICGGAqM/FF+U]]6-BCrI   rU   r7   rc   c                     t        ddd      } t        | d      }|j                  t        t        t
               |j                  d   }|j                  t        t               |j                  d   }t               dkD  r||usJ y y )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      sr    "
QON
q
9COOAq'"??1DOOAq??1D{Q4 rI   c                     t        dd      } t        |       }|j                  t        t               t        |d      rJ t        ddd      } t        |       }|j                  t        t               t        |d      sJ y )NrU   rL   rM   predict_probarx   ry   )r   r    r;   r=   r>   rP   )r~   multi_target_linears     rG   'test_hasattr_multi_output_predict_probar      sx     #A>N/?Aq!*O<<< #
QON/?Aq!&888rI   c                     t        dd      } ddi}d }t        | ||dd	      }t        |      }|j                  t        t
               |j                  t               t        dd      } t        |       }|j                  t        t
               d
}d}d}t        j                  t        |      5 }|j                  t               d d d        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 y # 1 sw Y   xY w)NrU   rL   rM   rz   )hingerx   modified_huberc                     t        | d      ryy)Nr   rm   g        )rP   )	estimatorr=   r>   s      rG   custom_scorerz6test_multi_output_predict_proba.<locals>.custom_scorer   s    9o.rI   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      sD   "A>N<=E H 09Aq!%%a( #A>N/?Aq!KJCJJI	~Y	79))!, 
8 ioo//@@@Y__667777ioo//99>JJJY__66@@AAAA 
8	7s   2E77F c                     t        ddd      } t        |       }t        j                  d   dz  }|j	                  t        d | t
        d | t               |j                  t              }t        t        f|j                  k(  sJ |j	                  t        |d  t
        |d         |j                  t              }t        t        f|j                  k(  sJ t        d      D ]  }t        |       } | j	                  t        d | t
        d ||f   t        |          t        | j                  t              |d d |f          | j	                  t        |d  t
        |d |f          t        | j                  t              |d d |f           y )	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     so    #
QON/? qJ##AkzNAkzNG#T+33A6y!%6%<%<<<<##AjkNAjkNC,44Q7y!%7%=%==== 1X~.""kzNAkzk1n-wqz 	# 	
 	>11!46G16MN""1Z[>1Z[!^3DE>11!46HA6NO rI   c                      t        ddd      } t        |       }d}t        j                  t        |      5  |j                  t        t               d d d        y # 1 sw Y   y xY w)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   -  sJ    "
QON/?
DC	z	-''1- 
.	-	-s   AA$c                     t        dd      } t        |       }|j                  t        t               |j                  t              }t        t        f|j                  k(  sJ |j                  t              }t        |      t        k(  sJ |D ]  }t        t        f|j                  k(  rJ  t        t        j                  t        j                  |      d      |       t!        d      D ]  }t#        |       }|j                  t        t        d d |f          t%        |j                  t                    t%        |d d |f         k(  sJ t        t%        |j                  t                    t%        ||                 y )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;    $!DF/7 Aq!%--a0Ky![%6%6666'55a8M}***,9%)<)B)BBBB  - ryy=!9BKP 1X-AqAwGOOA&'4AqD0A+BBBB4 5 5a 894a@P;QR	 rI   c                     t        d      } t        |       }t        |      }|j                  t        t
               |j                  t              }t        t        f|j                  k(  sJ t        d      D ]a  }t        |      }|j                  t        t
        d d |f          t        |j                  t                    t        |d d |f         k(  raJ  y )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 1X 1Q!Q$($,,Q/0DQT9J4KKKK rI   c            	         d} t         j                  j                  |       }|j                  d      }t        j                  g d      j                  dd      }t        j                  g d      j                  dd      }t        j                  ||gd      }t        t        d	| 
            }|j                  ||       |j                  |      }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        ||	   ||	           y )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  s9   D ))


%C 	


A 
+	,	4	4Q	:B	+	,	4	4Q	:B
Bxa(A
+DAC GGAqM  #H
Z(Z(Z(Z(Z(	
 	34444	
H* 3x=!HQK!5 "rI   c                     g dg dg} ddgddgg}t        j                  ddg      }t        dd	      }t        |      }|j	                  | ||       g dg dg dg}ddgddgddgg}t        dd	      }t        |      }|j	                  ||       g d
g dg}t        |j                  |      |j                  |             y )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    
Y	Ba&1a&	B


C:A#!DF!&)E	IIb"a 
Iy)A
Q!Q!Q A#!DF

'CGGAqM/FF+U]]6-B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        |      }|j	                  | ||       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        |      }|j	                  ||       g dg}t        |j                  |      |j                  |             y )
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    
Y	0Ba&1a&1a&	!B


?#A"B?N!.1E	IIb"a 
Iy/:A
Q!Q!Q!Q(A"B?N

/CGGAqMFckk&15==3HIrI   c                  ^   t        t        d            } t        j                  t              5  | j                  t        t               d d d        t        j                  t        t        f      }| j                  t        t               t        j                  t              5  | j                  t        |       d d d        d}t        j                  t        |      5  | j                  t        t        d d df          d d d        y # 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   y xY w)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
:C	~	&		!Q 
'
 OORH%EGGAqM	z	"		!U 
# C	z	-1QT7 
.	- 
'	& 
#	"
 
.	-s#   D$D "D#DD #D,response_methodr   r<   c                     t        t                     }t        j                  t              5   t        ||       t               ddd       y# 1 sw Y   yxY w)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
5C	~	&%_%a( 
'	&	&s   AAc                  l   t        t                     } t        | d      sJ | j                  t        t
               t        | d      sJ t        t                     } t        | d      rJ d}d}t        j                  t        |      5 }| j                  t               ddd       t        j                  j                  t              sJ |t        |j                  j                        k(  sJ | j                  t        t
               t        | d      rJ t        j                  t        |      5 }| j                  t               ddd       t        |j                  j                  t              sJ |t        |j                  j                        k(  sJ y# 1 sw Y   xY w# 1 sw Y   `xY w)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     sJ   
   2 4
5C3(((GGAqM3(((  	
,CsO,,,JIEI	~Y	79! 
8ioo//@@@IOO556666GGAqMsO,,,	~Y	79! 
8ioo//@@@IOO556666 
8	7 
8	7s   
F5F*F'*F3c                      t        ddddd      \  } }t        j                  |D cg c](  }t        |d      dd  D cg c]  }t	        |       c}* c}}      }| |fS c c}w c c}}w )	Ni  d      r   r   )r   
n_featuresr   n_informativer5   z#06brc   )r   r8   r   formatint)r=   r>   yyyyyY_multis        rG   -generate_multilabel_dataset_with_correlationsr     ss     3"BUVDAq hhqQqVB-?-CD-CcS-CDqQRGg: EQs   A&
A!A&
!A&
chain_methoddecision_functionc                     t               \  }}t        t               |       j                  ||      }|j	                  |      }|j
                  |j
                  k(  sJ |j                  |      }|dk\  }t        ||       t        |d      rJ y )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!Qi 
 %%a(F<<177"""!33A6JQHx('9999rI   csr_containerc                    t               \  }} | |      }t        t                     j                  ||      }|j	                  |      }t        t                     j                  ||      }|j	                  |      }t        ||       y 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$,,X6M&'9';<@@AF#++A.L}l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                     }|j                  ||       |j	                  |      }t        t                     }|j                  ||       |j	                  |      }	t        ||	d      t        ||d      kD  sJ y )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ajGstQwZFajGstQwZF
02
3CGGGWV$J.01E	IIgw==(LyAM
IE   rI   )r<   r   predict_log_probar   r  c           	      L   t               \  }}t        t               |       }|j                  ||       |j	                  |      }|j
                  |j
                  k(  sJ |j                  D cg c]  }|j                  j                   c}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 y c c}w )Nr   rU   r        ?)r   r   r   r;   r<   r   r}   coef_r   r   r:   r   r8   expr)   r   r   )	r   r   r=   r   r  r   cY_probr   s	            rG   %test_classifier_chain_fit_and_predictr  8  s    9:DAq.0|LE	IIaO]]1F<<177""""'"3"34"3QAGGLL"34aggaj!''!*qwwqz129    -WUO,Q/F--}Hx(e_--- 5s   /D!c            	         t               \  } }t        t                     }|j                  | |       |j	                  |       }|j
                  |j
                  k(  sJ |j                  D cg c]  }|j                  j                   c}t        t        | j
                  d   | j
                  d   |j
                  d   z               k(  sJ y c c}w )NrU   )r   r"   r   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57#E	IIaO]]1F<<177""""'"3"34"3QAGGLL"34aggaj!''!*qwwqz129   4s   -Cc                    t               \  }} | |      }t        t               d      t        t	               d      g}|D ]@  }|j                  ||       |j                  |      }|j                  |j                  k(  r@J  y )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  ]  sy     9:DAqQH*,3uw1%K 		(Ax(||qww&&& rI   c                     t               \  } }t        t                     t        t	                     fD ]9  }t        |      j                  dd      }|j                  | |       t        |      j                  |j                        }|j                  | |       t        |j                  |j                         t        |j                        t        t        d            k7  sJ t        |j                        dk(  sJ t        t        |j                              dk(  sJ t        |j                   |j                         D ]%  \  }}t#        |j$                  |j$                         ' < y )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_orderr*  l  s&   8:DAq!"4"679PQU|..XB.OAEl--L4G4G-H1;--|/B/BCL&&'4a>999<&&'1,,,3|**+,111 l668O8OPJD$%djj$**= Q RrI   zchain_type, chain_method))
classifierr<   )r+  r   )r+  r  )r+  r   )	regressor c                    t               \  }}| dk(  rt        t               |      }nt        t	                     }|j                  ||       t        |      j                  d      }|j                  ||       |j                  |      }|j                  |      }|j                  |j                  k(  sJ t        j                  ||k(        rJ t        |t              rt        ||d      dkD  sJ y t        ||      dk  sJ y )	Nr+  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_predictr3  ~  s     9:DAq\! 2 4<Puw'	IIaOU|&&!&,HLLA  #I]]1F??fll***vvf	)***%)Q	9=CCC!!Y/$666rI   r   )r   c                    | j                  t        t               t        | j                  t
              sJ t        | j                        t        k(  sJ t        t        | j                        D ]  \  }}t        ||        y r  )r;   r=   r>   r   classes_r   r   r   r'  r|   r)   )r   estimator_classesexpected_classess      rG   test_multi_output_classes_r8    sl     MM!Qi(($///y!!"i////27I<N<N/O++,.>? 0PrI   c                         e Zd Zd fd	Z xZS )DummyRegressorWithFitParamsc                 4    || _         t        | 	  |||      S r  _fit_paramssuperr;   selfr=   r>   sample_weight
fit_params	__class__s        rG   r;   zDummyRegressorWithFitParams.fit      %w{1a//rI   r  __name__
__module____qualname__r;   __classcell__rC  s   @rG   r:  r:        0 0rI   r:  c                         e Zd Zd fd	Z xZS )DummyClassifierWithFitParamsc                 4    || _         t        | 	  |||      S r  r<  r?  s        rG   r;   z DummyClassifierWithFitParams.fit  rD  rI   r  rE  rJ  s   @rG   rM  rM    rK  rI   rM  zestimator, datasetprior)strategyr2   r3   c                     |\  }}t        j                  |      }| j                  |||       | j                  D ]  }d|j                  v rJ  y )N)
some_paramrR  )r8   r9   r;   r}   r=  )r   datasetr=   r>   rR  dummy_estimators         rG   *test_multioutput_estimator_with_fit_paramsrU    sQ     DAqq!JMM!Q:M.$00::::: 1rI   c                  b   t         j                  j                  d      } t        j                  dd      \  }}| j                  |j                  d         } G d dt              }t         |             }d|i} |j                  ||fi | |j                  D ]  }|j                  |u rJ  y )Nr   r2   r3   c                        e Zd Z fdZ xZS )0test_regressor_chain_w_fit_params.<locals>.MySGDc                 <    |d   | _         t        |   ||fi | y )NrA  )sample_weight_r>  r;   )r@  r=   r>   rB  rC  s       rG   r;   z4test_regressor_chain_w_fit_params.<locals>.MySGD.fit  s#    ",_"=DGK1+
+rI   rE  rJ  s   @rG   MySGDrX    s    	, 	,rI   r[  rA  )r8   r   r   r   r
   randr   r   r"   r;   r}   rZ  )r   r=   r>   weightr[  model	fit_paramests           rG   !test_regressor_chain_w_fit_paramsra    s    
))


"C##aa@DAqXXaggaj!F, ,
 57#E !&)IEIIa i   !!V+++ !rI   zMultiOutputEstimator, Estimatorc                    t         j                  j                  d      }|j                  dd      |j	                  ddd      }}|j                  ddg|j                  dd	g
      j                  t              }t         j                  ||<   t        t                |             } | |      j                  ||      j                  ||       y )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_valuesrn    s     ))


#C99RS\\!S':qA::q!fagg$:6==dCDffAdG)+6D""1a(..q!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      |	      }|j                  ||       g dg}ddgg}t        |j	                  |      |       y )
Nrb   rd   rq   r2   rc   rU   r   r   r#  )r   r   r;   r(   r<   )ro  r=   r>   r"  r  rA   rB   s          rG   !test_classifier_chain_tuple_orderrq    s    	I/A
Q!Q!Q A1vEAA>eE 
IIaOF!fXFemmF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  |j                  | |       d d d        y # 1 sw Y   y xY w)
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_orderrt  
  sj    	I/A
Q!Q!Q A1a&ME24EBE	z	9		!Q 
:	9	9s   A00A9c                     t        ddddd      \  }}t        ||d      \  }}}}d}t        t               g ddd	
      }|j	                  ||       t        j                  || j                         d         sJ y )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   patternr+  s	            rG   test_classifier_chain_verboser}    s    )!q11DAq (811'M$GVWf	A  ! 	J NN7G$88GV..03444rI   c                     t        ddd      \  }}t        ||d      \  }}}}d}t        t               g ddd	      }|j	                  ||       t        j                  || j                         d         sJ y )
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   Trw  )r
   r   r"   r   r;   ry  rW   rz  )	r{  r=   r>   r?   rA   r@   rB   r|  r,  s	            rG   test_regressor_chain_verboser  +  s    SAAFDAq'711'M$GVWf	A 
 	I MM'7#88GV..03444rI   c                      t        d      \  } }t        dt        d      fgt               d      }t	        |      j                  | |      }|j                  |        y	)
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  >  sZ     D)DAqLa89:G 
1
5
5a
;C KKNrI   zCls, methodr;   rO   c                     t        d      \  }} | t                     }t        j                  t        d      5   t        ||      ||d       ddd       y# 1 sw Y   yxY w)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  sQ     ,DAq
)+
,C	z)?	@VQ* 
A	@	@s   AA#c                      t        t                     } d}t        j                  t        |      5  t        | d       d d d        y # 1 sw Y   y xY w)Nz:This 'MultiOutputRegressor' has no attribute 'partial_fit'rV   rO   )r!   r   rX   rY   r   r   )r`  r[   s     rG   *test_multioutput_regressor_has_partial_fitr  \  s;     /1
2C
FC	~S	1]# 
2	1	1s   AA)ry  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  r*  r3  r8  r:  rM  rU  ra  rn  r   rs  rq  rt  r}  r  r  r  r   rI   rG   <module>r     s   	     /  : 
 . (	 	 	 > B 2  + ! / ! 
 ,$C.   	
  : D& xII	[[Ra Ra BOORRL! 	:GGAJ				"	
s299r2rl+
,	 9 'BTP>.S:L$,6^D(J&( *_i,HI) J)7:	 )5H)IJ: K:$ .94 :4. J *_>Q,RS. T	
.(	 .9' :'>$ 	7	7. A.4!DE.A>?@@0. 00? 0  "">"PQ3H335	

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