
    ^ic                        d Z ddlZddlmZmZ ddlmZ ddlmZm	Z	m
Z
mZmZmZ 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 dd	lmZ d
dlmZ d
dlmZ edej@                  de
e!   fd       Z"edejF                  de
e!   fd       Z"ede	e$ef   de
e!   fd       Z"deej@                  ejF                  e	f   de
e!   fdZ"de$deddfdZ%de$de&deddfdZ'de(de(de(de$de$ddfdZ)de(de(de(de(de$de&de&ddfdZ*d e(d!ejV                  d"ejV                  d#eddf
d$Z,de$d%e&ddfd&Z-de$de$ddfd'Z. ej^                  ej`                        jb                  Z2d
Z3d(e(de(d)e(de$d*e!de$d+e&d,e&d-e&dejh                  fd.Z5d/e(d0e(d1e(d2e(de$de$d,e&ddfd3Z6d/e(d0e(d2e(de$de$d,e&ddfd4Z7de$deddfd5Z8de$deddfd6Z9de$de&deddfd7Z:d8e	e$ef   d9ejh                  d:e(de	e$ef   fd;Z; G d< d=ejx                  jz                        Z>y)>zTests for updaters.    N)partialupdate_wrapper)ascii_lowercase)AnyDictListOptionalUnionoverload)_parse_version)is_pd_cat_dtype   )DataIter   )CatIter)Devicemodelreturnc                      y N r   s    X/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/xgboost/testing/updater.pyget_basescorer      s    7:    c                      y r   r   r   s    r   r   r      s    69r   c                      y r   r   r   s    r   r   r      s    9<r   c                    t        | t        j                        r| j                         } t        | t              r| d   d   d   }n,t        j                  | j                               d   d   d   }t        j                  |      S )z1Get base score from an XGBoost sklearn estimator.learnerlearner_model_param
base_score)
isinstancexgbXGBModelget_boosterdictjsonloadssave_config)r   
jintercepts     r   r   r   !   sz     %&!!#%9%&;<\J
ZZ 1 1 34Y?@UV

 ::j!!r   tree_methoddevicec                 h    ddl m}m}m} dt        j
                  dt        j
                  ddf fd} |dd	
      \  }} |||        |ddd	      \  }} |||       	 ddt        j
                  dt        j
                  dt        t        j
                     dt        t           f fd} |dd	
      \  }} |||        |dddd	      \  }} |||        |dd	ddd      \  }} |||      }	t        j                  j                  t	        j                  |	      d       t	        j                  t	        j                  |	      dkD        sJ t	        j                  |t	        j                  t	        j                   |      t	        j                  t	        j"                  t        j$                        j&                  g      g            d   |j(                  d   z  }
t        j                  j                  |	|
       t        j*                  j-                  d      }|j/                  dd|j(                  d   f      } ||||      }	t        j                  j                  t	        j                  |	      d       t	        j                  t	        j                  |	      dkD        sJ y)zTest for init estimation.r   )make_classificationmake_multilabel_classificationmake_regressionXyr   Nc                 @   t        j                  
dd	      }|j                  | || |fg       t        |      }|j	                         d   d   d   }|j
                  dk(  rdn|j                  d   }t        j                  |fdt        j                        }t        j                  
	dd|	      }|j                  | || |fg       t        |      }|j	                         d   d   d   }t        j                  ||      j                         rJ ||k  sJ y )
