
    =[ga                     v	   d Z ddlZddl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 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Zdd	lmZ erd
dlmZ  neZ  ejB                  d      Z"e"jG                  dd      Z$de%de%de
eejL                  ejL                  f   ddf   fdZ'de
fdZ(de
fdZ)deddfdZ*e$jV                  deejL                  ejL                  f   fd       Z,e$jV                  deejL                  ejL                  f   fd       Z-e$jV                  deejL                  ejL                  f   fd       Z.e$jV                  deejL                  ejL                  f   fd       Z/e$jV                  dee ejL                  f   fd       Z0e$jV                  de1deejd                  ejL                  ejL                  ejd                  ejL                  ejL                  ejd                  ejL                  ejL                  f	   fd       Z3	 d@ddd d!e%de%d"e%d#e4d$e4d%e%deeejL                     eejL                     eejL                     f   fd&Z5eejd                  ejl                  ejn                     ejl                  ejn                     f   Z8e G d' d(             Z9 G d) d*e      Z: G d+ d,      Z;d-ejl                  ejn                     deejl                  ejl                  ejl                  f   fd.Z<	 dAd/ejd                  d0ejl                  ejn                     d1ejl                  ejn                     d2e=dejl                  ej|                     f
d3Z?d4eejd                  ejl                  ejn                     ejl                  ejn                     f   d5ejl                  ej|                     de9fd6Z@d7e:dee9ee9   f   fd8ZAd/ejd                  d0ejl                  ejn                     d1ejl                  ejn                     d9ejl                  ejn                     d:ejl                  ej                     deejd                  ejl                  ejn                     ejl                  ejn                     ejl                  ejn                     f   fd;ZCd<ed=eej                     d>e1ddfd?ZEy)BzUtilities for data generation.    N)	dataclass)TYPE_CHECKINGAnyCallableDict	GeneratorList
NamedTupleOptionalTupleTypeUnion)request)typing)r   )sparse)pandas_pyarrow_mapper   )	DataFramejoblibz
./cachedir)verbose	n_samples
n_featuresreturnc              #     K   ddl }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        j.                  t        j0                  t        j2                  g}|D ]A  }t        j4                  ||      }||f |j7                         |j7                         f C |D ]A  }t        j4                  ||      }|j9                  |      }|j9                  |      }	||	f C |j;                  dd| |z  	      j                  | |      }t        j<                  t>        fD ]  }t        j4                  ||      }||f ! t        j<                  t>        fD ]A  }t        j4                  ||      }|j9                  |      }|j9                  |      }	||	f C yw)
z*Enumerate all supported dtypes from numpy.r   N     lowhighsizedtype   g      ?r    ) pandas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dfs
             O/var/www/html/bid-api/venv/lib/python3.12/site-packages/xgboost/testing/data.py	np_dtypesrL   '   s     
))


%C;;13Y-C;DLL:D 	






		
		

		













		
		)F, HHT'AgkkmQXXZ'' 
 HHT',,t$\\!_rk	  <<3Y%;<<DD:D ((D!HHT'Ag " ((D!HHT',,t$\\!_rk	 "s   J?Kc            	   #     K   ddl } | 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      }t        j                  d| j                  fD ]4  }| j                  d	d
|dgdd
|d	gd| j'                               }||f 6 d| j                  fD ]i  }dd|dgdd|dgd}| j                  ||t        j(                  n| j+                               }| j                  || j+                               }||f k yw)z/Enumerate all supported pandas extension types.r   Nr#   r         f0f1r!         ?g       @g      @rQ   categoryTF)r%   
UInt8DtypeUInt16DtypeUInt32DtypeUInt64Dtype	Int8Dtype
Int16Dtype
Int32Dtype
Int64Dtyper&   nanr   r:   NAFloat32DtypeFloat64Dtype
isinstanceSeriesastypeCategoricalDtyperB   BooleanDtype)	rD   rG   NullrF   r"   rJ   ser_origserdatas	            rK   	pd_dtypesrj   b   s     	






	F %'FFD<<1dAq!T1o6bjj  D ruu%E1dAq!T1o>e  B (N	  & 66Doo!23F<<S$$S#tS,AB"**  D ruu%ES$,S#tS4IJRW  B (NDzHT(Cc299---h		222C-  & ;;z"Druu%\\dC(c40EF%%'  
 Bh & ruuUD$/tT47PQ||DDLbooFW|X\\$boo&7\8Bh s   KKc            	   #     K   ddl } ddl}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   Nr9   rC   r#   r   rN   rO   rP   r!   FT)r%   pyarrowr   r^   
