
    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&        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   y_truey_predkwargsr   c                 d    t        | d      r| j                         } t         | |fi |       S )Nget)hasattrr'   float)r#   r$   r%   r   s      ]/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/xgboost/testing/ranking.pyneg_msez#run_ranking_qid_df.<locals>.neg_mse7   s3    65!ZZ\F(B6BCCC    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+   r;   X_csris2r   s                         @r*   run_ranking_qid_dfrZ      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   D DS DC DE D
 ]]$(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   8K(
K--K6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)r4   r   r5   make_categoricalr>   randomdefault_rngchoicerF   sortr8   r9   r:   r;   )
r
   r   rL   rM   rngr   ltrr;   scoresrR   s
             r*   run_ranking_categoricalri   ]   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)ro   r   r
   lambdarank_normalizationr.   zndcg@32r/   meanT)ro   r   r
   lambdarank_pair_methodrr   r   )ro   r   r
   rt   rr   lambdarank_num_pair_per_sampleN)r5   r6   r8   r9   r:   rA   )r
   rL   rM   r   rO   rg   e0e1s           r*   run_normalizationrx   v   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,   ro   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   rk   rl   r   )r   r   rn   rp   rm   F)ro   r   r
   lambdarank_score_normalizationr.   r/   N)r5   r6   r8   r9   r:   rA   listvalues)r
   ro   rL   rM   r   rO   rg   rv   rw   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>   rH   xgboostr8   r   r5   utilsr   rG   rZ   ri   rx   r    r,   r*   <module>r      s    !      ! J-Z J-c J-6 J-d J-ZC D 2?Lc ?Ld ?LDC C D r,   