microsoft/qlib · error · ValueError
Empty data from dataset, please check your dataset config.
Error message
Empty data from dataset, please check your dataset config.
What it means
KRNNModel.fit prepares train/valid/test segments and raises if the train or valid frame is empty. With no training rows or no validation rows the early-stopping loop cannot operate, so the run aborts with a dataset-config error before any training step.
Source
Thrown at qlib/contrib/model/pytorch_krnn.py:444
score = self.metric_fn(pred, label)
scores.append(score.item())
return np.mean(losses), np.mean(scores)
def fit(
self,
dataset: DatasetH,
evals_result=dict(),
save_path=None,
):
df_train, df_valid, df_test = dataset.prepare(
["train", "valid", "test"],
col_set=["feature", "label"],
data_key=DataHandlerLP.DK_L,
)
if df_train.empty or df_valid.empty:
raise ValueError("Empty data from dataset, please check your dataset config.")
x_train, y_train = df_train["feature"], df_train["label"]
x_valid, y_valid = df_valid["feature"], df_valid["label"]
save_path = get_or_create_path(save_path)
stop_steps = 0
train_loss = 0
best_score = -np.inf
best_epoch = 0
evals_result["train"] = []
evals_result["valid"] = []
# train
self.logger.info("training...")
self.fitted = True
for step in range(self.n_epochs):
self.logger.info("Epoch%d:", step)
View on GitHub (pinned to 79633dd950)
Solutions
- Assert train/valid frames are non-empty before fit and fix segments/instruments accordingly
- Cross-check segment bounds against D.calendar output
- Re-dump or point to the correct data provider if data is missing
Example fix
# before
model.fit(dataset)
# after
assert all(not dataset.prepare(s, col_set="label").empty for s in ("train", "valid"))
model.fit(dataset) Defensive patterns
Strategy: validation
Validate before calling
for seg in ("train", "valid"):
if dataset.prepare(seg, col_set=["feature", "label"], data_key=DataHandlerLP.DK_L).empty:
raise RuntimeError(f"{seg} empty; fix dataset config") Try / catch
try:
model.fit(dataset)
except ValueError as e:
if "Empty data" in str(e):
raise RuntimeError("Fix DatasetH segments/data before training") from e
raise Prevention
- Smoke-check prepared frames for every segment before fit
- Keep data dumps and segment configs in one validated place
When it happens
Trigger: fit(dataset) where dataset.prepare(['train','valid','test'], col_set=['feature','label'], data_key=DK_L) returns an empty train or valid DataFrame.
Common situations: Segment dates outside the data calendar; missing dumped data under provider_uri; label expressions producing all-NaN columns that leave the frame empty after processing.
Related errors
- Empty data from dataset, please check your dataset config.
- Empty data from dataset, please check your dataset config.
- Empty data from dataset, please check your dataset config.
- Empty data from dataset, please check your dataset config.
- Empty data from dataset, please check your dataset config.
AI-assisted analysis of microsoft/qlib@79633dd950 (2026-08-15).
Data as JSON: /api/errors/5b165ddec561316a.
Report an issue: GitHub.