Ë
    °Ó^jŠ  ã                   ó   — d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlZddl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' d
dl(m)Z)m*Z* d
dl+m,Z,m-Z- d
dl.m/Z0 erddl1m2Z3 neZ3 ejh                  d«      Z5e5jm                  dd¬«      Z7de8de8deeeejr                  ejr                  f   ee:e:f   f   ddf   fd„Z;defd„Z<defd„Z=deddfd„Z>e7j~                  deejr                  ejr                  f   fd„«       Z@e7j~                  deejr                  ejr                  f   fd„«       ZAe7j~                  deejr                  ejr                  f   fd„«       ZBe7j~                  deejr                  ejr                  f   fd„«       ZCe7j~                  dee3ejr                  f   fd „«       ZDe7j~                  d!eEdee!jŒ                  ejr                  ejr                  e!jŒ                  ejr                  ejr                  e!jŒ                  ejr                  ejr                  f	   fd"„«       ZG	 dYd#d$d%œd&e8de8d'e8d(eHd)eHd*e8deeejr                     eejr                     eejr                     f   fd+„ZIee!jŒ                  ej”                  ej–                     ej”                  ej–                     f   ZLe	 G d,„ d-«      «       ZM G d.„ d/e«      ZN G d0„ d1«      ZOd2ej”                  ej–                     deej”                  ej”                  ej”                  f   fd3„ZP	 dZd4e!jŒ                  d5ej”                  ej–                     d6ej”                  ej–                     d7eQdej”                  ej¤                     f
d8„ZSd9ee!jŒ                  ej”                  ej–                     ej”                  ej–                     f   d:ej”                  ej¤                     deMfd;„ZTd<eNdeeMeeM   f   fd=„ZUd4e!jŒ                  d5ej”                  ej–                     d6ej”                  ej–                     d>ej”                  ej–                     d?ej”                  ej¬                     dee!jŒ                  ej”                  ej–                     ej”                  ej–                     ej”                  ej–                     f   fd@„ZWdAedBee&   dCeEddfdD„ZXe7j~                  de8de8dEeQdFeHdeee!jŒ                     ejr                  f   f
dG„«       ZYdHe8dIe8deeE   fdJ„ZZdKdLdMd#d$ej¬                  dNdOœde8de8dPe8dQeHdRe8dEeQdSeQdTeHd*e8dUej                  j¶                  dCeEdee,ejr                  f   fdV„Z\ G dW„ dXe%«      Z]y)[z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é   )Úconcat)ÚDataIterÚDMatrixÚQuantileDMatrix)Úis_pd_cat_dtypeÚpandas_pyarrow_mapper)Ú	ArrayLikeÚ	XGBRanker)Útrain)Ú	DataFrameÚjoblibz
./cachedir)ÚverboseÚ	n_samplesÚ
n_featuresÚreturnc              #   ó¨  K  — t        j                  d«      }t        j                  j	                  d«      }|j                  dd| |z  ¬«      j                  | |«      }t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                   t        j"                  t        j$                  t        j&                  t        j(                  t        j*                  t        j,                  t        j.                  t        j0                  t        j2                  t        j4                  g}|D ]A  }t        j6                  ||¬«      }||f–— |j9                  «       |j9                  «       f–— ŒC |D ]A  }t        j6                  ||¬«      }|j;                  |«      }|j;                  |«      }	||	f–— ŒC |j=                  dd| |z  ¬	«      j                  | |«      }t        j>                  t@        fD ]  }
t        j6                  ||
¬«      }||f–— Œ! t        j>                  t@        fD ]A  }t        j6                  ||¬«      }|j;                  |«      }|j;                  |«      }	||	f–— ŒC y
­w)z*Enumerate all supported dtypes from numpy.ÚpandaséÊ  r   é   ©ÚlowÚhighÚsize©Údtypeé   ç      à?©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               ú_/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/xgboost/testing/data.pyÚ	np_dtypesr\   1   s  è ø€ ô 
×	Ñ	˜XÓ	&€Bä
�)‰)×
Ñ
 Ó