startswithisnar&   r]   r   r:   re   
ArrowDtyperB   )rD   parG   rf   r"   	orig_nullrF   rJ   s           rK   pd_arrow_dtypesrr      sr     #F. ruua E	*e.>.>v.F$&GGDMdaiRVVI<<1i+Aq)Q3GHjj   D
 1dAq!T1o>e  B (N  !" ||%t,UD$4MN//#  
 \\%t,UD$4MN--
+  
 Bh s   EErE   c                    | j                  d      j                  dd      }| j                  d      }t        j                  |d<   t	        j
                  t        d      5  t        j                  ||       ddd       t	        j
                  t        d      5  t        j                  ||       ddd       y# 1 sw Y   DxY w# 1 sw Y   yxY w)	zValidate there's no inf in X.    r$      rO   )   r   zInput data contains `inf`matchN)
r'   r*   r&   infpytestraises
ValueErrorxgboostQuantileDMatrixDMatrix)rE   rH   ys      rK   	check_infr      s    


##Aq)A


AffAdG	z)D	E1% 
F 
z)D	E1 
F	E 
F	E 
F	Es   #B=C	=C	Cc                  |    t        j                  d      } | j                         }|j                  |j                  fS )z2Fetch the California housing dataset from sklearn.sklearn.datasets)rz   importorskipfetch_california_housingri   targetdatasetsri   s     rK   get_california_housingr      s6     ""#56H,,.D99dkk!!    c                  |    t        j                  d      } | j                         }|j                  |j                  fS )z&Fetch the digits dataset from sklearn.r   )rz   r   load_digitsri   r   r   s     rK   
get_digitsr      s6     ""#56H!D99dkk!!r   c                  P    t        j                  d      } | j                  d      S )z-Fetch the breast cancer dataset from sklearn.r   T)
return_X_y)rz   r   load_breast_cancer)r   s    rK   
get_cancerr      s)     ""#56H&&$&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   )
rz   r   r&   r'   r(   make_regressionrA   shaperanger]   )	r   rE   nsparsityrH   r   flagijs	            rK   
get_sparser      s     ""#56H
))


$CAH##AC#8DAq<<8QWW-D1771:qwwqz"AAqDz&&!Q$ #  a4Kr   c                     t        j                  d       ddl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  }`|| |   j.                  z  }s |dm|j1                         z  z  }|dn|j3                         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%   r   Nr   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#   rS   ư>r   )r    pc                 "    t        | t              S N)ra   str)xs    rK   <lambda>z5get_ames_housing.<locals>.synth_cat.<locals>.<lambda>:  s    As!3r   r!   )intr&   absr]   listkeysvaluessumchoicerb   rd   filter)r   r   n_nullshas_nanr   r   r   r   seriesr   rD   rE   s            rK   	synth_catz#get_ames_housing.<locals>.synth_cat(  s     i1w;/0&&w'$.>7Q;W}H!)JrvvJOO%&""$%	"rvvay JJt)qJ1%%3T:  
 r   gqu ]?gqh.?gsmB<?g5C(?goEb?)1Fam2fmConDuplexTwnhsTwnhsErS   BldgTypegwD?g. ҥ?g)$;?)UnfRFnFing_9?GarageFinishgW歺?gbFx{?gbFx{?gQfL2rf?)CornerCulDSacFR2FR3	LotConfigg?g/ؗ?gf׽?g$A
?g5e?g() l?g[iF?)TypMin2Min1ModMaj1Maj2Sev
Functionalg M?g?gMq?)NoneBrkFaceStoneBrkCmng3f?
MasVnrTypeg3f?gI/j ?g,	PS˦?ge@?gQ~?gZ	%qv?)1Story2Storyz1.5FinSLvlSFoyerz1.5Unfz2.5Unfz2.5Fin
HouseStyleg$	P?gHp?gK$?gՐ?g4*p?)GdTAFaExPogE`o?FireplaceQugș&l??皙?g5e?gunڌ`?)r   r   r   r   r   	ExterCondgn0a?g{gUId?)r   r   r   r   	ExterQualg8 nV?)r   r   r   g(xߢs?PoolQClocstdc                    j                  | |      }t        d|z
  z        }t        j                  d|z
        dkD  r,|dkD  r'j	                  |d      }t        j
                  ||<   j                  |t        j                        S )	N)r   scaler    r#   rS   r   r   F)r    replacer!   )normalr   r&   r   r   r]   rb   r;   )	r   r   r   r   r   null_idxr   rD   rE   s	         rK   	synth_numz#get_ames_housing.<locals>.synth_num  s}    JJ3c	J:i1w;/066#- 4'GaKzz)'5zIH&&AhKyy"**y--r   gmtF@gOfK<Q=@	3SsnPorchgݹsΝ?g2Tf?
