
    ^ih                        d 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 ddlZddlZddlmZ ddlmZmZmZ dd	lmZ dd
lmZ ddlmZmZmZmZmZ ddl m!Z! ddl"m#Z#m$Z$m%Z% ede#deeef   fd       Z&de#de
dejN                  fdZ(de#dede)ddfdZ*de#ddfdZ+de#ddfdZ,de#ddfdZ-de#dee
e
ejN                  ejN                  f   fdZ.dede#de#ddfdZ/de#ddfdZ0de#ddfdZ1de#ddfd Z2 ed!ee      Z3dee3   d"ed#e
d$e
de3f
d%Z4de#ded&e5d'e5d(e5ddfd)Z6de#ddfd*Z7de#ddfd+Z8ej                  d,d-de#d.e9defd/       Z:de#ddfd0Z;de#ddfd1Z<de#ddfd2Z=de#ddfd3Z>de#ddfd4Z?de#ddfd5Z@y)6zTests for the ordinal re-coder.    N)ThreadPoolExecutor)cache)AnyTupleTypeTypeVar   )EvalsLog)DMatrixExtMemQuantileDMatrixQuantileDMatrix)_lazy_load_cudf_is_cat)train   )IteratorForTestis_pd_cat_dtypemake_batchesmake_categoricalmemory)get_basescore)Deviceassert_allclosepredictor_equaldevicereturnc                     | dk(  r ddl }|j                  }|j                  }||fS ddl}|j                  }|j                  }||fS )z3Get data frame implementation based on the ]device.cpur   N)pandas	DataFrameSeriescudf)r   pdDfSerr!   s        X/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/xgboost/testing/ordinal.pyget_df_implr&      sK     \\ii s7N	 	^^kks7N    datac                 `    | dk(  rt        j                  |      S ddl}|j                  |      S )zWrapper to get an array.r   r   N)npasarraycupy)r   r(   cps      r%   r+   r+   -   s*    zz$::dr'   Xyboosterc                 ^   |j                  d      j                         }|J t        j                  j	                  d      }|j                  |j                  |j                                      t        || d|d      }|j                  d      j                         }|J ||k(  sJ y)z-Compare the results from DMatrix and Booster.Texport_to_arrowN  size)r/   r   r   )	get_categoriesto_arrowr*   randomdefault_rng	set_labelnormalnum_rowr   )r   r.   r/   cats_dmrngbstcats_bsts          r%   comp_boosterrA   6   s    5>>@G
))


%CLL./
Gv6A
>C!!$!7@@BHhr'   c                 \    dt         dt        ddfd}t        t        fD ]  } || |        y)z8Basic tests for the container class used by the DMatrix.r   DMatrixTr   Nc                    t        |       \  }} |dddgid      }|j                  j                  j                  } ||d      }|j                  dgk(  sJ |j
                  dgk(  sJ |j                  d      j                         }|J t        |      }t        |d         t        |      k(  sJ t        t        |d               D ]4  }	t        |d   |	         t        ||	         k(  r$J |d   |	   ||	   f         |dg d	id      } ||d      }|j                  d      j                         }
|
J t        |
      }|d   j                         }|j                  d
   dk(  sJ |j                  d   dk(  sJ |j                  dk(  sJ |j                         }|j                   j                  dk(  sJ t#        | |j                   t%        j&                  g d             t#        | |j(                  t%        j&                  g d             t#        | |j*                  t%        j&                  g d             t-        | |d       t-        | |d        |dg did      } ||d      }t-        | |d       t-        | |d       t/        j0                  t2        d      5  |j                  d      j                          d d d        y # 1 sw Y   y xY w)NccdefabccategorydtypeTenable_categoricalr1   )rF   NrG   rG   r   r   r	      )g      ?        rN   )r   r   r   r	   rM   )r   r   r   gbtreedart)rF   NrG   zabc r2   matchF)r&   rE   cat
categoriesfeature_namesfeature_typesr6   r7   dictlenrangestr	to_pandasilocr5   get_datar(   r   r*   arrayindptrindicesrA   pytestraises
ValueError)r   rC   r#   _dfrT   r.   results
results_diicatscats_idsercsrs                 r%   run_dispatchz'run_cat_container.<locals>.run_dispatchF   s   F#Avuo&j9TTXX((
bT2C5(((C5(((##D#9BBD"""']
:c?#s:666s:c?+, 	Az#q)*c*Q-.@@ 3"1C @	 23:FbT2   6??At*cl$$&xx{e###xx{f$$$xx1}}kkmxx}}!!!"((?*CD

BHH_,EFRXXi-@AVR*VR( 45ZHbT2VR*VR(]]:->? 	@e4==?	@ 	@ 	@s   -!KK )r   r   r   r   )r   rm   dms      r%   run_cat_containerro   C   sA    0@V 0@t 0@ 0@d ( !VR !r'   c                     ddl }	 t               t        d      dt        d|j                  ddf fd	d
t        ddf fd}t        t        fD ]
  } ||        t        ddd dk(        }t        d |      \  }}}t        t        fD ]  } ||||      }	|	j                  d      j                         }
