
    ^i                         d Z ddlmZ ddlmZ ddlZddlZddlZ	ddlm
Z ddlm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eddfdZy)zTests for learning to rank.    )
ModuleType)AnyN)testing   )Deviceimpltree_methoddevicereturnc           	         ddl }ddlm ddlm}m} t        j                  dddd	      \  }}}}	| j                  |      }
||
d
<   t        j                  dd||      }|j                  |
|       |j                  |
|      }|dkD  sJ |
j                         }d|j                  d<   |j                  |
|||fg       t        j                  dd||      }|j                  |||       |j                  |
|      }t        j                   ||      sJ |dk(  r0 |d      } |||
|||
j"                        }t%        |      dk(  sJ dt&        dt&        dt(        ffd}t        j                  d|||d      }|j                  |
|||fg       |j                  ||      }t        j                   ||j+                         d   d   d         sJ |dk(  r|j,                  j/                  |      }| j                  j,                  j1                  |t3        |j4                  d          D cg c]  }t7        |       c}!      }
||
d
<   t        j                  dd||      }|j                  |
|       |j                  |
|      }t        j                   ||      sJ t9        j:                  t<        d"#      5  |j                  |
|||fg       ddd       yc c}w # 1 sw Y   yxY w)$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	   r
   ffffff?g      @)r   r   )eval_set)r   cpuF)shuffle)cvgroups   argskwargsr   c                  (    t         | i |       S )N)float)r#   r$   r   s     X/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/xgboost/testing/ranking.pyneg_msez#run_ranking_qid_df.<locals>.neg_mse6   s    ($9&9:::    T)r   r   r	   r
   disable_default_eval_metricvalidation_0r(   r   )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	   r
   scipyr   r   Xyq_dfrankersvalid_dfs1kfoldresultsr(   r8   X_csris2r   s                         @r'   run_ranking_qid_dfrW      s   2MsqTUVJAq!Q 
	BBuI]]FFF JJr1RAs7N7 wwyHHMM$
JJr11J/ ]]FFF JJq!J	b!	B::a $U3!&"aE"&&I7|q   ;s ;c ;e ; ]]$(F JJr11J/LL1%E::eV002>B9MbQRRR ''*^^""00E!''!*,=>qCF> 1 
 5	#	
 	

2q\\"a zz"a   	z)C	D -

2qQF8
,- - ?- -s   2K"
K''K0c                    ddl m} t        j                  dddd      \  }}t        j
                  j                  d      }|j                  d|j                  d   	      }t	        j                  |      }||d
<   t        j                  d|       }|j                  ||       |j                  ||      }|dkD  sJ t        j                  d|       } ||||      }|D ]	  }	|	dkD  r	J  y)z#Test LTR with categorical features.r   )r   i   
   r   F)r   r   n_categoriesonehoti  )sizer   T)enable_categoricalr
   g?r   N)r1   r   r2   make_categoricalr;   randomdefault_rngchoicerC   sortr5   r6   r7   r8   )
r
   r   rI   rJ   rngr   ltrr8   scoresrO   s
             r'   run_ranking_categoricalrf   Z   s    7"1UDAq ))


%C
**QQWWQZ*
(C
''#,CAeH
--4
?CGGAqMIIaOE3;;
--4
?C S!Q'F 3wwr)   c                    t        j                  dddd      \  }}}}t        j                  dd|       }|j	                  |||||fg|g       |j                         }t        j                  dd| d	      }|j	                  |||||fg|g       |j                         }|d
   d   d   |d
   d   d   kD  sJ t        j                  dd| dd      }|j	                  |||||fg|g       |j                         }t        j                  dd| dd      }|j	                  |||||fg|g       |j                         }|d
   d   d   |d
   d   d   k(  sJ t        j                  dd| ddd      }|j	                  |||||fg|g       |j                         }t        j                  dd| ddd      }|j	                  |||||fg|g       |j                         }|d
   d   d   |d
   d   d   k7  sJ y)zTest normalization.i      @   r   rank:pairwise	objectiver   r
   r   r   eval_qidF)rl   r   r
   lambdarank_normalizationr+   zndcg@32r,   meanT)rl   r   r
   lambdarank_pair_methodro   r   )rl   r   r
   rq   ro   lambdarank_num_pair_per_sampleN)r2   r3   r5   r6   r7   r>   )r
   rI   rJ   r   rL   rd   e0e1s           r'   run_normalizationru   s   s^   ;;tQA.LAq#q
--/&
QCGGAqcaVHuG=				B
--!!&	C GGAqcaVHuG=				Bni(,r./A)/LR/PPPP --!%!%C GGAqcaVHuG=				B
--!%!&C GGAqcaVHuG=				Bnf%b)R-?-G-KKKK --!%!%'(C GGAqcaVHuG=				B
--!%!&'(C GGAqcaVHuG=				Bnf%b)R-?-G-KKKKr)   rl   c                 &   |dk(  rt        j                  dddd      \  }}}}nt        j                  dddd      \  }}}}t        j                  |d|       }|j	                  |||||fg|g	       |j                         }t        j                  d
d| d      }|j	                  |||||fg|g	       |j                         }t        |d   j                               d   d   t        |d   j                               d   d   }
}	|	|
k7  sJ y)z(Test normalization by score differences.zrank:mapi   rh   ri   r   )r   r   rk   rm   rj   F)rl   r   r
   lambdarank_score_normalizationr+   r,   N)r2   r3   r5   r6   r7   r>   listvalues)r
   rl   rI   rJ   r   rL   rd   rs   rt   m0m1s              r'   run_score_normalizationr|      s   J{{4B:1c1{{4B21c1
--)!F
KCGGAqcaVHuG=				B
--!',	C GGAqcaVHuG=				B 	R&&()"-b1R&&()"-b1 	B 8O8r)   )__doc__typesr   typingr   numpyr;   rE   xgboostr5   r   r2   utilsr   rD   rW   rf   ru   r|    r)   r'   <module>r      s    !      ! H-Z H-c H-6 H-d H-VC D 2?Lc ?Ld ?LDC C D r)   