{"record":{"id":"5b165ddec561316a","repo":"microsoft/qlib","slug":"empty-data-from-dataset-please-check-your-dataset-5b165d","errorCode":null,"errorMessage":"Empty data from dataset, please check your dataset config.","messagePattern":"Empty data from dataset, please check your dataset config\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"qlib/contrib/model/pytorch_krnn.py","lineNumber":444,"sourceCode":"\r\n            score = self.metric_fn(pred, label)\r\n            scores.append(score.item())\r\n\r\n        return np.mean(losses), np.mean(scores)\r\n\r\n    def fit(\r\n        self,\r\n        dataset: DatasetH,\r\n        evals_result=dict(),\r\n        save_path=None,\r\n    ):\r\n        df_train, df_valid, df_test = dataset.prepare(\r\n            [\"train\", \"valid\", \"test\"],\r\n            col_set=[\"feature\", \"label\"],\r\n            data_key=DataHandlerLP.DK_L,\r\n        )\r\n        if df_train.empty or df_valid.empty:\r\n            raise ValueError(\"Empty data from dataset, please check your dataset config.\")\r\n\r\n        x_train, y_train = df_train[\"feature\"], df_train[\"label\"]\r\n        x_valid, y_valid = df_valid[\"feature\"], df_valid[\"label\"]\r\n\r\n        save_path = get_or_create_path(save_path)\r\n        stop_steps = 0\r\n        train_loss = 0\r\n        best_score = -np.inf\r\n        best_epoch = 0\r\n        evals_result[\"train\"] = []\r\n        evals_result[\"valid\"] = []\r\n\r\n        # train\r\n        self.logger.info(\"training...\")\r\n        self.fitted = True\r\n\r\n        for step in range(self.n_epochs):\r\n            self.logger.info(\"Epoch%d:\", step)\r","sourceCodeStart":426,"sourceCodeEnd":462,"githubUrl":"https://github.com/microsoft/qlib/blob/79633dd9506ea689e5400dea0197717b5b3d74b7/qlib/contrib/model/pytorch_krnn.py#L426-L462","documentation":"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.","triggerScenarios":"fit(dataset) where dataset.prepare(['train','valid','test'], col_set=['feature','label'], data_key=DK_L) returns an empty train or valid DataFrame.","commonSituations":"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.","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"],"exampleFix":"# before\nmodel.fit(dataset)\n\n# after\nassert all(not dataset.prepare(s, col_set=\"label\").empty for s in (\"train\", \"valid\"))\nmodel.fit(dataset)","handlingStrategy":"validation","validationCode":"for seg in (\"train\", \"valid\"):\n    if dataset.prepare(seg, col_set=[\"feature\", \"label\"], data_key=DataHandlerLP.DK_L).empty:\n        raise RuntimeError(f\"{seg} empty; fix dataset config\")","typeGuard":null,"tryCatchPattern":"try:\n    model.fit(dataset)\nexcept ValueError as e:\n    if \"Empty data\" in str(e):\n        raise RuntimeError(\"Fix DatasetH segments/data before training\") from e\n    raise","preventionTips":["Smoke-check prepared frames for every segment before fit","Keep data dumps and segment configs in one validated place"],"tags":["qlib","krnn","dataset-config","training-data"],"backgroundTag":null,"analyzedSha":"79633dd9506ea689e5400dea0197717b5b3d74b7","analyzedAt":"2026-08-15T07:01:27.511Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}