Model or dataset
sajal2692/data-science-portfolio avatar
sajal2692/data-science-portfolio

sajal2692/data-science-portfolio: A 2016 Notebook Collection Refreshed for Python 3.14

Portfolio of data science projects completed by me for academic, self learning, and hobby purposes.

1,401 stars461 forksJupyter NotebookMIT

At a glance

What is it?
This repository is a personal portfolio of early-career data science notebooks, not a library or a framework. Its 2026 refresh makes the notebooks run on a current stack, and its value is as a reference for people building their own portfolio.
Who is it for?
Adopt it if you are assembling your own data science portfolio and want to see how someone structured notebooks for regression, clustering, NLP, and visualisation. Skip it if you need a maintained library, a benchmark suite, or code that follows current API conventions.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 71 days ago.
What is it written in?
Mainly Jupyter Notebook, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What the Repository Is and Who It Serves

The README opens with a direct statement of intent: these are projects the author built around 2016, shared so that people starting out can use them as a reference. That framing matters. This is not a toolkit you import. It is a set of Jupyter notebooks, plus R analyses published on RPubs, that demonstrate a range of techniques on small datasets. The topics list includes pandas, scikit-learn, PyTorch, and NLP, and the primary language is Jupyter Notebook. The audience is narrow and clear: someone learning the fundamentals or assembling a portfolio of their own. If you are looking for a production dependency, the repository will not help. If you want to see how a decision-tree regressor is tuned, how PCA and Gaussian-mixture clustering are combined, or how a bag-of-words Naive Bayes classifier is written, the notebooks are readable examples. The 2026 refresh is the main reason to look now rather than at an archived copy: the README states that every notebook still runs top-to-bottom on a current Python 3.14 stack.

How the Notebooks Are Organised and What Each One Does

The contents section groups work into Machine Learning, Natural Language Processing, Data Analysis and Visualisation, and Micro Projects. The Machine Learning group includes a Boston Housing decision-tree regressor with a note on the dataset's history and why it was retired from scikit-learn, a supervised learning comparison for the CharityML donor problem, a customer-segmentation notebook using PCA and Gaussian-mixture clustering, a Q-Learning Smartcab project hosted in a separate repository, and a PyTorch CNN for digit-sequence recognition that uses five classification heads on a shared convolutional trunk with synthetic data built from MNIST. The NLP group includes a multilabel disaster-message classifier with an ETL pipeline, an ML pipeline, and a Flask web app; a 3-way sentiment analysis notebook with a modern zero-shot transformer baseline alongside the original logistic regression; a cross-language information retrieval system that takes German queries and searches English documents using IBM Model 1 alignment and a BM25 scorer built from scratch; a Yelp review classifier; and an SMS spam classifier. The Data Analysis group covers walkability in Melbourne, Titanic exploratory analysis, tech-stock analysis with a Monte Carlo value-at-risk simulation, 2016 election poll data recovered from the Internet Archive, and 911 calls. The R work is published on RPubs rather than stored as notebooks, which means those analyses are not runnable from the repository itself.

Running the Environment: uv, pip, and the Two Networked Notebooks

The README gives two setup paths. The first uses uv for environment management with Python 3.14: run uv sync, then uv run jupyter lab. The second uses pip: pip install -r requirements.txt. Most notebooks read small datasets under data/, which the README describes as demonstration data only. Two notebooks behave differently. The digit-recognition notebook downloads MNIST via torchvision on first run, and the stock-market notebook pulls tech-stock prices via yfinance, with a vendored snapshot as a fallback. That fallback is worth noting because it means the stock notebook can still run without network access, while the MNIST notebook cannot unless the data is already cached. There is no Makefile, no test suite, and no CI configuration mentioned in the material. The practical consequence is that you verify the environment by opening Jupyter Lab and running a notebook top-to-bottom, not by running a test command. If uv sync fails on your platform, the pip path is the documented alternative, though the README does not state whether requirements.txt pins the same versions as the uv lockfile.

