
    ה9i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j                  j                  de@e?z   e>z   eBz   eAz   e=z         d        ZHd ZId ZJd ZK ej                         ZMeMj                  ZOeMj                  ZQ e7eQd      ZR e7eQd      ZS ej                  eQeReSf      ZUeOj                  \  ZWZXeUj                  d   ZY eZ ej                  eQ            Z\ e] e^ej                  eQeReSf            Z_ej                  j                  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                  d4e@      d5        Zpd6 Zqej                  j                  d1g d7      ej                  j                  d+d,d8g      d9               Zrd: Zsej                  j                  d4e@      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 Zej                  j                  d[e,e/g      d\        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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   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
             h/var/www/html/backtest/airagagent/rag_env/lib/python3.12/site-packages/sklearn/tests/test_multioutput.pytest_multi_target_regressionrG   <   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 )	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   sI   ##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BrH   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   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
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 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rsVF
u!4
5C%e&;<JGGGWNN#G,g6FZ//0@0HIrH   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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    	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 )
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    	IA
%(A	c
A 1q!IJE	aA 
c
A
|QG
HCOOAq!;;q>!Q5==#3A#6q#9999rH   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 )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    
Y	B%.5%.	)B	c
A !:!JKE	IIb"a 
Iy)A
%%8A
8aH
ICGGAqM/FF+U]]6-BCrH   rT   r6   rb   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_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      sr    "
QON
q
9COOAq'"??1DOOAq??1D{Q4 rH   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 )NrT   rK   rL   predict_probarw   rx   )r   r   r:   r<   r=   rO   )r}   multi_target_linears     rF   'test_hasattr_multi_output_predict_probar      sx     #A>N/?Aq!*O<<< #
QON/?Aq!&888rH   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)NrT   rK   rL   ry   )hingerw   modified_huberc                     t        | d      ryy)Nr   rl   g        )rO   )	estimatorr<   r=   s      rF   custom_scorerz6test_multi_output_predict_proba.<locals>.custom_scorer   s    9o.rH   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      sK   "A>N<=E H 09Aq!%%a( #A>N/?Aq!KJCJJI	~Y	7 -9))!,- ioo//@@@Y__667777ioo//99>JJJY__66@@AAAA- -s   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 )	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     sv    #
QON/? qJ##AkzNAkzNG#T+33A6y!%6%<%<<<<##AjkNAjkNC,44Q7y!%7%=%==== 1X P~.""kzNAkzk1n-wqz 	# 	
 	>11!46G16MN""1Z[>1Z[!^3DE>11!46HA6NOPrH   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)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   /  sS    "
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
   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  sI    $!DF/7 Aq!%--a0Ky![%6%6666'55a8M}***, C9%)<)B)BBBBC ryy=!9BKP 1X S-AqAwGOOA&'4AqD0A+BBBB4 5 5a 894a@P;QR	SrH   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   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 1X L 1Q!Q$($,,Q/0DQT9J4KKKKLrH   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        | 	            }|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  )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  s8   D ))


%C 	

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


?#A"BDIN!.1E	IIb"a 
Iy/:A
Q!Q!Q!Q(A"BDIN

/CGGAqMFckk&15==3HIrH   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   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
: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   rW   rX   r   getattrr<   )r   r   s     rF   "test_multi_output_not_fitted_errorr     sD       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'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     sX   
   2 4
