基于LGBMRanker的超参数优化

2024-06-02 19:59:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用LGBMRanker解决排名问题,并希望使用GridSearchCV优化超参数

我有三段数据(X,y):

X_1, X_2, X_3 , y_1, y_2, y_3

我还有每个拆分的查询组大小(三个列表):gp_1、gp_2、gp_3

我正在定义交叉验证的特定拆分:

from sklearn.model_selection import PredefinedSplit
valid_fold = list(np.zeros(n))+ list(np.ones(n))+list(2*np.ones(n))
ps = PredefinedSplit(valid_fold)
ranker = lightgbm.LGBMRanker(**estimator_params)

grid = GridSearchCV(ranker, params_grid, cv=ps, verbose=2, scoring=make_scorer(ndcg_score, greater_is_better=True), refit=False)

如何将数据馈送到grid.fit?以下代码不起作用:

X_concat = np.concatenate((X_1, X_2, X_3), axis=0)
y_concat = np.concatenate((y_1, y_2, y_3), axis=0)

grid.fit(X_concat, y_concat, group= next(iter([gp_1, gp_2, gp_3])), **params_fit)

Tags: 数据nponesfoldparamslistgridfit