%€Cà�;‰;˜1 3¨Y¸Ñ-Cˆ;ÓD×LÑLØ�:ó€Dô 	�‰Ü
�‰Ü
�‰Ü
�‰Ü
�‰Ü
�‰Ü
�‰Ü
�	‰	Ü
�	‰	Ü
�‰Ü
�	‰	Ü
�‰Ü
�‰Ü
�‰Ü
�
‰
Ü
�
‰
Ü
�
‰
Ü
�‰Ü
�	‰	Ü
�	‰	ð)€Fð, ò (ˆÜ�H‰H�T Ô'ˆØ�AˆgŠØ�k‰k‹m˜QŸX™X›ZÐ'Ó'ð(ð
 ò ˆÜ�H‰H�T Ô'ˆØ—,‘,˜tÓ$ˆØ�\‰\˜!‹_ˆØ�rˆkÓð	ð �<‰<˜˜3 Y°Ñ%;ˆ<Ó<×DÑDØ�:ó€Dô —8‘8œTÐ"ò ˆÜ�H‰H�T Ô(ˆØ�Aˆg‹ðô —8‘8œTÐ"ò ˆÜ�H‰H�T Ô(ˆØ—,‘,˜tÓ$ˆØ�\‰\˜!‹_ˆØ�rˆkÓñ	ùs   ‚KKc            	   #   ó8  K  — t        j                  d«      } | j                  «       | j                  «       | j	                  «       | j                  «       | j                  «       | j                  «       | j                  «       | j                  «       g}t        j                  }| j                  dd|dgdd|dgdœt        j                  ¬«      }t        j                  d| j                  fD ]-  }|D ]&  }| j                  dd|dgdd|dgdœ|¬«      }||f–— Œ( Œ/ t        j                  }| j                  «       | j!                  «       g}| j                  d	d
|dgdd
|d	gdœt        j                  ¬«      }t        j                  d| j                  fD ]m  }|D ]f  }| j                  d	d
|dgdd
|d	gdœ|¬«      }||f–— |d   }|d   }t#        || j$                  «      sJ ‚t#        || j$                  «      sJ ‚||f–— Œh Œo |j'                  d«      }|j(                  D ]'  }||   j*                  j-                  t.        «      ||<   Œ) t        j                  d| j                  fD ]4  }| j                  dd|dgdd|dgdœ| j1                  «       ¬«      }||f–— Œ6 d| j                  fD ]i  }dd|dgdd|dgdœ}	| j                  |	|€t        j2                  n| j5                  «       ¬«      }| j                  |	| j5                  «       ¬«      }||f–— Œk y­w)z/Enumerate all supported pandas extension types.r&   r/   r   é   é   ©Úf0Úf1r-   Nç      ð?g       @g      @ra   ÚcategoryTF)r2   r3   Ú
UInt8DtypeÚUInt16DtypeÚUInt32DtypeÚUInt64DtypeÚ	Int8DtypeÚ
Int16DtypeÚ
Int32DtypeÚ
Int64Dtyper4   Únanr   rH   ÚNAÚFloat32DtypeÚFloat64DtypeÚ
isinstanceÚSeriesÚastypeÚcolumnsÚcatÚrename_categoriesÚintÚCategoricalDtyperP   ÚBooleanDtype)
rR   rU   ÚNullrT   r.   rX   Úser_origÚserÚcÚdatas
             r[   Ú	pd_dtypesr   l   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 2§9¡9Ô-Ð-Ð-Ü˜h¨¯	©	Ô2Ð2Ð2Ø˜C�-Óñ		 ð
 ð �;‰;�zÓ"€DØ�\‰\ò 5ˆØ�q‘'—+‘+×/Ñ/´Ó4ˆˆQŠð5ä—‘˜˜rŸu™uÐ%ò ˆØ�\‰\Ø�q˜$ �?¨1¨a°°q¨/Ñ:Ø×%Ñ%Ó'ð ó 
ˆð �Bˆh‹ðð �r—u‘u�ò ˆØ˜U D¨$Ð/¸¸tÀTÈ4Ð7PÑQˆà�|‰|˜D°D°L¬¯ªÀbÇoÁoÓFWˆ|ÓXˆØ�\‰\˜$ b§o¡oÓ&7ˆ\Ó8ˆØ�Bˆh‹ñùs   ‚LLc            	   #   óØ  K  — t        j                  d«      } t        j                  d«      }t        }d| j                  dfD ]¤  }|D ]�  }|j	                  d«      s|j	                  d«      rŒ&| j                  |«      s|dk(  r|nt        j                  }| j                  dd|d	gd
d	|dgdœt        j                  ¬«      }| j                  dd|d	gd
d	|dgdœ|¬«      }||f–— ŒŸ Œ¦ | j                  dfD ]o  }| j                  dd|dgdd|dgdœ| j                  «       ¬«      }| j                  dd|dgdd|dgdœ| j                  |j                  «       «      ¬«      }||f–— Œq y­w)z*Pandas DataFrame with pyarrow backed type.r&   ÚpyarrowNr   rG   rQ   r/   r   r^   r_   r`   r-   FT)r2   r3   r   rn   Ú
startswithÚisnar4   rm   r   rH   ry   Ú
ArrowDtyperP   )rR   ÚparU   rz   r.   Ú	orig_nullrT   rX   s           r[   Úpd_arrow_dtypesr‡   ­   s›  è ø€ ä	×	Ñ	˜XÓ	&€BÜ	×	Ñ	˜YÓ	'€Bô #€Fð. �r—u‘u˜aÐ ò ˆØò 	ˆEØ×Ñ 	Ô*¨e×.>Ñ.>¸vÔ.FØà$&§G¡G¨D¤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Ø—-‘- §¡£
Ó+ð ó 
ˆð �Bˆh‹ñ	ùs   ‚E(E*rS   c                 ó‚  — | j                  d¬«      j                  dd«      }| j                  d¬«      }t        j                  |d<   t	        j
                  t        d¬«      5  t        ||«       ddd«       t	        j
                  t        d¬«      5  t        ||«       ddd«       y# 1 sw Y   Œ:xY w# 1 sw Y   yxY w)	zValidate there's no inf in X.é    r1   é   r_   )é   r   zInput data contains `inf`©ÚmatchN)	r5   r8   r4   Úinfr2   ÚraisesÚ
ValueErrorr   r   )rS   rV   Úys      r[   Ú	check_infr’   ç   sž   € à�
‰
˜ˆ
Ó×#Ñ# A qÓ)€AØ�
‰
˜ˆ
Ó€AÜ�f‰f€A€d�Gä	�‰”zÐ)DÔ	Eñ Ü˜˜1Ô÷ô 
�‰”zÐ)DÔ	Eñ Ü��1Œ÷ð ÷ð ú÷ð ús   Á#B)ÂB5Â)B2Â5B>c                  óš  ‡‡— dŠt         j                  j                  d«      Št        j                  d«      } dt
        t           dt
        t           dt
        t           dt         j                  fˆˆfd„}d	t        d
t        dt         j                  fˆˆfd„}| j                   |ddgddgddg«       |ddgddgddg«       |dd¬«       |dd¬«       |dd¬«       |dd ¬«       |d!d"¬«       |d#d$¬«       |d%d&¬«      d'œ	«      }||j                  j                  d(g«         j                  «       }|d(   j                  «       }||fS ))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                 óÜ   •— ‰j                  t        ‰|d   z  «      | d   |d   ¬«      }‰j                  ‰|j                  d   z
  | d   |d   ¬«      }t        j                  ||gd¬«      S )Nr   )r,   ÚlocÚscaler/   ©Úaxis)Únormalrw   Úshaper4   Úconcatenate)r”   r•   r–   Úl0Úl1r"   rS   s        €€r[   Úmixture_2compz-get_california_housing.<locals>.mixture_2comp  sv   ø€ ð �Z‰ZÜ�i '¨!¡*Ñ,Ó-°E¸!±HÀFÈ1ÁIð ó 
ˆð �Z‰Z˜i¨"¯(©(°1©+Ñ5¸EÀ!¹HÈFÐSTÉIˆZÓVˆÜ�~‰~˜r 2˜h¨QÔ/Ð/ó    ÚmeanÚstdc                 ó.   •— ‰j                  | |‰f¬«      S )N©r˜   r™   r,   )rœ   )r£   r¤   r"   rS   s     €€r[   Únormz$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°   )r4   r5   Údefault_rngr2   r3   r
   ÚfloatÚndarrayr   rt   Ú
differenceÚto_numpy)rR   r¡   r§   rX   rV   r‘   r"   rS   s         @@r[   Úget_california_housingr¶   ô   sv  ù€ ð €IÜ
�)‰)×
Ñ
 Ó
%€Cä	×	Ñ	˜XÓ	&€Bð0Ü”E‰{ð0Ü$(¬¡Kð0Ü:>¼u¹+ð0ä	�‰ö0ðB”5ð Bœuð 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ð* 	ˆ2�:‰:× Ñ  - Ó1Ñ2×;Ñ;Ó=€AØ
ˆ=Ñ×"Ñ"Ó$€AØˆaˆ4€Kr¢   c                  ó|   — t        j                  d«      } | j                  «       }|j                  |j                  fS )z&Fetch the digits dataset from sklearn.úsklearn.datasets)r2   r3   Úload_digitsr~   Útarget)Údatasetsr~   s     r[   Ú
get_digitsr¼   ,  s6   € ô ×"Ñ"Ð#5Ó6€HØ×ÑÓ!€DØ�9‰9�d—k‘kÐ!Ð!r¢   c                  óP   — t        j                  d«      } | j                  d¬«      S )z-Fetch the breast cancer dataset from sklearn.r¸   T)Ú
return_X_y)r2   r3   Úload_breast_cancer)r»   s    r[   Ú
get_cancerrÀ   4  s)   € ô ×"Ñ"Ð#5Ó6€HØ×&Ñ&°$Ð&Ó7Ð7r¢   c                  óŽ  — t        j                  d«      } t        j                  j	                  d«      }d}d}| j                  ||¬«      \  }}|j                  d||j                  «      }t        |j                  d   «      D ]<  }t        |j                  d   «      D ]  }|||f   sŒt        j                  |||f<   Œ! Œ> ||fS )zGenerate a sparse dataset.r¸   éÇ   iÐ  g      è?)Úrandom_stater/   r   )
r2   r3   r4   r5   r6   Úmake_regressionrO   r�   Úrangerm   )	r»   rS   ÚnÚsparsityrV   r‘   ÚflagÚiÚjs	            r[   Ú
get_sparserË   ;  sÁ   € ô ×"Ñ"Ð#5Ó6€HÜ
�)‰)×
Ñ
 Ó
$€CØ€AØ€HØ×#Ñ# A°CÐ#Ó8�D€A€qØ�<‰<˜˜8 Q§W¡WÓ-€DÜ�1—7‘7˜1‘:Óò !ˆÜ�q—w‘w˜q‘zÓ"ò 	!ˆAØ�A�q�D‹zÜŸ&™&��!�Q�$’ñ	!ð!ð ˆaˆ4€Kr¢   c                  ó¶  ‡‡‡— t         rddlŠnt        j                  d«      Št        j
                  j                  d«      ŠdŠ‰j                  «       } dt        t        t        t        f   t        f   dt        d‰j                  fˆˆˆfd	„} |d
dddddœd«      | d<    |ddddœd«      | d<    |dddddœd«      | d<    |ddd d!d"d#d$d%œd«      | d&<    |d'd(d)d!d*œd+«      | d,<    |d-d(d.d/d0d"d1d2d3œd«      | d4<    |d5d6d7d8d9d:œd;«      | d<<    |d=d>d?d@d$dAœd«      | dB<    |dCdDdd"dEœd«      | dF<    |d@dGdGdHœdI«      | dJ<   dKt        dLt        dt        d‰j                  fˆˆˆfdM„} |dNdOd«      | dP<    |dQdRd«      | dS<    |dTdUd«      | dV<    |dWdXd«      | dY<    |dZd[d«      | d\<    |d]d^d«      | d_<    |d`dad«      | db<    |dcddd«      | de<    |dfdgd«      | dh<    |didjd«      | dk<   t        | j                  «      }‰j                  |«       | |   } t	        j                   ‰f¬l«      }| j                  D ]q  }t#        | |   j$                  ‰j&                  «      r:|| |   j(                  j*                  j-                  t        j.                  «      z  }Œ`|| |   j0                  z  }Œs |dm|j3                  «       z  z  }|dn|j5                  «       z
  z  }| |fS )oam  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        ‰	d|z
  z  «      }t        j                  d|z
  «      dkD  xr |dkD  }|rd|z
  }|| t        j                  <   t	        | j                  «       «      }t	        | j                  «       «      }|dxx   dt        j                  |«      z
  z  cc<   ‰j                  |‰	|¬«      }‰