|
J |
D ]	  \  }}|	J  t        j                  t         d      5  |	j                  d      j                          ddd        y# t        $ r dt        dt        fdY !w xY w# 1 sw Y   xY w)zRun checks with mixed types.r   Nrd   r   c                      y)NF )rd   s    r%   is_cudf_catz,run_cat_container_mixed.<locals>.is_cudf_cat   s    r'      r.   Xc                    | j                  d      j                         }|J t        |      }|j                  D ]  }t	        ||   j
                        s ||   j
                        r||   }|J t        |j                               } ||   j
                        r0||   j                         j                         j                         }n!||   j                         j                         }t        j                  |v r|j                  t        j                         d |v r|j                  d        t        |      }||k(  rJ ||   J  t        | d      st        | t              rJ t!        j"                         5 }t$        j&                  j)                  |d      }| j+                  |       t-        |      }	|	j                  d      j                         }
|
J t        |
      }|j/                         D ]8  \  }}||   }||J |J |j                         |j                         k(  r8J  	 d d d        t1        | d       t1        | d       y # 1 sw Y   $xY w)NTr1   refzDMatrix.binaryrO   rP   )r6   r7   rW   columnsr   rJ   sorted	to_pylistuniquetolistr*   nanremovehasattr
isinstancer   tempfileTemporaryDirectoryospathjoinsave_binaryr   itemsrA   )r.   ru   ri   cats_difnamevfaw_listpd_listtmpdirXy_1cats_1	cats_1_dikv_0v_1r   rs   s                  r%   checkz&run_cat_container_mixed.<locals>.check   s9      6??At*YY 	.Eqx~~.+ahnn2MU^~%~ 0qx~~.$%eHOO$5$>$>$@$J$J$LGhoo/668G66W$NN266*7?NN4( /')))u~---!	.$ r5!!"o666,,. B&V-=>u%u~,,T,BKKM))) L	%mmo BFAs#A,C{"{*{"."}}#--/AAABB" 	VR*VR(%B Bs   BI''I' I''I0rC   c           
         t        dddt        j                        \  }} | ||d      } ||       t        ddddt        j                        \  }} | ||d      } ||       t        dddddt        j                  	      \  }} | ||d      } ||       t        dddt        j                        \  }} | ||d      } ||       t        ddddt        j                        \  }} | ||d      } ||       t        dddddt        j                  	      \  }} | ||d      } ||       y )
N      F)onehot	cat_dtyper   TrK         ?)r   	cat_ratior   r   )r   r   sparsityr   r   )r   r*   str_int64)rC   ru   yr.   r   r   	n_sampless       r%   rm   z-run_cat_container_mixed.<locals>.run_dispatch   s   r1Ubggf
1 at4b!  gg
1 at4b!  gg	
1 at4b!  r1Ubhhv
1 at4b!  hh
1 at4b!  hh	
1 at4b!r'         r   cuda)n_samples_per_batch
n_features	n_batchesuse_cupyc                     | d   S )Nr   rr   )xs    r%   <lambda>z)run_cat_container_mixed.<locals>.<lambda>  s
    AaD r'   )weightTr1   r2   rQ   F)r   r   ImportErrorr   boolintr   r   r   r   r   mapr6   r7   ra   rb   rc   )r   r"   rm   rn   batchesru   r   wrC   r.   all_numrd   vr   rs   r   s   `            @@@r%   run_cat_container_mixedr   }   sy   ,. E
I+)' +)bll +)t +)ZCt C CJ ( R AVvEUG .'*GAq!o. @a1%##D#9BBD""" 	DAq99	 ]]:->? 	@e4==?	@ 	@@E  	3 	4 	R	@ 	@s   
D -!D9D65D69E	c           
         d}d}d}d}g g }}t        |      D ]G  }t        |||ddt        j                  |       \  }}	|j	                  |       |j	                  |	       I t        ||dd	| d
