objectif
Passer des poids et groupes (LTR) via Dataset ou API sklearn.
code minimal
import numpy as np, lightgbm as lgb
X = np.random.RandomState(0).randn(10, 2)
y = np.random.RandomState(1).randn(10)
w = np.array([1,1,1,1,2,2,2,2,3,3], dtype=float)
dtrain = lgb.Dataset(X, label=y, weight=w)
bst = lgb.train({"objective":"regression","metric":"l2","seed":0}, dtrain, num_boost_round=50, verbose_eval=False)
print(hasattr(bst, "predict"))
utilisation
# Ranking: groupes de requêtes (ex: 3+3+4)
X = np.random.RandomState(0).randn(10, 2)
y = np.random.RandomState(1).randn(10)
q = [3,3,4]
dtrain = lgb.Dataset(X, label=y, group=q)
rank = lgb.train({"objective":"lambdarank","metric":"ndcg","seed":0}, dtrain, num_boost_round=20, verbose_eval=False)
print(len(rank.feature_name()) == 2)
variante(s) utile(s)
# API sklearn avec sample_weight
from lightgbm import LGBMRegressor
reg = LGBMRegressor(n_estimators=50, random_state=0).fit(X, y, sample_weight=np.ones(len(y)))
print(hasattr(reg, "predict"))
notes
- En ranking, l’ordre des groupes correspond à la concaténation des lignes; vérifiez la somme des groupes égale au nombre d’échantillons.