In this guide
How to pick an ML project that you can actually finish
Most ML final-year projects fail for one reason: the dataset. Not the model, not the maths — the dataset. Choose dataset-first and the rest of the project gets dramatically easier. Here is the checklist that separates projects that ship from projects that stall.
1. Size: 1,000 to 50,000 rows. Below ~1,000 rows, your model memorises noise and your evaluation numbers mean nothing. Above ~50,000 rows, training times and memory start hurting on a student laptop, and every experiment cycle slows down. A dataset in the 5k–30k range is the sweet spot for a one-semester project.
2. A clear target column. Before committing, open the CSV and confirm there is an unambiguous column to predict — a price, a label, a class, a rating. If you need a paragraph of reasoning to explain what the model is supposed to output, pick a different dataset.
3. License check. Kaggle and UCI datasets usually allow academic use, but check the specific license. Some competition datasets restrict commercial use (fine for a college project), and some scraped datasets have unclear provenance. Note the source in your report — examiners ask about this.
4. A baseline in week 1. Fit a logistic regression or random forest on day one, before touching anything fancy. This gives you a working end-to-end pipeline — data loading, preprocessing, training, evaluation — and a number to beat. Every "advanced" model you try afterwards is measured against this baseline.
5. Timeline math. Budget roughly: 2 weeks for data exploration and cleaning, 2 weeks for baselines and feature work, 3 weeks for model iteration, 2 weeks for the app/demo (Streamlit works well), and 3 weeks for the report and PPT. That is a 12-week semester with buffer. If data collection alone would eat 4 weeks, the project is too big.
A working baseline on a clean public dataset beats a half-finished "novel" model on a messy self-scraped dataset, every single time.
If you are still deciding between broad directions, read How to Choose a Final Year Project Topic first — it covers how to scope a topic to your team's actual strengths.
30+ project ideas with datasets
Every idea below names a real public dataset. Download it, open it, and check the target column before you finalise your topic.
Tabular / Prediction
These are the most forgiving projects: fast training, clear metrics, and easy to explain. Ideal if your team is new to ML.
- House Price Prediction — Predict sale prices from features like area, bedrooms, and location. Use the California Housing dataset (scikit-learn) or the Ames Housing dataset (Kaggle, ~2,900 rows). Try linear regression as a baseline, then gradient boosting.
- Credit Card Fraud Detection — Classify transactions as fraudulent or legitimate on the European credit-card dataset (Kaggle, ~284,000 rows, 0.17% fraud). The extreme class imbalance makes this a genuinely interesting problem: evaluate with precision-recall, not accuracy.
- Customer Churn Prediction — Predict which telecom subscribers will cancel. Use the Telco Customer Churn dataset (Kaggle, ~7,000 rows). Feature engineering on tenure and billing columns is where the marks are.
- Disease Prediction System — Predict disease risk from clinical measurements. The Pima Indians Diabetes dataset (UCI, 768 rows) and UCI Heart Disease dataset (303 rows) are the standard starting points. Keep the medical scope honest: this is a classification exercise, not a diagnostic tool.
- Loan Approval Prediction — Classify loan applications as approved or rejected using the Loan Prediction dataset (Kaggle, ~600 rows). Small enough to try many models quickly; good for comparing algorithms in your report.
- Wine Quality Prediction — Predict wine quality scores from physicochemical tests on the UCI Wine Quality dataset (~4,900 red / ~6,400 white rows). A clean regression-or-classification choice that trains in seconds.
- Titanic Survival Prediction — The classic beginner project on the Titanic dataset (Kaggle, 891 training rows). Do it only if you add something of your own — thorough EDA, a Streamlit app, or a model comparison — because examiners have seen it a hundred times.
- Employee Attrition Prediction — Predict which employees will leave using the IBM HR Analytics dataset (Kaggle, ~1,470 rows). Straightforward, business-readable, and easy to present.
- Crop Recommendation System — Recommend crops from soil NPK values, temperature, humidity, and rainfall using the Crop Recommendation dataset (Kaggle, ~2,200 rows). Pairs well with a simple Streamlit input form.
Natural Language Processing
NLP projects read well in reports and demos because everyone understands text in, text out. You will need the Hugging Face transformers library or at least scikit-learn's TF-IDF for most of these.
- Fake News Detection — Classify news articles as real or fake using the ISOT Fake News dataset (Kaggle, ~44,000 articles) or the LIAR dataset (UCI, ~12,800 statements). Start with TF-IDF + logistic regression, then try a fine-tuned BERT if time allows.
- Sentiment Analysis — Classify product reviews as positive or negative on the IMDB Movie Reviews dataset (Kaggle, 50,000 reviews) or Amazon product reviews (Kaggle). A strong baseline plus a Streamlit demo where visitors type their own review makes a convincing project.
- SMS Spam Detection — Classify messages as spam or ham using the SMS Spam Collection (UCI, ~5,574 messages). Trains in under a minute; the interesting part is the preprocessing pipeline (tokenisation, stopwords, n-grams).
- Toxic Comment Classification — Detect toxic online comments with the Jigsaw Toxic Comment dataset (Kaggle, ~160,000 comments). Multi-label classification (toxic, obscene, insult, threat) — richer than binary spam detection.
- News Category Classification — Sort articles into topics (sports, politics, tech) using the 20 Newsgroups dataset (scikit-learn, ~18,000 posts) or the AG News dataset (Hugging Face, 120,000 articles).
- Plagiarism / Text Similarity Detection — Detect paraphrased or copied text pairs with the Quora Question Pairs dataset (Kaggle, ~400,000 pairs). Frame it as "are these two questions duplicates?" — a clean binary problem.
- Emotion Detection in Text — Classify tweets or reviews into joy, anger, sadness, fear using the Emotion dataset (Hugging Face) or GoEmotions (Google, ~58,000 Reddit comments). Good follow-up if sentiment analysis feels too basic.
- Resume Screening System — Rank resumes against a job description using the Resume dataset (Kaggle) with TF-IDF cosine similarity or sentence embeddings. Keep the scope to ranking, not hiring decisions.
Computer Vision
Vision projects need more compute, so prefer small standard datasets (CIFAR-10, MNIST variants) or use transfer learning with a pretrained MobileNet/ResNet rather than training from scratch.
- Brain Tumor Detection — Classify brain MRI scans using the BraTS challenge dataset or the Brain MRI Images dataset (Kaggle, ~7,000 images). Use transfer learning; training a CNN from scratch on medical images with a small dataset will overfit. State clearly in your report that this is an educational prototype.
- Plant Leaf Disease Detection — Classify crop diseases from leaf photos with the PlantVillage dataset (Kaggle, ~54,000 images, 38 classes). One of the most complete public vision datasets for a student project — large, labelled, and well-documented.
- Pneumonia Detection from Chest X-Rays — Classify chest X-rays as normal or pneumonia on the NIH ChestX-ray14 dataset or the Chest X-Ray Images (Pneumonia) dataset (Kaggle, ~5,800 images). Same honesty rule as brain tumor detection: prototype scope only.
- Face Mask / PPE Detection — Detect whether people in images wear masks using the Face Mask Detection dataset (Kaggle, ~7,500 images). A practical, easy-to-demo project with a webcam input.
- Sign Language Recognition — Classify hand-sign images or video frames with the Sign Language MNIST dataset (Kaggle, 27,000 images) or MediaPipe hand landmarks. Real-time webcam demo potential.
- Facial Emotion Recognition — Classify faces into 7 emotions on the FER-2013 dataset (Kaggle, ~35,000 48×48 images). Note the low resolution in your report — it limits achievable quality and examiners know it.
- Fashion Product Classification — Classify clothing images with Fashion-MNIST (70,000 28×28 images, built into Keras/TensorFlow). The standard "step up from MNIST" — good for comparing CNN architectures.
- Real-Time Object Detection — Detect everyday objects in webcam feed using a pretrained YOLO model on the COCO dataset (330,000 images). The project is the application around the model: counting, alerting, or logging detections.
Time Series & Forecasting
Forecasting projects suit students comfortable with Pandas date handling. Prophet and statsmodels keep the modelling accessible without deep learning.
- Stock Price Prediction — Forecast prices from historical OHLCV data pulled with the yfinance library (NSE/BSE tickers). Use an LSTM or even a simple moving-average baseline. Be honest in your report: markets are noisy, and the project demonstrates time-series modelling, not a trading strategy.
- Sales Forecasting — Predict store sales with the Rossmann Store Sales dataset (Kaggle, ~1M rows) or the Big Mart Sales dataset (Kaggle, ~8,500 rows). Big Mart is the safer semester-sized choice.
- Energy Consumption Forecasting — Forecast household power usage on the UCI Individual Household Electric Power Consumption dataset (~2M rows, 4 years). Rich datetime features: hour, weekday, season.
- Air Quality Forecasting — Predict PM2.5 levels using the UCI Beijing Air Quality dataset (~420,000 hourly rows). Combines time series with multivariate inputs (weather, wind).
- Cryptocurrency Price Forecasting — Forecast BTC/ETH prices from exchange OHLCV data via public APIs (Binance, CoinGecko). Same honesty note as stocks: demonstrate the modelling, don't promise returns.
- Traffic Volume Prediction — Predict highway traffic from the METR-LA dataset (~34,000 time steps, 207 sensors) or the Metro Interstate Traffic Volume dataset (UCI, ~48,000 hourly rows). The UCI one is simpler to start with.
- Movie Recommendation System — Build collaborative-filtering recommendations on MovieLens (100K, 1M, or 25M ratings — pick 100K or 1M for a semester). Evaluate with train/test split on ratings, and demo it with a Streamlit "rate 5 movies, get recommendations" app.
Where to find datasets
- UCI Machine Learning Repository — The oldest curated collection (now at uci.ml). Every dataset lists row counts, attribute types, and the associated paper. Use the "Dataset Characteristics" filter to find multivariate, tabular datasets fast.
- Kaggle Datasets — The largest collection with a crucial advantage: each dataset page shows usability scores, kernel notebooks, and exactly how others cleaned the data. Sort by "Most Votes" within a topic and read the top 2–3 notebooks before downloading.
- Google Dataset Search — A search engine across dataset repositories (datasetsearch.research.google.com). Best when you need something niche — "pune traffic sensor data", for example — that neither UCI nor Kaggle hosts.
One habit that saves weeks: before finalising, download the dataset and run df.info(), df.isnull().sum(), and df[target].value_counts() in the first hour. If the target column is 95% one class, or half the columns are empty, you want to know now — not in week 6.
Common mistakes to avoid
- Dataset too small. Under ~1,000 rows, your train/test split is noise. Either pick a bigger dataset or switch to cross-validation and say so in the report.
- No baseline model. Jumping straight to XGBoost or a transformer means you never know whether the complexity helped. Always fit the simple model first.
- Ignoring class imbalance. A 99%-accuracy fraud detector that predicts "not fraud" every time is useless. Check class balance in hour one; use precision, recall, and F1 — or AUC-PR for heavy imbalance.
- "Accuracy" as the only metric. Accuracy lies on imbalanced data. Report precision, recall, F1, and a confusion matrix. For regression: MAE, RMSE, and R² together.
- Data leakage. Scaling or imputing on the full dataset before splitting leaks test information into training. Fit all preprocessing on the training split only (scikit-learn
Pipelineenforces this). - No held-out test set. Tune on validation, report on test, touch test once. If you tune on the test set, your final numbers are optimistic and any experienced examiner will spot it.
Next steps
Pick one idea from the group that matches your team's comfort zone — tabular if you're starting out, NLP or vision if someone on the team has done a course project before. Download the dataset today and run the one-hour sanity check above. If it passes, build the baseline this week; if it fails, pick the next idea on the list rather than fighting the data. Once your topic is locked, the guide on choosing a final year project topic covers scoping, team roles, and documentation — the parts that turn a working model into a submitted project.