
    ^j                         d Z ddlZddlmZmZmZ ddlZddlZddl	m
Z
 ddlZdededdfdZdeded	ed
edededededdfdZdee   ddfdZy)z Tests for training continuation.    N)AnyDictTypeVar)
strategiesdevicetree_methodreturnc                    t        j                  d      }d}d}|j                  ||d      \  }}t        j                  ||      }|ddd| d	}t        j
                  ||d
      }	|	j                  d      }
t        j
                  ||d
      }t        j
                  ||d|      }|j                  d      }t        dt        t        t        f   t        t        t        t              }d|d|ddffdt        |
      t        |      k(  sJ t        |
      D ];  \  }}t!        j"                  |      }t!        j"                  ||         } ||       = y)zRun training continuation test.sklearn.datasets@          )random_state2z0.1z0.01)r   	max_depthgammaalphar   num_boost_roundjson)dump_formatr   	xgb_modelTobj_0obj_1r	   Nc                    t        | t              rt        j                  | |d      sJ y t        | t              r| |k(  sJ y t        | t
              r| |k(  sJ y t        | t              rt        t        | j                                     D ]  }t        | j                               |   t        |j                               |   k(  sJ t        | j                               |   dk7  s^ t        | j                               t        |j                                       y t        |       D ]  \  }}||   } ||        y )Ngư>)atolmissing)
isinstancefloatnpisclosestrintdictrangelenitemslistkeysvalues	enumerate)r   r   ilhsrhsrecursive_compares        g/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/xgboost/testing/continuation.pyr1   zArun_training_continuation_model_output.<locals>.recursive_compare&   s   eU#::eU666s#E>!>s#E>!>t$3u{{}-. REJJL)!,UZZ\0B10EEEE

%a(I5%d5<<>&:D<PQR
 $E* ,3Ah!#s+,    )pytestimportorskipmake_regressionxgbDMatrixtrainget_dumpr   r   r$   r   r!   r%   r*   r(   r-   r   loads)r   r   datasets	n_samples
n_featuresXydtrainparamsbst_0dump_0bst_1dump_1r   r.   r/   r   r   r1   s                     @r2   &run_training_continuation_model_outputrG      sH   ""#56HIJ##Iz#JDAq[[AF"F IIffb9E^^^/FIIffb9EIIffbEJE^^^/FT#s(^UCd;A, ,1 , ," v;#f+%%%F# (3

3

6!9%%'(r3   	subsamplesampling_method	rate_dropcolsample_bylevel	num_classseed_per_iterationc           
         t        j                  d      }d}	d}
d}d}|dkD  r|j                  |	|
d|d	      \  }}d
}n|j                  |	|
d      \  }}d}t	        j
                  ||      }| |d||||||d	}|dkD  r||d<   t	        j                  |||      }t	        j                  |||      }t	        j                  ||||z
  |      }t        j                  |j                               }t        j                  |j                               }|d   d   d   }|d   d   d   }||k(  sJ d       |j                  |      }|j                  |      }t        j                  j                  ||       y)zJCheck that 2-session training (4+4 iters) equals single-session (8 iters).r               r      *   )r=   r>   n_informative	n_classesr   zmulti:softprob)r=   r>   r   zreg:squarederror)	r   r   r   	objectiverH   rI   rJ   rK   rM   rL   r   r   learnergeneric_param	rng_statez1RNG states diverged between single and continued.N)r4   r5   make_classificationr6   r7   r8   r9   r   r;   save_configpredictr"   testingassert_allclose)r   r   rH   rI   rJ   rK   rL   rM   r<   r=   r>   total_roundssplit_atr?   r@   rW   rA   rB   
bst_single	bst_firstbst_continuedconfig_singleconfig_cont
rng_singlerng_contpred_single	pred_conts                              r2   %run_training_continuation_determinismrk   @   s    ""#56HIJLH1}++! , 
1 %	''JR ( 
1 '	[[AF "*.0
F 1}'{66<HJ		&&(CIIIx(?9M JJz5578M**]6689Ky)/:;GJ9%o6{CH!V#VV!$$V,K%%f-IJJ{I6r3   tree_methodszstrategies.SearchStrategyc                 |   t        j                  t        j                  ddg      t        j                  ddg      t        j                  ddg      t        j                  ddg      t        j                  |       t        j                  ddg      t        j                         d      j	                  d	       }|S )
zDHypothesis strategy for testing training continuation with sampling.g      ?g      ?uniformgradient_basedg        r      )rH   rI   rJ   rK   r   rL   rM   c                 (    | d   dk(  xr | d   dk7   S )NrI   ro   r   hist )xs    r2   <lambda>z+make_determinism_strategy.<locals>.<lambda>   s+    #$(88WQ}=MQW=W r3   )r   fixed_dictionariessampled_frombooleansfilter)rl   strategys     r2   make_determinism_strategyr{      s    ,,#00#s<)66	CS7TU#00#s<!+!8!8#s!D%22<@#00!Q8","5"5"7	

 f	
 " Or3   )__doc__r   typingr   r   r   numpyr"   r4   
hypothesisr   xgboostr7   r$   rG   r!   r%   boolrk   r*   r{   rs   r3   r2   <module>r      s    &  % %   ! .(3 .(S .(T .(dB7B7 B7 	B7
 B7 B7 B7 B7 B7 
B7JDI :U r3   