k(        }
t        |
d      }|j                  d      j                         }|t        |      |k(  sJ t        |      }|j                         D ]*  \  }}|J |j                  dk(  sJ t        |      |k(  r*J  y)z8Test the categories container for iterator-based inputs.r      @      Fr   )r   r   r   r   Nr   r   )r   on_hostTrK   r1   r   )rY   r   r*   r   appendr   r   r6   r7   rX   rW   r   
null_count)r   r   r   r   n_catsru   r   rd   X_iy_iitr.   ri   r   r   s                  r%   run_cat_container_iterr     s   IJFrqA9 #hh
S 	
	 
At7Ff<L	MB	rd	;BT2;;=DD	Z 7774jG  1}}||q   1v r'   c                 R   t        |       \  }} |dg did      }|j                  j                  j                  }t	        | t        | |      t        j                  g d             t        j                  |j                  d   |j                  d   g      }t        j                  j	                  |ddg        |dd	d
gid      }|j                  j                  j                  }t	        | |t        j                  ddg             t        j                  g d      }||||fS )NrE   rF   rG   defrH   rI   r   r   r	   r	   r   r   r   rG   r   r   r	   )
r&   rE   rS   codesr   r+   r*   r^   r\   testing)r   r#   rd   encr   encodedreencr   s           r%   _basic_exampler   1  s    EB
c)**
=CEEIIOOEFGFE2BHHY4GHhh

1uzz!}56GJJwA/eU^$J7EGGKKEFE288QF#34
Aw!!r'   rC   tdevicec                    t        |      \  }}}} | ||d      }t        d|i|d      }|j                  |      }	|j                  |      }
t        ||	|
        | |d      }|j	                  |      }t        ||	|       y)z Enable tests with mixed devices.TrK   r   r   num_boost_roundN)r   r   inplace_predictr   predict)rC   r   r   r   r   r   r   r.   r/   predt0predt1fmatpredt2s                r%   run_basic_predictr   C  s    +F3C	#qT	2BXw'Q?G$$U+F$$W-FFFF+Ed3D__T"FFFF+r'   c                      t               \  }t        t        fD ]  }t        |          dt        ddf fd}t        t        fD ]
  } ||        y)z,Basic tests for re-coding during prediction.rC   r   Nc                     g dg ddd      }t        j                  g d      }|j                  j                  j                  }t        t        |      t        j                  g d             t        j                  |j                  d   |j                  d	   g      }|j                  j                  j                  }t        t        |      t        j                  g d             t        j                  |j                  d   |j                  d	   g      }t        j                  ||gd	
      } | ||d      }t        di|d      }	 dd	gddgdd      }|	j                  |      }