FireplacesgR u?gP$[r?BsmtHalfBathgvS?g_-?HalfBathgbĈ#F?g+?
GarageCarsg$[Q<@g"$#e?TotRmsAbvGrdg$[Q<{@g%Ǒ|@
BsmtFinSF1ge0OFG@g*Ӛ{7*d@
BsmtFinSF2gNڭ@gCk@	GrLivAreagg6.@gK@ScreenPorch)r   g(e@g.A)rz   r   r%   r&   r'   default_rngr   r   r   r   floatrb   r   columnsshufflezerosra   r"   rd   catcodesrc   r;   r   r   mean)	rJ   r   r   r   r   cr   rD   rE   s	         @@@rK   get_ames_housingr     s   " !
))


%CI	BsEz*E12=B	. 	
 		BzN #(;WB~  		
 	B{O !	
 	B| !		
 	B| !		
 	B| "	
 		B}  	
 		B{O  		
 	B{O 	

 	BxL.u .5 .5 .RYY .   24EsKB{O !24FLB|"#79LcRB~24FLBzN !35GMB|"#46H#NB~ !24EsKB| !24FLB| 13DcJB{O!"46H#NB}2::GKK	GB 		|$AZZbekk2#6#67A''

33AAA	  	QUUW	$$A	affh	&&Aq5Lr   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)rz   r   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                 rK   
get_mq2008r    s    ""#56H
JCWW\\%.F77>>&!f5		%	%  
& 	$$GGLL 89GGLL 78GGLL 78	

  	% 	
 	
 
/ 
&	%s   D%%D.Fr   )	vary_sizer   n_samples_per_batch	n_batchesuse_cupyr  r   c                   g }g }g }|r ddl }	|	j                  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   )cupyr'   r(   r&   r   randnuniformappend)r  r   r  r  r  r   rH   r   wr  rE   r   r   _X_y_ws                   rK   make_batchesr'    s     	A
A
Akk%%l3ii##L194='!b&0CV	YYy*-YYy![[QQY[7			  a7Nr   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.rH   r   qidscoreclickposN)__name__
__module____qualname____doc__r   
csr_matrix__annotations__nptNDArrayr&   r+   r:   r,    r   rK   r)  r)    sp    M
{{288	RXX	;;rzz"";;rxx  	RXX	r   r)  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.traintestmax_relr   c                      | j                   dk(  S )z6Whether the label consists of binary relevance degree.r#   )r;  )selfs    rK   	is_binaryzRelDataCV.is_binary2  s    ||q  r   N)	r.  r/  r0  r1  RelDatar3  r   rC   r>  r6  r   rK   r8  r8  +  s     ZN
ML!4 !r   r8  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{Gz?Q?gp=
ף?rS   )
g(\?gQ?gQ?g(\?rD  g?g)\(?r   g{Gz?gQ?)r&   r?   
click_probpower	exam_prob)r=  rB  rG  s      rK   __init__zPBM.__init__A  s8    ((#?@HH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 )	zSample clicks for one query based on input relevance degree and position.

        Parameters
        ----------

        labels :
            relevance_degree

        T)copyr   r   r   )r    r"   r!   r#   )r&   r?   r   r   lenrE  r    rG  r'   r   r:   r+   )	r=  rI  rJ  rE  rG  ranksrE   probclickss	            rK   sample_clicks_for_queryzPBM.sample_clicks_for_queryJ  s    &t,XXfll+
vz13vT__--.__V,
HHV\\*	}}+++-.0et~~***+NN5)	ii##D)zzv||AbjjzA(*RXX(N01ti*,,-r   )r.  r/  r0  r1  r   rH  r4  r5  r&   r+   r,   rQ  r6  r   rK   rA  rA  7  s^    2E 2d 2!kk"((+!7:{{2887L!	RXX	!r   rA  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)	r&   asarrayr    r_flatnonzeroisclosediffr"  r?   )r   r   startslengthsr   indptrs         rK   rlencoder\  n  s    
 	

1A	AUU1bnnbjj12#2$&O%OPSTTTUFggbeeFAI&'GvYFYYvrxx12F7F""r   rH   r   r*  sample_ratec                    t         j                  j                  d      }t        | j                  d   |z        }t        j
                  d| j                  d   t         j                        }|j                  |       |d| }| |   }||   }||   }	t        j                  |	      }
||
   }||
   }|	|
   }	t        j                  dd      }|j                  |||	       |j                  |       }|S )	zWe 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)r*  )r&   r'   r   r   r   aranger3   r   argsortr}   	XGBRankerfitpredict)rH   r   r*  r]  rE   r   indexX_trainr  r  
sorted_idxltrscoress                rK   init_rank_scorerl  }  s     ))


%CAGGAJ,-IIIa2995EKK*9EhGhGE
I I&Jj!Gj!G*%I


