ó
    uñ:i¶ˆ  ã                   óB  • S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
JrJrJrJrJrJrJrJrJrJrJrJrJr  SSKJr  SSKrSSKrSSKJ
r  SSKJr  SS	K J!r!  S
SK"J#r#J$r$J%r%  S
SK&J'r'J(r(  S
SK)J*r*J+r+  S
SK,J-r.  \(       a  SSK/J0r1  O\r1\Rd                  " S5      r3\3Ri                  SSS9r5S\6S\6S\\\\Rn                  \Rn                  4   \\8\84   4   SS4   4S jr9S\4S jr:S\4S jr;S\SS4S jr<\5Rz                  S\\Rn                  \Rn                  4   4S j5       r>\5Rz                  S\\Rn                  \Rn                  4   4S j5       r?\5Rz                  S\\Rn                  \Rn                  4   4S j5       r@\5Rz                  S\\Rn                  \Rn                  4   4S j5       rA\5Rz                  S\\1\Rn                  4   4S j5       rB\5Rz                  S \CS\\!Rˆ                  \Rn                  \Rn                  \!Rˆ                  \Rn                  \Rn                  \!Rˆ                  \Rn                  \Rn                  4	   4S! j5       rE SVS"S#S$.S%\6S\6S&\6S'\FS(\FS)\6S\\\Rn                     \\Rn                     \\Rn                     4   4S* jjjrG\\!Rˆ                  \R�                  \R’                     \R�                  \R’                     4   rJ\	 " S+ S,5      5       rK " S- S.\5      rL " S/ S05      rMS1\R�                  \R’                     S\\R�                  \R�                  \R�                  4   4S2 jrN SWS3\!Rˆ                  S4\R�                  \R’                     S5\R�                  \R’                     S6\OS\R�                  \R                      4
S7 jjrQS8\\!Rˆ                  \R�                  \R’                     \R�                  \R’                     4   S9\R�                  \R                      S\K4S: jrRS;\LS\\K\\K   4   4S< jrSS3\!Rˆ                  S4\R�                  \R’                     S5\R�                  \R’                     S=\R�                  \R’                     S>\R�                  \R¨                     S\\!Rˆ                  \R�                  \R’                     \R�                  \R’                     \R�                  \R’                     4   4S? jrUS@\SA\\$   SB\CSS4SC jrV\5Rz                  S\6S\6SD\OSE\FS\\\!Rˆ                     \Rn                  4   4
SF j5       rWSG\6SH\6S\\C   4SI jrXSJSKS"S#\R¨                  SLSM.S\6S\6SN\6SO\FSD\OSP\OSQ\FS)\6SR\R                  R²                  SB\CS\\*\Rn                  4   4SS jjrZ " ST SU\#5      r[g)XzUtilities for data generation.é    N)ÚThreadPoolExecutor)Ú	dataclass)ÚTYPE_CHECKINGÚAnyÚCallableÚDictÚ	GeneratorÚListÚ
NamedTupleÚOptionalÚSequenceÚSetÚTupleÚTypeÚUnion)Úrequest)Útyping)r	   )Úsparseé   )ÚDataIterÚDMatrixÚQuantileDMatrix)Úis_pd_cat_dtypeÚpandas_pyarrow_mapper)Ú	ArrayLikeÚ	XGBRanker)Útrain)Ú	DataFrameÚjoblibz
./cachedir)ÚverboseÚ	n_samplesÚ
n_featuresÚreturnc              #   ó†  #   • [         R                  " S5      n[        R                  R	                  S5      nUR                  SSX-  S9R                  X5      n[        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                   [        R"                  [        R$                  [        R&                  [        R(                  [        R*                  [        R,                  [        R.                  [        R0                  [        R2                  [        R4                  /nU H>  n[        R6                  " XFS9nXG4v •  UR9                  5       UR9                  5       4v •  M@     U H>  n[        R6                  " XFS9nUR;                  U5      nUR;                  U5      n	X‰4v •  M@     UR=                  SSX-  S	9R                  X5      n[        R>                  [@        4 H  n
[        R6                  " XJS9nXG4v •  M     [        R>                  [@        4 H>  n[        R6                  " XKS9nUR;                  U5      nUR;                  U5      n	X‰4v •  M@     g
7f)z*Enumerate all supported dtypes from numpy.ÚpandaséÊ  r   é   ©ÚlowÚhighÚsize©Údtypeé   g      à?©r+   N)!ÚpytestÚimportorskipÚnpÚrandomÚRandomStateÚrandintÚreshapeÚint32Úint64ÚbyteÚshortÚintcÚint_ÚlonglongÚuint32Úuint64ÚubyteÚushortÚuintcÚuintÚ	ulonglongÚfloat16Úfloat32Úfloat64ÚhalfÚsingleÚdoubleÚarrayÚtolistr   ÚbinomialÚbool_Úbool)r!   r"   ÚpdÚrngÚorigÚdtypesr-   ÚXÚdf_origÚdfÚdtype1Údtype2s               ÚW/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/xgboost/testing/data.pyÚ	np_dtypesrZ   /   sñ  é € ô 
×	Ò	˜XÓ	&€Bä
�)‰)×
Ñ
 Ó
%€Cà�;‰;˜1 3¨YÑ-Cˆ;ÐD×LÑLØó€Dô 	�‰Ü
�‰Ü
�‰Ü
�‰Ü
�‰Ü
�‰Ü
�‰Ü
�	‰	Ü
�	‰	Ü
�‰Ü
�	‰	Ü
�‰Ü
�‰Ü
�‰Ü
�
‰
Ü
�
‰
Ü
�
‰
Ü
�‰Ü
�	‰	Ü
�	‰	ð)€Fó, ˆÜ�HŠH�TÑ'ˆØˆgŠØ�k‰k‹m˜QŸX™X›ZÐ'Ô'ñ ó
 ˆÜ�HŠH�TÑ'ˆØ—,‘,˜tÓ$ˆØ�\‰\˜!‹_ˆØˆkÔñ	 ð �<‰<˜˜3 YÑ%;ˆ<Ð<×DÑDØó€Dô —8‘8œTÓ"ˆÜ�HŠH�TÑ(ˆØˆgŒñ #ô —8‘8œTÓ"ˆÜ�HŠH�TÑ(ˆØ—,‘,˜tÓ$ˆØ�\‰\˜!‹_ˆØˆkÔò	 #ùs   ‚J?Kc            	   #   ó,  #   • [         R                  " S5      n U R                  5       U R                  5       U R	                  5       U R                  5       U R                  5       U R                  5       U R                  5       U R                  5       /n[        R                  nU R                  SSUS/SSUS/S.[        R                  S9n[        R                  SU R                  4 H,  nU H#  nU R                  SSUS/SSUS/S.US9nX54v •  M%     M.     [        R                  nU R                  5       U R!                  5       /nU R                  S	S
