Je veux faire une validation croisée pour le modèle LightGBM avec lgb.Dataset et utiliser early_stopping_rounds . L'approche suivante fonctionne sans problème avec XGBoost xgboost.cv . Je préfère ne pas utiliser l'approche de Scikit Learn avec GridSearchCV, car il ne prend pas en charge l'arrêt anticipé ou lgb.Dataset.
import lightgbm as lgb
from sklearn.metrics import mean_absolute_error
dftrainLGB = lgb.Dataset(data = dftrain, label = ytrain, feature_name = list(dftrain))
params = {'objective': 'regression'}
cv_results = lgb.cv(
params,
dftrainLGB,
num_boost_round=100,
nfold=3,
metrics='mae',
early_stopping_rounds=10
)
La tâche consiste à effectuer une régression, mais le code suivant génère une erreur: Supported target types are: ('binary', 'multiclass'). Got 'continuous' instead.
LightGBM prend-il en charge la régression ou ai-je fourni des paramètres incorrects?
Par défaut, le paramètre stratify dans lightgbm.cv est True
. Selon la documentation :
stratifié (bool, facultatif (par défaut = Vrai)) - Indique s'il faut effectuer un échantillonnage stratifié.
Mais stratifier ne fonctionne qu'avec des problèmes de classification. Donc, pour travailler avec la régression, vous devez le rendre faux.
cv_results = lgb.cv(
params,
dftrainLGB,
num_boost_round=100,
nfold=3,
metrics='mae',
early_stopping_rounds=10,
# This is what I added
stratified=False
)
Maintenant ça marche.