These are data-science projects I built early in my career (around 2016). If you're starting out — learning the fundamentals or putting together your own portfolio — I hope you find them a useful reference. As of 2026 I've refreshed the whole repository so every notebook still runs top-to-bottom on a current Python 3.14 stack. For my current work in AI engineering (LLM agents, RAG, and applied ML), see sajalsharma.com.
A collection of data-science projects — completed for academic, self-learning, and hobby purposes — presented as Jupyter notebooks, plus a few R analyses published on RPubs.
Data used in these projects (under data/) is for demonstration purposes only.
The project uses uv for environment management (Python 3.14):
uv sync
uv run jupyter labOr with pip:
pip install -r requirements.txtMost notebooks read the small datasets under data/. Two fetch their data on first run and cache it: the digit-recognition notebook downloads MNIST via torchvision, and the stock-market notebook pulls tech-stock prices via yfinance (with a vendored snapshot as a fallback).
-
- Predicting Boston Housing Prices: Building and tuning a decision-tree regressor to predict home values, and evaluating how reliable those predictions are. (Includes a note on the Boston dataset's history and why it was retired from scikit-learn.)
- Supervised Learning: Finding Donors for CharityML: Comparing several supervised learning algorithms to predict whether an individual earns more than $50,000 a year, to help a fictional charity identify likely donors.
- Unsupervised Learning: Creating Customer Segments: Using PCA and Gaussian-mixture clustering to uncover structure in the annual spending of wholesale customers.
- Reinforcement Learning: Training a Smartcab to Drive: Creating an optimized Q-Learning driving agent that navigates a Smartcab through its environment towards a goal.
- Deep Learning: Digit Sequence Recognition with a CNN: A PyTorch convolutional network that reads sequences of 1-5 digits from a single image, using five classification heads on a shared convolutional trunk and synthetic data built from MNIST.
Tools: PyTorch, scikit-learn, Pandas, Seaborn, Matplotlib, Pygame
-
- Disaster Message Classifier: A multilabel classification model to predict the categories of a disaster message. Includes an ETL pipeline, an ML pipeline, and a web app to classify messages. Tools: NLTK, Scikit-learn, XGBoost, Flask, Plotly
- 3-way Sentiment Analysis for Tweets: 3-way polarity (positive, negative, neutral) classification of tweets from hand-built features and a logistic-regression classifier — with a modern zero-shot transformer baseline (twitter-roberta) alongside for comparison.
- Cross Language Information Retrieval: A CLIR system which, given a query in German, searches text documents written in English — with IBM Model 1 alignment and a BM25 / language-model scorer built from scratch.
- Yelp Review Classification: Classifying 1-star vs 5-star Yelp reviews from their text with a bag-of-words Naive Bayes model.
- SMS Spam Classification: Classifying SMS messages as spam or ham with a TF-IDF + Naive Bayes pipeline.
Tools: NLTK, scikit-learn, transformers
-
- Python
- Scalable Walkability Analysis of Melbourne: Analysis of walkability of suburbs in Melbourne, Victoria and its implications.
- Titanic Dataset - Exploratory Analysis: Exploratory analysis of the passengers onboard RMS Titanic using Pandas and Seaborn visualisations.
- Stock Market Analysis for Tech Stocks: Analysis of technology stocks including price over time, daily returns, correlation, and a Monte Carlo value-at-risk simulation.
- 2016 US General Election Poll Data Analysis: A simple analysis of 2016 US General Election poll data (recovered from the Internet Archive).
- 911 Calls - Exploratory Analysis: Exploratory data analysis of the 911-calls dataset from Kaggle, demonstrating feature extraction from raw variables.
Tools: Pandas, Seaborn, Matplotlib, yfinance
- R (published on RPubs)
- Behavioral Risk Factor Surveillance System (BRFSS) 2013: Exploratory Data Analysis: Exploratory analysis of the BRFSS-2013 data set, investigating the relationships between education and eating habits, sleep and mental health, and smoking, drinking and general health.
- Inferential Statistics: Do men or women oppose sex education?: Using the GSS (General Social Survey) dataset to infer whether, in 2012, men in the United States were more likely than women to oppose sex education in public schools.
- Data Visualization: Corruption and Human Development: A scatter plot of the relationship between the Human Development Index and the Corruption Perceptions Index of countries.
- Moneyball: Analysing and replacing lost players: Exploration of 2001 baseball data to find replacements for key players lost by the Oakland A's. Inspired by the book/movie Moneyball.
- Python
-
-
Python — short, focused scikit-learn exercises:
- Linear Regression: Predicting an e-commerce customer's yearly spend, and interpreting the coefficients.
- Logistic Regression: Predicting whether an internet user clicked an ad.
- K-Nearest Neighbours: Classifying instances into two target classes, choosing K by cross-validation.
- Support Vector Machines: Classifying the iris dataset with a grid-searched SVM.
- Decision Trees and Random Forests: Predicting whether a borrower repays their loan, using publicly available LendingClub data.
- Movie Recommendations with Recommender Systems: Item-item movie recommendations from user-rating similarities.
-
R (RPubs)
- ML Logistic Regression: Predicting salary class using logistic regression.
- ML Decision Trees and Random Forests: Classifying schools as private or public.
-
The full R portfolio index is here.
Questions or collaboration? Reach me at contact@sajalsharma.com, or see what I am working on now at sajalsharma.com.
If this repo helped you or gave you ideas for your own portfolio, you can buy me a coffee. ❤️