
    if                        d 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mZmZ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mZmZmZmZ ddl m!Z!m"Z" ddl#m$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/ de-dee0   ddfdZ1de-dee0   ddfdZ2de-de3ddfdZ4de-ddfdZ5de-defdZ6 G d de"      Z7 G d de!      Z8 G d d e7      Z9de-ddfd!Z:de-ddfd"Z;de-ddfd#Z<de-ddfd$Z=de-ddfd%Z>de-d&e?ddfd'Z@de-ddfd(ZAde-ddfd)ZBdd*d*d*d+d,de-d-e?d.e?d/ej                  d0ej                  d1eee?ef      d2e3d3e3d4e3d5e3ddfd6ZDde-ddfd7ZEde-ddfd8ZFde-ddfd9ZGde-ddfd:ZHde-ddfd;ZIde-ddfd<ZJde-ddfd=ZKde-ddfd>ZLde-ddfd?ZMdeee-gdf      fd@ZNde-dAe?deOfdBZPde-dAe?ddfdCZQde-ddfdDZRy)Ez Tests for multi-target training.    )
ModuleType)AnyCallableDictListOptionalTupleN)make_classificationmake_multilabel_classificationmake_regression)cosine_similarity   )	ArrayLike)import_cupy)BoosterDMatrixExtMemQuantileDMatrixQuantileDMatrix
build_info)	ObjectiveTreeObjective)XGBClassifier)train   )IteratorForTest)ResetStrategytrain_result)Deviceassert_allclosenon_increasingdevicelearning_ratereturnc                    t        ddddd      \  }}t        ddt               gd| |	      }|j                  ||||fg
       |j                  dk(  sJ t        |j                         d   d         sJ |/t        |dz
        dk  r|j                         d   d   d   dk  sJ |j                  |      }|j                  |j                  d   dfk(  sJ y)z'Use vector leaf for multi-class models.      
        )
n_featuresn_informative	n_classesrandom_stateTmulti_output_treedebug_synchronizemulti_strategy	callbacksn_estimatorsr!   r"   eval_setmulti:softprobvalidation_0mloglossN      ?h㈵>g
ףp=
?r   )
r
   r   r   fit	objectiver    evals_resultabspredict_probashaper!   r"   Xyclfprobas         b/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/xgboost/testing/multi_target.pyrun_multiclassrH      s    "DAq * ?##C GGAqQF8G$==,,,,#**,^<ZHIII S)<%=%D!.1*=bAEIIIa E;;1771:q/)))    c                    t        dd      \  }}t        ddt               gd| |      }|j                  ||||fg       |j                  d	k(  sJ t        |j                         d
   d         sJ |/t        |dz
        dk  r|j                         d
   d   d   dk  sJ |j                  |      }|j                  |j                  k(  sJ y)z6Use vector leaf for multi-label classification models.r%   r)   r-   Tr.   r'   r/   r4   zbinary:logisticr7   loglossNr9   r:   r;   gp=
ף?)
r   r   r   r<   r=   r    r>   r?   r@   rA   rB   s         rG   run_multilabelrM   4   s    )#DADAq
* ?##C GGAqQF8G$==----#**,^<YGHHH S)<%=%D!.1)<R@5HHHa E;;!''!!!rI   weightedc                 f  	
 d| g ddd	dt        dd      \  
d	t        t        j                     d
df	
fd}|sd}n3t        j                  j                  d      }|j                  dd      } ||       t        
|      }t        	|d      }t        |d   d         sJ y)z*Check quantile regression for vector leaf.reg:quantileerror)g?      ?g?r.   )r=   r!   quantile_alphar1           )	n_samplesr*   r-   weightr#   Nc                    t        |       }t        ||dfgd      }|j                  |      }|j                  dfk(  sJ |dddf   |dddf   k  j	                         sJ |dddf   |dddf   k  j	                         sJ y)	zThe first tree should not generate quantile crossing given sufficient amount
        of samples for quantile interpolation.

        rW   Trainr   )evalsnum_boost_round   Nr   r   )r   r   predictrA   all)rW   Xyboostery_predtrC   rV   paramsrD   s       rG   no_crossing_first_treez1run_quantile_loss.<locals>.no_crossing_first_treeT   s    
 Q&1B=/1M//"%}}A...1A.335551A.33555rI           r9   )sizerY   r'   