j                  |‰
j                  t        d„ |«      «      ¬«      }|S )	Nr/   rc   ç�íµ ÷Æ°>r   éÿÿÿÿ)r,   Úpc                 ó"   — t        | t        «      S ©N)rq   Ústr)Úxs    r[   ú<lambda>z5get_ames_housing.<locals>.synth_cat.<locals>.<lambda>x  s   € ¤¨A¬sÓ!3€ r¢   r-   )rw   r4   Úabsrm   ÚlistÚkeysÚvaluesÚsumÚchoicerr   rx   Úfilter)rÍ   rÎ   Ún_nullsÚhas_nanrÇ   rÚ   rÒ   rÖ   Úseriesr"   rR   rS   s            €€€r[   Ú	synth_catz#get_ames_housing.<locals>.synth_catf  sÚ   ø€ ô �i 1 w¡;Ñ/Ó0ˆÜ—&‘&˜˜w™Ó'¨$Ñ.Ò>°7¸Q±;ˆÙØ˜W‘}ˆHØ!)ˆJ”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ÚTwnhsErc   Ú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                 ó  •— ‰j                  | |‰¬«      }t        ‰d|z
  z  «      }t        j                  d|z
  «      dkD  r,|dkD  r'‰j	                  ‰|d¬«      }t        j
                  ||<   ‰j                  |t        j                  ¬«      S )	Nr¦   r/   rc   rÐ   r   F©r,   Úreplacer-   )rœ   rw   r4   rØ   rÝ   rm   rr   rI   )	r˜   r¤   rÎ   rÖ   rß   Únull_idxr"   rR   rS   s	         €€€r[   Ú	synth_numz#get_ames_housing.<locals>.synth_numÝ  s}   ø€ Ø�J‰J˜3 c°	ˆJÓ:ˆÜ�i 1 w¡;Ñ/Ó0ˆÜ�6‰6�#˜‘-Ó  4Ò'¨G°aªKØ—z‘z )°'À5�zÓIˆHÜŸ&™&ˆAˆh‰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&   r2   r3   r4   r5   r±   r   r   r   rÕ   r²   rr   rÙ   rt   ÚshuffleÚzerosrq   r.   rx   ru   Úcodesrs   rI   rÛ   r¤   r£   )	rX   râ   r  rt   r‘   r}   r"   rR   rS   s	         @@@r[   Úget_ames_housingr   L  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�ÔØ	ˆG‰€Bô 	�‰˜	�|Ô$€AØ�Z‰Zò ˆÜ�b˜‘e—k‘k 2×#6Ñ#6Ô7Ø��A‘—‘—‘×'Ñ'¬¯
©
Ó3Ñ3‰Aà��A‘—‘Ñ‰Að	ð Ð	˜QŸU™U›WÑ	$Ñ$€AØÐ	˜aŸf™f›hÑ	&Ñ&€Aàˆqˆ5€Lr¢   Údpathc           	      ób  — t        j                  d«      }d}t        j                  j	                  | d«      }t        j                  j                  |«      st        j                  ||¬«       t        j                  |d«      5 }|j                  | ¬«       ddd«       |j                  t        j                  j	                  | d«      t        j                  j	                  | d	«      t        j                  j	                  | d
«      fdd¬«      \	  }}}}}	}
}}}|||||	|
|||f	S # 1 sw Y   Œ�xY w)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)r2   r3   Ú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                 r[   Ú
get_mq2008r<    s#  € ô ×"Ñ"Ð#5Ó6€HØ
J€CÜ�W‰W�\‰\˜% Ó.€FÜ�7‰7�>‰>˜&Ô!Ü×Ñ ¨fÕ5ä	�‰˜ Ó	%ð !¨Ø	�‰˜%ˆÔ ÷!ð 	×$Ñ$ä�G‰G�L‰L˜Ð 8Ó9Ü�G‰G�L‰L˜Ð 7Ó8Ü�G‰G�L‰L˜Ð 7Ó8ð	
ð
 Øð 	%ó 	ñ
