Frequently Asked Questions About Simplilearn AI Capstone Project Architect
23 answers covering everything from basics to advanced usage.
// Basics
What is the two-part project structure?
Every capstone track consists of exactly two parts: Part 1 is always a modelling or detection task, and Part 2 is always an analysis, recommendation, or forecasting task. You must complete both parts of whichever track you choose. Scope and sequence your work around this split — never conflate the two parts or skip one.
What inputs are required before I start?
Three inputs are mandatory: your project track choice (1, 2, or 3), a dataset description (images with labels, CSVs, folder-organized images, or transaction records), and your target prediction (bounding box, structure category, recommended location, or sales quantity). Two optional inputs help: an evaluation constraint like an RMSE target, and your compute environment, which determines GPU availability.
What is YOLO and how is it used in Track 1?
YOLO (You Only Look Once) is a PyTorch-based real-time object detection model used via a cloned repository. It outputs bounding-box coordinates plus class labels for detected objects. You configure it through data.yaml, train with train.py on a GPU, and run inference with detect.py. Track 1 uses it to detect vehicle types with bounding boxes.
// How To
How do I set up data.yaml for YOLO training?
Verify data.yaml points to your local images/ and labels/ directories, then update its 'names' field to match your exact vehicle class labels and set the correct number of classes. If the paths are misconfigured, train.py will fail silently or train on wrong data. Always confirm the directory paths before launching training.
How do I generate the sales column for forecasting?
First create a row-level sales column equal to unit_price multiplied by item_count. Then group by date and sum that column to produce a daily total sales series. All resampling and modelling flows from this aggregated daily series. Never model raw price or item_count alone — the derived total sales is your target variable.
How do I load folder-organized images for classification?
Use image_dataset_from_directory(), which treats each subfolder name as a class label and automatically creates an 80/20 train/validation split. Ensure your folders are organized with one subfolder per structure class. This utility feeds directly into your VGG16 transfer-learning pipeline and exposes a class_names attribute for later visualization.
How do I compare the three regression models in Track 3?
Train Linear Regression, Random Forest Regressor, and XGBoost Regressor in parallel on the same time features predicting daily sales. Evaluate each with RMSE. Build a summary table comparing all three RMSEs before declaring a champion. Select the lowest-RMSE model, then use it to forecast the next twelve months of sales.
How do I visualize results for each track?
For object detection, display bounding-box images with class labels. For image classification, plot a 3x3 grid of sample images with class-name titles and training-vs-validation accuracy curves for both augmentation runs. For recommendations, show top-N locations for a sample input. For forecasting, plot actual vs predicted sales over the test period and the next-year forecast as a time series.
// Troubleshooting
My YOLO training runs but detects nothing — what went wrong?
Most likely your data.yaml points to the wrong directory or the labels/ folder doesn't contain valid YOLO-format .txt files (class plus box coordinates per line). Verify paths, confirm label files exist and match images, and check the 'names' field matches your classes. Also ensure you enabled a GPU runtime — CPU training may not converge in reasonable time.
Why is my custom classification head throwing a shape mismatch?
Your final Dense layer's neuron count probably doesn't equal your number of output classes, or you forgot include_top=False when loading the pretrained model. Set include_top=False to strip the original head, then make your final Dense (Softmax) layer's units exactly match the class count. These two fixes resolve the most common shape errors.
My aggregations return NaN or errors on the accident CSV — how do I fix it?
Numeric count columns (deaths, occupants, cyclists) likely contain nulls. Fill those with zero — the absence of a recorded value means no recorded event of that type, so zero is semantically correct and prevents aggregation errors. Also drop irrelevant ID columns like case number before analysis to keep your groupby operations clean.
My forecast accuracy looks great in testing but terrible in production — why?
You probably shuffled or randomly split the time-series data, leaking future information into training. Always sort by date ascending and use the last 6 months as the test set chronologically. Random splits let the model see future patterns, inflating test metrics unrealistically. Preserving temporal order gives you an honest estimate of forecast performance.
My three-way merge dropped most of my rows — what happened?
You likely attempted a single three-way merge or used keys that don't exist in both DataFrames. Merge two DataFrames first on a shared key like store_id, capture the result, then merge that with the third on item_id. Verify each merge key exists in both DataFrames being joined, and inspect row counts after each step.
// Comparisons
How does transfer learning compare to building a CNN from scratch?
Transfer learning almost always outperforms scratch builds for standard image classification. Pretrained models like VGG16 and ResNet have already learned rich feature representations from millions of images. You reuse those by setting include_top=False, then train only your custom head on your data. Scratch CNNs need far more data and compute to reach comparable accuracy, so transfer learning is the recommended path for all vision tasks here.
How does item-based collaborative filtering differ from user-based?
Item-based filtering starts from an item — like a tourist location — and finds similar items by shared rating patterns across users. User-based filtering starts from a user profile and finds similar users. In the tourism track, the recommendation trigger is a place, not a person, so item-based is correct. Using user-based when the input is an item is a common, avoidable mistake.
How does this capstone methodology compare to Kaggle-style competitions?
Kaggle optimizes a single metric on a fixed dataset, often rewarding leaderboard-chasing tricks. This methodology teaches end-to-end project structure: two-part scoping, data auditing, proven architectures, and appropriate evaluation. It emphasizes reproducible engineering decisions over marginal metric gains, making it better for building real deployable solutions and demonstrating practical AI competence rather than pure predictive ranking.
Why choose XGBoost over just Linear Regression for forecasting?
You don't choose upfront — you train all three (Linear Regression, Random Forest, XGBoost) and let RMSE decide. XGBoost often captures nonlinear interactions in time features better than Linear Regression, but Random Forest or even Linear can win on some datasets. The three-model comparison removes guesswork: the lowest-RMSE model becomes your champion, whichever it is.
// Advanced
Can I combine techniques from multiple tracks in one project?
No — the methodology mandates completing exactly one track fully, both parts, without mixing. Each track is scoped as a coherent unit with matched data types, models, and evaluation. Conflating tracks breaks the two-part structure and the reference notebooks. If your real-world problem spans domains, pick the track whose Part 1 output matches your primary target and adapt within it.
How do I detect and handle outliers in the ratings or sales data?
For Track 2 ratings, check outlier ratings using z-score and drop rows significantly far from the mean. For Track 3 sales, use z-score or Isolation Forest to find anomalous transactions and convert the date column to datetime with pd.to_datetime() immediately. Handling outliers before modelling prevents skewed recommendations and forecasts driven by data-entry errors.
What time features should I extract for regression forecasting?
Use the .dt accessor on your datetime column to extract day_of_week, month, quarter, year, and day_of_month. These features let tree-based models like Random Forest and XGBoost capture seasonality and weekly patterns. Extract them after sorting by date and before the chronological train/test split, feeding them as predictors of the daily sales target.
Do I really need a GPU for the vision tracks?
Yes — training CNNs or YOLO on CPU in Colab is prohibitively slow. Always connect to a GPU runtime for image-based projects in Tracks 1 and 2. Track 3, being tabular regression, runs fine on CPU. Check your compute environment as an input early: local machine, Google Colab, or Azure each affect GPU availability and library setup.
How should I resample sales data for multi-scale trend analysis?
After building your daily_sales series with a datetime index, use pandas .resample('W'), .resample('M'), and .resample('Q') to produce weekly, monthly, and quarterly aggregations. Plot each to reveal trends at different scales. Also group by restaurant_id to rank stores by sales and by item_id plus store_id to find the most popular item per store.
What's the correct evaluation metric for each track?
Use accuracy for classification tasks (Track 2 Part 1) and RMSE for regression (Track 3). For Track 3, present a summary table comparing all three models' RMSE before naming a champion. For Track 2's augmentation experiment, explicitly compare with-and-without validation accuracy and state which generalized better. Object detection results are validated visually via bounding-box overlays.