From Learning ML to Doing ML: A Practical Kaggle Workflow Guide

Bridge the gap from ML theory to Kaggle practice with a systematic, iterative workflow.
Many ML learners feel lost when facing real competitions despite mastering theory — the root cause is a lack of systematic experimental methodology. This article provides a reusable workflow: start with EDA, quickly build a rough baseline, diagnose overfitting vs. underfitting to guide next steps, change one variable at a time and evaluate with cross-validation, invest heavily in feature engineering when underfitting, and save hyperparameter tuning for last. This iterative rhythm is the core difference between beginners and experienced practitioners.
Many machine learning learners go through a similar frustrating experience: after spending months grinding through theory — linear regression, logistic regression, KNN, SVM, decision trees, random forests, naive Bayes, XGBoost, various preprocessing techniques and evaluation metrics — they open a Kaggle competition page and have absolutely no idea where to start.
This is exactly the struggle a Reddit user raised in the machine learning community: "I've learned ML, but when I actually try to do Kaggle, I'm completely lost on how to actually build a model." The post resonated widely, because it exposes a gap that's often overlooked — "understanding ML" and "doing ML" are two very different things.

The Gap Between Theory and Practice
Machine learning in courses or tutorials is typically "clean": datasets are already tidy, problems are well-defined, and you just pick an algorithm, call .fit(), and check the accuracy. But real Kaggle competitions — and industry projects — throw a raw, messy, unknown dataset at you.
The original poster rattled off more than a dozen questions, all pointing to the same underlying issue: a lack of a systematic experimental methodology. They didn't know what to check first, when to do EDA, which preprocessing steps were necessary, how to tell overfitting from underfitting, or how to decide what experiment to run next.
This feeling of being lost is completely normal. Studying theory gives you a "toolbox," but it doesn't teach you the "construction process." What truly separates beginners from experienced practitioners isn't how many algorithms they know — it's who has a clearer, more disciplined workflow.
A Reusable Practical Workflow
The original poster had an intuitive sense of the process: "raw data → baseline → experiments → debugging → feature engineering → model selection → validation → final submission." We can break this down into a concrete, actionable set of steps.
Step 1: Understand the Data Before Rushing to Model
The biggest mistake when opening a new dataset is immediately training a model. The right approach is to "get to know" the data first:
- Check the structure: How many rows and columns? Are features numerical or categorical? What type is the target variable (classification or regression)?
- Check the quality: How many missing values are there? Are there outliers? Is there severe class imbalance?
- Check the distributions: What does the target variable's distribution look like? Are there obvious relationships between features and the target?
This step is EDA (Exploratory Data Analysis), and it should run throughout the entire process, not just happen once. Every downstream decision — whether to normalize, how to handle missing values, which evaluation metric to use — should come from what you discover in EDA, not from guesswork.
Step 2: Build a Working Baseline as Fast as Possible
A common beginner mistake is chasing a perfect first model. Do the opposite: build a rough but complete baseline as quickly as possible — minimal preprocessing, a simple model (like logistic regression or a random forest with default parameters), and a full pipeline from data to submission.
The value of a baseline isn't a high score. It's:
- Verifying that your data pipeline has no bugs;
- Giving every future improvement a point of reference — without a baseline, you have no way to judge whether a change actually helped.
Step 3: Drive Improvements with Experiments, Not Random Attempts
One of the most insightful questions the original poster asked was: "How do experienced people decide what experiment to run next? How do you improve a model systematically instead of just guessing?"
The answer: treat every change as a controlled experiment. The core logic for improving a model is diagnose first, then treat:
- Determine whether you're underfitting or overfitting: Compare training and validation performance. Both performing poorly means underfitting (model too simple or too few features); training good but validation poor means overfitting (model too complex or too little data).
- Treat accordingly: For underfitting, add features, switch to a more powerful model, or do feature engineering. For overfitting, add regularization, reduce features, get more data, or use cross-validation.
The key is to change only one variable at a time and log the results of each experiment. This is how you build the real-world intuition for what works and what doesn't.
"When Should I Do This?" — A Timing Guide
Many of the questions in the original post are really about timing. Here are some experience-based guidelines.
When to Scale Features
It depends on your model. Distance- or gradient-based algorithms (KNN, SVM, logistic regression, neural networks) are sensitive to feature scale and need normalization. Tree-based models (decision trees, random forests, XGBoost) are invariant to monotonic transformations and generally don't need it.
When to Do Feature Engineering
It's most valuable once you have a baseline and have confirmed the model is underfitting. Feature engineering is often the biggest lever for separating scores in Kaggle competitions — extracting day-of-week from timestamps, creating ratio features, applying target encoding to categorical variables, and so on.
When to Use Cross-Validation
Almost from the very beginning. A single train/validation split is easily influenced by randomness. Cross-validation gives you a more robust estimate of performance and serves as the "referee" for deciding whether a change genuinely helped.
When to Tune Hyperparameters
Save it for the final stage. Hyperparameter tuning typically yields only marginal gains, while good feature engineering and the right model choice are the primary sources of improvement. The return on investment is highest when you tune after your features and model architecture are largely settled.
Core Advice for Beginners
Coming back to the original poster's struggle, the most important mindset shift is: don't try to get it right in one shot — establish an iterative rhythm instead.
The full practical loop can be summarized as:
Understand the data (EDA) → Build the simplest baseline → Diagnose the problem (overfitting/underfitting) → Run targeted experiments (one variable at a time) → Evaluate with cross-validation → Iterate → Tune hyperparameters last → Submit
That feeling of being lost is exactly the necessary passage from "student" to "practitioner." Nobody knows which experiment to run first at the start — that intuition is built up through dozens of cycles of "change one variable, observe the result, reflect."
For those just getting started, an effective learning path is: fully reproduce a few high-quality public Kaggle Notebooks first. Watch how experienced practitioners organize their workflow and make decisions, then try to complete a competition independently. Once the methodology becomes muscle memory, that feeling of "I have no idea what to do next" will gradually fade away.
Related articles

Vercel AI SDK Releases Vue 3.0.282 Patch Update
Vercel AI SDK releases @ai-sdk/vue@3.0.282 patch update, syncing with core package ai@6.0.282. Learn about the changes, release cadence, and upgrade recommendations.

Vercel AI SDK Sandbox Component Receives Patch Update
Vercel AI SDK releases sandbox-vercel@1.0.109 patch update, syncing the harness dependency to the same version. A look at this maintenance release and what it means for AI app developers.

Vercel AI SDK Vue 4.0.99 Released: Dependency Update Overview
The @ai-sdk/vue 4.0.99 patch release syncs the underlying ai@7.0.99 dependency. Learn what this means for Vue developers building AI apps with Vercel AI SDK.