ØØØØØØØØØð 	ØØØØØØØØð
ð 
÷/!ð !ús   ÂD%Ä%D.Fr'   )Ú	vary_sizerÃ   Ún_samples_per_batchÚ	n_batchesÚuse_cupyr=  rÃ   c                óÌ  — g }g }g }|r3ddl }	|	j                  j                  t        j                  |«      «      }
nt        j                  j                  |«      }
t        |«      D ]x  }|r| |dz  z   n| }|
j                  ||«      }|
j                  |«      }|
j                  dd|¬«      }|j                  |«       |j                  |«       |j                  |«       Œz |||fS )zMake batches of dense data.r   Né
   r/   r)   )	Úcupyr5   r6   r4   rA   rÅ   ÚrandnÚuniformÚappend)r>  r#   r?  r@  r=  rÃ   rV   r‘   ÚwrC  rS   rÉ   r"   Ú_XÚ_yÚ_ws                   r[   Úmake_batchesrK  <  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ˆØ	�‰�ŒØ	�‰�ŒØ	�‰��ðð ˆa�ˆ7€Nr¢   c                   óH  — e Zd ZU dZej
                  ed<   ej                  e	j                     ed<   ej                  e	j                     ed<   ej                  e	j                     ed<   ej                  e	j                     ed<   ej                  e	j                     ed<   y)	Ú	ClickFoldzCA structure containing information about generated user-click data.rV   r‘   ÚqidÚscoreÚclickÚposN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú
csr_matrixÚ__annotations__ÚnptÚNDArrayr4   r9   rH   r:   © r¢   r[   rM  rM  ]  sp   … áMà×ÑÓØ
‡{�{�2—8‘8ÑÓØ	�‰�R—X‘XÑ	ÓØ�;‰;�r—z‘zÑ"Ó"Ø�;‰;�r—x‘xÑ Ó Ø	�‰�R—X‘XÑ	Ôr¢   rM  c                   ó<   — e Zd ZU dZeed<   eed<   eed<   defd„Zy)Ú	RelDataCVzPSimple data struct for holding a train-test split of a learning to rank dataset.r   ÚtestÚmax_relr$   c                 ó    — | j                   dk(  S )z6Whether the label consists of binary relevance degree.r/   )r^  ©Úselfs    r[   Ú	is_binaryzRelDataCV.is_binaryp  s   € à�|‰|˜qÑ Ð r¢   N)	rR  rS  rT  rU  ÚRelDatarW  rw   rQ   rb  rZ  r¢   r[   r\  r\  i  s    … ÙZàƒNØ
ƒMØƒLð!˜4ô !r¢   r\  c                   ó¾   — e Zd ZdZdeddfd„Zdej                  ej                     dej                  ej                     dej                  ej                     fd„Zy)	ÚPBMa  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                 ó    — t        j                  g d¢«      | _        t        j                  g d¢«      }t        j                  ||«      | _        y )N)r
  g{®GázÄ?çìQ¸…ëÑ?g¤p=
×£à?rc   )
gÃõ(\�Âå?g…ëQ¸…ã?g¸…ëQ¸Þ?gÃõ(\�ÂÕ?rh  çš™™™™™É?g)\�Âõ(¼?r
  g{®Gáz´?g¸…ëQ¸®?)r4   rM   Ú
click_probÚpowerÚ	exam_prob)ra  rf  rl  s      r[   Ú__init__zPBM.__init__  s8   € äŸ(™(Ò#?Ó@ˆŒÜ—H‘HÚHó
ˆ	ô Ÿ™ )¨SÓ1ˆ�r¢   ÚlabelsÚpositionc                 óÜ  — t        j                  |d¬«      }t        j                  |j                  «      }d||dk  <   d||t	        | j
                  «      k\  <   | j
                  |   }t        j                  |j                  «      }|j                  |j                  k(  sJ ‚t        j                  |d¬«      }d||| j                  j                  k\  <   | j                  |   }t         j                  j                  d«      }|j                  |j                  d   t         j                  ¬«      }t        j                  |j                  t         j                  ¬«      }d||||z  k  <   |S )	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/   )r4   rM   r  r�   Úlenrj  r,   rl  r5   r±   rH   r9   )	ra  rn  ro  rj  rl  ÚranksrS   ÚprobÚclickss	            r[   Úsample_clicks_for_queryzPBM.sample_clicks_for_queryˆ  s  € ô —‘˜& tÔ,ˆä—X‘X˜fŸl™lÓ+ˆ
àˆˆv˜‰zÑà13ˆˆvœ˜TŸ_™_Ó-Ñ-Ñ.Ø—_‘_ VÑ,ˆ
ä—H‘H˜VŸ\™\Ó*ˆ	Ø�}‰} §¡Ò+Ð+Ð+Ü—‘˜¨Ô-ˆà.0ˆˆe�t—~‘~×*Ñ*Ñ*Ñ+Ø—N‘N 5Ñ)ˆ	ä�i‰i×#Ñ# DÓ)ˆØ�z‰z˜vŸ|™|¨A™´b·j±jˆzÓAˆä(*¯©°·±ÄRÇXÁXÔ(NˆØ01ˆˆt�i *Ñ,Ñ,Ñ-Øˆr¢   )rR  rS  rT  rU  r²   rm  rX  rY  r4   r9   r:   rv  rZ  r¢   r[   re  re  u  s^   „ ñð2˜Eð 2 dó 2ð!Ø—k‘k "§(¡(Ñ+ð!Ø7:·{±{À2Ç8Á8Ñ7Lð!à	�‰�R—X‘XÑ	ô!r¢   re  rÖ   c           
      ó   — t        j                  | «      } | j                  }t         j                  dt        j                  t        j
                  | dd | dd d¬«       «      dz   f   }t        j                  t         j                  ||f   «      }| |   }t        j                  |t        j                  | j                  g«      «      }|||fS )zzRun length encoding using numpy, modified from:
    https://gist.github.com/nvictus/66627b580c13068589957d6ab0919e66

    r   r/   NrÑ   T)Ú	equal_nan)	r4   Úasarrayr,   Úr_ÚflatnonzeroÚiscloseÚdiffrF  rM   )rÖ   rÆ   ÚstartsÚlengthsrÛ   Úindptrs         r[   Ú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 A˜IÑ&Ó'€GØˆv‰Y€FÜ�Y‰Y�vœrŸx™x¨¯©¨Ó1Ó2€Fà�7˜FÐ"Ð"r¢   rV   r‘   rN  Úsample_ratec                 óÖ  — t         j                  j                  d«      }t        | j                  d   |z  «      }t        j
                  d| j                  d   t         j                  ¬«      }|j                  |«       |d| }| |   }||   }||   }	t        j                  |	«      }
