microsoft/qlib · error · ValueError
model is not fitted yet!
Error message
model is not fitted yet!
What it means
KRNNModel.predict refuses to run unless self.fitted is True, which only happens after fit() completes. Predicting before a successful fit raises this ValueError.
Source
Thrown at qlib/contrib/model/pytorch_krnn.py:492
stop_steps = 0
best_epoch = step
best_param = copy.deepcopy(self.krnn_model.state_dict())
else:
stop_steps += 1
if stop_steps >= self.early_stop:
self.logger.info("early stop")
break
self.logger.info("best score: %.6lf @ %d" % (best_score, best_epoch))
self.krnn_model.load_state_dict(best_param)
torch.save(best_param, save_path)
if self.use_gpu:
torch.cuda.empty_cache()
def predict(self, dataset: DatasetH, segment: Union[Text, slice] = "test"):
if not self.fitted:
raise ValueError("model is not fitted yet!")
x_test = dataset.prepare(segment, col_set="feature", data_key=DataHandlerLP.DK_I)
index = x_test.index
self.krnn_model.eval()
x_values = x_test.values
sample_num = x_values.shape[0]
preds = []
for begin in range(sample_num)[:: self.batch_size]:
if sample_num - begin < self.batch_size:
end = sample_num
else:
end = begin + self.batch_size
x_batch = torch.from_numpy(x_values[begin:end]).float().to(self.device)
with torch.no_grad():
pred = self.krnn_model(x_batch).detach().cpu().numpy()
preds.append(pred)
View on GitHub (pinned to 79633dd950)
Solutions
- Complete fit() before predict()
- For inference-only flows, load the checkpoint and set model.fitted = True
- Fix exception handling so a failed fit stops the pipeline
Example fix
# before preds = model.predict(dataset) # unfitted # after model.fit(dataset) preds = model.predict(dataset)
Defensive patterns
Strategy: validation
Validate before calling
if not getattr(model, "fitted", False):
raise RuntimeError("KRNNModel not fitted; run fit() first") Type guard
def is_fitted(model) -> bool:
return bool(getattr(model, "fitted", False)) Try / catch
try:
model.predict(dataset)
except ValueError as e:
if "not fitted" in str(e):
model.fit(dataset)
model.predict(dataset)
else:
raise Prevention
- Check fitted status in predict wrappers
- Ensure failed fits abort rather than fall through to inference
When it happens
Trigger: model.predict(dataset) on a KRNNModel instance whose fit() never ran or raised before setting fitted=True.
Common situations: Fresh model object in an inference script; fit failure ignored by broad try/except; model serialized before fitting.
Related errors
- model is not fitted yet!
- model is not fitted yet!
- model is not fitted yet!
- model is not fitted yet!
- model is not fitted yet!
AI-assisted analysis of microsoft/qlib@79633dd950 (2026-08-15).
Data as JSON: /api/errors/8fa898cfaad643d4.
Report an issue: GitHub.