5C3(((GGAqM3(((  	
,CsO,,,JIEI	~Y	7 9!ioo//@@@IOO556666GGAqMsO,,,	~Y	7 9!ioo//@@@IOO556666  s   
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_informativer4   z#06brb   )r   r7   r   formatint)r<   r=   yyyyyY_multis        rF   -generate_multilabel_dataset_with_correlationsr     si     3"BUVDAq hhqQVB-?-CDcSD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(   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!Qi 
 %%a(F<<177"""!33A6JQHx('9999rH   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          rF   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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                     }|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>   r@   Y_trainY_testovr
Y_pred_ovrchainY_pred_chains
             rF   +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   rH   )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   rT   r        ?)r   r   r   r:   r;   r   r|   coef_r   r   r9   r   r7   expr(   r   r   )	r   r   r<   r   r  r   cY_probr   s	            rF   %test_classifier_chain_fit_and_predictr  8  s     9:DAq.0|LE	IIaO]]1F<<177""""'"3"34QAGGLL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 )NrT   )r   r!   r   r:   r;   r   r|   r  r   r   r9   )r<   r   r  r   r  s        rF   $test_regressor_chain_fit_and_predictr  Q  s    8:DAq57#E	IIaO]]1F<<177""""'"3"34QAGGLL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 )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uw1%K  '		(Ax(||qww&&&'rH   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   *   )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_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P 	>JD$%djj$**=	>>rH   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   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_predictr1  ~  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6rH   r   )r   c                    t        |       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=   r   classes_r   r   r   r%  r{   r(   )r   estimator_classesexpected_classess      rF   test_multi_output_classes_r6    s{     i $$Q*Ii(($///y!!"i////27I<N<N/O @++,.>?@rH   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        rF   r:   zDummyRegressorWithFitParams.fit      %w{1a//rH   r   __name__
__module____qualname__r:   __classcell__rA  s   @rF   r8  r8        0 0rH   r8  c                         e Zd Zd fd	Z xZS )DummyClassifierWithFitParamsc                 4    || _         t        | 	  |||      S r   r:  r=  s        rF   r:   z DummyClassifierWithFitParams.fit  rB  rH   r   rC  rH  s   @rF   rK  rK    rI  rH   rK  zestimator, datasetprior)strategyr1   r2   c                     t        |       } |\  }}t        j                  |      }| j                  |||       | j                  D ]  }d|j
                  v rJ  y )N)
some_paramrP  )r   r7   r8   r:   r|   r;  )r   datasetr<   r=   rP  dummy_estimators         rF   *test_multioutput_estimator_with_fit_paramsrS    s`     i IDAqq!JMM!Q:M.$00 ;:::::;rH   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   r1   r2   c                        e Zd Z fdZ xZS )0test_regressor_chain_w_fit_params.<locals>.MySGDc                 <    |d   | _         t        |   ||fi | y )Nr?  )sample_weight_r<  r:   )r>  r<   r=   r@  rA  s       rF   r:   z4test_regressor_chain_w_fit_params.<locals>.MySGD.fit  s#    ",_"=DGK1+
+rH   rC  rH  s   @rF   MySGDrV    s    	, 	,rH   rY  r?  )r7   r   r   r   r
   randr   r   r!   r:   r|   rX  )r   r<   r=   weightrY  model	fit_paramests           rF   !test_regressor_chain_w_fit_paramsr_    s    
))


"C##aa@DAqXXaggaj!F, ,
 57#E !&)IEIIa i    ,!!V+++,rH   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  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_valuesrl    s     ))


#C99RS\\!S':qA::q!fagg$:6==dCDffAdG)+6D""1a(..q!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      |	      }|j                  ||       g dg}ddgg}t        |j	                  |      |       y )
Nra   rc   rp   r1   rb   rT   r   r   r!  )r   r   r:   r'   r;   )rm  r<   r=   r   r  r@   rA   s          rF   !test_classifier_chain_tuple_orderro    s    	I/A
Q!Q!Q A1vEAA>eE 
IIaOF!fXFemmF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  |j                  | |       d d d        y # 1 sw Y   y xY w)
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_orderrr    ss    	I/A
Q!Q!Q A1a&ME24EBE	z	9 		!Q  s   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   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   patternr)  s	            rF   test_classifier_chain_verboser{    s    )!q11DAq (811'M$GVWf	A  ! 	J NN7G$88GV..03444rH   c                     t        ddd      \  }}t        ||d      \  }}}}d}t        t               g ddd	      }|j	                  ||       t        j                  || j                         d         sJ y )
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   Tru  )r
   r   r!   r   r:   rw  rV   rx  )	ry  r<   r=   r>   r@   r?   rA   rz  r*  s	            rF   test_regressor_chain_verboser~  ,  s    SAAFDAq'711'M$GVWf	A 
 	I MM'7#88GV..03444rH   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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  ?  sZ     D)DAqLa89:G 
1
5
5a
;C KKNrH   zCls, methodr:   rN   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.
    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  sW     ,DAq
mo
C	z)?	@ +VQ*+ + +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'rU   rN   )r    r   rW   rX   r   r   )r^  rZ   s     rF   *test_multioutput_regressor_has_partial_fitr  ]  sD     /1
2C
FC	~S	1 $]#$ $ $s   AAri  c                    t        j                  ddgddgg      }t        j                  ddgddgg      }t               }t        j                  t
              5   | |      j                  ||       ddd       t        j                  t              5   | ||      j                  ||       ddd       y# 1 sw Y   FxY w# 1 sw Y   yxY w)	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   )ri  r<   r=   r   s       rF   test_base_estimator_deprecationr  g  s     	1a&1a&!"A
1a&1a&!"A"$I	m	$ 6+//156 
z	" Ki@DDQJK K6 6K Ks   B9C9CC)rw  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  r(  r1  r6  r8  rK  rS  r_  rl  r   rq  ro  rr  r{  r~  r  r  r  r   rH   rF   <module>r     s   	     /  : 
 . (   > B 2  + ! / ! 
 ,$C.   	
  : D& xII	[[Ra Ra BOORRL! 	:GGAJ				"	
s299r2rl+
,
 	  	 9 'BTP>.S:L$*6Z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++$ &GHK IKrH   