Open-source project
devAmoghS/Machine-Learning-with-Python avatar
devAmoghS/Machine-Learning-with-Python

Machine-Learning-with-Python: a notebook collection pinned to Python 3.5

Small scale machine learning projects to understand the core concepts . Give a Star 🌟If it helps you. BONUS: Interview Bank coming up..!

1,332 stars204 forksPythonMIT

At a glance

What is it?
devAmoghS/Machine-Learning-with-Python is an MIT-licensed set of small machine learning exercises, from LDA topic modelling to a from-scratch random forest. Its value is breadth of worked examples; its cost is an environment specification that has aged out of mainstream tooling.
Who is it for?
Adopt it if you want a single MIT-licensed repository where classical algorithms, a Keras network, and graph metrics like PageRank sit side by side as reading material. Do not adopt it if you need a maintained library, a current Python version, or documentation that goes beyond a README.
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 154 days ago.
What is it written in?
Mainly Python, 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 exercise list actually covers

The README frames the repository as small scale machine learning projects to understand the core concepts, ordered oldest to newest. That ordering matters more than it first appears: the list runs from LDA topic modelling on the newsgroups20 dataset through a Keras neural network on MNIST, stock price forecasting with linear regression, a naive Bayes spam filter on the SpamAssasin Public Corpus, churn prediction with Keras and scikit-learn, a random forest implemented from scratch and tested on the Sonar dataset from the UCI repository, down to PCA and scaling on sample stock data, decision trees, logistic regression, and a captcha-defeating neural network.

The later entries move away from pure modelling. There is a wrapper for running scikit-learn's GridSearchCV over a Keras neural network, a recommender system built on cosine similarity that both suggests new interests and matches users by shared interests, and network analysis covering PageRank, betweenness centrality, closeness centrality and eigenvector centrality. A separate group covers hypothesis inference: p-hacking, A/B testing, Bayesian inference. Helper methods for statistics, probability, linear algebra and data analysis are collected in one place.

The intended reader is someone learning, not someone shipping. Two entries make that explicit: a simple social network built to teach Python basics, and k-nearest neighbors used to predict voting behaviour from nearest neighbors. Those are teaching devices. If you already write production scikit-learn code, most of this list will be revision.

The environment is pinned to Python 3.5, and that is the main constraint

The installation notes state that MLwP is built using Python 3.5 and that the easiest way to set up a compatible environment is Conda. The documented sequence is: install Conda, create an environment with python=3.5, activate it, then install dependencies from requirements.txt.

The README shows the exact commands. Creation is `conda create --name *your env name* python=3.5`, run from `cd ~`. Activation is `source activate *your env name*`, and the prompt in the example becomes `(mlwp-test) amogh@hp15X34:~$`. Dependency installation is `conda install --yes --file *path to requirements.txt*`. The README also documents a fallback for the PackagesNotFoundError case: `conda install -c conda-forge *list of packages separated by space*`, and links to issue #3, titled Unable to install requirements.

That fallback is the honest part of the document. Python 3.5 reached end of life in 2020, and the package plan printed in the README (openssl 1.0.2p, pip 10.0.1, setuptools 40.2.0, certifi 2018.8.24) reflects a 2018-era solver run. Modern Conda builds may resolve that environment slowly or not at all, and the README does not claim otherwise. Nothing in the supplied material indicates a newer Python target, a lock file, or a container image. The `source activate` form shown is also the older Conda convention; current Conda releases use `conda activate`.

What the repository does not give you

Under How much support is available, the README lists FAQs (coming soon) and Documentation (coming soon). Both are placeholders, so the README is the documentation. There are no retrieved releases, which means no versioned snapshots to pin against and no changelog describing what changed between commits. The default branch is master, and the last push recorded is 2026-04-14, so the repository is still receiving activity even though the stated Python target has not moved.