Nr   r+   	max_depthn_estimatorsr,   eval_setvalidation_0rmser         ?shape
fill_valuedtype)r+   r,   r5   r6   r!   )r#   XGBRegressorfitr   evals_resultndimr=   npfullfloat32iscloseany)r1   r2   regbase_score_0score_0	n_targets	interceptbase_score_1score_1r,   r+   s            r   run_regz&check_init_estimation.<locals>.run_reg:   s   #qq
 	1Ax($S)""$^4V<Q?1A!''!*	GG9,3bjjQ	# 
 	1Ax($S)""$^4V<Q?::lL9==???   r         )	n_samplesrandom_state   )rS   rL   rT   wc                 `   t        j                  dd
      }||j                  | ||| |fg|g       n|j                  | || |fg       t        |      }|j                  dk(  r|j                         d   d   d   }n|j                         d   d	   d   }|j                  dk(  rdn|j                  d   }t        j                  |fd
t        j                        }t        j                  dd
|      }||j                  | ||| |fg|g       n|j                  | || |fg       t        |      }|j                  dk(  r|j                         d   d   d   }	n|j                         d   d	   d   }	t        j                  ||      j                         rJ ||	dz   k  sJ |S )Nr   r4   )sample_weightr8   sample_weight_eval_setr7   r   r9   loglossr   mloglossr;   r<   )r+   r5   r6   r,   r!   g-C6?)r#   XGBClassifierrA   r   
n_classes_rB   rC   r=   rD   rE   rF   rG   rH   )r1   r2   rV   clfrJ   rK   rL   rM   rN   rO   r,   r+   s             r   run_clfz&check_init_estimation.<locals>.run_clfY   s    #qq
 =GG1A!QRSQT   GGAqQF8G,$S)>>Q&&(8CAFG&&(8DQGG1A!''!*	GG9,3bjjQ	# 
 =GG1A!QRSQT   GGAqQF8G,$S)>>Q&&(8CAFG&&(8DQGG::lL9==???4'''r      )rS   n_labels	n_classesrT      )rS   rT   rb   n_informativen_redundant      ?)bins  r   lowhighsizer   )sklearn.datasetsr.   r/   r0   rD   ndarrayr	   r   floattestingassert_allclosesumallarray	histogramconcatenateuniquefinforF   maxr=   randomdefault_rnguniform)r+   r,   r.   r/   r0   rP   r1   r2   r_   rM   np_intrngrV   s   ``           r   check_init_estimationr   2   s@    !2:: !"** ! !0 T;DAqAqMTQRHDAqAqM AE)::)**))1"**)=)	e)X B?DAqAqM)abDAq AqMR1BTUDAq 1IJJrvvi0#666"((9%)***
BNNBIIaL"((BHHRZZ<P<T<T;U2V#WX	

	 ''!*	  JJy&1
))


%C6A1a IJJrvvi0#666"((9%)***r   weightedc                 n   ddl m} ddlm} ddlm} d}d}d}t        j                  j                  d      }	 ||||	      \  }
}|r|	j                  |	      }nd
}t        j                  |
||      }t        j                  ddg      }t        j                  |j                  t        j                        }i }t        j                  d| |||d|||dfg|      }|j!                  |d      }t#        j$                  |d   d         sJ |d   d   d   dk  sJ t'        |j(                        D cg c]#  } |t+        t-        ||||         |            % }}t        j.                  |j                        }t'        |j                  d         D ]  }||   }t        j                  d| ||||   d|||dfg||   |      }t#        j$                  |d   d         sJ |d   d   d   dk  sJ t        j0                  j3                  t        j                  |d   d         t        j                  |d   d         dd       |j!                  |      |d
d
|f<    t'        |j                  d         D ]0  }t        j0                  j3                  |d
d
|f   |d
d
|f          2 y
c c}w )zTest for quantile loss.r   r0   )mean_pinball_loss)_metric_decoratorrQ      rh   )rS   
n_featuresrT   rl   Nweightg?r;   )r=   r?   reg:quantileerror)	objectiver+   r,   quantile_alphar!   Trainnum_boost_roundevalsrB   T)strict_shapequantile      4@)rX   alpha)r   r   custom_metricrB   g      >@r   gư>)atolrtol)rm   r0   sklearn.metricsr   xgboost.sklearnr   rD   rz   RandomStater#   QuantileDMatrixrt   zerosr=   rF   trainpredicttmnon_increasingrangerl   r   r   emptyrp   rq   )r+   r   r,   r0   r   r   rS   r   r6   r~   r1   r2   r   Xyr   r!   rB   booster_multipredt_multiimetricspredtsa	booster_is                           r   check_quantile_lossr      s   011IJL
))


%CDAq
 +			Q&	1BHHc3Z E 2::>J$&LII,&#$	
 	$G}o!M  '''>K\'2:>??? ,R04777 uzz"  	)uQxP!	
G  XXk''(F5;;q>" -!HII0* "#(m (=/!!*%
	   g!6z!BCCCG$Z04t;;;


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


""6!Q$<QT1BCDMs   7(J2n_samples_per_batchr   	n_batchesc           	         t        j                  t        j                  | |||dk7        ddd}t        j                  |      }|d|ddgd}t        j
                  ||      }|j                         \  }	}
}t        j                  |	|
|	      }t        j
                  ||      }|j                  |      }|j                  |      }t        j                  j                  ||       y
)z2Check external memory with the quantile objective.cpucacheFr   on_hostr   g?皙?)r+   r   r,   r   r   N)r   IteratorForTestmake_batchesr#   DMatrixr   	as_arraysr   rD   rp   rq   )r   r   r   r+   r,   itXy_itparams
booster_itr1   r2   rV   r   boosterpredt_itpredts                   r   check_quantile_loss_extmemr      s     
			,j)Vu_	U
B
 KKOE"(*	F 65)JllnGAq!	Q!	$Bii#G!!%(HOOBEJJuh/r   n_binsr   is_catc                   |rt        | ||dddd|d	      }n0t        j                  t        j                  | |||dk7        d|d	}t	        j
                  |||
      }t        j                  t        d      5  t	        j                  |d|d|d      }	ddd       t	        j                  ||d|d      }	|rt        | ||dddd|d	      }n/t        j                  t        j                  | |||dk7        ddi}t	        j                  |||
      }
t	        j                  ||d|
d      }|j                         }|
j                         }t        j                  j                  |d   |d          t        j                  j                  |d   |d          |	j                  |      }|j                  |
      }t        j                  j                  ||       y# 1 sw Y   MxY w)z+Basic test for the `ExtMemQuantileDMatrix`.r`           r;   Fr   )	r   r   r   n_catssparsity	cat_ratioonehotr,   r   r   use_cupyr   max_binenable_categoricalzOnly the `hist`)matchapprox)r,   r+   r   r   r   N)r,   r   r   r   )r   r   r   r   r#   ExtMemQuantileDMatrixpytestraises