|	j                  |      }t        |
|        | |d      }|	j                  |      }t        |
|       y )Nr	   r   rM   r   brE   rH   rI   r   r   r	   r   )axisTrK   r   r   r   rM   r   rG   )r*   r^   r   rS   r   r   r+   r\   rE   stackr   r   r   )rC   re   r   b_codes	b_encodedc_codes	c_encodedr   r.   r/   r   r   r   r   r#   r   s                 r%   	run_mixedz"run_cat_predict.<locals>.run_mixedZ  sf   i&<=ZPHHY $$((.. 8"((9:MNHHgll1ow||A?@	$$((.. 8"((9:MNHHgll1ow||A?@	((Iy1:b!56*BBq!fE5>2*E((,((1/t4&/r'   )r&   r   r   r   r   )r   rd   rn   r   r#   s   `   @r%   run_cat_predictr   S  sa    EB( ."ff-.0D 0T 08 ( "r'   c                    	 t               \  }t        j                  g d      	dt        ddf 	fd}t        t
        fD ]
  } ||         g dg ddd	
      }t	        |	d      }t        d i|d      } |t         g d      d	
      |d<   d}t        j                  t        |      5  |j                  |       ddd       t        j                  t        |      5  t	        |d|j                                ddd       t        j                  t        |      5  t        |d|j                                ddd       y# 1 sw Y   xY w# 1 sw Y   VxY w# 1 sw Y   yxY w)zBasic tests for invalid inputs.r   rC   r   Nc                 f    g dg ddd      } | |d      }t        di|d	
      }|d   j                  t        j                        |d<   t	        j
                  t        d      5  |j                  |       d d d         | |d      }t	        j
                  t        d      5  |j                  |       d d d         g dg ddd      }t	        j
                  t        d      5  |j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   \xY w# 1 sw Y   y xY w)Nr   r   r   rH   rI   TrK   r   r   r   r   zThe data type doesn't matchrQ   )r	   r   rM   r   )rF   rG   r   bbcz$Found a category not in the training)	r   astyper*   r   ra   rb   rc   r   r   )rC   re   r.   r/   r#   r   r   s       r%   run_invalidz$run_cat_invalid.<locals>.run_invalid  s   i&<=ZPb!56*BBS'..*3]]:-JK 	(##B'	( b!5]]:-JK 	 OOB	  %BC:
 ]]:-ST 	(##B'	( 	(	( 	(	  	 	( 	(s$   .D.D4D'DD$'D0r   r   r   rH   rI   TrK   r   r   r   )r   r   r   rE   z7index type must match between the training and test setrQ   rL   rV   )r&   r*   r^   r   r   r   r   r+   ra   rb   rc   r   r6   )
r   r$   r   rn   re   r.   r/   msgr#   r   s
   `       @@r%   run_cat_invalidr   z  sQ   &!GB
A(d (t (& ( B 
)"89	LB	Q4	0BXv&A>G'&),J?BsG
CC	z	- $#$ 
z	- Ut7;Q;Q;STU 
z	- 
4w7M7M7O	

 
$ $U U
 
s$   7E,E,E*EE'*E3c                    
 t        ddddd       \  
}t        
|d      }t        d	 i|d
      dt        dt        f
 fd}g }t
        t        fD ]K  }t        d
      5 }t        d
      D ]%  }|j                  ||      }|j                  |       ' 	 ddd       M |D ]  }	|	j                         rJ  y# 1 sw Y   qxY w)zBasic tests for thread safety.i   r   p   Fr   )r   r   r   TrK   r   
   r   rC   r   c                 x     | d      }j                  |      }j                        }t        ||       y)NTrK   )r   r   r   )rC   r.   r   r   ru   r/   r   s       r%   run_thread_safetyz0run_cat_thread_safety.<locals>.run_thread_safety  s<    aD1$((+/r'   )max_workersN)r   r   r   r   r   r   r   rY   submitr   result)r   r   r.   r   futuresrn   erd   futfru   r/   s   `         @@r%   run_cat_thread_safetyr     s    D"c%3vVDAq	A$	7BXv&B?GD T  G( $B/ 	$12Y $hh0"5s#$	$ 	$$  xxzz	$ 	$s   '4C  C		Urw   argskwargsc                 <    | t         u r | ||dd|S  | |ddi|S )NT)rw   rL   rL   )r   )rC   rw   r   r   s       r%   _make_dmr     s3    ?"34J6JJT=d=f==r'   pred_contribspred_interactions	pred_leafc           
         t        |       \  }}}} |||d      }	t        d| i|	d      }
|
j                  t        ||	|      |||      }|
j                  t        ||	|j	                  dd	      d
g      |||      }t        | ||       y )NTrK   r   r   r   )rw   r(   r   r   r   r	   r   rE   )rw   r(   rU   )r   r   r   r   reshaper   )r   rC   r   r   r   r   r   r   r   r.   r/   predt_0predt_1s                r%   
_run_predtr    s     ,F3C	#qT	2BXv&A>Goor.#+	  G oor1(=cUS#+	  G FGW-r'   c                     t         t        fD ]  }t        | |ddd        t         t        fD ]  }t        | |ddd        y)zBasic tests for SHAP values.TFr  N)r   r   r  )r   rn   s     r%   run_cat_shapr    sT     ( 
Bdeu	


 ( 
Betu	

r'   c                 ,    t        | t        ddd       y)z Basic tests for leaf prediction.FTr  N)r  r   )r   s    r%   run_cat_leafr
    s     uQUr'   i   )r   r   c                   t        |       \  }}ddl}d}g d}g d}ddd}t        j                  j	                  d      }	|	j                  dd||d	z  f
      }
|	j                  dd||d	z  ft        j                        }i }t        |      D ]H  }|d	z  dk(  r|
dd|d	z  f   }n)|dd|d	z  f   }|j                  j                  ||      }||d| <   J  ||      }|	j                  |
      }|j                         }t        |      D ]v  }|d	z  dk(  rd| }||   j                  j                  }t        |d      r|j!                         }|j#                  |      }|j                  j                  ||      ||<   x  ||      }|j$                  dddf   j                  j                  |j$                  dddf   j                  j                  k7  j'                         sJ ||||