||
   }||
   }|	|
   }	t        dd¬«      }|j                  |||	¬«       |j                  | «      }|S )	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)rN  )r4   r5   r±   rw   r�   ÚarangerA   r  Úargsortr   ÚfitÚpredict)rV   r‘   rN  r‚  rS   r"   ÚindexÚX_trainr4  r5  Ú
sorted_idxÚltrÚscoress                r[   Ú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Ø�E‘
€Iô —‘˜IÓ&€JØ�jÑ!€GØ�jÑ!€GØ˜*Ñ%€Iä
˜k°vÔ
>€CØ‡G�GˆG�W )€GÔ,ð �[‰[˜‹^€FØ€Mr¢   ÚfoldÚscores_foldc                 ó4  — | \  }}}|j                   t        j                  k(  sJ ‚t        j                  |«      }t        j                  |j
                  ft        j                  ¬«      }t        j                  |j
                  ft        j                  ¬«      }t        d¬«      }|D ]f  }	|	|k(  }
|
j                  |
j                  d   «      }
||
   }t        j                  |«      ddd…   }|||
<   ||
   }|j                  ||«      }|||
<   Œh |j                  d   |j                  d   k(  sJ |j                  |j                  f«       ‚|j                  d   |j                  d   k(  sJ |j                  |j                  f«       ‚t        ||||||«      S )zSimulate clicks for one fold.r-   rc   )rf  r   NrÑ   )r.   r4   r9   ÚuniqueÚemptyr,   r:   re  r8   r�   rˆ  rv  rM  )r‘  r’  ÚX_foldÚy_foldÚqid_foldÚqidsro  ru  ÚpbmÚqÚqid_maskÚquery_scoresÚquery_positionÚrelevance_degreesÚquery_clickss                  r[   Úsimulate_one_foldr¡  ß  so  € ð
  $Ñ€Fˆ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ˆØ" 8Ñ,ˆäŸ™ LÓ1±$°B°$Ñ7ˆØ+ˆ�Ñà" 8Ñ,ÐØ×2Ñ2Ð3DÀnÓUˆØ'ˆˆxÒð
(ð �<‰<˜‰?˜hŸn™n¨QÑ/Ò/ÐO°&·,±,ÀÇÁÐ1OÓOÐ/Ø�<‰<˜‰?˜fŸl™l¨1™oÒ-ÐK°·±¸f¿l¹lÐ/KÓKÐ-ä�V˜V X¨{¸FÀHÓMÐMr¢   Úcv_datac           	      ód  ‡‡‡‡‡‡— t        t        | j                  | j                  «      «      \  }}}t	        j
                  dg|D �cg c]  }|j                  d   ‘Œ c}z   «      }t	        j                  |«      }t        |«      dk(  sJ ‚t        j                  |«      }t	        j                  |«      }t	        j                  |«      }t        |||«      }	t        d|j                  «      D �
cg c]  }
|	||
dz
     ||
    ‘Œ }}
g g g g g g f\  ŠŠŠŠŠŠt        |j                  dz
  «      D ]¿  }
t        ||
   ||
   ||
   f||
   «      }‰j!                  |j"                  «       ‰j!                  |j$                  «       ‰j!                  |j&                  «       ‰j!                  |j(                  «       ‰j!                  |j*                  «       ‰j!                  |j,                  «       ŒÁ t        |j                  dz
  «      D �
cg c]  }
‰|
   ‘Œ	 }}
t        d«      D ]  }
||
   ||
   k(  j/                  «       rŒJ ‚ t        ‰«      dk(  r(t1        ‰d   ‰d   ‰d   ‰d   ‰d   ‰d   «      }d}||fS ˆˆˆˆˆˆfd„t        t        ‰«      «      D «       \  }}||fS c c}w c c}