ValueErrorr   r   get_quantile_cutrD   rp   rq   r   )r   r   r   r   r,   r   r   r   r   r   r   r   cut_itcutr   r   s                   r   check_extmem_qdmr     s     3!

 __#ZVu_ 
 %%b&VTE	z):	; 
YYh6J


 f-uaJ  3!

 __#ZVu_
 	
 
		RF	KBii6f=rSTUG##%F



CJJvay#a&1JJvay#a&1!!%(HOOBEJJx/O
 
s   ;G##G-	n_entriesindptrdatadtypesc                    |j                   d   |d   k(  sJ |j                   d   | k(  sJ |j                  t        j                  k(  sJ t	        d|j
                        D ]t  }t        ||dz
           }t        ||         }t	        |dz   |      D ]A  }||   ||dz
     kD  sJ t        |j                  |dz
           s/||   ||dz
     dz   k(  rAJ  v y)zCheck the cut values.r   r   r   N)	r=   r?   rD   uint64r   rl   intr   iloc)r   r   r   r   r   begendjs           r   	check_cutr   g  s     ::a=F2J&&&::a=I%%%<<299$$$1fkk" 2&Q- &)nsQw$ 	2A7T!a%[(((v{{1q512Aw$q1u+/111	22r   r   c                    ddl }d}d}d}|j                  t        j                  g|z        }t	        j
                  |||      \  }}}	t        j                  |||	|      }
