Getting your predictions onto the leaderboard, step by step
You have built a model, generated predictions, and saved them to a CSV file. Now you need to get that file onto Kaggle and see how it scores. The process is not complicated, but it has a few specific steps that are not immediately obvious the first time. This post walks through the whole thing from start to finish.
The competition used here is the Store Item Demand Forecasting Challenge — a kernels-only competition, which means Kaggle requires submissions to come from code run inside their own environment rather than a file uploaded directly from your computer. That adds one extra step compared to a standard competition, but the logic is the same.
Step 1 — Late Submission
Most Kaggle competitions end their active phase after a deadline, but many remain open for practice submissions indefinitely. To submit after the deadline, look for the Late Submission button on the competition page. Clicking it opens the same submission interface as during the active competition.
For a kernels-only competition, the interface has three tabs: Notebook, MCP, and File Upload. The Notebook tab is what you want — it lets you point to a Kaggle notebook and submit the output it produces.

The Late Submission flow on Kaggle. Clicking it leads to the submission dialog where you select a notebook and version.
Step 2 — Create a Notebook and Upload Your Submission File
Go to Code → New Notebook on the competition page. This opens a fresh Kaggle notebook already connected to the competition’s data. The submission file you generated locally needs to get into this environment.
Kaggle notebooks have two sections on the right sidebar: Input and Output. Input is where data comes in — competitions attach their datasets here automatically. Output is where files produced by running the notebook are stored and made available for submission.
To bring in your local submission file, click Upload in the Input panel and upload it as a dataset. Once uploaded, it will appear under Datasets in the Input section. The file is now accessible inside the notebook at a path like /kaggle/input/your-dataset-name/submission_demand.csv.


The Kaggle notebook environment. The competition data appears under Competitions in the Input panel. The uploaded submission file appears under Datasets.
Step 3 — Copy the File to the Output Directory
Here is the part that is easy to miss. Uploading the file makes it available as an input to the notebook, but Kaggle submissions must come from the Output directory — specifically /kaggle/working/. A file sitting in the Input section cannot be submitted directly.
The fix is two lines of code inside the notebook. Read the file from its input path, then write it to the working directory under the exact filename the competition expects:
df = pd.read_csv(‘/kaggle/input/your-dataset/submission_demand.csv’)
df.to_csv(‘submission_file.csv’, index=False)
The second line writes to the current directory, which inside a Kaggle notebook is /kaggle/working/. After running these two cells, the Output panel on the right will show the file. That is what Kaggle will use for scoring.

After running df.to_csv(), the file appears in the Output panel under /kaggle/working/. It is now ready to be submitted.
Step 4 — Save Version and Submit
Click Save Version in the top right of the notebook editor. This runs the notebook on Kaggle’s servers and saves a numbered version with all of its outputs. The submission must come from a saved version, not a draft session — drafts are not visible to the submission system.
Once the version is saved, go back to the competition page and click Late Submission again. Select your notebook from the dropdown and choose the version you just saved. If the notebook output contains a file with the correct name — in this competition, submission.csv — the Submit button will become active.
One common error at this step: the competition expects a file named exactly submission.csv, but the notebook produces a file with a different name. If that happens, you will see a warning message like the one below. The fix is to rename the output file in the to_csv call to match what the competition expects.

The submission dialog after clicking Late Submission. The warning appears when the notebook output file name does not match what the competition requires. Renaming the file and saving a new version resolves it.
Step 5 — Read the Score
After submitting, Kaggle evaluates the predictions against the hidden test labels and returns two scores: a Public Score and a Private Score.
The Public Score is computed on a subset of the test data — typically around 30%. This is what you see on the public leaderboard during the competition. The Private Score uses the remaining test data and is only revealed when the competition closes. For a late submission like this one, both scores are shown immediately.
The submission here achieved a Public Score of 14.42 and a Private Score of 13.22 on SMAPE. The private score being lower than the public score is a good sign — it means the model generalised slightly better to the unseen portion than to the visible portion, which is the opposite of overfitting.

The submission result: Private Score 13.22, Public Score 14.42 on SMAPE. Lower is better. Both scores are visible immediately for late submissions.
A SMAPE of around 13–14% on a demand forecasting problem with 500 distinct store-item combinations is a reasonable baseline. The model captured the broad seasonal structure and demand levels, though there is room to improve with more iterations, additional features, or a different model family altogether.
Quick Reference — The Steps
1. Go to the competition page → Late Submission.
2. Create a new Kaggle notebook from the competition’s Code tab.
3. Upload your local submission CSV as a Kaggle dataset.
4. In the notebook, read the file from /kaggle/input/ and write it to /kaggle/working/ with the exact filename the competition expects.
5. Click Save Version to run the notebook and commit its outputs.
6. Return to Late Submission, select the notebook and version, and submit.
7. Read the Public and Private SMAPE scores on the Submissions tab.

Leave a Reply