w c c}
w )z6Simulate click data using position biased model (PBM).r   r^   r/   r   Nc           
   3   ób   •K  — | ]&  }t        ‰|   ‰|   ‰|   ‰|   ‰|   ‰|   «      –— Œ( y ­wrÔ   )rM  )Ú.0rÉ   ÚX_lstÚc_lstÚp_lstÚq_lstÚs_lstÚy_lsts     €€€€€€r[   ú	<genexpr>z"simulate_clicks.<locals>.<genexpr>&  s@   øè ø€ ò 
àô �e˜A‘h  a¡¨%°©(°E¸!±H¸eÀA¹hÈÈaÉ×Qñ
ùs   ƒ,/)rÙ   Úzipr   r]  r4   rM   r�   Úcumsumrr  r   Úvstackrž   r�  rÅ   r,   r¡  rF  rV   r‘   rN  rO  rP  rQ  ÚallrM  )r¢  rV   r‘   rN  Úvr€  ÚX_fullÚy_fullÚqid_fullÚscores_fullrÉ   r�  r‘  Úscores_check_1r   r]  r¦  r§  r¨  r©  rª  r«  s                   @@@@@@r[   Úsimulate_clicksr·    sx  ý€ ä”S˜Ÿ™¨¯©Ó5Ó6�I€A€qˆ#ô �X‰X�q�c°Ö3¨A˜QŸ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¸ˆk˜&  Q¡™-¨&°©)Ò4ÐT€FÐTà/1°2°r¸2¸rÀ2Ð/EÑ,€Eˆ5�%˜  uÜ�6—;‘; ‘?Ó#ò ˆÜ  ! A¡$¨¨!©¨c°!©fÐ!5°v¸a±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ò 6ˆØ˜qÑ! V¨A¡YÑ.×3Ñ3Õ5Ð5Ð5ð6ô ˆ5ƒz�Q‚Ü˜% ™( E¨!¡H¨e°A©h¸¸a¹À%ÈÁ(ÈEÐRSÉHÓUˆØˆð �$ˆ;Ð÷	
ð 
äœ3˜u›:Ó&ô
‰ˆˆtð �$ˆ;ÐùòG 4ùò Uùò @s   Á	J#
Ã1J(ÈJ-ru  rQ  c           
      óÜ  — t        j                  |«      }| |   } ||   }||   }||   }t        |«      \  }}}t        d|j                  «      D �]  }||dz
     }	||   }
|	|
k  s	J |	|
f«       ‚t        j
                  ||	|
 «      j                  dk(  s	J |	|
f«       ‚||	|
 }|j                  «       dk(  sJ |j                  «       «       ‚|j                  «       |j                  dz
  k\  s9J |j                  «       |j                  |t        j
                  ||	|
 «      f«       ‚t        j                  |«      }| |	|
 |   | |	|
 ||	|
 |   ||	|
 ||	|
 |   ||	|
 ||	|
 |   ||	|
 �Œ | |||f}|S )z,Sort data based on query index and position.r/   r   )r4   rˆ  r�  rÅ   r,   r”  ÚminÚmax)rV   r‘   rN  ru  rQ  r�  r€  Ú_rÉ   ÚbegÚendÚ	query_posr~   s                r[   Úsort_ltr_samplesr¿  -  s«  € ô —‘˜C“€JØ	ˆ*‰€AØ�JÑ€FØ
ˆj‰/€CØ
ˆj‰/€Cä˜C“=�L€FˆAˆqä�1�f—k‘kÓ"ó 0ˆØ�Q˜‘U‰mˆØ�Q‰iˆà�SŠyÐ$˜3 ˜*Ó$ˆyÜ�y‰y˜˜S ˜Ó&×+Ñ+¨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 	Ó*ˆ
à�s˜3�Z 
Ñ+ˆˆ#ˆcˆ
Ø   S˜/¨*Ñ5ˆˆs�3ˆØ�s˜3�Z 
Ñ+ˆˆ#ˆcˆ
à˜3˜s�| JÑ/ˆˆC�Šð+0ð. ˆf�a˜Ð€Dà€Kr¢   ÚDTypeÚDMatrixTÚdevicec                 óØ  — t         j                  j                  «       } | |j                  ddd¬«      j	                  t         j
                  «      j                  dd«      «      }t        |d«      r|j                  dd…df   }n	|dd…df   }|} ||||¬	«      }t        j                  t        d
¬«      5  t        d|dœ|«       ddd«       t        |d«      �sö | |j                  «       j                  dd«      «      }||k(  j                  «       sJ ‚|j                  j                   j"                  du sJ ‚|j                  j                   j$                  du sJ ‚|j'                  |j                  ¬	«        | |j                  «       j                  dd«      «      }||j                  k(  j                  «       sJ ‚|}|j)                  |«       |j                  «       }	|j)                  |j                  d|j*                  «      «       |j                  «       }
|
|	k(  j                  «       sJ ‚|j	                  t         j,                  «      }|j)                  |«       |j                  «       }||	k(  j                  «       sJ ‚|j                  dddd«      }t        j                  t        d
¬«      5  |j)                  |«       ddd«       yy# 1 sw Y   �ŒxY w# 1 sw Y   yxY w)zRun tests for base margin.r   rc   éd   r1   é2   r   ÚilocN)Úbase_marginz.*base_margin.*rŒ   r„  )r†  rÂ  FTr/   r‹   )r4   r5   r±   rœ   rs   rH   r8   ÚhasattrrÆ  r2   r�   r�   Útrain_fnÚget_base_marginr°  ÚTÚflagsÚc_contiguousÚf_contiguousÚset_infoÚset_base_marginr,   rI   )rÀ  rÁ  rÂ  rS   rV   r‘   rÇ  ÚXyÚgotÚbm_colÚbm_rowÚbm_f64s               r[   Ú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á	�!�Q 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¨Ó+ˆÜ�]‰]œ:Ð-?Ô@ñ 	,Ø×Ñ˜{Ô+÷	,ð 	,ð7 ÷@ñ @ú÷<	,ð 	,ús   Â7KÊ7K ËKË K)rÇ   Úas_densec                 óÈ  ‡ ‡‡‡— t        t        j                  d«      sTt        j                  j                  d«      }t	        j                  ‰ ‰d‰z
  |d¬«      }|j                  dd‰ ¬«      }||fS t        t        j                  «       ‰«      Šdt        d	t        j                  fˆˆ ˆˆfd
„}g }t        ‰¬«      5 }	t        ‰«      D ]#  }
|j                  |	j                  ||
«      «       Œ% 	 ddd«       g }g }|D ]7  }|j                  «       \  }}|j                  |«       |j                  |«       Œ9 t!        |«      ‰k(  sJ ‚t	        j"                  |d¬«      }t        j$                  |«      }|j'                  |j(                  d   |j(                  d   f«      j*                  }t        j,                  |d¬«      }|j(                  d   ‰ k(  sJ ‚|j(                  d   ‰k(  sJ ‚|j(                  d   ‰ k(  sJ ‚|rR|j/                  «       }|j(                  d   ‰ k(  sJ ‚|j(                  d   ‰k(  sJ ‚t        j0                  ||dk(  <   ||fS ||fS # 1 sw Y   �ŒhxY w)z�Make sparse matrix.

    Parameters
    ----------

    as_dense:

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

    r±   r'   rc   Úcsr)ÚmrÆ   rÎ   rÃ   Úformatç        r¦   Út_idr$   c                 óî  •— t         j                  j                  d| z  «      }‰‰
z  }| ‰
dz
  k(  r	‰| |z  z
  }n|}t        j                  ‰	|d‰z
  |¬«      j	                  «       }t        j
                  ‰	df«      }t        |j                  d   «      D ][  }|j                  |dz      |j                  |   z
  }|dk7  sŒ+||d d …|f   j                  «       |j                  ‰	df«      z  dz  z  }Œ] ||fS )Nr'   r/   rc   )rÚ  rÆ   rÎ   rÃ   r   ri  )
