
    ^jy,              
          d Z ddlmZ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j0                  dej0                  dedeej0                     def
dZdej0                  dej0                  dej0                  deej0                     de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ListOptionalN   )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                   b/var/www/ramen.bs-engineer-server.com/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   quantile333333?)r   r   quantile_alphar   Trainr   evals_result)alphag      ?g      ?g      ?zreg:quantileerror)r   r   rJ   	objectiver   N)sklearn.datasetsrC   sklearn.metricsrD   r&   randomRandomStater	   r   inplace_predicttestingassert_allclosemeanr,   )r   r   rC   rD   rngr2   r3   r   rM   boosterpredtlossrN   r;   s                 r>   check_quantile_errorr^   @   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:r3   r\   rN   weightc                    || z
  }t        j                  |dk\  d|z
  |      }||z  |z  }|t        t        j                  |            S t        t        j                  ||z        t        j                  |      z        S Ng              ?)r&   wherefloatrY   sumr3   r\   rN   r_   diffweight_scaler]   s          r>   _expectile_lossri   m   ss     19D88DCKue<L$%D~RWWT]##v&788r@   c                 :   || d d d f   z
  }t        j                  |dk\  d|z
  |      }||z  |z  }|t        t        j                  |            S t        t        j                  ||d d d f   z        t        j                  |      |j
                  z  z        S ra   )r&   rc   rd   rY   re   sizerf   s          r>   _expectile_loss_multirl   x   s     1QW:D88DCKue<L$%D~RWWT]##vag./266&>EJJ3NOPPr@   c                 T   ddl m} t        j                  j	                  d      } |dd|      \  }}t        ||      }i }t        | dd|d	||d
fg|      }|j                  |      }	t        ||	dd      }
t        j                  j                  |d
   d   d   |
       t        j                  g d      }t        | d|d|d||d
fg|      }|j                  |      }	t        ||	|d      }
t        j                  j                  |d
   d   d   |
       |j                  dd|j                  d         }t        |||      }i }t        | d|d|d||d
fg|      }|j                  |      }	t        ||	||      }
t        j                  j                  |d
   d   d   |
       y)zTest for the `expectile` loss.r   rB      rF   r    rG   	expectilerI   )r   r   expectile_alphar   rK   rL   NrO   rP   zreg:expectileerror)r   r   rp   rQ   r   g?rb   )rk   r_   )rR   rC   r&   rT   rU   r   r   rV   ri   rW   rX   arrayrl   uniformr   )r   r   rC   rZ   r2   r3   r   rM   r[   r\   r]   rN   weightsXy_wevals_result_ws                  r>   check_expectile_errorrw      s   0
))


#C34DAq	AB$&L&&"		
 	G}o!
G ##A&E1eS$/DJJ|G4[A"EtLHH&'E&&$-	
 	G}o!G ##A&E E5$7DJJ|G4[A"EtLkk#sk4G1a(D&(N&&$-	
 	g#G ##A&E E5':DJJ~g6{CBGNr@   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   rQ   r   num_boost_round:ư>rtolN)rR   r%   rS   r{   r&   rT   rU   r   r   predictrd   evalsplitrW   rX   randnr   )r   r   r   r%   r{   rZ   r   r2   r3   r   r[   scoreskl_aucr   s                 r>   run_roc_auc_binaryr      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   ry   @         r    r   )r}   r   r   r   aucprr   r   r   r   r+   validation_0rO   r|   rb   {Gz?r   N)rR   r%   r   r(   rM   r&   rW   rX   )r   r   r%   r2   r3   clfrM   s          r>   run_pr_auc_multir      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   ry   rz   r   r|   r   )r}   r~   r   r   Nrq   r   zmulti:softprob)r   r   rQ   	num_classr   r   r   r   ovr)averagesample_weightmulti_classr   r   r   gh㈵>)rR   r%   rS   r{   r&   rT   rU   r   minmaxr   r   r   rd   r   r   rW   rX   r   )r   r   r   r   r%   r{   rZ   r   r   r2   r3   rt   r   r[   r   r   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   ry   rF   r   r   r   r   r   r   zrank:pairwiser   )r   r   rQ   r   r   )    r   r   )groupr+   
eval_groupr   rO   Gz?N)rR   r%   r   r&   rr   r(   rM   )r   r   r%   r2   r3   r4   groupsresultss           r>   run_pr_auc_ltrr   0  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   ry   )r   precision_recall_curverF   r   r   r   r   r   r   r   r   r   rO   Nr   r   r|   r   )rR   r%   rS   r   r   r   r(   rM   predict_probar&   rW   rX   )r   r   r%   r   r   r2   r3   r   rM   y_score	precisionrecall_praucs                 r>   run_pr_auc_binaryr   H  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   r   numpyr&   r#   compatr   corer   r	   r
   sklearnr   r   trainingr   utilsr   strr?   r^   ndarrayrd   ri   rl   rw   intr   r   boolr   r   r    r@   r>   <module>r      s   # ' '    < < .  ..$.	.b*Lc *L6 *Ld *LZ9	zz9**9-29<DRZZ<P9
9Q	zzQ**Q-/ZZQAI"**AUQ
Q9Os 9OF 9Ot 9Ox#8C #8C #8 #8D #8L=# =v =$ =(4848!$480448>D48	48n V  0>3 > >4 >r@   