US/SS
US	/S.[        R                  S9n[        R                  SU R                  4 Hs  nU Hj  nU R                  S	S
US/SS
US	/S.US9nX54v •  US   nUS   n[#        XpR$                  5      (       d   e[#        X`R$                  5      (       d   eXg4v •  Ml     Mu     UR'                  S5      nUR(                   H&  nX8   R*                  R-                  [.        5      X8'   M(     [        R                  SU R                  4 H1  nU R                  SSUS/SSUS/S.U R1                  5       S9nX54v •  M3     SU R                  4 Hb  nSSUS/SSUS/S.n	U R                  X’c  [        R2                  OU R5                  5       S9nU R                  X�R5                  5       S9nX54v •  Md     g7f)z/Enumerate all supported pandas extension types.r%   r.   r   é   é   ©Úf0Úf1r,   Nç      ð?g       @g      @r_   ÚcategoryTF)r0   r1   Ú
UInt8DtypeÚUInt16DtypeÚUInt32DtypeÚUInt64DtypeÚ	Int8DtypeÚ
Int16DtypeÚ
Int32DtypeÚ
Int64Dtyper2   Únanr   rF   ÚNAÚFloat32DtypeÚFloat64DtypeÚ
isinstanceÚSeriesÚastypeÚcolumnsÚcatÚrename_categoriesÚintÚCategoricalDtyperN   ÚBooleanDtype)
rP   rS   ÚNullrR   r-   rV   Úser_origÚserÚcÚdatas
             rY   Ú	pd_dtypesr}   j   sö  é € ä	×	Ò	˜XÓ	&€Bð 	�‰‹Ø
�‰ÓØ
�‰ÓØ
�‰ÓØ
�‰‹Ø
�‰‹Ø
�‰‹Ø
�‰‹ð	€Fô %'§F¡F€DØ�<‰<Ø�1�d˜Aˆ q¨!¨T°1 oÑ6¼b¿j¹jð ð €Dô —‘˜˜rŸu™uÓ%ˆÛˆEØ—‘Ø˜1˜d A�¨q°!°T¸1¨oÑ>Àeð ð ˆBð �(ŒNó	 ñ &ô �6‰6€DØ�o‰oÓ §¡Ó!2Ð3€FØ�<‰<Ø�S˜$ Ð$¨S°#°t¸SÐ,AÑBÌ"Ï*É*ð ð €Dô —‘˜˜rŸu™uÓ%ˆÛˆEØ—‘Ø˜S $¨Ð,°S¸#¸tÀSÐ4IÑJÐRWð ð ˆBð �(ŠNØ˜D‘zˆHØ�T‘(ˆCÜ˜c§9¡9×-Ñ-Ð-Ð-Ü˜h¯	©	×2Ñ2Ð2Ð2Ø�-Ôó ñ &ð �;‰;�zÓ"€DØ�\Œ\ˆØ‘'—+‘+×/Ñ/´Ó4ˆ‹ñ ä—‘˜˜rŸu™uÓ%ˆØ�\‰\Ø�q˜$ �?¨1¨a°°q¨/Ñ:Ø×%Ñ%Ó'ð ð 
ˆð ˆhŒñ &ð �r—u‘u“ˆØ˜U D¨$Ð/¸¸tÀTÈ4Ð7PÑQˆà�|‰|˜D±L¬¯ªÀbÇoÁoÓFWˆ|ÐXˆØ�\‰\˜$§o¡oÓ&7ˆ\Ð8ˆØˆhŒò ùs   ‚LLc            	   #   óî  #   • [         R                  " S5      n [         R                  " S5      n[        nSU R                  S4 H±  nU H¨  nUR	                  S5      (       d  UR	                  S5      (       a  M1  U R                  U5      (       d  US:X  a  UO[        R                  nU R                  SSUS	/S
S	US/S.[        R                  S9nU R                  SSUS	/S
S	US/S.US9nXg4v •  Mª     M³     U R                  S4 Hi  nU R                  SSUS/SSUS/S.U R                  5       S9nU R                  SSUS/SSUS/S.U R                  UR                  5       5      S9nXg4v •  Mk     g7f)z*Pandas DataFrame with pyarrow backed type.r%   ÚpyarrowNr   rE   rO   r.   r   r\   r]   r^   r,   FT)r0   r1   r   rl   Ú
startswithÚisnar2   rk   r   rF   rw   Ú
ArrowDtyperN   )rP   ÚparS   rx   r-   Ú	orig_nullrR   rV   s           rY   Úpd_arrow_dtypesr…   «   s�  é € ä	×	Ò	˜XÓ	&€BÜ	×	Ò	˜YÓ	'€Bô #€Fð. �r—u‘u˜aÓ ˆÛˆEØ×Ñ 	×*Ñ*¨e×.>Ñ.>¸v×.FÑ.FÙà$&§G¡G¨D§M¡M°d¸a³i™ÄRÇVÁVˆIØ—<‘<Ø˜1˜i¨Ð+°A°q¸)ÀQÐ3GÑHÜ—j‘jð  ð ˆDð
 —‘Ø˜1˜d A�¨q°!°T¸1¨oÑ>Àeð ð ˆBð �(ŒNó ñ !ð" —‘˜“ˆØ�|‰|Ø˜%  tÐ,°U¸DÀ$ÈÐ4MÑNØ—/‘/Ó#ð ð 
ˆð �\‰\Ø˜%  tÐ,°U¸DÀ$ÈÐ4MÑNØ—-‘- §¡£
Ó+ð ð 
ˆð ˆhŒò ùs   ‚E3E5rQ   c                 ó~  • U R                  SS9R                  SS5      nU R                  SS9n[        R                  US'   [        R
                  " [        SS9   [        X5        SSS5        [        R
                  " [        SS9   [        X5        SSS5        g! , (       d  f       N<= f! , (       d  f       g= f)	zValidate there's no inf in X.é    r/   é   r]   )é   r   zInput data contains `inf`©ÚmatchN)	r3   r6   r2   Úinfr0   ÚraisesÚ
ValueErrorr   r   )rQ   rT   Úys      rY   Ú	check_infr�   å   sŽ   € à�
‰
˜ˆ
Ð×#Ñ# A qÓ)€AØ�
‰
˜ˆ
Ð€AÜ�f‰f€A€d�Gä	�Š”zÐ)DÓ	EÜ˜Ô÷ 
Fô 
�Š”zÐ)DÓ	EÜ�Œ÷ 
FÐ	E÷ 
FÕ	Eú÷ 
FÕ	Eús   ÁBÂB.Â
B+Â.
B<c                  óv  ^^• Sm[         R                  R                  S5      m[        R                  " S5      n S[
        [           S[
        [           S[
        [           S[         R                  4UU4S jjnS	[        S
[        S[         R                  4UU4S jjnU R                  U" SS/SS/SS/5      U" SS/SS/SS/5      U" SSS9U" SSS9U" SSS9U" SS S9U" S!S"S9U" S#S$S9U" S%S&S9S'.	5      nX3R                  R                  S(/5         R                  5       nUS(   R                  5       nXE4$ ))záSynthesize a dataset similar to the sklearn California housing dataset.

The real one can be obtained via:

.. code-block::

    import sklearn.datasets

    X, y = sklearn.datasets.fetch_california_housing(return_X_y=True)

i P  ié  r%   ÚmeansÚsigmasÚweightsr#   c                 óÊ   >• TR                  [        TUS   -  5      U S   US   S9nTR                  TUR                  S   -
  U S   US   S9n[        R                  " X4/SS9$ )Nr   )r+   ÚlocÚscaler.   ©Úaxis)Únormalru   Úshaper2   Úconcatenate)r’   r“   r”   Úl0Úl1r!   rQ   s        €€rY   Úmixture_2compÚ-get_california_housing.<locals>.mixture_2comp  st   ø€ ð �Z‰ZÜ�i '¨!¡*Ñ,Ó-°E¸!±HÀFÈ1ÁIð ð 
ˆð �Z‰Z˜i¨"¯(©(°1©+Ñ5¸EÀ!¹HÈFÐSTÉIˆZÐVˆÜ�~Š~˜r˜h¨QÑ/Ð/ó    ÚmeanÚstdc                 ó&   >• TR                  XT4S9$ )N©r–   r—   r+   )rš   )r¢   r£   r!   rQ   s     €€rY   ÚnormÚ$get_california_housing.<locals>.norm  s   ø€ Ø�z‰z˜d°Y°LˆzÐAÐAr¡   g5�øÅ€„]Àg~(FÖv^Àgrþ-|Eé?g3mE^ã1ç?g½Di-Tã?gÃ…v-¥WÙ?gËXcÜëB@g&	™–î@@gŒ6¿ñ?gÅÍþ¤](à?g8W ¼nxÜ?gdÔï¡ÈÃá?gæ|Ø["÷@gÏôÞ2{eþ?)r¢   r£   gV»bµ£<@g›ÃÉ>¦+)@gæÌZµK·@gˆþÔÜûÊ@g)PÞ=û‹ñ?gÇË§^TÞ?gƒ¾ /èE–@g¶›É½±‘@gI•ø¦³�@gt£bO‡Å$@ggä°9hŒ @g ¤k}vò?)	Ú	LongitudeÚLatitudeÚMedIncÚHouseAgeÚAveRoomsÚ	AveBedrmsÚ
PopulationÚAveOccupÚMedHouseValr°   )r2   r3   Údefault_rngr0   r1   r
   ÚfloatÚndarrayr   rr   Ú
differenceÚto_numpy)rP   rŸ   r¦   rV   rT   r�   r!   rQ   s         @@rY   Úget_california_housingr¶   ò   s}  ù€ ð €IÜ
�)‰)×
Ñ
 Ó
%€Cä	×	Ò	˜XÓ	&€Bð0Ü”E‰{ð0Ü$(¬¡Kð0Ü:>¼u¹+ð0ä	�‰÷0ð 0ðB”5ð Bœuð B¬¯©÷ Bð Bð 
�‰á&Ø˜}Ð-Ø#Ð%7Ð8Ø˜ZÐ(óñ
 &Ø˜kÐ*Ø#Ð%7Ð8Ø˜ZÐ(óñ
 Ð 2Ð8JÑKÙÐ"4Ð:LÑMÙÐ"3Ð9JÑKÙÐ#4Ð:MÑNÙÐ$6Ð<MÑNÙÐ"4Ð:LÑMÙÐ%6Ð<NÑOñ#	
ó
€Bð* 	�:‰:× Ñ  - Ó1Ñ2×;Ñ;Ó=€AØ
ˆ=Ñ×"Ñ"Ó$€AØˆ4€Kr¡   c                  ó~   • [         R                  " S5      n U R                  5       nUR                  UR                  4$ )z&Fetch the digits dataset from sklearn.úsklearn.datasets)r0   r1   Úload_digitsr|   Útarget)Údatasetsr|   s     rY   Ú
get_digitsr¼   *  s6   € ô ×"Ò"Ð#5Ó6€HØ×ÑÓ!€DØ�9‰9�d—k‘kÐ!Ð!r¡   c                  óL   • [         R                  " S5      n U R                  SS9$ )z-Fetch the breast cancer dataset from sklearn.r¸   T)Ú
return_X_y)r0   r1   Úload_breast_cancer)r»   s    rY   Ú
get_cancerrÀ   2  s)   € ô ×"Ò"Ð#5Ó6€HØ×&Ñ&°$Ð&Ð7Ð7r¡   c                  ó’  • [         R                  " S5      n [        R                  R	                  S5      nSnSnU R                  X!S9u  pEUR                  SX4R                  5      n[        UR                  S   5       HC  n[        UR                  S   5       H$  nXgU4   (       d  M  [        R                  XGU4'   M&     ME     XE4$ )zGenerate a sparse dataset.r¸   éÇ   iÐ  g      è?)Úrandom_stater.   r   )
r0   r1   r2   r3   r4   Úmake_regressionrM   r›   Úrangerk   )	r»   rQ   ÚnÚsparsityrT   r�   ÚflagÚiÚjs	            rY   Ú
get_sparserË   9  s­   € ô ×"Ò"Ð#5Ó6€HÜ
�)‰)×
Ñ
 Ó
