
    ^i "              
          d Z ddl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mZ ddlmZ d	d
lmZ dededdfdZdededdfdZdedededdfdZdededdfdZdededededdf
dZdededdfdZdededdfdZy)zTests for evaluation metrics.    )DictListN   )concat)DMatrixQuantileDMatrix_parse_eval_str)XGBClassifier	XGBRanker)train   )Devicetree_methoddevicereturnc           	         t        j                  d      }|j                  dddd      \  }}t        j                  |j
                        }t        d| |      }|j                  |||	       |j                  d
ddd      \  }}|j                  d       t        |j                         j                  t        ||      dfg            }|d   d   }g }	g }
d}g }t        |      D ]}  }|j                  d
ddd      \  }}|	j                  |       |
j                  |       t        j                  |j
                  |t        j                         }|j                  |        t#        |      }t#        |	      }t#        |
      }t        |j                         j                  t        |||	      dfg            }|d   d   j%                  d      sJ |d   d   }||k(  sJ y)z3Test for precision with ranking and classification.zsklearn.datasetsi      r   i  )	n_samples
n_features	n_classesrandom_state)shape)n_estimatorsr   r   )qidi     zpre@32)eval_metricXy)evalsr      )r   
fill_valuedtyper   N)pytestimportorskipmake_classificationnpzerosr   r   fit
set_paramsr	   get_boostereval_setr   rangeappendfulluint64r   endswith)r   r   datasetsXyr   ltrresultscore_0X_listy_listn_query_groupsq_listiqscore_1s                   X/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/xgboost/testing/metrics.pycheck_precision_scorer>      s    ""#56H''1 ( DAq ((
!C
F
KCGGAqcG ''!qt ( DAq NNxN(S__.771t?T>U7VWFQilGFFN!F>" ++a14 , 
1 	aaGG!''aryyAa .CvAvA""71aS+A4*H)I"JF !9Q<  ***QilGg    c                 ~   ddl m} ddlm} t        j
                  j                  d      } |dd|      \  }}t        ||      }i }t        | dd	|d
||dfg|      }	|	j                  |      }
 |||
d	      }t        j                  j                  |d   d   d   |       g d}t        | d|d|d||dfg|      }	|	j                  |      }
t	        j                  t        d      D cg c]  } |||
dd|f   ||          c}      }t        j                  j                  |d   d   d   |       yc c}w )zTest for the `quantile` loss.r   )make_regression)mean_pinball_loss      r   )r   quantileg333333?)r   r   quantile_alphar   Train)r   evals_result)alpha)g      ?g      ?g      ?zreg:quantileerror)r   r   rF   	objectiver   N)sklearn.datasetsrA   sklearn.metricsrB   r%   randomRandomStater   r   inplace_predicttestingassert_allclosemeanr+   )r   r   rA   rB   rngr1   r2   r   rH   boosterpredtlossrI   r:   s                 r=   check_quantile_errorrX   @   sU   01
))


#C34DAq	A	B$&L&%!		
 	G}o!
G ##A&EQS1DJJ|G4Z@DdKE&%#,	
 	G}o!G ##A&E77DI!HMq	1eAqDkq	:MD JJ|G4Z@DdK 	Ns   -D:r   c                    ddl m} ddlm} t        j
                  j                  d      }d} ||||d|      \  }}t        ||      }	t        | |ddd	|	d
      }
|
j                  |	      } |||      }t        |
j                  |	      j                  d      d
         }t        j                  j                  ||d        |j                  |j                    }|