|
j                         \  }}t        |dz   |z  |||       t        j                  |||		      }
t        j                  | |d
|
       |
j                         \  }}t        |dz   |z  |||       d}d}t	        j                  t	        j                  ||||      ddd}t        j                  |      }t        j                  | |d
|
       |
j                         \  }}t        |dz   |z  |||       d}t	        j                  |||dd      \  }}|r*ddl}ddl}|j#                  |      }|j%                  |      }t        j                  |||d      }|j                         \  }}t        ||z  |||j&                         t        j                  ||d      }t        j                  | |d
|       |j                         \  }}t        ||z  |||j&                         t	        j                  |||ddd      \  }}t)        |j&                  D cg c]  }t+        |      sd c}      }||z
  }||z  |dz   |z  z   }t        j                  |||d      }|j                         \  }}t        ||||j&                         t        j                  ||d      }t        j                  | |d
|       |j                         \  }}t        ||||j&                         yc c}w )zCheck with optional cupy.r   Ni         r   )r   r   r   r   )r+   r   rU      r   Fr       r   )r   r   Tr   r   r;   )r   r   r   )pandasSeriesrD   rF   r   r0   r#   r   r   r   r   r   r   r   make_categoricalcudfcupyfrom_pandasrt   r   lenr   )r+   r   pdrS   r   r   r   r1   r2   rV   Xywr   r   r   r   r   r   n_categoriesr   cpr?   n_cat_featuresn_num_featuresr   s                           r   check_get_quantile_cut_devicer   x  s!   IJGYY

|j01F   JJGAq!**1a7KC'')LFDw{j(&$?
++a1
%CIIkg>D'')LFDw{j(&$?I				,j)X	N
B
 kk"oBIIkg>D'')LFDw{j(&$? L:|ECDAq QHHQK			Q7t	LB&&(LFDlZ'qxx@	Qd	3BIIkg>C&&(LFDlZ'qxx@ :|ECSVDAq L_U5K!LMN.0N~-10NNI			Q7t	LB&&(LFDiqxx0	Qd	3BIIkg>C&&(LFDiqxx0 Ms   	MMc                 \    |j                  d      }t        | d       |rt        | d       yy)zCheck the quantile cut getter.cudaFTN)
startswithr   )r+   r,   r   s      r   check_get_quantile_cutr     s0       (H!+u5%k48 r   rS   r   r   r   extmemr   c                X   t        t        d|       d      }	t        | |	z  ||	|d||||rdnd 	      }
|rK|dk(  rt        j                  |
|      }|S |dk(  rt        j
                  |
|      }|S t        d	| d
      |
j                         \  }}t        j
                  |||      }|S )Nr   r   rf   r   )r   r   r   r   r   r,   r   histr   r   ztree_method z not supported.)ry   minr   r#   r   r   r   xy)rS   r   r   r,   r   r+   r   r   r   r   r   r   catlabels                 r   _create_dmatrixr    s     C9%q)I	YgT

B & !77'9B I H$R4FGB I	 |K=HIIUUW
U[[e8JKIr   rowscolsroundscatsc                    i }i }|t         |d}	t        | |||dd||d	      }
t        j                  |	|
||
dfg|       t        | |||d|d|d	      }t        j                  |	|||dfg|       t        j
                  j                  t	        j                  |d   d	         t	        j                  |d   d	         d
       t        j                  |d   d	         sJ i }t        |	d<   d|	d<   t        j                  |	|||dfg|       |d   d	   }|d   d	   }t        ||      D ]  \  }}||k\  rJ  d|	d<   i }t        j                  |	|d|dfg|       t        j                  |d   d	         sJ |       y)z0Test for one-hot encoding with categorical data.)r+   max_cat_to_onehotr,   r   TF)r   r,   r   r   r+   r   r   r   r   )r   r,   r   r+   r   r   r   r:   gMbP?r   r
  r   