num_roundsr   quantile)
r   r   npndarrayrandomdefault_rnguniformr   r   r    )r!   rN   rd   rW   rngr`   r>   rC   rV   rc   rD   s          @@@@rG   run_quantile_lossrp   I   s     )+-	F IY2DQDAq
6x

'; 
6 
6 
6  ii##D)S#I66"	Af	-Br:L,w/
;<<<rI   c                    d| dd}d}t        |ddd      \  }}t        ||      }i }t        |||d	fgd
|d      }|j                  |      }t	        j
                  |dddf   |dddf   z
  j                               dkD  sJ t	        j
                  |dddf   |dddf   z
  j                               dkD  sJ t        |d	   d         sJ |d	   d   d   dk  sJ y)z*Test mean absolute error with vector leaf.zreg:absoluteerrorr.   r=   r!   r1      rT   r]   rU   rV   r*   	n_targetsr-   rZ   Fr[   verbose_evalr>   r\   Nr   r   i  r   maer;   g      >@)r   r   r   r^   rj   r?   sumr    )	r!   rc   rV   rC   rD   r`   r>   ra   predts	            rG   run_absolute_errorr{   n   s    )-F
 IadDAq 
A	B$&L
G}o!G OOBE665A;q!t,1134t;;;665A;q!t,1134t;;;,w/6777 '+d222rI   c                 4    | dk(  rt               }|S t        }|S )Ncuda)r   rj   )r!   ndas     rG   _array_implr      s$    m J JrI   c            
       d    e Zd ZdZdeddfdZdededede	eef   fd	Z
ded
edede	eef   fdZy)LsObj0z%Split grad is the same as value grad.r!   r#   Nc                     || _         y Nr!   selfr!   s     rG   __init__zLsObj0.__init__   	    rI   	iterationy_preddtrainc                     t        | j                        }|j                         }t        j                  ||d       \  }}|j                  |      |j                  |      fS r   r   r!   	get_labeltmls_objarrayr   r   r   r   r~   y_truegradhesss           rG   __call__zLsObj0.__call__   Q     $++&!!#YYvvt4
dyy		$//rI   r   r   c                 p    t        | j                        }|j                  |      |j                  |      fS r   )r   r!   r   )r   r   r   r   r~   s        rG   
split_gradzLsObj0.split_grad   s-     $++&yy		$//rI   )__name__
__module____qualname____doc__r   r   intr   r   r	   r   r    rI   rG   r   r      sv    /v $ 00&/09@0	y)#	$000$-05>0	y)#	$0rI   r   c            
       B    e Zd ZdZdeddfdZdededede	eef   fd	Z
y)
LsObj1zNo split grad.r!   r#   Nc                     || _         y r   r   r   s     rG   r   zLsObj1.__init__   r   rI   r   r   r   c                     t        | j                        }|j                         }t        j                  ||d       \  }}|j                  |      |j                  |      fS r   r   r   s           rG   r   zLsObj1.__call__   r   rI   )r   r   r   r   r   r   r   r   r   r	   r   r   rI   rG   r   r      sG    v $ 00&/09@0	y)#	$0rI   r   c            
       v     e Zd ZdZdedef fdZdededede	e
