
    sii                         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dS )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	          \  }}}}	|                     |          }
||
d
<   t          j
        dd||          }|                    |
|           |                    |
|          }|dk    sJ |
                                }d|j        d<   |                    |
|||fg           t          j
        dd||          }|                    |||           |                    |
|          }t          j        ||          sJ |dk    r6 |d          } |||
|||
j                  }t%          |          dk    sJ dt&          dt&          dt(          ffd}t          j
        d|||d          }|                    |
|||fg           |                    ||          }t          j        ||                                d         d         d                   sJ |dk    r|j                            |          }| j        j                            |d  t3          |j        d!                   D             "          }
||
d
<   t          j
        dd||          }|                    |
|           |                    |
|          }t          j        ||          sJ t7          j        t:          d#$          5  |                    |
|||fg           ddd           dS # 1 swxY w Y   dS )%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                  0    t           | i |           S )N)float)r#   r$   r   s     ]/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/xgboost/testing/ranking.pyneg_msez#run_ranking_qid_df.<locals>.neg_mse6   s%    (($9&99::::    T)r   r   r	   r
   disable_default_eval_metricvalidation_0r(   c                 ,    g | ]}t          |          S  )str).0is     r'   
<listcomp>z&run_ranking_qid_df.<locals>.<listcomp>I   s    >>>qCFF>>>r)   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pytestraises
ValueError)r   r	   r
   scipyr   r   Xyq_dfrankersvalid_dfs1kfoldresultsr(   r>   X_csrs2r   s                        @r'   run_ranking_qid_dfr[      s   222222MMMMMMMMsqTUVVVJAq!Q 
		BBuI]FF  F JJr1RAs7777 wwyyHHM$
JJr11J/// ]FF  F JJq!J	b!		B:a $$U333!/&"aE"&III7||q    ;s ;c ;e ; ; ; ; ; ; ]$(  F JJr11J///LL1%%E:eV0022>B9MbQRRRRR ''**^"00>>E!'!*,=,=>>> 1 
 
 5	#	
 
 
 	

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

2qQF8
,,,- - - - - - - - - - - - - - - - - -s   'LLLc                    ddl m} t          j        dddd          \  }}t          j                            d          }|                    d|j        d         	          }t	          j	        |          }||d
<   t          j        d|           }|                    ||           |                    ||          }|dk    sJ t          j        d|           } ||||          }|D ]
}	|	dk    sJ dS )z#Test LTR with categorical features.r   )r   i   
   r   F)r   r   n_categoriesonehoti  )sizer   T)enable_categoricalr
   g?r   N)r7   r   r8   make_categoricalrA   randomdefault_rngchoicerI   sortr;   r<   r=   r>   )
r
   r   rN   rO   rngr   ltrr>   scoresrT   s
             r'   run_ranking_categoricalrj   Z   s   777777"1U  DAq )


%
%C
**QQWQZ*
(
(C
'#,,CAeH
-4
?
?
?CGGAqMMMIIaOOE3;;;;
-4
?
?
?C _S!Q''F  3wwwww r)   c                    t          j        dddd          \  }}}}t          j        dd|           }|                    |||||fg|g           |                                }t          j        dd| d	          }|                    |||||fg|g           |                                }|d
         d         d         |d
         d         d         k    sJ t          j        dd| dd          }|                    |||||fg|g           |                                }t          j        dd| dd          }|                    |||||fg|g           |                                }|d
         d         d         |d
         d         d         k    sJ t          j        dd| ddd          }|                    |||||fg|g           |                                }t          j        dd| ddd          }|                    |||||fg|g           |                                }|d
         d         d         |d
         d         d         k    sJ dS )zTest normalization.i      @   r   rank:pairwise	objectiver   r
   r   r   eval_qidF)rp   r   r
   lambdarank_normalizationr+   zndcg@32r,   meanT)rp   r   r
   lambdarank_pair_methodrs   r   )rp   r   r
   ru   rs   lambdarank_num_pair_per_sampleN)r8   r9   r;   r<   r=   rD   )r
   rN   rO   r   rQ   rh   e0e1s           r'   run_normalizationry   s   s   ;tQA..LAq#q
-/&
Q
Q
QCGGAqcaVHuG===					B
-!!&	  C GGAqcaVHuG===					Bni(,r./A)/LR/PPPPP -!%!%  C GGAqcaVHuG===					B
-!%!&  C GGAqcaVHuG===					Bnf%b)R-?-G-KKKKK -!%!%'(  C GGAqcaVHuG===					B
-!%!&'(  C GGAqcaVHuG===					Bnf%b)R-?-G-KKKKKKKr)   rp   c                    |dk    rt          j        dddd          \  }}}}nt          j        dddd          \  }}}}t          j        |d|           }|                    |||||fg|g	           |                                }t          j        d
d| d          }|                    |||||fg|g	           |                                }t          |d                                                   d         d         t          |d                                                   d         d         }
}	|	|
k    sJ dS )z(Test normalization by score differences.zrank:mapi   rl   rm   r   )r   r   ro   rq   rn   F)rp   r   r
   lambdarank_score_normalizationr+   r,   N)r8   r9   r;   r<   r=   rD   listvalues)r
   rp   rN   rO   r   rQ   rh   rw   rx   m0m1s              r'   run_score_normalizationr      sX   J{4B:::1c11{4B221c1
-)!F
K
K
KCGGAqcaVHuG===					B
-!',	  C GGAqcaVHuG===					B 	R&&(())"-b1R&&(())"-b1 	B 888888r)   )__doc__typesr   typingr   numpyrA   rJ   xgboostr;   r   r8   utilsr   r/   r[   rj   ry   r   r.   r)   r'   <module>r      s+   ! !                      ! ! ! ! ! !      H-Z H-c H-6 H-d H- H- H- H-VC D    2?Lc ?Ld ?L ?L ?L ?LDC C D      r)   