reg_lambdarf   r   N)
USE_ONEHOTr  r#   r   rD   rp   rq   rt   r   r   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A57K&.J"# J|II !  !)&1GW%f-JGZ( 1Avv  #J|KII !  [1&9:GKG:r   c                   	 ||d	t        | ||d||d|d	      j                         dt        ddf	fd	} |t                |t               y)
z+Check categorical data with missing values.r+   r,   r;   FT)r   r   r,   r+   r   r   r   r
  r   Nc                 ,   | d<   i }t        j                  ddfg|      }t        j                  |d   d         sJ |j	                        }t        j
                  |      }t        j                  j                  ||d   d   d   d       y )	Nr
  r   r   r   r:   r   gh㈵>r  )	r#   r   r   r   r   root_mean_squarerD   rp   rq   )r
  rB   r   y_predtr:   r   r  r  s        r   runz&check_categorical_missing.<locals>.runq  s    *;
&'(*))=/%
   g!6v!>???//"%""5'2


""4g)>v)Fr)JQU"Vr   )r  	get_labelr   r  r  )
r  r  r  r,   r+   r   r  r   r  r  s
          @@@r   check_categorical_missingr!  Y  si     2=!OJ	

B LLNEWs Wt W& 
O Mr   c                    ddl }t        j                  j                  d      }d}d}|j	                  t        |      D cg c]1  }dj                  |j                  t        t              d            3 c}d	      d| j                         }t        j                  d
| |d      }|j	                  t        |            }	|j                  ||	||	fg       t        j                  |j!                         d   d         sJ yc c}w )z6Test data with size smaller than number of categories.r   Nd   r`    rU   r   category)r?   T
   )r   r+   r,   r6   )r1   r2   r8   r9   r:   )r   rD   rz   r{   r   r   joinchoicelistr   to_framer#   r@   rA   r   r   rB   )
r+   r,   r   r~   n_catnr   r1   rI   r2   s
             r   run_max_catr-    s    
))


"CE	A
		EJ5\RD1:	;R 	 	 	q	
 (* 
 

	C 			%(AGGa1AxG(S--/?GHHH 	Ss    6Dc                    t         j                  j                         }|j                  ddd      j	                  dd      }|j                  ddd      }t        j                  t         j                        j                  dz   |d	<   t        j                  ||d
gdz        }t        j                  t              5  t        j                  | |d|       ddd       d|d	<   t        j                  ||d
gdz        }t        j                  t              5  t        j                  | |d|       ddd       |j                  ddd      j	                  dd      }|j                  ddd      }t        j                  ||d
gdz        }t        j                  t              5  t        j                  | |d|       ddd       |dk(  reddl}|j!                  |      |j!                  |      }}t        j                  t              5  t        j"                  ||d
gdz        }ddd       yy# 1 sw Y   `xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w)z%Test with invalid categorical inputs.r      i  ri   r#  r&  r   )locscalerl   )      c)feature_typesr  Ni   r   )rD   rz   r{   integersreshapenormaliinfoint32ry   r#   r   r   r   r   r   r   rt   r   )r+   r,   r~   r1   r2   r   r   s          r   run_invalid_categoryr;    s   
))


!C.66sB?A

q
,Axx!%%)AeH 
Q#	4B	z	" F		+@"EF AeH	Q#	4B	z	" F		+@"EF 	

q
-55c2>A

q
,A	Q#	4B	z	" F		+@"EF xx{BHHQK1]]:& 	E$$Q#DB	E 	E	 !F F
F FF F	E 	Es0   ?H7I*II7IIII&c                 x   t         j                  j                  d      }ddlm} ddlm} ddlm} d} ||d|      \  }}	|rw|j                  |	      }
|
|
j                         z  }
t        j                  ||	|

      }t        |      \  \  }}}}|dkD  s|dk\  rddi}nddi} |j                  |	|
