
    =[g5                        d Z ddlZddlmZmZ ddlmZmZmZ ddl	Z
ddlZddlmZ dej                   defdZdeddfd	Zded
eddfdZdede
j0                  de
j0                  deddf
dZdededdfdZdeddfdZ e
j8                  e
j:                        j<                  ZdZ de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dfdZ"deeef   dejF                  dedeeef   fdZ$ G d  d!ejJ                  jL                        Z'y)"zTests for updaters.    N)partialupdate_wrapper)AnyDictListmodelreturnc                     t        t        j                  | j                         j	                               d   d   d         }|S )z1Get base score from an XGBoost sklearn estimator.learnerlearner_model_param
base_score)floatjsonloadsget_boostersave_config)r   r   s     R/var/www/html/bid-api/venv/lib/python3.12/site-packages/xgboost/testing/updater.pyget_basescorer      sE    

5$$&2245i@AVW	
J
     tree_methodc                 p    ddl m}m}m} dt        j
                  dt        j
                  ddf fd} |dd	
      \  }} |||        |ddd	      \  }} |||       dt        j
                  dt        j
                  ddf fd} |dd	
      \  }} |||        |dddd	      \  }} |||       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   }t        j                  ddd      }|j                  | || |fg       t        |      }|j	                         d   d   d   }t        j                  ||      rJ ||k  sJ y )N   r   	max_depthn_estimatorseval_setvalidation_0rmser   r   r    r!   boost_from_average)xgbXGBRegressorfitr   evals_resultnpisclose)r   r   regbase_score_0score_0base_score_1score_1r   s          r   run_regz&check_init_estimation.<locals>.run_reg   s    ;!RST1Ax($S)""$^4V<Q?#qqUV
 	1Ax($S)""$^4V<Q?::lL999   r         )	n_samplesrandom_state   )r6   	n_targetsr7   c                    t        j                  dd      }|j                  | || |fg       t        |      }|j	                         d   d   d   }t        j                  ddd      }|j                  | || |fg       t        |      }|j	                         d   d   d   }t        j                  ||      rJ ||k  sJ y )Nr   r   r"   r$   loglossr   r&   )r(   XGBClassifierr*   r   r+   r,   r-   )r   r   clfr/   r0   r1   r2   r   s          r   run_clfz&check_init_estimation.<locals>.run_clf5   s    K1STU1Ax($S)""$^4Y?B#qqUV
 	1Ax($S)""$^4Y?B::lL999   r      )r6   n_labels	n_classesr7   )sklearn.datasetsr   r   r   r,   ndarray)r   r   r   r   r3   r   r   r>   s   `       r   check_init_estimationrD      s     !2:: !"** ! !  T;DAqAqMTQRHDAqAqM!2:: !"** ! !  B?DAqAqM)abDAq AqMr   weightedc                 
   ddl m} ddlm} ddlm} d}d}d}d}t        j                  j                  d      }	 ||||		      \  }
}|r|	j                  |
      }nd}t        j                  |
||      }t        j                  ddg      }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        j,                  j/                  t        j                  |d   d         t        j                  |d   d         dd       |j                  |      |dd|f<    t!        |j*                  d         D ]0  }t        j,                  j/                  |dd|f   |dd|f          2 yc c}w )zTest for quantile loss.r   )r   )mean_pinball_loss)_metric_decoratorr4      g        i  )r6   
n_featuresr7   )sizeNweightg?      ?zreg:quantileerror)	objectiver   quantile_alphar   Trainnum_boost_roundevalsr+   T)strict_shapequantileg      4@)sample_weightalpha)rS   rT   custom_metricr+   g      >@rG   gư>)atolrtol)rB   r   sklearn.metricsrG   xgboost.sklearnrH   r,   randomRandomStater(   QuantileDMatrixarraytrainpredicttmnon_increasingrangerK   r   r   emptyshapetestingassert_allclose)r   rE   r   rG   rH   r6   rJ   r!   r   rngr   r   rM   XyrY   r+   booster_multipredt_multiimetricspredtsa	booster_is                          r   check_quantile_lossru   N   s   011IJL J
))


%CDAq
 +			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G$Z04t;;;


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


""6!Q$<QT1BC #Ks   	(J 	n_entriesindptrdatadtypesc                    ddl m} |j                  d   |d   k(  sJ |j                  d   | k(  sJ |j                  t        j
                  k(  sJ t        d|j                        D ]g  }t        ||dz
           }t        ||         }t        |dz   |      D ]4  }||   ||dz
     kD  sJ  |||dz
           s"||   ||dz
     dz   k(  r4J  i y)zCheck the cut values.r   is_categorical_dtyperW   r   N)	pandas.api.typesr|   ri   dtyper,   uint64rg   rK   int)	rv   rw   rx   ry   r|   rp   begendjs	            r   	check_cutr      s     6::a=F2J&&&::a=I%%%<<299$$$1fkk"&Q- &)nsQw$A7T!a%[(((#F1q5M2Aw$q1u+/111 % #r   use_cupyc                    ddl m} d}d}d}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i}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]  } ||      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   r{   i         )r   )rM   max_binr   rL   )r   r   r8      cache    Fg?)sparsityNT)r   enable_categoricalr   rN   )r   	cat_ratio)r}   r|   r,   float32re   r   r(   ra   get_quantile_cutr   DMatrixrc   IteratorForTestmake_batchesmake_categoricalcudfcupyfrom_pandasrb   ry   len)r   r   r|   r6   rJ   r   ry   r   r   wXywrw   rx   	n_batchesn_samples_per_batchitrm   n_categoriesr   cpr~   n_cat_featuresn_num_featuresrv   s                           r   check_get_quantile_cut_devicer      s   5IJGjj\J&F   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y*lETWXDAqQHHQK			Q7t	LB&&(LFDlZ'qxx@	Qd	3BIIkg>C&&(LFDlZ'qxx@ :|USCDAq Q5I%5P!QRN.0N~-10NNI			Q7t	LB&&(LFDiqxx0	Qd	3BIIkg>C&&(LFDiqxx0 Rs   ;M	Mc                 D    | dk(  }t        | d       |rt        | d       yy)zCheck the quantile cut getter.gpu_histFTN)r   )r   r   s     r   check_get_quantile_cutr      s*     j(H!+u5%k48 r   r   rowscolsroundscatsdevicec                    t        j                  | ||d      \  }}t        j                  | ||d      \  }}	i }
i }|t        |d}t        j                  ||d      }t        j
                  ||||dfg|
       t        j                  ||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      }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.TF)r   max_cat_to_onehotr   r   rQ   rR   r%   gMbP?r\   r   r   
reg_lambdag      ?r   N)re   r   
USE_ONEHOTr(   r   rc   r,   rj   rk   rb   rf   USE_PARTzip)r   r   r   r   r   r   onehotlabelcat_by_etl_resultsby_builtin_results
parametersmby_groupingrmse_oh
rmse_grouprs   bs                      r   check_categorical_oher   
  s   
 ''dD$?MFE  tT59FC8:N<> #'	"J 	FEe<AII	7|n# 	C48AII	7|n' JJ
(01
#G,V45  
 /8@AAA57K&.J"# J|C48AII	7|n  !)&1GW%f-JGZ(1Avv )  #J|KII	7|n  [1&9:GKG:r   c                    	 ||d	t        j                  | ||dd      \  }t        j                  |d      dt        dd	f	fd
} |t
                |t               y	)z+Check categorical data with missing values.)r   r   FrN   )rJ   r   r   r   Tr   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   rQ   rR   r%   rW   gh㈵>r   )	r(   rc   re   rf   rd   root_mean_squarer,   rj   rk   )r   r+   boostery_predtr%   rm   r   r   s        r   runz&check_categorical_missing.<locals>.runb  s    *;
&'(*))=/%
   g!6v!>???//"%""5'2


""4g)>v)Fr)JQU"Vr   )re   r   r(   r   r   r   r   )
r   r   r   r   r   r   r   rm   r   r   s
          @@@r   check_categorical_missingr   X  sj     2=!OJ$$DJC 
S%D	9BWs Wt W& 
O Mr   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.rc   F)rT   verbose_evalr+   )r(   rc   num_featuresnum_colnum_boosted_roundsfeature_namesfeature_types)r   r   r   resultr   s        r   train_resultr   {  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)N   r   multi_strategymulti_output_treeone_output_per_treeF)	set_param)selfr   r   r   s       r   after_iterationzResetStrategy.after_iteration  s=    19>OO-/BCD  OO-/DEFr   N)
__name__
__module____qualname____doc__r(   Boosterr   dictboolr    r   r   r   r     s+    ,S[[   RV r   r   )(r   r   	functoolsr   r   typingr   r   r   numpyr,   xgboostr(   xgboost.testingrj   re   XGBModelr   r   strrD   r   ru   r   rC   r   r   r   iinfoint32maxr   r   r   r   r   r   callbackTrainingCallbackr   r   r   r   <module>r      s     - " "    % 3s 3t 3nTDS TDD TDT TDn22JJ2.0jj2BE2	2&B1s B1d B1t B1J9 9 9 RXXbhh##
KH
KHKH"%KH-0KH:=KHLOKH	KH\ 
   # -0 ?B 	 FS>!$:=	#s(^*CLL11 r   