
    Гh                         S r SSKJr  SSKJr  SSKrSSKrSSKr	SSKJ
r  S\S\SS4S	 jrS
\SS4S jrS
\SS4S jrS
\S\SS4S jrg)zTests for learning to rank.    )
ModuleType)AnyN)testingimpltree_methodreturnc           	        ^ SSK nSSKJm  SSKJnJn  [        R                  " SSSSS	9u  pVpxU R                  U5      n	XyS
'   [        R                  " SSUS9n
U
R                  X5        U
R                  X5      nUS:  d   eU	R                  5       nSUR                  S'   U
R                  XX4/S9  [        R                  " SSUS9n
U
R                  XVUS9  U
R                  X5      n[        R                   " X5      (       d   eUS:w  a)  U" SS9nU" XXnU	R"                  S9n[%        U5      S:X  d   eS[&        S[&        S[(        4U4S jjn[        R                  " SUUSS9n
U
R                  XX4/S9  U
R                  X5      n[        R                   " UU
R+                  5       S   S   S   5      (       d   eUS:w  a  UR,                  R/                  U5      nU R                  R,                  R1                  U[3        UR4                  S    5       Vs/ s H  n[7        U5      PM     snS!9n	XyS
'   [        R                  " SSUS9n
U
R                  X5        U
R                  X5      n[        R                   " UU5      (       d   e[8        R:                  " [<        S"S#9   U
R                  XXV4/S9  SSS5        gs  snf ! , (       d  f       g= f)$z$Test ranking with qid packed into X.r   N)mean_squared_error)StratifiedGroupKFoldcross_val_score            )	n_samples
n_featuresn_query_groupsmax_relqidndcg)n_estimatorseval_metricr   ffffff?g      @)r   r   )eval_set)r   gpu_histF)shuffle)cvgroups   argskwargsr   c                  (   > [        T" U 0 UD65      * $ )N)float)r    r!   r
   s     jC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\xgboost/testing/ranking.pyneg_mse#run_ranking_qid_df.<locals>.neg_mse0   s    ($9&9:::    T)r   r   r   disable_default_eval_metricvalidation_0r%      )columnszEither `group` or `qid`.)match)scipy.sparsesklearn.metricsr
   sklearn.model_selectionr   r   tmmake_ltr	DataFramexgb	XGBRankerfitscorecopyilocnpiscloser   lenr   r#   evals_resultsparse
csr_matrixfrom_spmatrixrangeshapestrpytestraises
ValueError)r   r   scipyr   r   Xyq_dfrankersvalid_dfs1kfoldresultsr%   r7   X_csris2r
   s                        @r$   run_ranking_qid_dfrV      s   2MsqTUVJA! 
	BuI]]v;WF
JJrRAs7N7 wwyHHMM$
JJrJ/ ]]v;WF
JJqJ	b	B::a j $U3!&a"&&I7|q   ;s ;c ;e ; ]]$(	F JJrJ/LL%E::eV002>B9MbQRRRR j ''*^^""00E!''!*,=>,=qCF,=> 1 
 5	K
 	

2\\" zz"a    	z)C	D

2QF8
, 
E	D ? 
E	Ds   K
(K		
Kdevicec                    SSK Jn  [        R                  " SSSSS9u  p#[        R
                  R                  S5      nUR                  SUR                  S   S	9n[        R                  " U5      nXRS
'   [        R                  " SU S9nUR                  X#5        UR                  X#5      nUS:  d   e[        R                  " SU S9nU" XbU5      nU H  n	U	S:  a  M   e   g)z#Test LTR with categorical features.r   )r   i   
   r   F)r   r   n_categoriesonehoti  )sizer   T)enable_categoricalrW   g?r   N)r0   r   r1   make_categoricalr:   randomdefault_rngchoicerB   sortr4   r5   r6   r7   )
rW   r   rH   rI   rngr   ltrr7   scoresrN   s
             r$   run_ranking_categoricalrf   P   s    7"1UDA ))


%C
**QQWWQZ*
(C
''#,CeH
--4
?CGGAMIIaOE3;;
--4
?C SQ'F3ww r'   c           	         [         R                  " SSSS5      u  pp4[        R                  " SSU S9nUR	                  XX1U4/U/S9  UR                  5       n[        R                  " SSU SS	9nUR	                  XX1U4/U/S9  UR                  5       nUS
   S   S   US
   S   S   :  d   e[        R                  " SSU SSS9nUR	                  XX1U4/U/S9  UR                  5       n[        R                  " SSU SSS9nUR	                  XX1U4/U/S9  UR                  5       nUS
   S   S   US
   S   S   :X  d   e[        R                  " SSU SSSS9nUR	                  XX1U4/U/S9  UR                  5       n[        R                  " SSU SSSS9nUR	                  XX1U4/U/S9  UR                  5       nUS
   S   S   US
   S   S   :w  d   eg)zTest normalization.i      @   r   rank:pairwise	objectiver   rW   r   r   eval_qidF)rl   r   rW   lambdarank_normalizationr)   zndcg@32r*   meanT)rl   r   rW   lambdarank_pair_methodro   r   )rl   r   rW   rq   ro   lambdarank_num_pair_per_sampleN)r1   r2   r4   r5   r6   r=   )rW   rH   rI   r   rK   rd   e0e1s           r$   run_normalizationru   i   sB   ;;tQA.LA#
--/&
QCGGAcVHuG=				B
--!!&	C GGAcVHuG=				Bni(,r./A)/LR/PPPP --!%!%C GGAcVHuG=				B
--!%!&C GGAcVHuG=				Bnf%b)R-?-G-KKKK --!%!%'(C GGAcVHuG=				B
--!%!&'(C GGAcVHuG=				Bnf%b)R-?-G-KKKKr'   rl   c                     US:X  a  [         R                  " SSSSS9u  p#pEO[         R                  " SSSS5      u  p#pE[        R                  " USU S9nUR	                  X#XBU4/U/S	9  UR                  5       n[        R                  " S
SU SS9nUR	                  X#XBU4/U/S	9  UR                  5       n[        US   R                  5       5      S   S   [        US   R                  5       5      S   S   pX:w  d   eg)z(Test normalization by score differences.zrank:mapi   rh   ri   r+   )r   r   rk   rm   rj   F)rl   r   rW   lambdarank_score_normalizationr)   r*   N)r1   r2   r4   r5   r6   r=   listvalues)rW   rl   rH   rI   r   rK   rd   rs   rt   m0m1s              r$   run_score_normalizationr|      s   J{{4B:c1{{4B2c
--)!F
KCGGAcVHuG=				B
--!',	C GGAcVHuG=				B 	R&&()"-b1R&&()"-b1 	 8O8r'   )__doc__typesr   typingr   numpyr:   rD   xgboostr4   r   r1   rC   rV   rf   ru   r|    r'   r$   <module>r      s}    !      !@-Z @-c @-d @-FC D 2?Lc ?Ld ?LDC C D r'   