fi |}n+t        j                  ||	      }t        j                  |	      }t        j                   | |d|d|d      }t        j                   | d|d|d      }t#        j$                  |j'                               }t#        j$                  |j'                               }t)        |      t)        |      k(  sJ |j+                  d      }t        j,                  |      }t#        j$                  |j'                               }t)        |      t)        |      k(  sJ t        j                   | |dz   d|d|d      }t#        j$                  |j'                               }t         j.                  j1                  t)        |      t        j2                  t)        |            dz          i }t        j                   | |dddd|d|dfg|       |d   d   }|d   dk  sJ t5        j6                  |      sJ y )!zTest for adaptive trees.rh   r   )__version__r   )statsr   r   )rT   r   r   r   r3  percentile_rank2   
percentilezreg:absoluteerror)r+   r!   r   r,   r   )r+   r   r,   ubj)
raw_format)
model_filerf   r   )r+   r,   r   	subsampleetar&  r   r   maer   r   N)rD   rz   r   sklearnr=  rm   r0   sklearn.utilsr>  r8  r   r#   r   r   _weighted_percentilemedianr   r'   r(   r)   r   save_rawBoosterrp   rq   asarrayr   r   )r+   r   r,   r~   sklearn_versionr0   r>  rS   r1   r2   rV   r   sk_majorsk_minor_kwargsr!   	booster_0	booster_1config_0config_1raw_booster	booster_2config_2rB   rG  s                             r   run_adaptiver[    s   
))


%C60#I2CDAq JJIJ&	QUUW[[Aa(%3O%D"8Qa<8q=',F"B'F/U//q


 [[AYYq\
		&$,		
 		I 		&,	

 	I zz)//12Hzz)//12H"mH&====$$$6K{3Izz)//12H"mH&====		&$s*,		
 		I zz)//12HJJhM(,C!Dq!H 02LII&,	
 	G}o! w

&Cr7T>>S!!!r   paramdmat
num_roundsc                 "   i }t        j                  | |||dfgd|      }|j                         |j                         k(  sJ |j	                         |k(  sJ |j
                  |j
                  k(  sJ |j                  |j                  k(  sJ |S )z-Get training result from parameters and data.r   F)r   verbose_evalrB   )r#   r   num_featuresnum_colnum_boosted_roundsfeature_namesr5  )r\  r]  r^  resultr   s        r   train_resultrf    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                   <    e Zd ZdZdej
                  dededefdZ	y)ResetStrategyz"Callback for testing multi-output.r   epoch	evals_logr   c                 b    |dz  dk(  r|j                  ddi       y|j                  ddi       y)Nr   r   multi_strategymulti_output_treeone_output_per_treeF)	set_param)selfr   ri  rj  s       r   after_iterationzResetStrategy.after_iteration7  s=    19>OO-/BCD  OO-/DEFr   N)
__name__
__module____qualname____doc__r#   rM  r   r&   boolrq  r   r   r   rh  rh  4  s+    ,S[[   RV r   rh  )?ru  r'   	functoolsr   r   stringr   typingr   r   r   r	   r
   r   numpyrD   r   xgboostr#   xgboost.testingrp   r   xgboost.corer   xgboost.datar   corer   	data_iterr   utilsr   r$   ro   r   rM  strr   rv  r   r   r   r   rn   r   r   r   r9  r:  ry   r  r  r   r  r  r!  r-  r;  r[  rf  callbackTrainingCallbackrh  r   r   r   <module>r     s     - " = =     ' (    
 : :$u+ : 
 : 
 9 9e 9 
 9 
 <c3h <DK < 
 <"s{{D01"	%[""l+s l+F l+t l+`WDS WDD WD& WDT WDt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 RXXbhh##
$$$ 	$
 $ $ $ $ $ $ 	[[$NbH
bH bH 	bH
 bH bH bH bH 
bHJ.
.
. .
 . . . 
.bIS I& IT I0Ec E6 Ed EDX"c X"T X"6 X"d X"vS>!$:=	#s(^*CLL11 r   