[BUG] lightgbm model with validation set
Describe the bug
Hi, I get an error for the LGBM model with a validation set with output_chunk_length >1
With a output_chunk_length=1 it works fine, is this normal ?

System :
- Python version: 3.8.10
- darts version: 20.0.0
To Reproduce
from darts.datasets import AirPassengersDataset
series_air = AirPassengersDataset().load()
scaler_air, scaler_milk = Scaler(), Scaler()
series_air_scaled = scaler_air.fit_transform(series_air)
train_air, val_air = series_air_scaled[:-36], series_air_scaled[-36:]
model_lightGBM = LightGBMModel( lags=10,
lags_past_covariates=None,
lags_future_covariates=None,
output_chunk_length=2,
likelihood=None,
quantiles=None,
random_state=None)
model_lightGBM.fit(
series = train_air,
val_series = val_air,
#past_covariates = None,
#val_past_covariates = None,
#future_covariates = None,
#val_future_covariates = None,
verbose=True
)
TypeError: Wrong type(ndarray) for label. It should be list, numpy 1-D array or pandas Series
Expected behavior [1] valid_0's l2: 0.222919 [2] valid_0's l2: 0.210642
Hi, could you please post the full stack trace of the error? Thank you.
Hi @hrzn, Thank you for your time! The entire traceback :
Traceback (most recent call last):
File "c:/Users/bwieczorek/Desktop/lgbm_test.py", line 32, in main
model_lightGBM.fit(
File "C:\Users\bwieczorek\Desktop\lib\site-packages\darts\models\forecasting\gradient_boosted_model.py", line 162, in fit
super().fit(
File "C:\Users\bwieczorek\Desktop\lib\site-packages\darts\models\forecasting\regression_model.py", line 427, in fit
self._fit_model(
File "C:\Users\bwieczorek\Desktop\lib\site-packages\darts\models\forecasting\regression_model.py", line 328, in _fit_model
self.model.fit(training_samples, training_labels, **kwargs)
File "C:\Users\bwieczorek\Desktop\lib\site-packages\sklearn\multioutput.py", line 202, in fit
self.estimators_ = Parallel(n_jobs=self.n_jobs)(
File "C:\Users\bwieczorek\Desktop\lib\site-packages\joblib\parallel.py", line 1041, in __call__
if self.dispatch_one_batch(iterator):
File "C:\Users\bwieczorek\Desktop\lib\site-packages\joblib\parallel.py", line 859, in dispatch_one_batch
self._dispatch(tasks)
File "C:\Users\bwieczorek\Desktop\lib\site-packages\joblib\parallel.py", line 777, in _dispatch
job = self._backend.apply_async(batch, callback=cb)
File "C:\Users\bwieczorek\Desktop\lib\site-packages\joblib\_parallel_backends.py", line 208, in apply_async
result = ImmediateResult(func)
File "C:\Users\bwieczorek\Desktop\lib\site-packages\joblib\_parallel_backends.py", line 572, in __init__
self.results = batch()
File "C:\Users\bwieczorek\Desktop\lib\site-packages\joblib\parallel.py", line 262, in __call__
return [func(*args, **kwargs)
File "C:\Users\bwieczorek\Desktop\lib\site-packages\joblib\parallel.py", line 262, in <listcomp>
return [func(*args, **kwargs)
File "C:\Users\bwieczorek\Desktop\lib\site-packages\sklearn\utils\fixes.py", line 211, in __call__
return self.function(*args, **kwargs)
File "C:\Users\bwieczorek\Desktop\lib\site-packages\sklearn\multioutput.py", line 44, in _fit_estimator
estimator.fit(X, y, **fit_params)
File "C:\Users\bwieczorek\Desktop\lib\site-packages\lightgbm\sklearn.py", line 818, in fit
super().fit(X, y, sample_weight=sample_weight, init_score=init_score,
File "C:\Users\bwieczorek\Desktop\lib\site-packages\lightgbm\sklearn.py", line 683, in fit
self._Booster = train(params, train_set,
File "C:\Users\bwieczorek\Desktop\lib\site-packages\lightgbm\engine.py", line 232, in train
booster.add_valid(valid_set, name_valid_set)
File "C:\Users\bwieczorek\Desktop\lib\site-packages\lightgbm\basic.py", line 2559, in add_valid
data.construct().handle))
File "C:\Users\bwieczorek\Desktop\lib\site-packages\lightgbm\basic.py", line 1437, in construct
self._lazy_init(self.data, label=self.label, reference=self.reference,
File "C:\Users\bwieczorek\Desktop\lib\site-packages\lightgbm\basic.py", line 1282, in _lazy_init
self.set_label(label)
File "C:\Users\bwieczorek\Desktop\lib\site-packages\lightgbm\basic.py", line 1801, in set_label
label = list_to_1d_numpy(_label_from_pandas(label), name='label')
File "C:\Users\bwieczorek\Desktop\lib\site-packages\lightgbm\basic.py", line 164, in list_to_1d_numpy
raise TypeError("Wrong type({0}) for {1}.\n"
TypeError: Wrong type(ndarray) for label.
It should be list, numpy 1-D array or pandas Series
Hi @bawiek, thanks for bringing this issue to our attention! I just opened a PR that should solve this issue, which means that it should be fixed from the next release on.
This was fixed a couple of versions ago => closing.