j                  e
j                  f   fd	Z xZS )
LsObj2zUse mean as split grad.r!   
check_usedc                 4    || _         t        | 	  |       y )Nr   )_chksuperr   )r   r!   r   	__class__s      rG   r   zLsObj2.__init__   s    	'rI   r   r   r   r#   c                     t        | j                        }| j                  rJ |j                  |d      }|j                  |d      }||fS )Nr   )axis)r   r!   r   mean)r   r   r   r   r~   sgradshesss          rG   r   zLsObj2.split_grad   sL     $++&995A&A&e|rI   )r   r   r   r   r   boolr   r   r   r	   rj   rk   r   __classcell__)r   s   @rG   r   r      sP    !(v (4 (		$-	5>		rzz2::%	&	rI   r   c                     t        dddd      \  }}t        ||      	 ddt        t           dt        t        t
              d	t        f fd
} |t                     } |t                     }t        j                  j                  |j                  |      |j                  |              |t               dg|j                  d   z        } |ddg|j                  d   z        }t        j                  j                  |j                  |      |j                  |              |t         d             t        j                   t"              5   |t         d             ddd       y# 1 sw Y   yxY w)z6Basic test for using reduced gradient for tree splits.rs   rT        rV   r*   r-   ru   Nobj
base_scorer#   c                 f    i }t        ddd|ddfg| d|      }t        |d   d         sJ |S )	NTr.   r   )r0   r!   r1   r"   r   rZ      r[   r   r\   r>   rmse)r   r    )r   r   r>   ra   r`   r!   s       rG   run_testz"run_reduced_grad.<locals>.run_test   s^     )+%) "5!"( =/%
 l73F;<<<rI   rQ   r   FTr   )r   r   r   r   listfloatr   r   r   rj   testingr   inplace_predictrA   r   pytestraisesAssertionError)	r!   rC   rD   r   	booster_0	booster_1	booster_2	booster_3r`   s	   `       @rG   run_reduced_gradr      sO   2DADAq 
A	B GKi .6tE{.C	* (I(IJJ!!!$i&?&?&B #);<Iuqwwqz12IJJ!!!$i&?&?&B VFE"#	~	& '%&' ' 's   E33E<c           
         t        |       }d}d}d}dg|z  }| dd|dd}g }g }t        |      D ]W  }	t        d	d|	d
z   |      \  }
}|j                  |j	                  |
             |j                  |j	                  |             Y t        ||ddd      }t        || dk(  rdnd      }i }t        ||||dfg|      }t        ||dd      }t        |      }i }t        ||||dfg|      }t        j                  j                  |d   d   |d   d          t        |d   d         sJ |j                         \  }}}t        | |j                  |      |j                  |             t               }d}| dk(  r$||v r ||   d   dk  rt!        j"                  d       t        ||ddd|j$                  d   |z  |j$                  d
   z        }t        || dk(  rdnd      }i }t        |||dfgt'        |       ||      }t        j                  j                  |d   d   |d   d          t        | |j                  |      |j                  |             y)z&Test vector leaf with external memory.r(   r   r]   rQ   r.   r9   T)r!   r1   r"   r   r0      r   r   Ncache)r   on_hostr}   )cache_host_ratiorZ   )r\   r[   r>   )r   r   THRUST_VERSIONr   zCCCL version too old.)r   r   min_cache_page_bytesr   )r   ranger   appendasarrayr   r   r   r   rj   r   r   r    	as_arraysr   r   r   xfailrA   r   )r!   r~   	n_batchesn_roundsru   	interceptrc   XsysiX_iy_iitr`   evals_result_0r   evals_result_1r   rC   _binfotvevals_result_2r   s                           rG   run_with_iterr      s   
f
CIHI	!I -!F 
B	B9 $"qA)
S 			#++c"#
		#++c"#$ 
RWd	CB'
Ff$4S$B ')N
 G}o#I 
RT	2B		B&(N
 G}o#I JJw')@)H .1&9:::llnGAq!FI55a8):S:STU:VWLE	BB%KE"IaL1,<,-	