kv
FCGGGW)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!   rS   )rB  r   Nr   )r"   r&   r+   uniqueemptyr    r,   rA  r*   r   rc  rQ  r)  )rm  rn  X_foldy_foldqid_foldqidsrJ  rP  pbmqqid_maskquery_scoresquery_positionrelevance_degreesquery_clickss                  rK   simulate_one_foldr}    sj   
  $FFH>>RXX%%%99XDxxbhh7HXXv{{nBHH5F
#,C =##HNN1$56"8,L1$B$7+"8,223DnU'x  <<?hnnQ//O&,,1OO/<<?fll1o-Kfll/KK-VVX{FH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   rN   r#   r   Nc           
   3   b   K   | ]&  }t        |   |   |   |   |   |          ( y wr   )r)  ).0r   X_lstc_lstp_lstq_lsts_lsty_lsts     rK   	<genexpr>z"simulate_clicks.<locals>.<genexpr>  s@      
& eAha%(E!HeAhaQ&s   ,/)r   zipr9  r:  r&   r?   r   cumsumrM  r   vstackconcatenaterl  r   r    r}  r"  rH   r   r*  r+  r,  r-  allr)  )r~  rH   r   r*  vr[  X_fully_fullqid_fullscores_fullr   rk  rm  scores_check_1r9  r:  r  r  r  r  r  r  s                   @@@@@@rK   simulate_clicksr    sx   S56IAq# XXqc3AQWWQZ334FYYvFv;%]]1F^^AF~~c"H "&&(;K>CAv{{>ST>Sk&Q-&)4>SFT/12r2r2/E,E5%u6;;?# !A$!c!f!5vayATVVTVVTXXTZZ TZZ TXX $ ).fkkAo(>?(>1eAh(>N?1Xq!VAY.33555  5zQ%(E!HeAha%(ERSHU $;	
 
3u:&
t $;G 4 U @s   	J#
1J(J-rP  r-  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   )r&   rc  r\  r   r    rp  minmax)rH   r   r*  rP  r-  ri  r[  _r   begend	query_posri   s                rK   sort_ltr_samplesr    s    CJ	*AJF
j/C
j/CC=LFAq1fkk"QUmQiSy$3*$yyyS&++q0<3*<0CL	}}!#4Y]]_4#}})..1"44 	
MMONNIIc#cl#	7
 	
4 ZZ	*
s3Z
+#c
 S/*5s3s3Z
+#c
3s|J/C+ #. fa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        j                  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   rS   d   r$   2   r   ilocN)base_marginz.*base_margin.*rw   r_  )ra  r  FTr#   rv   )r&   r'   r   r   rc   r:   r*   hasattrr  rz   r{   r|   r}   r9  get_base_marginr  Tflagsc_contiguousf_contiguousset_infoset_base_marginr    r;   )r  r  r  rE   rH   r   r  Xygotbm_colbm_rowbm_f64s               rK   run_base_margin_infor     s    ))


!CcjjCcj*11"**=EEb!LMAq&FF1a4LadGK	!QK	0B	z);	<f?D 
= 1fB&&(00Q78{"'')))}}""//5888}}""//4777
.B&&(00B78{}}$))+++ 
;'##%
;..q+2B2BCD##%& %%''' "((4
;'##%& %%''' ii1a+]]:-?@{+ A@7  
=	<< A@s   7KK*K'*K3)F)r   )Fr1  r  r	  dataclassesr   r   r   r   r   r   r   r	   r
   r   r   r   r   urllibr   numpyr&   rz   r4  numpy.randomRNGscipyr   r}   xgboost.datar   compatr   
DataFrameTr   r   Memorymemoryr   ndarrayrL   rj   rr   r   cacher   r   r   r   r   r   r2  r  rC   r'  r5  r+   r?  r)  r8  rA  r\  r   r:   rl  r}  r  r,   r  r   r  r6  r   rK   <module>r     s.   $ 	  !        )   .0J			X	&	|Q	/88 #8uRZZ+,dD898v<9 <~7 7t
3 
4 
 "bjj"**&< = " " "E"**bjj01 " " 8E"**bjj01 8 8 E"**bjj01    q%
BJJ 67 q qh 55

JJJJ
JJJJ
JJJJ
5 5x 	   	   4

T"**-tBJJ/??@< !!3;;rxx#8#++bhh:OO
P   	!
 	!4 4n#BHH% #%S[[#++0U*V #& 	!!
{{288! 
RXX	! 	!
 	[[!HN
!!3;;rxx#8#++bhh:OO
PNRZZ(N NF(Y (5HY<O1O+P (V..
{{288. 
RXX	. KK!	.
 
RXX	. 
KKKKKK.b-,-,#GOO4-,>A-,	-,r   