$€CØ€AØ€HØ×#Ñ# AÐ#Ð8�D€AØ�<‰<˜˜8§W¡WÓ-€DÜ�1—7‘7˜1‘:ÖˆÜ�q—w‘w˜q‘zÖ"ˆAØ�q�D�z‰zÜŸ&™&��Q�$“ó #ñ ð ˆ4€Kr¡   c                  óÌ  ^^^• [         (       a  SSKmO[        R                  " S5      m[        R
                  R                  S5      mSmTR                  5       n S[        [        [        [        4   [        4   S[        STR                  4UUU4S	 jjnU" S
SSSSS.S5      U S'   U" SSSS.S5      U S'   U" SSSSS.S5      U S'   U" SSS S!S"S#S$S%.S5      U S&'   U" S'S(S)S!S*.S+5      U S,'   U" S-S(S.S/S0S"S1S2S3.S5      U S4'   U" S5S6S7S8S9S:.S;5      U S<'   U" S=S>S?S@S$SA.S5      U SB'   U" SCSDSS"SE.S5      U SF'   U" S@SGSGSH.SI5      U SJ'   SK[        SL[        S[        STR                  4UUU4SM jjnU" SNSOS5      U SP'   U" SQSRS5      U SS'   U" STSUS5      U SV'   U" SWSXS5      U SY'   U" SZS[S5      U S\'   U" S]S^S5      U S_'   U" S`SaS5      U Sb'   U" ScSdS5      U Se'   U" SfSgS5      U Sh'   U" SiSjS5      U Sk'   [        U R                  5      nTR                  U5        X   n [        R                   " T4Sl9nU R                   Hu  n[#        X   R$                  TR&                  5      (       a:  X@U   R(                  R*                  R-                  [        R.                  5      -  nMd  X@U   R0                  -  nMw     USmUR3                  5       -  -  nUSnUR5                  5       -
  -  nX4$ )oaI  Get a synthetic version of the amse housing dataset.

The real one can be obtained via:

.. code-block::

    from sklearn import datasets

    datasets.fetch_openml(data_id=42165, as_frame=True, return_X_y=True)

Number of samples: 1460
Number of features: 20
Number of categorical features: 10
Number of numerical features: 10
r   Nr%   r&   i´  Ú
name_probaÚdensityr#   c           	      óØ  >• [        T	SU-
  -  5      n[        R                  " SU-
  5      S:„  =(       a    US:„  nU(       a  SU-
  nX@[        R                  '   [	        U R                  5       5      n[	        U R                  5       5      nUS==   S[        R                  " U5      -
  -  ss'   TR                  UT	US9nT
R                  UT
R                  [        S U5      5      S9nU$ )	Nr.   ra   ç�íµ ÷Æ°>r   éÿÿÿÿ)r+   Úpc                 ó"   • [        U [        5      $ ©N)ro   Ústr)Úxs    rY   Ú<lambda>Ú5get_ames_housing.<locals>.synth_cat.<locals>.<lambda>v  s   € ¤¨A¬sÔ!3r¡   r,   )ru   r2   Úabsrk   ÚlistÚkeysÚvaluesÚsumÚchoicerp   rv   Úfilter)rÍ   rÎ   Ún_nullsÚhas_nanrÇ   rÛ   rÒ   rÖ   Úseriesr!   rP   rQ   s            €€€rY   Ú	synth_catÚ#get_ames_housing.<locals>.synth_catd  sØ   ø€ ô �i 1 w¡;Ñ/Ó0ˆÜ—&’&˜˜w™Ó'¨$Ñ.×>°7¸Q±;ˆÞØ˜W‘}ˆHØ!)”r—v‘vÑä�J—O‘OÓ%Ó&ˆÜ�×"Ñ"Ó$Ó%ˆØ	ˆ"‹�”r—v’v˜a“y‘Ñ ‹Ø�J‰J�t )¨qˆJÐ1ˆà—‘ØØ×%Ñ%äÑ3°TÓ:óð ð 
ˆð ˆr¡   gqu Ä]½ê?gqh”.ý³?gs½m¦B<¢?gö5Cª(ž?goEb‚¾•?)Ú1FamÚ2fmConÚDuplexÚTwnhsÚTwnhsEra   ÚBldgTypegÿwD…Ú?g. �Ò¥Ò?g)$™Õ;ÜÎ?)ÚUnfÚRFnÚFingš_Í‚9î?ÚGarageFinishg¸Wæ­ºÇ?gàºbFx{°?gàºbFx{ ?gQfƒL2rf?)ÚCornerÚCulDSacÚFR2ÚFR3Ú	LotConfiggŠãÀ«åÎí?g/°ŒØ—?g˜Âƒf×½•?g�$A¸
…?gØó5Ëe£ƒ?g()° ¦l?g[³ÐÎiF?)ÚTypÚMin2ÚMin1ÚModÚMaj1ÚMaj2ÚSevÚ
Functionalg ©MœÜïâ?gì�±¾�Ó?gì¿ÎM›q¶?)ÚNoneÚBrkFaceÚStoneÚBrkCmng3ùf›Óï?Ú
MasVnrTypeg3ùf›Óß?gI/j÷« »?gÏ,	PSË¦?gÇeÜÔ@ó™?gQ¡º¹øÛ~?góZ	Ý%qv?)Ú1StoryÚ2Storyz1.5FinÚSLvlÚSFoyerz1.5Unfz2.5Unfz2.5FinÚ
HouseStyleg$	ÂP¨Ð?gHÀèòæpË?gýøK‹ú$—?g‡¥�Õ�?g‡4*p²Œ?)ÚGdÚTAÚFaÚExÚPog»E`¬oàà?ÚFireplaceQugÈ™&l?ì?çš™™™™™¹?gØó5Ëe£“?gÿunÚŒÓ`?)r  r  r  r	  r
  Ú	ExterCondgn0Ôa…Ûã?g{g´UIdÕ?)r  r  r	  r  Ú	ExterQualgÖ8›Ž nV?)r  r	  r  g(îx“ß¢s?ÚPoolQCr–   r£   c                 ó  >• TR                  XTS9n[        TSU-
  -  5      n[        R                  " SU-
  5      S:”  a)  US:”  a#  TR	                  TUSS9n[        R
                  X5'   TR                  U[        R                  S9$ )	Nr¥   r.   ra   rÐ   r   F©r+   Úreplacer,   )rš   ru   r2   rÙ   rÞ   rk   rp   rG   )	r–   r£   rÎ   rÖ   rà   Únull_idxr!   rP   rQ   s	         €€€rY   Ú	synth_numÚ#get_ames_housing.<locals>.synth_numÛ  sy   ø€ Ø�J‰J˜3°	ˆJÐ:ˆÜ�i 1 w¡;Ñ/Ó0ˆÜ�6Š6�#˜‘-Ó  4Ó'¨G°a«KØ—z‘z )°'À5�zÐIˆHÜŸ&™&ˆA‰KØ�y‰y˜¤"§*¡*ˆyÐ-Ð-r¡   gmt‚žÖF@gOfK“<Q=@Ú	3SsnPorchgÝ¹sçÎ�ã?g2TÁf¡ä?Ú
FireplacesgR×áö u­?gP$Í[r�Î?ÚBsmtHalfBathgˆvS�Ø?g_Æ-£à?ÚHalfBathgbÄˆ#Fü?g†–+êç?Ú
GarageCarsg$á[Q<@g"$#eœú?ÚTotRmsAbvGrdg$á[Q<º{@g%�³Ç‘�|@Ú
BsmtFinSF1ge0ÇôOFG@g*Óš{7*d@Ú
BsmtFinSF2gŽNÐÓÚ­—@g�¡CÓ×k€@Ú	GrLivAreagóg6.@gò‘äûòàK@ÚScreenPorch©r›   güìÎ(eó@gåý.‘ÉA)r   r%   r0   r1   r2   r3   r±   r   r   r   rÕ   r²   rp   rÚ   rr   ÚshuffleÚzerosro   r-   rv   rs   Úcodesrq   rG   rÜ   r£   r¢   )	rV   rã   r  rr   r�   r{   r!   rP   rQ   s	         @@@rY   Úget_ames_housingr$  J  sÉ  ú€ ÷" ‚}Üä× Ò  Ó*ˆä
�)‰)×
Ñ
 Ó
%€CØ€IØ	�‰‹€BðÜœœs¤E˜zÑ*¬EÐ1Ñ2ðÜ=Bðà	�‰÷ñ ñ. àØØØØñ	
ð 	ó	€B€z�Nñ #Ø °(Ñ;¸Wó€B€~Ññ  àØØØñ		
ð 	ó€B€{�Oñ !àØØØØØØñ	
ð 	ó€B€|Ññ !àØØØñ		
ð 	ó€B€|Ññ !àØØØØØØØñ		
ð 	ó€B€|Ññ "àØØØØñ	
ð 	ó	€B€}Ññ  àØØØØñ	
ð 	ó	€B€{�Oñ  àØØØñ		
ð 	ó€B€{�Oñ àØØñ	
ð
 	ó€B€x�Lð.”uð .¤5ð .´5ð .¸R¿Y¹Y÷ .ñ .ñ  Ð 2Ð4EÀsÓK€B€{�OÙ Ð!2Ð4FÈÓL€B€|ÑÙ"Ð#7Ð9LÈcÓR€B€~ÑÙÐ2Ð4FÈÓL€B€z�NÙ Ð!3Ð5GÈÓM€B€|ÑÙ"Ð#4Ð6HÈ#ÓN€B€~ÑÙ Ð!2Ð4EÀsÓK€B€|ÑÙ Ð!2Ð4FÈÓL€B€|ÑÙÐ 1Ð3DÀcÓJ€B€{�OÙ!Ð"4Ð6HÈ#ÓN€B€}Ñä�2—:‘:Ó€GØ‡K�K�ÔØ	‰€Bô 	�Š˜	�|Ñ$€AØ�ZŒZˆÜ�b‘e—k‘k 2×#6Ñ#6×7Ñ7Ø�A‘—‘—‘×'Ñ'¬¯
©
Ó3Ñ3ŠAà�A‘—‘ÑŠAñ	 ð Ð	˜QŸU™U›WÑ	$Ñ$€AØÐ	˜aŸf™f›hÑ	&Ñ&€Aàˆ5€Lr¡   Údpathc           	      óh  • [         R                  " S5      nSn[        R                  R	                  U S5      n[        R                  R                  U5      (       d  [        R                  " X#S9  [        R                  " US5       nUR                  U S9  SSS5        UR                  [        R                  R	                  U S5      [        R                  R	                  U S	5      [        R                  R	                  U S
5      4SSS9u	  nnnnn	n
nnnUUUUU	U
UUU4	$ ! , (       d  f       N‘= f)zFetch the mq2008 dataset.r¸   z>https://s3-us-west-2.amazonaws.com/xgboost-examples/MQ2008.zipz
MQ2008.zip)ÚurlÚfilenameÚr)ÚpathNzMQ2008/Fold1/train.txtzMQ2008/Fold1/test.txtzMQ2008/Fold1/vali.txtTF)Úquery_idÚ
zero_based)r0   r1   Úosr*  ÚjoinÚexistsr   ÚurlretrieveÚzipfileÚZipFileÚ
extractallÚload_svmlight_files)r%  r»   Úsrcrº   ÚfÚx_trainÚy_trainÚ	qid_trainÚx_testÚy_testÚqid_testÚx_validÚy_validÚ	qid_valids                 rY   Ú
get_mq2008r@    s  € ô ×"Ò"Ð#5Ó6€HØ
J€CÜ�W‰W�\‰\˜% Ó.€FÜ�7‰7�>‰>˜&×!Ñ!Ü×Ò Ò5ä	�Š˜ Ô	%¨Ø	�‰˜%ˆÑ ÷ 
&ð 	×$Ñ$ä�G‰G�L‰L˜Ð 8Ó9Ü�G‰G�L‰L˜Ð 7Ó8Ü�G‰G�L‰L˜Ð 7Ó8ð	
ð
 Øð 	%ð 	ñ
ØØØØØØØØØð 	ØØØØØØØØð
ð 
÷/ 
&Õ	%ús   ÂD#Ä#
D1Fr&   )Ú	vary_sizerÃ   Ún_samples_per_batchÚ	n_batchesÚuse_cupyrA  rÃ   c                óÚ  • / n/ n/ nU(       a4  SSK n	U	R                  R                  [        R                  " U5      5      n
O[        R                  R                  U5      n
[        U5       Hy  nU(       a  XS-  -   OU nU
R                  XÁ5      nU
R                  U5      nU
R                  SSUS9nUR                  U5        UR                  U5        UR                  U5        M{     XgU4$ )zMake batches of dense data.r   Né
   r.   r(   )	Úcupyr3   r4   r2   r?   rÅ   ÚrandnÚuniformÚappend)rB  r"   rC  rD  rA  rÃ   rT   r�   ÚwrG  rQ   rÉ   r!   Ú_XÚ_yÚ_ws                   rY   Úmake_batchesrO  :  sÇ   € ð 	€AØ
€AØ
€AÞÛà�k‰k×%Ñ%¤b§i¢i°Ó&=Ó>‰ä�i‰i×#Ñ# LÓ1ˆÜ�9ÖˆÞ4=Ð'¨b©&Ò0ÐCVˆ	Ø�Y‰Y�yÓ-ˆØ�Y‰Y�yÓ!ˆØ�[‰[˜Q Q¨Yˆ[Ð7ˆØ	�‰�ŒØ	�‰�ŒØ	�‰�Žñ ð �ˆ7€Nr¡   c                   óP  • \ rS rSr% Sr\R                  \S'   \R                  \
R                     \S'   \R                  \
R                     \S'   \R                  \
R                     \S'   \R                  \
R                     \S'   \R                  \
R                     \S'   S	rg
)Ú	ClickFoldi[  zCA structure containing information about generated user-click data.rT   r�   ÚqidÚscoreÚclickÚpos© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú
csr_matrixÚ__annotations__ÚnptÚNDArrayr2   r7   rF   r8   Ú__static_attributes__rV  r¡   rY   rQ  rQ  [  sp   ‡ áMà×ÑÓØ
‡{�{�2—8‘8ÑÓØ	�‰�R—X‘XÑ	ÓØ�;‰;�r—z‘zÑ"Ó"Ø�;‰;�r—x‘xÑ Ó Ø	�‰�R—X‘XÑ	Ör¡   rQ  c                   óF   • \ rS rSr% Sr\\S'   \\S'   \\S'   S\4S jr	Sr
g	)
Ú	RelDataCVig  zPSimple data struct for holding a train-test split of a learning to rank dataset.r   ÚtestÚmax_relr#   c                 ó    • U R                   S:H  $ )z6Whether the label consists of binary relevance degree.r.   )rd  ©Úselfs    rY   Ú	is_binaryÚRelDataCV.is_binaryn  s   € à�|‰|˜qÑ Ð r¡   rV  N)rW  rX  rY  rZ  r[  ÚRelDatar]  ru   rO   rh  r`  rV  r¡   rY   rb  rb  g  s    ‡ ÙZàƒNØ
ƒMØƒLð!˜4÷ !r¡   rb  c                   óÊ   • \ rS rSrSrS\SS4S jrS\R                  \	R                     S\R                  \	R                     S\R                  \	R                     4S	 jrS
rg)ÚPBMis  a   Simulate click data with position bias model. There are other models available in
`ULTRA <https://github.com/ULTR-Community/ULTRA.git>`_ like the cascading model.

References
----------
Unbiased LambdaMART: An Unbiased Pairwise Learning-to-Rank Algorithm

Úetar#   Nc                 ó¤   • [         R                  " / SQ5      U l        [         R                  " / SQ5      n[         R                  " X!5      U l        g )N)r  g{®GázÄ?çìQ¸…ëÑ?g¤p=
×£à?ra   )
gÃõ(\�Âå?g…ëQ¸…ã?g¸…ëQ¸Þ?gÃõ(\�ÂÕ?ro  çš™™™™™É?g)\�Âõ(¼?r  g{®Gáz´?g¸…ëQ¸®?)r2   rK   Ú
click_probÚpowerÚ	exam_prob)rg  rm  rs  s      rY   Ú__init__ÚPBM.__init__}  s6   € äŸ(š(Ò#?Ó@ˆŒÜ—H’HÚHó
ˆ	ô Ÿš )Ó1ˆ�r¡   ÚlabelsÚpositionc                 óÆ  • [         R                  " USS9n[         R                  " UR                  5      nSXS:  '   SX[	        U R
                  5      :¬  '   U R
                  U   n[         R                  " UR                  5      nUR                  UR                  :X  d   e[         R                  " USS9nSXUU R                  R                  :¬  '   U R                  U   n[         R                  R                  S5      nUR                  UR                  S   [         R                  S9n[         R                  " UR                  [         R                  S9nSX‡XC-  :  '   U$ )	z�Sample clicks for one query based on input relevance degree and position.

Parameters
----------

labels :
    relevance_degree

T)Úcopyr   rÑ   r&   )r+   r-   r,   r.   )r2   rK   r"  r›   Úlenrq  r+   rs  r3   r±   rF   r7   )	rg  rv  rw  rq  rs  ÚranksrQ   ÚprobÚclickss	            rY   Úsample_clicks_for_queryÚPBM.sample_clicks_for_query†  s  € ô —’˜& tÑ,ˆä—X’X˜fŸl™lÓ+ˆ
àˆ˜‰zÑà13ˆœ˜TŸ_™_Ó-Ñ-Ñ.Ø—_‘_ VÑ,ˆ
ä—H’H˜VŸ\™\Ó*ˆ	Ø�}‰} §¡Ó+Ð+Ð+Ü—’˜¨Ñ-ˆà.0ˆ�t—~‘~×*Ñ*Ñ*Ñ+Ø—N‘N 5Ñ)ˆ	ä�i‰i×#Ñ# DÓ)ˆØ�z‰z˜vŸ|™|¨A™´b·j±jˆzÐAˆä(*¯ª°·±ÄRÇXÁXÑ(NˆØ01ˆ�iÑ,Ñ,Ñ-Øˆr¡   )rq  rs  )rW  rX  rY  rZ  r[  r²   rt  r^  r_  r2   r7   r8   r~  r`  rV  r¡   rY   rl  rl  s  s^   † ñð2˜Eð 2 dô 2ð!Ø—k‘k "§(¡(Ñ+ð!Ø7:·{±{À2Ç8Á8Ñ7Lð!à	�‰�R—X‘XÑ	÷!r¡   rl  rÖ   c           
      ó   • [         R                  " U 5      n U R                  n[         R                  S[         R                  " [         R
                  " U SS U SS SS9) 5      S-   4   n[         R                  " [         R                  X!4   5      nX   n[         R                  " U[         R                  " U R                  /5      5      nXSU4$ )zrRun length encoding using numpy, modified from:
https://gist.github.com/nvictus/66627b580c13068589957d6ab0919e66

r   r.   NrÑ   T)Ú	equal_nan)	r2   Úasarrayr+   Úr_ÚflatnonzeroÚiscloseÚdiffrJ  rK   )rÖ   rÆ   ÚstartsÚlengthsrÜ   Úindptrs         rY   ÚrlencoderŠ  ª  s¢   € ô
 	�
Š
�1‹€AØ	�‰€AÜ�U‰U�1”b—n’n¤b§j¢j°°1°2°¸¸#¸2¸È$Ñ&OÐ%OÓPÐSTÑTÐTÑU€FÜ�gŠg”b—e‘e˜F˜IÑ&Ó'€GØ‰Y€FÜ�YŠY�vœrŸxšx¨¯©¨Ó1Ó2€Fà˜FÐ"Ð"r¡   rT   r�   rR  Úsample_ratec                 óº  • [         R                  R                  S5      n[        U R                  S   U-  5      n[         R
                  " SU R                  S   [         R                  S9nUR                  U5        USU nX   nX   nX&   n	[         R                  " U	5      n
Xz   nXŠ   nXš   n	[        SSS9nUR                  XxU	S9  UR                  U 5      nU$ )	zŸWe use XGBoost to generate the initial score instead of SVMRank for
simplicity. Sample rate is set to 0.1 by default so that we can test with small
datasets.

r&   r   r,   Nz	rank:ndcgÚhist)Ú	objectiveÚtree_method)rR  )r2   r3   r±   ru   r›   Úaranger?   r!  Úargsortr   ÚfitÚpredict)rT   r�   rR  r‹  rQ   r!   ÚindexÚX_trainr8  r9  Ú
sorted_idxÚltrÚscoress                rY   Úinit_rank_scorer™  ¹  sÒ   € ô �)‰)×
Ñ
 Ó