WWQZ94qwwqzA
B 
r6V;KCQU	VB&(N
G}o6N #I JJw')@)H FI55a8):S:STU:VWrI   c                      t        dddd      \  dt        t           ddf fd	} |d        |t                      y)
zTest for learning rate.i   rT   r)   r]   )r-   ru   r   r#   Nc                    
ddddd}t        	      }t        ||d|       }d|d	<   t        ||d|       }d
|d	<   t        ||d|       }|j                  |      }|j                  |      }|j                  |      }t        j                  j                  ||dz  d       t        j                  j                  |dz  |d       y )Nr.   r9   Tre   )r!   r1   r"   r0   r   r   )r\   r   皙?r"          @r'   gư>)rtolr   )r   r   r^   rj   r   r   )r   rc   r`   r   r   r   predt_0predt_1predt_2rC   r!   rD   s            rG   runzrun_eta.<locals>.runT  s    1 !%
 Q"&"aSA	"%&"aSA	"%&"aSA	##B'##B'##B'


""7GbLt"D


""7Q;d"CrI   )r   r   r   r   )r!   r   rC   rD   s   ` @@rG   run_etar   P  sG    3CDAqD)$ D D, IvrI   c                      t        t        d      ddd      \  dt        f fd} |       } |       }|j                         }|j                         }||k(  sJ y)	z6Check the vector leaf implementation is deterministic.i   @   r   r   r   r#   c                  D    t              } ddd}t        || d      S )Nr.   T)r!   r1   r0   rT   r\   )r   r   )r`   rc   rC   r!   rD   s     rG   r   zrun_deterministic.<locals>.runt  s0    Q"1!%

 VR44rI   N)r   r   r   save_raw)r!   r   r   r   raw_0raw_1rC   rD   s   `     @@rG   run_deterministicr   n  sb    e*$!DAq5 5 II E EE>>rI   c           	         d}t        d|dd      \  }}t        j                  |dft        j                        }d|d	z  z  |d
|d	z   t	        |||      }| dddd}t        ||d      }dD ]  }|j                  |      }	t        |	      dkD  s
J d|        t        d|d	z        D ]  }
d|
 |	v rJ d|
 d| d        t        |d	z  |      D ]  }
d|
 |	vrJ  |	j                         D ]  }t        |t              sJ |dk\  rJ   t        d      \  }}t        dd| d      }|j                  ||t        j                  d|j                   d                |j"                  }|d   dk(  sJ |d   |d   dz  kD  sJ t        j$                  j&                  j                  t        j                  d|j                   d         |d       }|j(                  d   d!kD  sJ y
)"zDTest column sampling with feature importance for multi-target trees.    rs   r   r]   r   r   )rA   dtyper9   r   N)feature_weightsr.   Tg?)r!   r1   r0   colsample_bynoderT   r   rW   gain
total_gaincovertotal_coverimportance_typer   zNo scores for fz not in z scoresrK   rW   g?)r1   r  r!   r   re   r;   r   )deggQ?)r   rj   zerosfloat32r   r   	get_scorelenr   values
isinstancer   r   r   r<   arangerA   feature_importances_
polynomial
Polynomialcoef)r!   r*   rC   rD   r   r`   rc   ra   r  scoresr  scorerE   fiws                  rG   run_column_samplingr    s=   J:DADAq hhj!_BJJGO),
Q)?O%jAo&	A	?B -!	F FB3G T (((I6{QB.0A BB q*/* 	NAqc7f$M!H_4EW&MM$	N zQ
3 	)Aqc7&(((	) ]]_ 	EeU+++A::	" *t<DAq
* 	C GGAq"))Aqwwqz":G;		!	!Ba5C<<b6BqEAI
  $$RYYq!''!*%=rq$IA66!9trI   grow_policyc                     t        dddd      \  }}t        ||      }| dd|d}t        ||d	
      }t        |d   d         sJ y)z;Test grow policy (depthwise and lossguide) for vector leaf.rs   rT   r   r]   r   r.   T)r!   r1   r0   r  r'   rg   r   r   N)r   r   r   r    )r!   r  rC   rD   r`   rc   r>   s          rG   run_grow_policyr    sd    2DADAq 
A	B -!"	F  r:L,w/7888rI   c           
      D   t        dddd      \  }}t        ||      }t        dddd	| d
ddd|t               g      }t	        t        |            dk(  sJ |j                  |d
      }t        j                  |j                        }|D ]  }||j                  |d
      z  } t        j                  j                  ||d       dD ]R  }|j                  |      }	t	        |	      dkD  sJ |	j                         D ]  }
t        |
t              sJ |
dk\  rJ  T y)z6Test mixed multi_strategy with ResetStrategy callback.rs   r   r]   r   )rV   r+   r,   r-   datalabelr(   r6   r.   Tr   )num_parallel_tree	num_classr=   r1   r!   r0   r   rT   )r\   r   r2   )output_marginr:   )atolr   r  N)r
   r   r   r   r  r   r^   rj   r  rA   r   r   r  r	  r
  r   )r!   rC   rD   r`   ra   rz   	predt_sumtr  r  r  s              rG   run_mixed_strategyr"    s?   a14DAq 
aq	!B!")1!%	
  ?#G  tG}### OOBdO3E%I 7QYYrY66	7JJuid; T ""?"C6{Q]]_ 	EeU+++A::	rI   c           	        
 d
t        d
ddd      \  }}t        ||      }dd| d	d
d}t        i |ddi|d      t        i |ddi|d      t        i |ddi|dt               g      g}dt        dt
        dt        j                  f
fd}dD ]  }|D cg c]  } |||       }	}t        j                  |	d   |	d         rJ t        j                  |	d   |	d         rJ t        |	d   g|	d   g      d   dkD  sJ t        |	d   g|	d   g      d   dkD  sJ t        |	d   g|	d   g      d   dkD  rJ  yc c}w )z?Different strategies produce similar feature importance ratios.rT   rS   r'   r(   r   )rV   r*   r+   r,   r-   r  r6   Tr   )r  r=   r!   r0   	max_depthr1   r.   r   r   one_output_per_tree)r\   r2   ra   r  r#   c           	          | j                  |      }t        j                  t              D cg c]  }|j	                  d| d       c}      }|j                         dkD  r||j                         z  S |S c c}w )z7Get feature importance as normalized array (sums to 1).r  r  re   r   )r  rj   r   r   getry   )ra   r  r  r   arrr*   s        rG   get_normalized_importancezJrun_feature_importance_strategy_compare.<locals>.get_normalized_importance  sl    ""?"Chh%
:KLQ

Qqc7C0LM"%'')a-sSWWY8S8 Ms   A;r   r   r   r   )r   r   g?N)
r
   r   r   r   r   strrj   rk   allcloser   )r!   rC   rD   r`   base_paramsboostersr)  r  bimpsr*   s             @rG   'run_feature_importance_strategy_comparer0    s   JDAq 
aq	!B %!#K 	B{B,.AB	

 	D{D,.CD	

 	B{B,.AB$'		
H&97 9S 9RZZ 9 T CGOP!)!_=PP ;;tAwQ000;;tAwQ000 !$q'T!WI6t<sBBB $q'T!WI6t<sBBB $q'T!WI6t<sBBBCPs   EFT)extra_paramscheck_pred_positivecheck_pred_probabilitycheck_pred_binarystrictly_non_increasingr=   metricrC   rD   r1  r2  r3  r4  r5  c                R   || dd}
|r|
j                  |       |j                  d   }|j                  dkD  r|j                  d   nd}t        ||      }i }t	        |
||dfgd|d      }|j                  |      }|j                  ||fk(  sJ |r|dkD  j                         sJ |r(|dkD  j                         r|dk  j                         sJ |r1t        t        j                  |            j                  d	d
h      sJ |d   |   }|	rt        |      sJ y |d   |d   k  sJ y )Nr.   rr   r   r   rZ   FrT   rv   re   r9   r;   )updaterA   ndimr   r   r^   r_   setrj   uniqueissubsetr    )r!   r=   r6  rC   rD   r1  r2  r3  r4  r5  rc   rV   ru   r`   r>   ra   rz   metric_valss                     rG   _run_regression_objective_testr>  1  s>    -F
 l#
Iffqj
aI	AB$&L
G}o!G OOBE;;9i0000	   	 eai__%666299U#$--sCj999w'/Kk***2Q///rI   c                 P    d\  }}t        |d|d      \  }}t        | dd||       y)z/Test squared error regression with vector leaf.rs   r]   rT   rU   rt   zreg:squarederrorr   Nr   r>  r!   rV   ru   rC   rD   s        rG   run_reg_squarederrorrC  d  s6    "IyidDAq #6+=vq!LrI   c                     d\  }}t         j                  j                  d      }|j                  |df      }|j	                  dd||f      }t        | dd||d	       y
)z:Test logistic regression for probability with vector leaf.r@  rU   rT   re   r9   zreg:logisticr   T)r3  N)rj   rl   rm   standard_normalrn   r>  r!   rV   ru   ro   rC   rD   s         rG   run_reg_logisticrG  m  s`    "Iy
))


%CYO,ACy)45A"1TrI   c                     d\  }}t         j                  j                  d      }|j                  |df      }|j	                  dd||f      }t        | dd||d       y	)
z'Test gamma regression with vector leaf.r@  rU   rT   r   z	reg:gammazgamma-devianceTr2  Nrj   rl   rm   rE  gammar>  rF  s         rG   run_reg_gammarL  x  sa    "Iy
))


%CYO,A		#sY	23A"-q!rI   c                     d\  }}t         j                  j                  d      }|j                  |df      }t        j                  |j                  ||f            dz   }t        | dd||       y)z3Test squared log error regression with vector leaf.r@  rU   rT   r   zreg:squaredlogerrorrmsleN)rj   rl   rm   rE  r?   r>  rF  s         rG   run_reg_squaredlogerrorrO    sh    "Iy
))


%CYO,A
s""Iy#9:;cAA"6+@'1aPrI   c           	      X    d\  }}t        |d|d      \  }}t        | dd||ddi	       y
)z4Test pseudo huber error regression with vector leaf.r@  rT   rU   rt   zreg:pseudohubererrormphehuber_sloper9   )r1  NrA  rB  s        rG   run_reg_pseudohubererrorrS    sA    "IyidDAq #&1MSVCWrI   c                 J    d}t        |d      \  }}t        | dd||d       y)	zCTest binary logitraw with vector leaf (multi-label classification).rs   rU   rK   zbinary:logitrawrL   F)r5  Nr   r>  r!   rV   rC   rD   s       rG   run_binary_logitrawrW    s-    I))$GDAq"!9aErI   c           	      L    d}t        |d      \  }}t        | dd||dd       y	)
zETest binary hinge loss with vector leaf (multi-label classification).rs   rU   rK   zbinary:hingeerrorTF)r4  r5  NrU  rV  s       rG   run_binary_hingerZ    s4    I))$GDAq"		 %rI   c                     d\  }}t         j                  j                  d      }|j                  |df      }|j	                  d||f      j                  t         j                        }t        | dd||d       y	)
z)Test Poisson regression with vector leaf.r@  rU   rT   r   zcount:poissonzpoisson-nloglikTrI  N)rj   rl   rm   rE  poissonastyper  r>  rF  s         rG   run_count_poissonr^    sn    "Iy
))


%CYO,AA	9-.55bjjAA"!2AqdrI   c                     d\  }}t         j                  j                  d      }|j                  |df      }|j	                  dd||f      }t        | dd||d       y	)
z)Test Tweedie regression with vector leaf.r@  rU   rT   r   zreg:tweedieztweedie-nloglik@1.5TrI  NrJ  rF  s         rG   run_reg_tweedier`    sb    "Iy
))


%CYO,A		#sY	23A"4aPTrI   c            	      d    t         t        t        t        t        t
        t        t        t        g	} | S )zList of obj tests.)	rC  rG  rL  rO  rS  rW  rZ  r^  r`  )objss    rG   all_reg_objectivesrc    s-     	 
,D KrI   sampling_methodc           	          | ddd|dddd}|S )Nhistr.   rQ      TrU   )r!   tree_methodr1   	subsamplerd  r$  r0   seedr   )r!   rd  rc   s      rG   _make_subsample_paramsrk    s(    -*!	F MrI   c                 >   d}t        |ddd      \  }}t        ||      }t        | |      }t        ||d      }t	        |d   d   d	
      sJ t        | |      }d|d<   g d|d<   t        ||dddf         }t        ||d      }	t	        |	d   d   d	
      sJ y)zTest row subsampling.rS   rT   r]   rU   rt   rg   r   r   g{Gz?)	tolerancerP   r=   )g      ?rQ   g      ?rR   Nr   ri   )r   r   rk  r   r    )
r!   rd  rV   rC   rD   r`   rc   r>   	Xy_singleevals_result_qs
             rG   run_subsamplerp    s    IadDAq 
A	B#FO<Fr:L,w/74HHH $FO<F-F;0F1QT7+I!&)CN.1*=NNNrI   c                      d}t        |ddd      \  }}t        ||      t         d      dt        dz  d	df fd
} |d        |t	         d             y)z;Test that gradient-based sampling provides better accuracy.r   rT   r]   rU   rt   rn   r   Nr#   c           	         i }t        ddfg| d|       t        d      }i }t        |ddfg| d|       |d   d   d   }|d   d   d   }t        |d   d         sJ t        |d   d         sJ | ||k  sJ y y )Nr   r   F)r\   r[   r   rw   r>   gradient_basedr   r;   )r   rk  r    )	r   evals_uniformparams_grad
evals_graduniform_final
grad_finalr`   r!   params_uniforms	         rG   r   z1run_gradient_based_sampling_accuracy.<locals>.run  s    )+=/&	
 -V5EF&(
=/#	
 &g.v6r:(04
mG4V<===j1&9:::;--- rI   F)r   r   rk  r   r   )r!   rV   rC   rD   r   r`   ry  s   `    @@rG   $run_gradient_based_sampling_accuracyrz    si    IadDAq 
A	B+FI>N.D .T .B IvurI   )Sr   typesr   typingr   r   r   r   r   r	   numpyrj   r   sklearn.datasetsr
   r   r   sklearn.metrics.pairwiser   xgboost.testingr   r   _typingr   compatr   corer   r   r   r   r   r=   r   r   sklearnr   trainingr   r  r   updaterr   r   utilsr   r   r    r   rH   rM   r   rp   r{   r   r   r   r   r   r   r   r   r  r*  r  r"  r0  rk   r>  rC  rG  rL  rO  rS  rW  rZ  r^  r`  rc  dictrk  rp  rz  r   rI   rG   <module>r     sH   &  = =   
 7     W W 0 #  ! 0 : :*6 *(5/ *d *."6 "(5/ "d "*"=f "= "= "=J3v 3$ 3: : 0] 0,0Y 0"V &*'V *' *'ZSX& SXT SXlF t <f  ,2 24 2j9F 9 9 9$&v &$ &R9CF 9Ct 9CH .2 %#(#$(000000 00 
zz	00
 
zz00 4S>*00 00 !00 00 "00 
00fM MD MV  & T QF Qt QV   4 V  f  F t D6(D.!9:  6 C D O& O3 O4 O., ,D ,rI   