Where the Repository Falls Short as a Dependency or a Benchmark

The most important limitation is that this is a portfolio, not a package. There is no importable module, no published version on a package index, and no release history. The material shows no releases retrieved, which is consistent with a repository that is not versioned for consumers. You cannot pin it, you cannot depend on its APIs, and you cannot expect backward compatibility. A second limitation is the data. The README says the data under data/ is for demonstration purposes only, and two notebooks fetch external data at runtime. That makes results sensitive to upstream changes in torchvision and yfinance, and it means any numbers in the notebooks are tied to the snapshot or the download at the time of writing. A third limitation is scope. The notebooks cover classical machine learning and introductory deep learning. They do not cover deployment, monitoring, or production data pipelines, with the exception of the disaster-message classifier's Flask app. If your goal is to learn how to serve a model or maintain one, this repository is the wrong tool.

An Alternative Approach: A Maintained Library or a Course Repository

If you want runnable code that is maintained as a dependency, scikit-learn's own example gallery is a different kind of resource. It is versioned, tested against releases, and updated when APIs change. The trade-off is that the examples are isolated snippets rather than end-to-end notebooks with narrative. This repository gives you the narrative: a problem statement, a dataset, a model, an evaluation, and commentary in one file. The alternative to consider depends on what you need. For learning the mechanics of an algorithm, a maintained library's examples are more reliable because they track the current API. For seeing how a full analysis is structured, this portfolio is closer to what a hiring manager or a reviewer expects to read. A third option is a course repository, which typically includes assignments and solutions but is tied to a specific curriculum. The difference in approach is that this repository is personal and unversioned, while a library gallery is institutional and versioned. Neither replaces the other.

Maintenance, Licence, and What the Refresh Does Not Cover

The repository is licensed under MIT, which permits reuse and modification with attribution, but the material does not describe how the author intends the notebooks to be cited. The README does not include a citation file or a contribution guide. The 2026 refresh is described as making every notebook run top-to-bottom on Python 3.14, but the material does not list which dependencies were updated or whether any notebook logic changed beyond compatibility fixes. That is a gap worth noting: a refresh that only updates imports and API calls may leave older modelling choices in place, and the README does not say otherwise. Maintenance cost for a user is low if you are reading the notebooks, and moderate if you fork them and try to keep them running as dependencies shift. The uv lockfile, if present, would pin versions, but the material does not confirm its contents. For a portfolio, the maintenance model is the author's own schedule, not a release cadence, and the last push date is the only signal of activity available.

Who Should Clone This and What to Check First

Clone it if you are building your own portfolio and want a reference for structure, notebook hygiene, and the range of projects that look credible to a reviewer. The mix of classical machine learning, NLP, and visualisation is broad enough to show what a complete portfolio might include, and the inclusion of a modern transformer baseline alongside an older logistic-regression model in the sentiment notebook is a useful pattern. Do not clone it if you need a library, a benchmark, or code that follows current best practices for packaging and testing. Before you spend time on it, check two things. First, open the README's contents list and confirm the notebooks cover topics you actually need; the R analyses are on RPubs and are not runnable from the repository. Second, run uv sync and uv run jupyter lab, then open the digit-recognition notebook to confirm the MNIST download works in your environment. If the download fails and you have no cached data, that notebook will not run, and the README offers no offline path for it.

Editorial conclusion

Adopt it if you are assembling your own data science portfolio and want to see how someone structured notebooks for regression, clustering, NLP, and visualisation. Skip it if you need a maintained library, a benchmark suite, or code that follows current API conventions. Before cloning, check the notebook list in the README against your own gaps, and run uv sync followed by uv run jupyter lab to confirm the Python 3.14 environment resolves on your machine.

Official sources

  1. Issues
  2. License: MIT
  3. Project website
  4. README
  5. sajal2692/data-science-portfolio on GitHub
Community notes

Community notes