%€CÜ�A—G‘G˜A‘J Ñ,Ó-€IÜŸš 1 a§g¡g¨a¡j¼¿	¹	ÑB€EØ‡K�K�ÔØ�*�9Ð€Eà‰h€GØ‰h€GØ‘
€Iô —’˜IÓ&€JØÑ!€GØÑ!€GØÑ%€Iä
˜k°vÑ
>€CØ‡G�GˆG )€GÑ,ð �[‰[˜‹^€FØ€Mr¡   ÚfoldÚscores_foldc                 ó   • U u  p#nUR                   [        R                  :X  d   e[        R                  " U5      n[        R                  " UR
                  4[        R                  S9n[        R                  " UR
                  4[        R                  S9n[        SS9nU Hb  n	X”:H  n
U
R                  U
R                  S   5      n
X   n[        R                  " U5      SSS2   nXÆU
'   X:   nUR                  XÜ5      nXçU
'   Md     UR                  S   UR                  S   :X  d   UR                  UR                  45       eUR                  S   UR                  S   :X  d   UR                  UR                  45       e[        X#XAXv5      $ )zSimulate clicks for one fold.r,   ra   )rm  r   NrÑ   )r-   r2   r7   ÚuniqueÚemptyr+   r8   rl  r6   r›   r‘  r~  rQ  )rš  r›  ÚX_foldÚy_foldÚqid_foldÚqidsrw  r}  ÚpbmÚqÚqid_maskÚquery_scoresÚquery_positionÚrelevance_degreesÚquery_clickss                  rY   Úsimulate_one_foldrª  Ý  sV  € ð
  $Ñ€F�HØ�>‰>œRŸX™XÓ%Ð%Ð%ä�9Š9�XÓ€Dä�xŠx˜Ÿ™˜¬b¯h©hÑ7€HÜ�XŠX�v—{‘{�n¬B¯H©HÑ5€FÜ
�#‰,€Có ˆØ‘=ˆØ×#Ñ# H§N¡N°1Ñ$5Ó6ˆØ"Ñ,ˆäŸš LÓ1±$°B°$Ñ7ˆØ+�Ñà"Ñ,ÐØ×2Ñ2Ð3DÓUˆØ'ˆxÓñ ð �<‰<˜‰?˜hŸn™n¨QÑ/Ó/ÐO°&·,±,ÀÇÁÐ1OÓOÐ/Ø�<‰<˜‰?˜fŸl™l¨1™oÓ-ÐK°·±¸f¿l¹lÐ/KÓKÐ-ä�V X¸FÓMÐMr¡   Úcv_datac           	      óz  ^^^^^^• [        [        U R                  U R                  5      5      u  pn[        R
                  " S/U Vs/ s H  oDR                  S   PM     sn-   5      n[        R                  " U5      n[        U5      S:X  d   e[        R                  " U5      n[        R                  " U5      n[        R                  " U5      n[        XgU5      n	[        SUR                  5       V
s/ s H  o©XZS-
     XZ    PM     nn
/ / / / / / 4u  mmmmmm[        UR                  S-
  5       H¼  n
[        X   X*   X:   4Xº   5      nTR!                  UR"                  5        TR!                  UR$                  5        TR!                  UR&                  5        TR!                  UR(                  5        TR!                  UR*                  5        TR!                  UR,                  5        M¾     [        UR                  S-
  5       V
s/ s H  n
TU
   PM
     nn
[        S5       H!  n
XÚ   Xº   :H  R/                  5       (       a  M!   e   [        T5      S:X  a'  [1        TS   TS   TS   TS   TS   TS   5      nSnXï4$ UUUUUU4S j[        [        T5      5       5       u  pïXï4$ s  snf s  sn
f s  sn
f )z6Simulate click data using position biased model (PBM).r   r\   r.   r   Nc           
   3   óh   >#   • U  H'  n[        TU   TU   TU   TU   TU   TU   5      v •  M)     g 7frÔ   )rQ  )Ú.0rÉ   ÚX_lstÚc_lstÚp_lstÚq_lstÚs_lstÚy_lsts     €€€€€€rY   Ú	<genexpr>Ú"simulate_clicks.<locals>.<genexpr>$  sB   øé € ð 
â&�ô �e˜A‘h  a¡¨%°©(°E¸!±H¸eÀA¹hÈÈaÉ×QÐQÚ&ùs   ƒ/2)rÚ   Úzipr   rc  r2   rK   r›   Úcumsumrz  r   Úvstackrœ   r™  rÅ   r+   rª  rJ  rT   r�   rR  rS  rT  rU  ÚallrQ  )r«  rT   r�   rR  Úvr‰  ÚX_fullÚy_fullÚqid_fullÚscores_fullrÉ   r˜  rš  Úscores_check_1r   rc  r¯  r°  r±  r²  r³  r´  s                   @@@@@@rY   Úsimulate_clicksrÁ     s]  ý€ ä”S˜Ÿ™¨¯©Ó5Ó6�I€Aˆ#ô �XŠX�q�c±Ó3²¨AŸW™W QœZ±Ñ3Ñ3Ó4€FÜ�YŠY�vÓ€Fäˆv‹;˜%ÓÐÐÜ�]Š]˜1Ó€FÜ�^Š^˜AÓ€FÜ�~Š~˜cÓ"€Hô " &°(Ó;€Kä>CÀAÀvÇ{Á{Ô>SÓTÒ>S¸˜& Q¡™-¨&©)Ó4Ñ>S€FÐTà/1°2°r¸2¸rÀ2Ð/EÑ,€Eˆ5�%˜  uÜ�6—;‘; ‘?Ö#ˆÜ  !¡$¨©¨c©fÐ!5°v±yÓAˆØ�‰�T—V‘VÔØ�‰�T—V‘VÔØ�‰�T—X‘XÔØ�‰�T—Z‘ZÔ Ø�‰�T—Z‘ZÔ Ø�‰�T—X‘XÖñ $ô ).¨f¯k©k¸A©oÔ(>Ó?Ò(> 1�e˜A”hÑ(>€NÐ?Ü�1ŽXˆØÑ! V¡YÑ.×3Ñ3×5Ó5Ð5Ð5ñ ô ˆ5ƒz�QƒÜ˜% ™( E¨!¡H¨e°A©h¸¸a¹À%ÈÁ(ÈEÐRSÉHÓUˆØˆð ˆ;Ð÷	
ñ 
äœ3˜u›:Ô&ó
‰ˆð ˆ;ÐùòG 4ùò Uùò @s   Á	J.
Ã7J3ÈJ8r}  rU  c           
      óÄ  • [         R                  " U5      nX   n X5   nX%   nXE   n[        U5      u  n  n[        SUR                  5       GH  nXhS-
     n	Xh   n
Xš:  d   Xš45       e[         R
                  " X)U
 5      R                  S:X  d   Xš45       eXIU
 nUR                  5       S:X  d   UR                  5       5       eUR                  5       UR                  S-
  :¼  d9   UR                  5       UR                  U[         R
                  " X)U
 5      45       e[         R                  " U5      nX	U
 U   X	U
& X9U
 U   X9U
& XU
 U   XU
& X)U
 U   X)U
& GM     XX4nU$ )z,Sort data based on query index and position.r.   r   )r2   r‘  rŠ  rÅ   r+   r�  ÚminÚmax)rT   r�   rR  r}  rU  r–  r‰  Ú_rÉ   ÚbegÚendÚ	query_posr|   s                rY   Úsort_ltr_samplesrÉ  +  sz  € ô —’˜C“€JØ	‰€AØÑ€FØ
‰/€CØ
‰/€Cä˜C“=�L€FˆAˆqä�1�f—k‘k×"ˆØ˜‘U‰mˆØ‰iˆà‹yÐ$˜3˜*Ó$ˆyÜ�yŠy˜ ˜Ó&×+Ñ+¨qÓ0Ð<°3°*Ó<Ð0à˜C�Lˆ	Ø�}‰}‹ !Ó#Ð4 Y§]¡]£_Ó4Ð#Ø�}‰}‹ )§.¡.°1Ñ"4Ó4ð 	
Ø�M‰M‹OØ�N‰NØÜ�IŠI�c˜c�lÓ#ð	7
ó 	
Ð4ô —Z’Z 	Ó*ˆ
à˜3�Z 
Ñ+ˆˆcˆ
Ø  S˜/¨*Ñ5ˆ�3ˆØ˜3�Z 
Ñ+ˆˆcˆ
à˜s�| JÑ/ˆ�‹ñ+ #ð. �aÐ€Dà€Kr¡   ÚDTypeÚDMatrixTÚdevicec                 ó  • [         R                  R                  5       nU " UR                  SSSS9R	                  [         R
                  5      R                  SS5      5      n[        US5      (       a  UR                  SS2S4   nO	USS2S4   nUnU" XEUS	9n[        R                  " [        S
S9   [        SUS.U5        SSS5        [        US5      (       Gd  U " UR                  5       R                  SS5      5      nX†:H  R                  5       (       d   eUR                  R                   R"                  SL d   eUR                  R                   R$                  SL d   eUR'                  UR                  S	9  U " UR                  5       R                  SS5      5      nX†R                  :H  R                  5       (       d   eUnUR)                  U5        UR                  5       n	UR)                  UR                  SUR*                  5      5        UR                  5       n
X©:H  R                  5       (       d   eUR	                  [         R,                  5      nUR)                  U5        UR                  5       nX¹:H  R                  5       (       d   eUR                  SSSS5      n[        R                  " [        S
S9   UR)                  U5        SSS5        gg! , (       d  f       GN%= f! , (       d  f       g= f)zRun tests for base margin.r   ra   éd   r/   é2   r   ÚilocN)Úbase_marginz.*base_margin.*rŠ   r�  )r�  rÌ  FTr.   r‰   )r2   r3   r±   rš   rq   rF   r6   ÚhasattrrÐ  r0   r�   rŽ   Útrain_fnÚget_base_marginrº  ÚTÚflagsÚc_contiguousÚf_contiguousÚset_infoÚset_base_marginr+   rG   )rÊ  rË  rÌ  rQ   rT   r�   rÑ  ÚXyÚgotÚbm_colÚbm_rowÚbm_f64s               rY   Úrun_base_margin_inforà  \  s�  € ä
�)‰)×
Ñ
Ó
!€CÙˆc�j‰j˜˜C cˆjÐ*×1Ñ1´"·*±*Ó=×EÑEÀbÈ!ÓLÓM€AÜˆq�&×ÑØ�F‰F’1�a�4‰L‰àŠa�ˆd‰GˆØ€Ká	�! KÑ	0€Bä	�Š”zÐ);Ó	<Ü °6Ñ:¸BÔ?÷ 
=ô �1�f×Òá�B×&Ñ&Ó(×0Ñ0°°QÓ7Ó8ˆØÑ"×'Ñ'×)Ñ)Ð)Ð)à�}‰}×"Ñ"×/Ñ/°5Ò8Ð8Ð8Ø�}‰}×"Ñ"×/Ñ/°4Ò7Ð7Ð7Ø
�‰ §¡ˆÑ.Ù�B×&Ñ&Ó(×0Ñ0°°BÓ7Ó8ˆØ—}‘}Ñ$×)Ñ)×+Ñ+Ð+Ð+ð ˆØ
×Ñ˜;Ô'Ø×#Ñ#Ó%ˆØ
×Ñ˜;×.Ñ.¨q°+×2BÑ2BÓCÔDØ×#Ñ#Ó%ˆØÑ ×%Ñ%×'Ñ'Ð'Ð'ð "×(Ñ(¬¯©Ó4ˆØ
×Ñ˜;Ô'Ø×#Ñ#Ó%ˆØÑ ×%Ñ%×'Ñ'Ð'Ð'ð —i‘i  1 a¨Ó+ˆÜ�]Š]œ:Ð-?Ó@Ø×Ñ˜{Ô+÷ AÐ@ð7 ÷ 
=Ö	<ú÷< AÕ@ús   Â3K!ËK3Ë!
K0Ë3
LrÇ   Úas_densec                 óÜ  ^ ^^^• [        [        R                  S5      (       dN  [        R                  R                  S5      n[        R                  " T TST-
  USS9nUR                  SST S9nXV4$ [        [        R                  " 5       T5      mS[        S	[        R                  4UU UU4S
 jjn/ n[        TS9 n	[        T5       H#  n
UR                  U	R                  Xz5      5        M%     SSS5        / n/ nU H7  nUR                  5       u  pVUR                  U5        UR                  U5        M9     [!        U5      T:X  d   e[        R"                  " USS9n[        R$                  " U5      nUR'                  UR(                  S   UR(                  S   45      R*                  n[        R,                  " USS9nUR(                  S   T :X  d   eUR(                  S   T:X  d   eUR(                  S   T :X  d   eU(       aR  UR/                  5       nUR(                  S   T :X  d   eUR(                  S   T:X  d   e[        R0                  XÿS:H  '   Xö4$ Xæ4$ ! , (       d  f       GNs= f)z|Make sparse matrix.

Parameters
----------

as_dense:

  Return the matrix as np.ndarray with missing values filled by NaN

r±   r&   ra   Úcsr)ÚmrÆ   rÎ   rÃ   Úformatç        r¥   Út_idr#   c                 óð  >• [         R                  R                  SU -  5      nTT
-  nU T
S-
  :X  a  TX-  -
  nOUn[        R                  " T	UST-
  US9R	                  5       n[         R
                  " T	S45      n[        UR                  S   5       H]  nUR                  US-      UR                  U   -
  nUS:w  d  M-  XTS S 2U4   R                  5       UR                  T	S45      -  S-  -  nM_     XE4$ )Nr&   r.   ra   )rä  rÆ   rÎ   rÃ   r   rp  )
r2   r3   r±   r   Útocscr"  rÅ   r›   r‰  Útoarray)rç  rQ   Úthread_sizeÚn_features_tlocrT   r�   rÉ   r+   r"   r!   Ú	n_threadsrÇ   s           €€€€rY   Ú
random_cscÚ*make_sparse_regression.<locals>.random_csc©  sô   ø€ Ü�i‰i×#Ñ# D¨4¡KÓ0ˆØ  IÑ-ˆØ�9˜q‘=Ó Ø(¨4Ñ+=Ñ=‰Oà)ˆOä�MŠMØØØ˜(‘NØñ	
÷
 ‰%‹'ð 	
ô �HŠH�i �^Ó$ˆä�q—w‘w˜q‘zÖ"ˆAØ—8‘8˜A ™E‘? Q§X¡X¨a¡[Ñ0ˆDØ�q�yØ’q˜!�t‘W—_‘_Ó&¨¯©°YÀ°NÓ)CÑCÀcÑIÑI’ñ #ð
 ˆtˆr¡   )Úmax_workersN©rå  r   r.   r˜   )rÒ  r2   r3   r4   r   rš   rÃ  ÚmultiprocessingÚ	cpu_countru   Ú
csc_matrixr   rÅ   rJ  ÚsubmitÚresultrz  Úhstackr‚  r6   r›   rÕ  rÝ   rê  rk   )r!   r"   rÇ   rá  rQ   rT   r�   rî  ÚfuturesÚexecutorrÉ   Ú	X_resultsÚ	y_resultsr6  rã  Úarrrí  s   ```             @rY   Úmake_sparse_regressionrý  ‹  s#  û€ ô ”2—9‘9˜m×,Ñ,Ü�i‰i×#Ñ# DÓ)ˆÜ�MŠMØØØ˜(‘NØØñ
ˆð �J‰J˜3 c°	ˆJÐ:ˆØˆtˆô ”O×-Ò-Ó/°Ó<€Iðœð ¤×!2Ñ!2÷ ò ð. €GÜ	¨	Ò	2°hÜ�yÖ!ˆAØ�N‰N˜8Ÿ?™?¨:Ó9Ö:ñ "÷ 
3ð €IØ€IÛˆØ�x‰x‹z‰ˆØ×Ñ˜ÔØ×Ñ˜Öñ ô
 ˆy‹>˜YÓ&Ð&Ð&ä#Ÿ]š]¨9¸UÑC€CÜ
�
Š
�9Ó€AØ	�	‰	�1—7‘7˜1‘:˜qŸw™w q™zÐ*Ó+×-Ñ-€AÜ
�Šˆq�qÑ€Aà�9‰9�Q‰<˜9Ó$Ð$Ð$Ø�9‰9�Q‰<˜:Ó%Ð%Ð%Ø�7‰7�1‰:˜Ó"Ð"Ð"æØ�k‰k‹mˆØ�y‰y˜‰|˜yÓ(Ð(Ð(Ø�y‰y˜‰|˜zÓ)Ð)Ð)ÜŸ™ˆ�1‰H‰Øˆvˆàˆ6€M÷; 
3Ö	2ús   Â=3IÉ
I+Ú	n_stringsÚseedc                 ó>  • Sn[        5       n[        R                  R                  U5      n[	        U5      U :  aY  SR                  UR                  [        [        R                  5      USS95      nUR                  U5        [	        U5      U :  a  MY  [        U5      $ )zGenerate n unique strings.rˆ   Ú Tr  )Úsetr2   r3   r±   rz  r.  rÞ   rÚ   ÚstringÚascii_lettersÚadd)rþ  rÿ  Úname_lenÚunique_stringsrQ   Ú
random_strs         rY   Úunique_random_stringsr	  á  s†   € à€HÜ"›u€NÜ
�)‰)×
Ñ
 Ó
%€Cä
ˆnÓ
 	Ó
)Ø—W‘WØ�J‰J”tœF×0Ñ0Ó1¸È$ˆJÐOó
ˆ
ð 	×Ñ˜:Ô&ô	 ˆnÓ
 	Õ
)ô �ÓÐr¡   ræ  ra   Úcpu)rÇ   Ú	cat_ratior!  rÃ   Ú	cat_dtyperÌ  Ún_categoriesÚonehotr  r!  r  c          	      óö  • [         R                  " S5      n
[        R                  R	                  U5      n[        R                  R	                  US-   5      nU
R                  5       n[        U5       GH'  nUR                  SUSS9S   nUS:X  aÓ  [        R                  " U[        R                  5      (       a1  [        R                  " [        X.5      5      nUR                  UU SS9nO'[        R                  " SU5      nUR                  SX S9nU
R                  USS	9U[!        U5      '   U[!        U5         R"                  R%                  U5      U[!        U5      '   Mñ  UR                  SX S9nU
R                  UUR&                  S	9U[!        U5      '   GM*     [        R(                  " U 4S
9nUR*                   HQ  n[-        UU   R&                  U
R.                  5      (       a  UUU   R"                  R0                  -  nMI  UUU   -  nMS     US-  nUS:”  aÀ  [        U5       H±  nUR                  SU S-
  [3        X-  5      S9n[        R4                  UR6                  UU4'   [9        UR:                  R6                  U   5      (       d  Mj  U[        R<                  " UR:                  R6                  U   R>                  5      R@                  :X  a  M±   e   URB                  S   U:X  d   eU(       a  U
RE                  U5      nU(       a+  [G        UR*                  5      nURI                  U5        UU   nU	S:w  a2  U	S;   d   eSSK%nSSK&nURO                  U5      nUR                  U5      nUU4$ )aç  Generate categorical features for test.

Parameters
----------
n_categories:
    Number of categories for categorical features.
onehot:
    Should we apply one-hot encoding to the data?
sparsity:
    The ratio of the amount of missing values over the number of all entries.
cat_ratio:
    The ratio of features that are categorical.
shuffle:
    Whether we should shuffle the columns.
cat_dtype :
    The dtype for categorical features, might be string or numeric.

Returns
-------
X, y
r%   r.   r/   r   Tr  r(   rb   r,   r   ræ  r
  )ÚcudaÚgpuN)(r0   r1   r2   r3   r4   r   rÅ   rM   Ú
issubdtypeÚstr_rK   r	  rÞ   r�  r5   rp   rÕ   rs   Úset_categoriesr-   r"  rr   ro   rv   r#  ru   rk   rÐ  r   rS   r�  Ú
categoriesr+   r›   Úget_dummiesrÚ   r!  ÚcudfrG  Úfrom_pandas)r!   r"   r  r  rÇ   r  r!  rÃ   r  rÌ  rP   rQ   Úrow_rngrV   rÉ   rÞ   r  r{   ÚnumÚlabelÚcolr”  rr   r  rG  s                            rY   Úmake_categoricalr  ñ  sç  € ôD 
×	Ò	˜XÓ	&€Bô �)‰)×
Ñ
 Ó
-€CÜ�i‰i×#Ñ# L°1Ñ$4Ó5€Gà	�‰‹€BÜ�:×ˆØ—‘˜a °�Ð3°AÑ6ˆØ�Q‹;Ü�}Š}˜Y¬¯©×0Ñ0ô  ŸXšXÔ&;¸LÓ&LÓM�
Ø—N‘N :°IÀt�NÐL‘äŸYšY q¨,Ó7�
Ø—O‘O¨°�OÐM�àŸ™ 1¨J˜Ð7ˆBŒs�1‹v‰JØœC ›F™Ÿ™×6Ñ6°zÓBˆBŒs�1‹v‹Jà—/‘/ a¨l�/ÐKˆCØŸ™ 3¨c¯i©i˜Ð8ˆBŒs�1‹vŒJñ! ô$ �HŠH˜I˜<Ñ(€EØ�zŒzˆÜ�b˜‘g—m‘m R×%8Ñ%8×9Ñ9Ø�R˜‘W—[‘[×&Ñ&Ñ&ŠEà�R˜‘WÑŠEñ	 ð
 
ˆQ�J€Eà�#ƒ~Ü�zÖ"ˆAØ—O‘OØ˜I¨™M´°IÑ4HÓ0Ið $ð ˆEô !#§¡ˆB�G‰G�E˜1�HÑÜ˜rŸy™yŸ~™~¨aÑ0×1Ó1Ø#¤r§y¢y°·±·±ÀÑ1B×1MÑ1MÓ'N×'SÑ'SÕSÐSÐSñ #ð �8‰8�A‰;˜*Ó$Ð$Ð$ÞØ�^‰^˜BÓˆæÜ�r—z‘zÓ"ˆØ�‰˜Ô Ø�‰[ˆà�ƒØ˜Ó(Ð(Ð(ÛÛà×Ñ˜bÓ!ˆØ—
‘
˜5Ó!ˆØˆuˆ9Ðr¡   c                   óÖ   ^ • \ rS rSrSrSSS.S\S\S\\   S	\\   S
\S\\	   SS4U 4S jjjr
S\S\4S jrSS jrS\\\R"                  \R&                  4   \\\   4   4S jrSrU =r$ )ÚIteratorForTestiQ  zCIterator for testing streaming DMatrix. (external memory, quantile)FN)Úon_hostÚmin_cache_page_bytesrT   r�   rK  Úcacher   r!  r#   c                óŠ   >• [        U5      [        U5      :X  d   eXl        X l        X0l        SU l        [
        TU ]  UUUS9  g )Nr   )Úcache_prefixr   r!  )rz  rT   r�   rK  ÚitÚsuperrt  )rg  rT   r�   rK  r"  r   r!  Ú	__class__s          €rY   rt  ÚIteratorForTest.__init__T  sL   ø€ ô �1‹vœ˜Q›ÓÐÐØŒØŒØŒØˆŒÜ‰ÑØØØ!5ð 	ò 	
r¡   Ú
input_datac                 óŠ  • U R                   [        U R                  5      :X  a  g[        R                  " [
        SS9   U" U R                  U R                      U R                  U R                      S 5        S S S 5        U" U R                  U R                      R                  5       U R                  U R                      R                  5       U R                  (       a'  U R                  U R                      R                  5       OS S9  [        R                  " 5         U =R                   S-  sl         g! , (       d  f       NÃ= f)NFzKeyword argumentrŠ   )r|   r  Úweightr.   T)r%  rz  rT   r0   r�   Ú	TypeErrorr�   ry  rK  ÚgcÚcollect)rg  r)  s     rY   ÚnextÚIteratorForTest.nexti  sÑ   € Ø�7‰7”c˜$Ÿ&™&“kÓ!Øä�]Š]œ9Ð,>Ó?Ù�t—v‘v˜dŸg™g‘¨¯©¨t¯w©w©¸Ô>÷ @ñ 	Ø—‘˜Ÿ™‘×%Ñ%Ó'Ø—&‘&˜Ÿ™‘/×&Ñ&Ó(Ø-1¯V¯V�4—6‘6˜$Ÿ'™'‘?×'Ñ'Ô)¸ò	
ô
 	�
Š
ŒØ�Š�1‰�Ø÷ @Õ?ús   ¾9D4Ä4
Ec                 ó   • SU l         g )Nr   )r%  rf  s    rY   ÚresetÚIteratorForTest.resetz  s	   € Øˆ�r¡   c                 ó„  • [        U R                  S   [        R                  5      (       a   [        R                  " U R                  SS9nO[
        R                  " U R                  SS9n[
        R                  " U R                  SS9nU R                  (       a   [
        R                  " U R                  SS9nOSnXU4$ )zReturn concatenated arrays.r   rã  rñ  r˜   N)	ro   rT   r   r\  r¹  r2   rœ   r�   rK  )rg  rT   r�   rK  s       rY   Ú	as_arraysÚIteratorForTest.as_arrays}  s„   € ô �d—f‘f˜Q‘i¤×!2Ñ!2×3Ñ3Ü—’˜dŸf™f¨UÑ3‰Aä—’˜tŸv™v¨AÑ.ˆAÜ�NŠN˜4Ÿ6™6¨Ñ*ˆØ�6�6Ü—’˜tŸv™v¨AÑ.‰AàˆAØ�Qˆwˆr¡   )rT   r%  rK  r�   )r#   N)rW  rX  rY  rZ  r[  r   r   rÕ   rO   ru   rt  r   r/  r2  r   r   r2   r³   r   r\  r   r5  r`  Ú__classcell__)r'  s   @rY   r  r  Q  s¸   ø† ÙMð Ø.2ò
àð
ð ð
ð �HÑð	
ð ˜‰}ð
ð ð
ð ' s™mð
ð 
÷
ð 
ð*˜xð ¨Dô ô"ðà	ˆu�R—Z‘Z ×!2Ñ!2Ð2Ñ3°YÀÈÑ@SÐSÑ	T÷ò r¡   r  )F)r  )\r[  r-  rò  r-  r  r1  Úconcurrent.futuresr   Údataclassesr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   Úurllibr   Únumpyr2   r0   r^  Únumpy.randomÚRNGÚscipyr   Úcorer   r   r   r|   r   r   Úsklearnr   r   Útrainingr   rÓ  r%   r   Ú
DataFrameTr1   r   ÚMemoryÚmemoryru   r³   rÚ   rZ   r}   r…   r�   r"  r¶   r¼   rÀ   rË   r$  rÕ   r\  r@  rO   rO  r_  r7   rj  rQ  rb  rl  rŠ  r²   rF   r™  rª  rÁ  r8   rÉ  rà  rý  r	  Ú	DTypeLiker  r  rV  r¡   rY   Ú<module>rF     s…  ðá $Û 	Û Û 	Û Û Ý 1Ý !÷÷ ÷ õ õ ã Û Ý Ý )Ý ç 5Ñ 5ß 9ß *Ý (æÞ.à€Jà	×	Ò	˜XÓ	&€Ø	�‰�|¨QˆÐ	/€ð8Øð8Ø #ð8àˆu�U˜2Ÿ:™: r§z¡zÐ1Ñ2°E¸$À¸*Ñ4EÐEÑFÈÈdÐRÑSô8ðv>�9ô >ðB7˜ô 7ðt
�3ð 
˜4ô 
ð ‡�ð4  b§j¡j°"·*±*Ð&<Ñ =ó 4ó ð4ðn ‡�ð"�E˜"Ÿ*™* b§j¡jÐ0Ñ1ó "ó ð"ð ‡�ð8�E˜"Ÿ*™* b§j¡jÐ0Ñ1ó 8ó ð8ð ‡�ð�E˜"Ÿ*™* b§j¡jÐ0Ñ1ó ó ðð  ‡�ðs˜% 
¨B¯J©JÐ 6Ñ7ó só ðsðl ‡�ð5Øð5à
Ø
×ÑØ‡J�JØ‡J�JØ
×ÑØ‡J�JØ‡J�JØ
×ÑØ‡J�JØ‡J�Jðñ
ó5ó ð5ðx ð	ð ØòØðàðð ðð ð	ð ðð ðð ˆ4�—
‘
Ñ˜T "§*¡*Ñ-¨t°B·J±JÑ/?Ð?Ñ@öð< �×!Ñ! 3§;¡;¨r¯x©xÑ#8¸#¿+¹+ÀbÇhÁhÑ:OÐOÑ
P€ð ÷ð ó ðô	!�
ô 	!÷4ñ 4ðn#�—‘˜BŸH™HÑ%ð #¨%°·±¸S¿[¹[È#Ï+É+Ð0UÑ*Vô #ð& ñ	!Ø×Ñð!à
‡{�{�2—8‘8Ñð!ð 
�‰�R—X‘XÑ	ð!ð ð	!ð
 	‡[�[�—‘Ñõ!ðHNØ
�×!Ñ! 3§;¡;¨r¯x©xÑ#8¸#¿+¹+ÀbÇhÁhÑ:OÐOÑ
PðNà—‘˜RŸZ™ZÑ(ðNð ôNðF(˜Yð (¨5°¸HÀYÑ<OÐ1OÑ+Pô (ðV.Ø×Ñð.à
‡{�{�2—8‘8Ñð.ð 
�‰�R—X‘XÑ	ð.ð �K‰K˜Ÿ™Ñ!ð	.ð
 
�‰�R—X‘XÑ	ð.ð Ø
×ÑØ‡K�K�—‘ÑØ‡K�K�—‘ÑØ‡K�K�—‘Ñðñô.ðb+, ð +,°D¸±Mð +,È3ð +,ÐSWô +,ð^ ‡�ðRØðRØ #ðRØ/4ðRØ@DðRà
ˆ5�×"Ñ"Ñ# R§Z¡ZÐ/Ñ0óRó ðRðj  Sð  °ð  ¸¸S¹	ô  ð, ØØØØ%'§X¡XØò]Øð]àð]ð ð]ð
 ð]ð ð]ð ð]ð ð]ð ð]ð �y‰y×"Ñ"ð]ð ð]ð ˆ9�b—j‘jÐ Ñ!õ]ô@9�hõ 9r¡   