|fS )z0Synthesize a test dataset with changed encoding.r   Nrt   ar   rE   dr   r  rE   r  r   )r   r   r3   r	   r4   r   )lowhighr5   rJ   rT   r   r   r[   )r&   r   r*   r8   r9   uniformintegersint32rY   Categorical
from_codesr;   copyrS   r   r   r[   replacer\   any)r   r   r#   rd   r"   r   old_catsnew_catsmappingr>   col_numericcol_categoricalre   rE   colr   r   r   r   name	codes_ser	new_codess                         r%   make_recodedr$    s    EB I $H#HlG
))


%C++a)Z1_)E+FKllAY
a8 # O 
B: 	q5A:aai(C#AqAvI.E..++# , C Qqc7	 R&C

	
"AHHJE: 	Vq5A:1#w$KOO))	9k*!++-I%%g.	nn//89/Ud	V uIEJJq!t  &&#((1a4.*<*<*B*BBGGIIIq+66r'   c                    ddl }g d}g d}t        j                  dd      }|j                  j	                  |g d      }|j                  ||d      }t        |       \  }} ||      }t        j                  j                  d	      }	|	j                  |j                  d   
      }
t        t        fD ]  } |||
d      }t        d| i|      }|j                  |      }|j                  |      }t!        | ||       |j                  j	                  |g d      } |||d      }|j                  |      }t!        | ||        t#        |       \  }}}
}}t        ||
d      }t        d| i|      }|j                  |      }|j                  |      }t!        | ||       t        ||
d      }|j                  |      }t!        | ||       t        j$                  |j                  d   |j                  d   f      }||dd|j&                  dk(  f<   ||dd|j&                  dk7  f<   | dk(  rddl}|j+                  |      }|j                  |      }t!        | ||       y)z.Run with manually specified category encoding.r   Nr  r  	   	r   r   r	   rM   r   r	   r	   rM   r   r  f0f1r3   r4   TrK   r   	r   r   r	   rM   r   r	   r	   rM   r   r   )shaperH   r   )r   r*   aranger  r  r   r&   r8   r9   r  r,  r   r   r   r   r   r   r$  emptydtypesr,   r^   )r   r"   r  r  col0col1re   r#   rd   r>   r   rn   r.   r/   r   r   df1r   r   r   r  r  r^   r-   predt3s                            r%   run_specified_catr4  1  sQ     $H#H99Q?D>>$$) % D
 
T.	/BEB	BB
))


%C!%A( 0A$/6*B/$((,/~~((- ) 

 D)*((-/0  3?v2F/C;	aD	1BXv&+G__R F$$S)FFFF+	d	3B__R FFFF+HHEKKNEKKN;<E)8E!SZZ:%
%&)4E!SZZ:%
%&$$U+FFFF+r'   c                     t        |       \  }}}}}t        ||d      }t        ||d      }i }t        d| i||df|dfg|       t        | |d   d   |d   d          y)	z;Check the validation dataset is using the correct encoding.TrK   r   TrainValid)evalsevals_resultrmseN)r$  r   r   r   )r   r   r   r   rd   r.   Xy_validr9  s           r%   run_validationr<  r  s    &v.C1a	aD	1BuaD9HL		6
G}x12!	 W%f-|G/DV/Lr'   c                    ddl }t        |       \  }}g d}g d}t        j                  dd      }|j                  j                  |g d      } |||d      }t        |d	
      }	|	j                  d	      }
|	j                  ddgk(  sJ |j                  j                  |g d      } |||d      }t        |d	|
      }	|	j                  ddgk(  sJ |	j                  ddgk(  sJ |	j                  d	      }|
j                         |j                         k(  sJ |j                  j                  g dg d      }t        |       \  }} |d|i      }t        t        fD ]f  } ||d	
      }	|	j                  d	      }
|
J  ||d	|
      }	|	j                  d	      }|J |
j                         |j                         k(  rfJ  t        t        fD ]  }t        |       \  }}}}} |||d	
      }|j                  d	      }
|
J  ||||
d	      }|j                  d	      }|J |
j                         |j                         k(  sJ t        ||      rJ  y)z"Test re-coding inpput for DMatrix.r   Nr  r  r&  r'  r  r(  TrK   r1   r   rE   r+  r   r)  r*  )r      r   r   rS   rV   rL   )r   r&   r*   r-  r  r  r   r6   rV   rU   r7   r   r$  r   )r   r"   r#   rd   r  r  r0  r1  re   r.   cats_0r   rC   r   r   r   Xy_0r   s                     r%   run_recode_dmatrixrB    s   EB $H#H99Q?D>>$$) % D
 