r4   r5   r±   r   Útocscr  rÅ   r�   r€  Útoarray)rÝ  rS   Úthread_sizeÚn_features_tlocrV   r‘   rÉ   r,   r#   r"   Ú	n_threadsrÇ   s           €€€€r[   Ú
random_cscz*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Ó"ò 	JˆAØ—8‘8˜A ™E‘? Q§X¡X¨a¡[Ñ0ˆDØ�q‹yØ�Q’q˜!�t‘W—_‘_Ó&¨¯©°YÀ°NÓ)CÑCÀcÑIÑI‘ð	Jð
 �!ˆtˆr¢   )Úmax_workersN)rÛ  r   r/   rš   )rÈ  r4   r5   r6   r   rœ   r¹  ÚmultiprocessingÚ	cpu_countrw   Ú
csc_matrixr   rÅ   rF  ÚsubmitÚresultrr  Úhstackry  r8   r�   rË  rÜ   rà  rm   )r"   r#   rÇ   r×  rS   rV   r‘   rä  ÚfuturesÚexecutorrÉ   Ú	X_resultsÚ	y_resultsr2  rÙ  Úarrrã  s   ```             @r[   Ú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Ÿ?™?¨:°qÓ9Õ:ñ	;÷;ð €IØ€IØò ˆØ�x‰x‹z‰ˆˆ1Ø×Ñ˜ÔØ×Ñ˜Õðô
 ˆ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Ò)Ð)Ð)ÜŸ™ˆˆC�1‰H‰Ø�Aˆvˆà�ˆ6€M÷;;ñ ;ús   Â>2IÉI!Ú	n_stringsÚseedc                 ó>  — d}t        «       }t        j                  j                  |«      }t	        |«      | k  rZdj                  |j                  t        t        j                  «      |d¬«      «      }|j                  |«       t	        |«      | k  rŒZt        |«      S )zGenerate n unique strings.rŠ   Ú Tr  )Úsetr4   r5   r±   rr  r*  rÝ   rÙ   ÚstringÚascii_lettersÚadd)rò  ró  Úname_lenÚunique_stringsrS   Ú
random_strs         r[   Úunique_random_stringsrý  ã  s†   € à€HÜ"›u€NÜ
�)‰)×
Ñ
 Ó
