Ë
    °Ó^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        «      rºt        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  ø€ Ü�eœUÔ#Ü—:‘:˜e U°Õ6Ð6Ñ6Ü˜œsÔ#Ø˜E’>Ð!‘>Ü˜œsÔ#Ø˜E’>Ð!‘>Ü˜œtÔ$Üœ3˜uŸ{™{›}Ó-Ó.ò R�Ü˜EŸJ™J›LÓ)¨!Ñ,´°U·Z±Z³\Ó0BÀ1Ñ0EÒEÐEÐEÜ˜Ÿ
™
›Ó% aÑ(¨IÓ5Ù%¤d¨5¯<©<«>Ó&:¼DÀÇÁÃÓ<PÕQñRô
 $ EÓ*ò ,‘��3Ø˜A‘h�Ù! # 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Ó6€HØ€IØ€JØ×#Ñ# I¨zÈÐ#ÓJ�D€A€qä�[‰[˜˜AÓ€Fà"ØØØØñ€Fô �I‰I�f˜f°bÔ9€EØ�^‰^¨ˆ^Ó/€Fä�I‰I�f˜f°bÔ9€EÜ�I‰I�f˜f°bÀEÔJ€EØ�^‰^¨ˆ^Ó/€Fä�”Tœ#œs˜(‘^¤U¬C´´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Ó6€Hà€IØ€JØ€LØ€Hà�1‚}Ø×+Ñ+ØØ!ØØØð ,ó 
‰ˆˆ1ð %‰	à×'Ñ'Ø¨JÀRð (ó 
‰ˆˆ1ð 'ˆ	ä�[‰[˜˜AÓ€Fð Ø"ØØØØ*ØØ.Ø0ñ
€Fð �1‚}Ø'ˆˆ{Ñä—‘˜6 6¸<ÔH€Jä—	‘	˜& &¸(ÔC€IÜ—I‘IØ�¨°xÑ(?È9ô€Mô —J‘J˜z×5Ñ5Ó7Ó8€MÜ—*‘*˜]×6Ñ6Ó8Ó9€Kà˜yÑ)¨/Ñ:¸;ÑG€JØ˜9Ñ% oÑ6°{ÑC€HØ˜Ò!ÐVÐ#VÓVÐ!à×$Ñ$ VÓ,€KØ×%Ñ% fÓ-€IÜ‡J�J×Ñ˜{¨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ÒW¸Q¸}Ñ=MÐQWÑ=Wðð r3   )r   Úfixed_dictionariesÚsampled_fromÚbooleansÚfilter)rl   Ústrategys     r2   Úmake_determinism_strategyr{   …   s¨   € ä×,Ñ,ä#×0Ñ0°#°s°Ó<Ü)×6Ñ6¸	ÐCSÐ7TÓ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7ðJ¨D°©Ið Ð:Uô r3   