j                  t        |            } |||      }t        |
j                  t        ||            j                  d      d
         }t        j                  j                  ||d       y)z6TestROC AUC metric on a binary classification problem.r   r$   roc_auc_scorer   
   )n_informativen_redundantr   auczbinary:logistic)r   r   r   rK   r   num_boost_round:ư>rtolN)rL   r$   rM   r\   r%   rN   rO   r   r   predictfloatevalsplitrQ   rR   randnr   )r   r   r   r$   r\   rT   r   r1   r2   r   rU   scoreskl_aucr`   s                 r=   run_roc_auc_binaryrn   m   s:   4-
))


%CJ DAq 
AB& *		
 		G OOBEAu%G
R &&s+A.
/CJJw$7		177AOOGAJ'EAu%G
WQ]+11#6q9
:CJJw$7r?   c                 p   ddl m}  |ddddd      \  }}t        | d	d
|      }|j                  ||||fg       |j	                         d   d
   d   }t        | dd
|      }|j                  ||||fg       |j	                         d   d
   d   }t
        j                  j                  d|d       y)z?Test for PR AUC metric on a multi-class classification problem.r   rZ   @         r   r   )r^   r   r   r   aucprr   r   r   r   r*   validation_0rJ   r]   g      ?{Gz?re   N)rL   r$   r
   r'   rH   r%   rQ   rR   )r   r   r$   r1   r2   clfrH   s          r=   run_pr_auc_multiry      s    4r2Q!RVWDAq
aWVC GGAqQF8G$##%n5g>rBL bgfC GGAqQF8G$##%n5g>rBLJJsLt<r?   weightedc           	      P   ddl m} ddlm} t        j
                  j                  d      }d}d} ||||d||      \  }	}
|r8|j                  |      }||j                         z  }||j                         z  }nd}t        |	|
|	      }t        | d
d||d|d      }|j                  |      } ||
|d|d      }t        |j                  |      j                  d      d         }t        j                   j#                  ||d        |j                  |	j$                   }	|j                  t        |	|	            } ||
|d|d      }t        |j                  t        |	|
|	            j                  d      d         }t        j                   j#                  ||d       y)z@Test for ROC AUC metric on a multi-class classification problem.r   rZ   r[   r   r]   r   )r^   r_   r   r   N)weightr`   zmulti:softprob)r   r   rK   	num_classr   r   ra   rz   ovr)averagesample_weightmulti_classrc   rd   re   gh㈵>)rL   r$   rM   r\   r%   rN   rO   rk   minmaxr   r   rg   rh   ri   rj   rQ   rR   r   )r   r   rz   r   r$   r\   rT   r   r   r1   r2   weightsr   rU   rl   rm   r`   s                    r=   run_roc_auc_multir      s    5-
))


%CJI DAq ))I&7;;= 7;;= 	Ag	&B& )"	
 	
G OOBE	5*GG R &&s+A.
/CJJw$7		177AOOGAg67E	5*GG WQ':;AA#FqI
JCJJw$7r?   c                     ddl m}  |dddd      \  }}t        | dd	d
|      }t        j                  g d      }|j                  |||||fg|g       |j                         d   d
   }|d   dk\  sJ y)z,Test for PR AUC metric on a ranking problem.r   rZ   rD   r   r   r   r   r   rq   zrank:pairwisers   )r   r   rK   r   r   )    r   rp   )groupr*   
eval_grouprv   rJ   Gz?N)rL   r$   r   r%   arrayr'   rH   )r   r   r$   r1   r2   r3   groupsresultss           r=   run_pr_auc_ltrr      s    4sAFDAq
!C XXl#FGG		a&8    09G2;$r?   c                    ddl m} ddlm}m}  |dddd      \  }}t        | d	d
|      }|j                  ||||fg       |j                         d   d
   d   }|j                  |      ddd	f   }	 |||	      \  }
}} |||
      }t        j                  j                  ||d       t        | dd
|      }|j                  ||||fg       |j                         d   d
   d   }t        j                  j                  d|d       y)z:Test for PR AUC metric on a binary classification problem.r   rZ   )r`   precision_recall_curverD   r   r   r   r   r   rs   rt   ru   rv   rJ   Nrw   re   r]   r   )rL   r$   rM   r`   r   r
   r'   rH   predict_probar%   rQ   rR   )r   r   r$   r`   r   r1   r2   rx   rH   y_score	precisionrecall_praucs                 r=   run_pr_auc_binaryr      s   4;sAFDAq
aWVC GGAqQF8G$##%n5g>rBL"1a4(G1!W=Ivq	"E JJul>
bgfC GGAqQF8G$##%n5g>rBLJJt\=r?   )__doc__typingr   r   numpyr%   r"   compatr   corer   r   r	   sklearnr
   r   trainingr   utilsr   strr>   rX   intrn   ry   boolr   r   r    r?   r=   <module>r      s    #     < < .  ..$.	.b*Lc *L6 *Ld *LZ#8C #8C #8 #8D #8L=# =v =$ =(4848!$480448>D48	48n V  0>3 > >4 >r?   