
    ГhH                     t   S r SSKrSSKJrJr  SSKJrJrJrJ	r	J
r
  SSKrSSKrSSKrSSKJr  SSKJr  SSKJr  SS	KJr  \
S
\R2                  S\4S j5       r\
S
\R8                  S\4S j5       rS
\	\R2                  \R8                  4   S\4S jrS\SS4S jrS\S\SS4S jr S\!S\!S\!S\S\SS4S jr"S\!S\!S\!S\!S\S\S\SS4S jr#S\!S\RH                  S\RH                  S\SS4
S  jr%S\S!\SS4S" jr&S\S\SS4S# jr'\RP                  " \RR                  5      RT                  r+Sr,S$\!S\!S%\!S\S&\S\S'\S(\S)\S\RZ                  4S* jr.S+\!S,\!S-\!S.\!S\S\S(\SS4S/ jr/S+\!S,\!S.\!S\S\S(\SS4S0 jr0S1\\\4   S2\RZ                  S3\!S\\\4   4S4 jr1 " S5 S6\Rd                  Rf                  5      r4g)7zTests for updaters.    N)partialupdate_wrapper)AnyDictListUnionoverload)is_pd_cat_dtype   )DataIter   )CatItermodelreturnc                     g N r   s    jC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\xgboost/testing/updater.pyget_basescorer      s    14    c                     g r   r   r   s    r   r   r      s    03r   c                     [        U [        R                  5      (       a  U R                  5       n [	        [
        R                  " U R                  5       5      S   S   S   5      nU$ )z1Get base score from an XGBoost sklearn estimator.learnerlearner_model_param
base_score)
isinstancexgbXGBModelget_boosterfloatjsonloadssave_config)r   r   s     r   r   r      sX    %&&!!#