%€Cä
ˆnÓ
 	Ò
)Ø—W‘WØ�J‰J”tœF×0Ñ0Ó1¸È$ˆJÓOó
ˆ
ð 	×Ñ˜:Ô&ô	 ˆnÓ
 	Ó
)ô �ÓÐr¢   r/   rÜ  rc   Úcpu)Ú	n_targetsrÇ   Ú	cat_ratior  rÃ   Ú	cat_dtyperÂ  Ún_categoriesÚonehotrÿ  r   r  r  c          	      ó"  — t        j                  d«      }t        j                  j	                  |«      }t        j                  j	                  |dz   «      }|j                  «       }t        |«      D �]1  }|j                  d|d¬«      d   }|dk(  rÕt        j                  |	t        j                  «      r4t        j                  t        ||«      «      }|j                  || d¬«      }n*t        j                  d|«      }|j                  d|| ¬«      }|j                  |d¬	«      |t!        |«      <   |t!        |«         j"                  j%                  |«      |t!        |«      <   Œõ|j                  d|| ¬«      }|j                  ||j&                  ¬	«      |t!        |«      <   �Œ4 t        j                  j	                  |d
z   «      }t        j(                  | |f«      }|j*                  D ]¿  }t-        ||   j&                  |j.                  «      r`||   j"                  j0                  j2                  }|j5                  t7        ||   j"                  j8                  «      |f¬«      }|||   z  }Œ†|j;                  dd|¬«      }|t        j<                  ||   j2                  |«      z  }ŒÁ |dk(  r|j?                  d¬«      }|dkD  rºt        |«      D ]¬  }|j                  d| dz
  tA        | |z  «      ¬«      }t        jB                  |jD                  ||f<   tG        |jH                  jD                  |   «      sŒh|t        jJ                  |jH                  jD                  |   j8                  «      jL                  k(  rŒ¬J ‚ |jN                  d   |k(  sJ ‚|r|jQ                  |«      }|r+tS        |j*                  «      }|jU                  |«       ||   }|
dk7  r0|
dv sJ ‚ddl+}ddl,}|j[                  |«      }|j                  |«      }||fS )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?
    n_targets:
        Number of targets. When greater than 1, the label is a 2D array with shape
        ``(n_samples, n_targets)``.
    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/   r1   r   Tr  r)   rd   r-   r   r0   g      ø?rš   rÜ  rþ  )ÚcudaÚgpuN).r2   r3   r4   r5   r6   r   rÅ   rO   Ú
issubdtypeÚstr_rM   rý  rÝ   r‡  r7   rr   rÕ   ru   Úset_categoriesr.   Úonesrt   rq   rx   r  rÛ   rœ   rr  Ú
categoriesrE  ÚouterÚsqueezerw   rm   rÆ  r   rU   r”  r,   r�   Úget_dummiesrÙ   r  ÚcudfrC  Úfrom_pandas)r"   r#   r  r  rÿ  rÇ   r   r  rÃ   r  rÂ  rR   rS   Úrow_rngrX   rÉ   rÝ   r  r}   ÚnumÚ
target_rngÚlabelÚcolr  ÚeffectsrG  r‹  rt   r  rC  s                                 r[   Úmake_categoricalr  ó  s�  € ôL 
×	Ñ	˜XÓ	&€Bô �)‰)×
Ñ
 Ó
-€CÜ�i‰i×#Ñ# L°1Ñ$4Ó5€Gà	�‰‹€BÜ�:Óó 9ˆØ—‘˜a °�Ó3°AÑ6ˆØ�QŠ;Ü�}‰}˜Y¬¯©Ô0ô  ŸX™XÔ&;¸LÈ!Ó&LÓM�
Ø—N‘N :°IÀt�NÓL‘äŸY™Y q¨,Ó7�
Ø—O‘O¨°À9�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ð!9ô$ —‘×&Ñ& |°aÑ'7Ó8€JÜŸ™ ¨IÐ 6Ó7€EØ�z‰zò 1ˆÜ�b˜‘g—m‘m R×%8Ñ%8Ô9Ø�s‘G—K‘K×%Ñ%×,Ñ,ˆEØ ×'Ñ'¬c°"°S±'·+±+×2HÑ2HÓ.IÈ9Ð-UÐ'ÓVˆGØ�W˜U‘^Ñ#‰Eà×"Ñ" s°¸9Ð"ÓEˆAØ”R—X‘X˜b ™gŸn™n¨aÓ0Ñ0‰Eð1ð �A‚~Ø—‘ 1�Ó%ˆà�#‚~Ü�zÓ"ò 	TˆAØ—O‘OØ˜I¨™M´°IÀÑ4HÓ0Ið $ó ˆEô !#§¡ˆB�G‰G�E˜1�HÑÜ˜rŸy™yŸ~™~¨aÑ0Õ1Ø#¤r§y¡y°·±·±ÀÑ1B×1MÑ1MÓ'N×'SÑ'SÓSÐSÐSð	Tð �8‰8�A‰;˜*Ò$Ð$Ð$ÙØ�^‰^˜BÓˆáÜ�r—z‘zÓ"ˆØ�‰˜Ô Ø�‰[ˆà�‚Ø˜Ñ(Ð(Ð(ÛÛà×Ñ˜bÓ!ˆØ—
‘
˜5Ó!ˆØˆuˆ9Ðr¢   c                   óÂ   ‡ — e Zd ZdZdddœdededee   dee   d	ed
ee   ddfˆ fd„Z	de
defd„Zdd„Zdeeej                   ej$                  f   eee   f   fd„Zˆ xZS )ÚIteratorForTestzCIterator for testing streaming DMatrix. (external memory, quantile)FN)Úon_hostÚmin_cache_page_bytesrV   r‘   rG  Úcacher  r  r$   c                ó”   •— t        |«      t        |«      k(  sJ ‚|| _        || _        || _        d| _        t
        ‰| �  |||¬«       y )Nr   )Úcache_prefixr  r  )rr  rV   r‘   rG  ÚitÚsuperrm  )ra  rV   r‘   rG  r  r  r  Ú	__class__s          €r[   rm  zIteratorForTest.__init___  sR   ø€ ô �1‹vœ˜Q›ÒÐÐØˆŒØˆŒØˆŒØˆŒÜ‰ÑØØØ!5ð 	õ 	
r¢   Ú
input_datac                 ó|  — | j                   t        | j                  «      k(  ryt        j                  t
        d¬«      5   || j                  | j                      | j                  | j                      d «       d d d «        || j                  | j                      j                  «       | j                  | j                      j                  «       | j                  r'| j                  | j                      j                  «       nd ¬«       t        j                  «        | xj                   dz  c_         y# 1 sw Y   Œ»xY w)NFzKeyword argumentrŒ   )r~   r  Úweightr/   T)r  rr  rV   r2   r�   Ú	TypeErrorr‘   rq  rG  ÚgcÚcollect)ra  r"  s     r[   ÚnextzIteratorForTest.nextt  sÖ   € Ø�7‰7”c˜$Ÿ&™&“kÒ!Øä�]‰]œ9Ð,>Ô?ñ 	?Ù�t—v‘v˜dŸg™g‘¨¯©¨t¯w©w©¸Ô>÷	?ñ 	Ø—‘˜Ÿ™‘×%Ñ%Ó'Ø—&‘&˜Ÿ™‘/×&Ñ&Ó(Ø-1¯VªV�4—6‘6˜$Ÿ'™'‘?×'Ñ'Ô)¸õ	
ô
 	�
‰
ŒØ�Š�1‰�Ø÷	?ð 	?ús   ¿9D2Ä2D;c                 ó   — d| _         y )Nr   )r  r`  s    r[   ÚresetzIteratorForTest.reset…  s	   € Øˆ�r¢   c                 óÀ   — t        | j                  «      }t        | j                  «      }| j                  r"t	        j
                  | j                  d¬«      }nd}|||fS )zReturn concatenated arrays.r   rš   N)r   rV   r‘   rG  r4   rž   )ra  rV   r‘   rG  s       r[   Ú	as_arrayszIteratorForTest.as_arraysˆ  sI   € ô �4—6‘6‹NˆÜ�4—6‘6‹NˆØ�6Š6Ü—‘˜tŸv™v¨AÔ.‰AàˆAØ�!�Qˆwˆr¢   )r$   N)rR  rS  rT  rU  r   r   rÕ   rQ   rw   rm  r   r(  r*  r   r   r4   r³   r   rV  r   r,  Ú__classcell__)r!  s   @r[   r  r  \  s®   ø„ ÙMð Ø.2ò
àð
ð ð
ð �HÑð	
ð ˜‰}ð
ð ð
ð ' s™mð
ð 
õ
ð*˜xð ¨Dó ó"ð
à	ˆu�R—Z‘Z ×!2Ñ!2Ð2Ñ3°YÀÈÑ@SÐSÑ	T÷
r¢   r  )F)r
  )^rU  r&  ræ  r)  r÷  r-  Úconcurrent.futuresr   Údataclassesr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   Úurllibr   Únumpyr4   r2   rX  Únumpy.randomÚRNGÚscipyr   Úcompatr   Úcorer   r   r   r~   r   r   Úsklearnr   r   Útrainingr   rÉ  r&   r   Ú
DataFrameTr3   r    ÚMemoryÚmemoryrw   r³   rÙ   r\   r   r‡   r’   r  r¶   r¼   rÀ   rË   r   rÕ   rV  r<  rQ   rK  rY  r9   rc  rM  r\  re  r�  r²   rH   r�  r¡  r·  r:   r¿  rÖ  rñ  rý  Ú	DTypeLiker  r  rZ  r¢   r[   ú<module>r=     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ØòfØðfàðfð ðfð
 ðfð ðfð ðfð ðfð ðfð ðfð �y‰y×"Ñ"ðfð ðfð ˆ9�b—j‘jÐ Ñ!ófôR6�hõ 6r¢   