The How good is the code section claims the code is well tested, passes style checks (PEP8 compliant), and can compile in its current state. Those are the maintainer's assertions. No test runner, coverage figure, or CI configuration is described in the supplied material, so treat the claim as a starting point for your own reading rather than a verified property. There is also no stated dataset download step beyond naming the sources (newsgroups20, MNIST, SpamAssasin, Sonar from UCI), and no note on where the sample stock and voting data come from.

The README's own framing is a star request and a BONUS note about an Interview Bank coming up. Neither affects the code, but they set expectations: this is a personal teaching collection, not a project with a roadmap you can plan against.

Where this fits against a maintained library

The obvious comparison is scikit-learn itself. scikit-learn is a library: you import it, it carries a compatibility policy, deprecation cycle, and a release cadence, and its estimators are the thing you call in your own code. This repository is the inverse. It is a set of worked examples that call scikit-learn, Keras, and plain Python, and its purpose is to show the reasoning behind each step.

That difference decides the use case. If you want to fit a random forest in a pipeline tomorrow, install scikit-learn and read its user guide; the from-scratch random forest here exists to show you how splitting and impurity work, not to replace the estimator. If you want to understand why GridSearchCV wraps a Keras model the way it does, or how cosine similarity turns into a recommender, a worked example is the faster route. The repository also reaches into territory a modelling library does not cover at all: PageRank and centrality measures, p-hacking and Bayesian inference, n-gram and grammar-based sentence generation. Those sit closer to a general algorithms or statistics text than to scikit-learn's scope.

The cost of the example-first approach is that nothing here is maintained as a dependency. You cannot pin it, you cannot file a bug against an estimator, and the Python 3.5 pin means the surrounding ecosystem has moved on. Choose it for reading, not for building.

Licence and the cost of keeping it running

The repository is MIT licensed. In practical terms that is permissive: you can copy, modify, and redistribute the code, including in commercial work, provided the copyright notice and permission notice are retained. This is a description of the licence text, not legal advice; if you plan to redistribute the code inside a product, read the LICENSE file in the repository and take your own counsel on attribution.

Maintenance cost is where the Python 3.5 pin bites. The README's own troubleshooting path (conda install -c conda-forge) exists because dependency resolution fails, and that failure mode gets more common as package indices drop old builds. Practically, that means an environment you set up today may need to be rebuilt rather than upgraded, and the README offers no migration guidance to a newer interpreter. If you fork the code to run on a current Python, you own that port: Keras APIs in particular changed substantially after the version this code targets. There is no release history to diff against, so you cannot tell which exercises were touched recently and which have been static since 2018.

Who should clone it, and what to check first

Clone it if you learn by reading complete, small programs and you want a single MIT-licensed place where a Keras classifier, a from-scratch random forest, a cosine-similarity recommender, and a PageRank implementation sit within one repository. The breadth is the point, and the oldest-to-newest ordering gives you a rough sense of the author's own progression.

Skip it if you need a supported dependency, a current Python version, or documentation beyond a README. The FAQs and Documentation sections are marked coming soon, there are no releases, and the environment specification is frozen at Python 3.5 with a 2018 solver output. If your team standardises on a modern interpreter, adopting this code means owning a port.

Before you commit time, do two checks. First, try the documented creation command, `conda create --name *your env name* python=3.5`, and see whether your solver resolves it; if it does not, decide whether the conda-forge fallback is worth the effort before reading any code. Second, open one exercise from the middle of the list, the from-scratch random forest or the Keras GridSearchCV wrapper, and read it end to end. That single file tells you more about whether the teaching style matches how you learn than the README's list of topics can.

Editorial conclusion

Adopt it if you want a single MIT-licensed repository where classical algorithms, a Keras network, and graph metrics like PageRank sit side by side as reading material. Do not adopt it if you need a maintained library, a current Python version, or documentation that goes beyond a README. Before cloning, check whether your Conda solver can still resolve python=3.5, and read the source of one exercise end to end to judge whether the code style suits how you learn.

Official sources

  1. devAmoghS/Machine-Learning-with-Python on GitHub
  2. Issues
  3. License: MIT
  4. README
Community notes

Community notes