5$$&'	23HI,WJ r   tree_methodc                 P  ^  SSK JnJnJn  S[        R
                  S[        R
                  SS4U 4S jjnU" SS	S
9u  pVU" XV5        U" SSS	S9u  pVU" XV5        S[        R
                  S[        R
                  SS4U 4S jjnU" SS	S
9u  pVU" XV5        U" SSSS	S9u  pVU" XV5        g)zTest for init estimation.r   )make_classificationmake_multilabel_classificationmake_regressionXyr   Nc                   > [         R                  " TSSS9nUR                  XX4/S9  [        U5      nUR	                  5       S   S   S   n[         R                  " TSSSS9nUR                  XX4/S9  [        U5      nUR	                  5       S   S   S   n[
        R                  " X55      (       a   eXF:  d   eg )Nr   r%   	max_depthn_estimatorseval_setvalidation_0rmser   r%   r.   r/   boost_from_average)r   XGBRegressorfitr   evals_resultnpisclose)r*   r+   regbase_score_0score_0base_score_1score_1r%   s          r   run_reg&check_init_estimation.<locals>.run_reg-   s    ;!RSTx($S)""$^4V<Q?#qqUV
 	x($S)""$^4V<Q?::l9999   r         )	n_samplesrandom_state   )rD   	n_targetsrE   c                   > [         R                  " TSSS9nUR                  XX4/S9  [        U5      nUR	                  5       S   S   S   n[         R                  " TSSSS9nUR                  XX4/S9  [        U5      nUR	                  5       S   S   S   n[
        R                  " X55      (       a   eXF:  d   eg )Nr   r-   r0   r2   loglossr   r4   )r   XGBClassifierr7   r   r8   r9   r:   )r*   r+   clfr<   r=   r>   r?   r%   s          r   run_clf&check_init_estimation.<locals>.run_clfC   s    K1STUx($S)""$^4Y?B#qqUV
 	x($S)""$^4Y?B::l9999   r      )rD   n_labels	n_classesrE   )sklearn.datasetsr'   r(   r)   r9   ndarray)r%   r'   r(   r)   r@   r*   r+   rL   s   `       r   check_init_estimationrS   %   s     !2:: !"** ! !  T;DAAMTQRHDAAM!2:: !"** ! !  B?DAAM)abDA AMr   weightedc                    SSK Jn  SSKJn  SSKJn  SnSnSnSn[        R                  R                  S5      n	U" UUU	S	9u  pU(       a  U	R                  US
9nOSn[        R                  " XUS9n[        R                  " SS/5      n0 n[        R                  " SU UUS.UUUS4/US9nUR                  USS9n[        R                  " US   S   5      (       d   eUS   S   S   S:  d   e[!        UR"                  5       Vs/ s H   nU" [%        ['        X<UU   S9U5      5      PM"     nn[        R(                  " UR*                  5      n[!        UR*                  S   5       H  nUU   n[        R                  " SU UUS.UUUS4/UU   US9n[        R                  " US   S   5      (       d   eUS   S   S   S:  d   e[        R,                  R/                  [        R                  " US   S   5      [        R                  " US   S   5      SSS9  UR                  U5      USS2U4'   M     [!        UR*                  S   5       H1  n[        R,                  R/                  USS2U4   USS2U4   5        M3     gs  snf )zTest for quantile loss.r   )r)   )mean_pinball_loss)_metric_decoratorrB              i  )rD   
n_featuresrE   )sizeNweightg?      ?reg:quantileerror)	objectiver%   quantile_alphar   Trainnum_boost_roundevalsr8   T)strict_shapequantileg      4@)sample_weightalpha)rd   re   custom_metricr8   g      >@rV   gư>)atolrtol)rQ   r)   sklearn.metricsrV   xgboost.sklearnrW   r9   randomRandomStater   QuantileDMatrixarraytrainpredicttmnon_increasingranger[   r   r   emptyshapetestingassert_allclose)r%   rT   r)   rV   rW   rD   rZ   r/   r   rngr*   r+   r]   Xyrj   r8   booster_multipredt_multiimetricspredtsa	booster_is                          r   check_quantile_lossr   \   s   011IJL J
))


%CDA
 +			Q&	1BHHc3Z E$&LII,&#$		
 	$G}o!M  '''>K\'2:>???? ,R04777 uzz" #A 	)uQxP!	
 #   XXk''(F5;;q>"!HII0*"#(	 (=/!!*%
	   g!6z!BCCCCG$Z04t;;;


""HH\'*:67HH\'*+>?@	 	# 	
 !((,q!t1 #4 5;;q>"


""6!Q$<QT1BC #Ks   'Jn_samples_per_batchrZ   	n_batchesdevicec           	         [         R                  " [         R                  " XX$S:g  5      SSS.6n[        R                  " U5      nUSUSS/S.n[        R
                  " Xv5      nUR                  5       u  pn[        R                  " XUS	9n[        R
                  " X|5      nUR                  U5      nUR                  U5      n[        R                  R                  X5        g
)z2Check external memory with the quantile objective.cpucacheFr   on_hostr_   g?皙?)r%   r`   r   ra   r\   N)rv   IteratorForTestmake_batchesr   DMatrixrt   	as_arraysru   r9   r{   r|   )r   rZ   r   r%   r   itXy_itparams
booster_itr*   r+   wr~   boosterpredt_itpredts                   r   check_quantile_loss_extmemr      s     
			,)u_	U
B
 KKOE"(*	F 6)JllnGA!	Q!	$Bii#G!!%(HOOBEJJu/r   n_binsr   is_catc                   U(       a  [        U UUSSSSUSS9	nO-[        R                  " [        R                  " XX$S:g  S9SUS	.6n[        R
                  " XsUS
9n[        R                  " [        SS9   [        R                  " USUS.USS9n	SSS5        [        R                  " XCS.USS9n	U(       a  [        U UUSSSSUSS9	nO,[        R                  " [        R                  " XX$S:g  S9SS06n[        R                  " XsUS
9n
[        R                  " XCS.U
SS9nUR                  5       nU
R                  5       n[        R                  R                  US   US   5        [        R                  R                  US   US   5        U	R                  U5      nUR                  U
5      n[        R                  R                  X5        g! , (       d  f       GNG= f)z+Basic test for the `ExtMemQuantileDMatrix`.rN   rY   r^   Fr   )	r   rZ   r   n_catssparsity	cat_ratioonehotr   r   r   use_cupyr   max_binenable_categoricalzOnly the `hist`)matchapprox)r   r%   r   rX   )rd   N)r   r   r   r   )r   rv   r   r   r   ExtMemQuantileDMatrixpytestraises
ValueErrorrt   rr   get_quantile_cutr9   r{   r|   ru   )r   rZ   r   r   r   r   r   r   r   r   r~   r   cut_itcutr   r   s                   r   check_extmem_qdmr      s     3!

 __#u_ 
 %%bVTE	z):	;YYh6J

 
< -uaJ  3!

 __#u_
 	
 
		RF	KBii6=rSTUG##%F



CJJvay#a&1JJvay#a&1!!%(HOOBEJJx/O 
<	;s   5G
G	n_entriesindptrdatadtypesc                    UR                   S   US   :X  d   eUR                   S   U :X  d   eUR                  [        R                  :X  d   e[	        SUR
                  5       Hy  n[        XS-
     5      n[        X   5      n[	        US-   U5       HF  nX'   X'S-
     :  d   e[        UR                  US-
     5      (       d  M4  X'   X'S-
     S-   :X  a  MF   e   M{     g)zCheck the cut values.r   rh   r   N)	rz   dtyper9   uint64rx   r[   intr
   iloc)r   r   r   r   r   begendjs           r   	check_cutr     s     ::a=F2J&&&::a=I%%%<<299$$$1fkk"&Q- &)nsQw$A7Ta%[(((v{{1q5122w$1u+/111 % #r   r   c           	         SSK nSnSnSnUR                  [        R                  /U-  5      n[        R
                  " X4US9u  pxn	[        R                  " XxXS9n
U
R                  5       u  p[        US-   U-  XU5        [        R                  " XxU	S	9n
[        R                  " XS
.U
5        U
R                  5       u  p[        US-   U-  XU5        SnSn[        R                  " [        R                  " XX5      SSS.6n[        R                  " U5      n[        R                  " XS
.U
5        U
R                  5       u  p[        US-   U-  XU5        Sn[        R                  " X4USSS9u  pxU(       a*  SSKnSSKnUR#                  U5      nUR%                  U5      n[        R                  " XxUSS9nUR                  5       u  p[        UU-  XUR&                  5        [        R                  " XxSS9n[        R                  " XS
.U5        UR                  5       u  p[        UU-  XUR&                  5        [        R                  " X4USSSS9u  px[)        UR&                   Vs/ s H  n[+        U5      (       d  M  SPM     sn5      nUU-
  nUU-  US-   U-  -   n[        R                  " XxUSS9nUR                  5       u  p[        UXUR&                  5        [        R                  " XxSS9n[        R                  " XS
.U5        UR                  5       u  p[        UXUR&                  5        gs  snf )zCheck with optional cupy.r   Ni         r   )r]   r   r   r\   )r%   r   rF      r   Fr       r   )r   r   Tr   r   r^   )r   r   r   )pandasSeriesr9   float32rv   r)   r   rr   r   r   r   rt   r   r   make_categoricalcudfcupyfrom_pandasrs   r   lenr
   )r%   r   pdrD   rZ   r   r   r*   r+   r   Xywr   r   r   r   r   r~   n_categoriesr   cpr   n_cat_featuresn_num_featuresr   s                           r   check_get_quantile_cut_devicer   /  s   IJGYY

|j01F   JGA!**1KC'')LFw{j(&?
++a1
%CIIk>D'')LFw{j(&?I				,)	N
B
 kk"oBIIk>D'')LFw{j(&? L|ECDA QHHQK			Q7t	LB&&(LFlZ'qxx@	Qd	3BIIk>C&&(LFlZ'qxx@ |ECSVDA L_U5K!LMN.0N~-10NNI			Q7t	LB&&(LFiqxx0	Qd	3BIIk>C&&(LFiqxx0 Ms   ,L;L;c                 f    UR                  S5      n[        U S5        U(       a  [        U S5        gg)zCheck the quantile cut getter.cudaFTN)
startswithr   )r%   r   r   s      r   check_get_quantile_cutr   w  s0       (H!+u5%k48 r   rD   r   r   r   extmemr   c                T   [        [        SU 5      S5      n	[        X	-  UU	USUUUU(       a  SOS S9	n
U(       aG  US:X  a  [        R                  " XS9nU$ US:X  a  [        R
                  " XS9nU$ [        S	U S
35      eU
R                  5       u  p[        R
                  " XUS9nU$ )Nr   r         ?r   )r   r   r   r   r   r   r   histr   r   ztree_method z not supported.)maxminr   r   r   r   r   xy)rD   rZ   r   r   r   r%   r   r   r   r   r   r~   catlabels                 r   _create_dmatrixr     s     C9%q)I	gT

B & !77B I H$RGB I	 |K=HIIUUW
[[8JKIr   rowscolsroundscatsc                     0 n0 nU[         US.n	[        U UUUSSUUSS9	n
[        R                  " U	U
UU
S4/US9  [        U UUUSUSUSS9	n[        R                  " U	UUUS4/US9  [        R
                  R                  [        R                  " US   S	   5      [        R                  " US   S	   5      S
S9  [        R                  " US   S	   5      (       d   e0 n[        U	S'   SU	S'   [        R                  " U	UUUS4/US9  US   S	   nUS   S	   n[        X5       H  u  nnUU:  a  M   e   SU	S'   0 n[        R                  " U	USUS4/US9  [        R                  " US   S	   5      (       d   U5       eg)z0Test for one-hot encoding with categorical data.)r%   max_cat_to_onehotr   rY   TF)r   r   r   r   r%   r   r   rb   rc   )r   r   r   r%   r   r   r   r3   gMbP?rm   r   r   
reg_lambdar   r   N)
USE_ONEHOTr   r   rt   r9   r{   r|   rs   rv   rw   USE_PARTzip)r   r   r   r   r   r%   r   by_etl_resultsby_builtin_results
parameters	Xy_onehotXy_catby_groupingrmse_oh
rmse_groupr   bs                    r   check_categorical_oher     s    9;N<> #'	"J   
I II7#$# 
F II !' JJ
(01
#G,V45  
 /8@AAAA57K&.J"# J|II !  !)&1GW%f-JG(1Avv )  #J|KII !  [1&9::GKG:r   c                   ^^^	 XCS.m	[        U UUSUUSUSS9	mTR                  5       mS[        SS4UUU	4S	 jjnU" [        5        U" [        5        g)
z+Check categorical data with missing values.)r%   r   r^   FT)r   r   r   r%   r   r   r   r   r   Nc                 .  > U TS'   0 n[         R                  " TTSTS4/US9n[        R                  " US   S   5      (       d   eUR	                  T5      n[        R
                  " TU5      n[        R                  R                  XAS   S   S   SS9  g )	Nr   r   rb   rc   r3   rh   gh㈵>r   )	r   rt   rv   rw   ru   root_mean_squarer9   r{   r|   )r   r8   r   y_predtr3   r~   r   r   s        r   run&check_categorical_missing.<locals>.run(  s    *;
&'(*))=/%
   g!6v!>????//"%""5'2


""4g)>v)Fr)JQU"Vr   )r   	get_labelr   r   r   )
r   r   r   r   r%   r   r   r~   r   r   s
          @@@r   check_categorical_missingr     sm     2=!OJ	

B LLNEWs Wt W W& 
O Mr   paramdmat
num_roundsc           	      &   0 n[         R                  " U UUUS4/SUS9nUR                  5       UR                  5       :X  d   eUR	                  5       U:X  d   eUR
                  UR
                  :X  d   eUR                  UR                  :X  d   eU$ )z-Get training result from parameters and data.rt   F)re   verbose_evalr8   )r   rt   num_featuresnum_colnum_boosted_roundsfeature_namesfeature_types)r   r  r  resultr   s        r   train_resultr  A  s      FiigG !T\\^333%%':555  D$6$6666  D$6$6666Mr   c                   F    \ rS rSrSrS\R                  S\S\S\	4S jr
Srg	)
ResetStrategyiV  z"Callback for testing multi-output.r   epoch	evals_logr   c                 d    US-  S:X  a  UR                  SS05        gUR                  SS05        g)Nr   r   multi_strategymulti_output_treeone_output_per_treeF)	set_param)selfr   r  r  s       r   after_iterationResetStrategy.after_iterationY  s=    19>OO-/BCD  OO-/DEFr   r   N)__name__
__module____qualname____firstlineno____doc__r   Boosterr   dictboolr  __static_attributes__r   r   r   r  r  V  s+    ,S[[   RV r   r  )5r  r"   	functoolsr   r   typingr   r   r   r   r	   numpyr9   r   xgboostr   xgboost.testingr{   rv   xgboost.datar
   corer   	data_iterr   r   r!   r   r  strrS   r  r   r   r   r   rR   r   r   r   iinfoint32r   r   r   r   r   r   r   r  callbackTrainingCallbackr  r   r   r   <module>r.     sM     - 3 3     (   
 4 4% 4 
 4 
 3 3 3 
 3s||S[[89 e 3s 3t 3nTDS TDD TDT TDn000 0 	0
 0 
0>I0I0I0 	I0
 I0 I0 I0 I0 
I0X22JJ2.0jj2BE2	2"E1s E1d E1t E1P9 9S 9T 9 XXbhh##
$$$ 	$
 $ $ $ $ $ $ 	[[$NbH
bH bH 	bH
 bH bH bH bH 
bHJ.
.
. .
 . . . 
.bS>!$:=	#s(^*CLL11 r   