4t$	%B		-Bt4Fs|+++>>$$) % D
 
4t$	%B	F	CBd|+++s|+++t4F?? 1111 >>$$) % D EB	UDM	Bo. 	6bT2""4"8!!!bTH""4"8!!! FOO$5555	6 o. +*62UAq!Q48$$T$:!!!q4P$$T$:!!! FOO$5555tT***+r'   c                 `   	 t               \  	}}}dt        dt        ddf 	fd}t        j                  t        t        gt        t        g      D ]W  \  }} ||d      }|t        u r |	|d|j                         |      }n |	|d|j                         	      } |||       Y y)
z)Test re-coding for training continuation.rA  r   r   Nc                    di}d}i }t        || |dfg||      }i }t        |||dfg|||      }t        |      t        |      k(  sJ i }t        || |dfg|dz  |      }	|d   d   |d   d   z   }
|d   d   }t        j                  j	                  ||
       t        j                  gg      D ]6  \  }}|j                  |      }|	j                  |      }t	        ||d       8 t        j                  | |g| |g      D ]6  \  }}|j                  |      }|	j                  |      }t	        ||d       8 y )	Nr   r	   r7  )r8  r   r9  )r8  	xgb_modelr   r9  r:  gh㈵>)rtol)	r   r   r*   r   r   	itertoolsproductr   r   )rA  r   paramsrevals_result_0	booster_0evals_result_1	booster_1evals_result_2	booster_2eval_concat	eval_fullr  r   r  r  r   r   r   s                   r%   r   z(run_training_continuation.<locals>.check  s   F##%'?#'
	 $&'?#'
	 Y'=+CCCC#%'?#E'
	 %W-f5w8OPV8WW"7+F3	


""9k: %%sElS%LA 	ADAq//2G//2GFGW4@	A %%tTlT4LA 	ADAq''*G''*GFGW4@	Ar'   TrK   )rL   rV   rw   r   )r$  r   rG  rH  r   r6   )
r   r   rd   r   r6  r7  rA  r   r   r   s
   `       @@r%   run_training_continuationrS    s    &v.C1a.AG .A7 .At .A` "))	/"Wo$> u S!5O##'"113D qTATATAVD 	dD!r'   c                    t        |       \  }}}}}t        ||d      }t        d| i|d      }|j                         }|j	                         }t        |||d      }	t        | ddd	|	d|
      }
|
j                         }||k(  sJ y)zTest with individual updaters.TrK   r   r   r   r?  pruneupdate)r   updaterprocess_type)r   rE  N)r$  r   r   save_rawr6   )r   r   r   r   rd   r.   rL  model_0r@  r   rN  model_1s               r%   
run_updater\    s    &v.C1a	aD	1Bx("a@I  "G%%'F5!6dKD$	

 		I   "Ggr'   c                    t        |       \  }}}}}t        t        fD ]  }t        ||d      }t        d| i|d      }|j	                         }t        |||||      }	t        ||||      }
|j                  |      }|j                  |	      }|j                  |
      }|j                  |      }|||fD ]  }t        | ||         y)z%Run prediction with re-coded DMatrix.TrK   r   r   r   )rV   N)	r$  r   r   r   r6   r   r   r   r   )r   r   r   r   rd   rC   r.   r/   r@  r   Xy_2r  r  predt_2predt_3predts                   r%   run_recode_dmatrix_predictrb  ,  s    &v.C1ao. 4S!56*BB'')"eQfE"eQ///"%//$'//$'))#.w0 	4EFGU3	44r'   )A__doc__rG  r   r   concurrent.futuresr   	functoolsr   fcachetypingr   r   r   r   numpyr*   ra   _typingr
   corer   r   r   r(   r   trainingr   r   r   r   r   r   rW  r   utilsr   r   r   r&   ndarrayr+   rZ   rA   ro   r   r   r   r   r   r   r   r   r   r   r  r  r
  r   r$  r4  r<  rB  rS  r\  rb  rr   r'   r%   <module>rn     s   %  	  1 % , ,    B B )   # ; ;  5t#4  F # "** 
 
W 
s 
t 
6!f 6! 6!tP@F P@t P@f 6  d  B"6 "eCbjj"**,L&M "$, ,f ,v ,$ , $F $t $N+
F +
t +
\& T 0 C/*>tAw >W >S >C >A >... . 	.
 . 
.6
 
D 
 D  6: 27 27 27u 27 27j>,>,	>,B6 d *B+v B+$ B+JDf D DNv $ 24v 4$ 4r'   