我正在使用 LightGBM,并希望使用平均精度召回作为指标。我尝试定义 feval:
cv_result = lgb.cv(params=params, train_set=lgb_train, feature_name=Rel_Feat_Names, feval=APS)
其中 APS 定义为:
def APS(preds, train_data):
y_pred_val = []
y_test_val = []
for i, stat in enumerate(train_data.get_label.isnull()):
if ~stat:
y_pred_val.append(preds[i])
y_test_val.append(train_data.get_label[i])
aps = average_precision_score(np.array(y_test_val), np.array(y_pred_val))
return aps
我得到一个错误:
TypeError:未知类型的参数:feval,得到:函数
我也尝试使用“MAP”作为指标
cv_result = lgb.cv(params=params, train_set=lgb_train, feature_name=Rel_Feat_Names, "metric="MAP")
但出现以下错误:
“lightgbm.basic.LightGBMError:对于MAP metric,应该有查询信息”
我找不到所需的查询信息。
如何正确使用 feval 并定义“MAP”所需的查询
谢谢