All Python Posts
Scikit-Learn (Part 17)
Neil Haddley ⢠October 13, 2026
Autoencoders, GANs, and diffusion models: networks that squeeze data and rebuild it, and networks that invent new clothing pictures
Scikit-Learn (Part 16)
Neil Haddley ⢠October 13, 2026
Natural language processing with recurrent networks and attention: a Shakespeare character model, movie review sentiment, translation, the Transformer, and pretrained models from Hugging Face
Scikit-Learn (Part 15)
Neil Haddley ⢠October 13, 2026
Processing sequences with recurrent neural networks (RNNs) and CNNs: forecasting daily train ridership, comparing a naive guess, a statistical model, and RNNs, and forecasting several days ahead
Scikit-Learn (Part 14)
Neil Haddley ⢠October 13, 2026
Deep computer vision with convolutional neural networks (CNNs): filters that slide across an image, pooling, a CNN for clothing, a pretrained ResNet, and transfer learning for flowers
Scikit-Learn (Part 13)
Neil Haddley ⢠October 13, 2026
Loading and preprocessing data with TensorFlow: a tf.data pipeline that reads many files, shuffles, and batches, the TFRecord format, and Keras layers that turn raw values into numbers
Scikit-Learn (Part 12)
Neil Haddley ⢠October 13, 2026
Custom models and training with TensorFlow: tensors, automatic slopes with GradientTape, and a training loop written by hand instead of calling fit()
Scikit-Learn (Part 11)
Neil Haddley ⢠October 13, 2026
Training deep neural networks: why deep networks are hard to train, and the starting numbers, activation functions, batch normalization, optimizers, and dropout that make it work
Scikit-Learn (Part 10)
Neil Haddley ⢠October 12, 2026
Neural networks with Keras: a network of 266,610 numbers that learns to recognise clothing, trained by backpropagation, the way large language models are
Scikit-Learn (Part 9)
Neil Haddley ⢠October 12, 2026
Unsupervised learning: finding groups in data that has no labels, with K-Means, DBSCAN, and Gaussian mixtures, and getting far with only 50 labels
Scikit-Learn (Part 8)
Neil Haddley ⢠October 12, 2026
Dimensionality reduction: squeezing 784 pixels into far fewer numbers with PCA, random projection, and manifold learning, while keeping what matters
Scikit-Learn (Part 7)
Neil Haddley ⢠October 12, 2026
Ensemble learning and random forests: many models voting, bagging, boosting, and stacking, and how much better a crowd of models does than any one of them
Scikit-Learn (Part 6)
Neil Haddley ⢠October 12, 2026
Decision trees: a model that asks one question at a time, grown split by split, and why it needs holding back
Scikit-Learn (Part 5)
Neil Haddley ⢠October 12, 2026
Support vector machines: the widest street between two classes, kernels for curved boundaries, and an SVM trained both directly and by gradient descent
Scikit-Learn (Part 4)
Neil Haddley ⢠October 12, 2026
Training linear models: the same line worked out directly and found by gradient descent, then curves, regularization, and logistic regression
Scikit-Learn (Part 3)
Neil Haddley ⢠October 12, 2026
Classification: recognising handwritten digits, and why accuracy alone can mislead, with confusion matrices, precision, and recall
Scikit-Learn (Part 2)
Neil Haddley ⢠October 12, 2026
An end-to-end machine learning project: predicting California house prices, from raw data to a tested model
Scikit-Learn (Part 1)
Neil Haddley ⢠October 12, 2026
Machine Learning with Python
MiniGPT, grown in code you can read
Neil Haddley ⢠October 11, 2026
An experiment: the code that trains MiniGPT from random numbers, rewritten for people, treating the whole readable model as a black box, with the surprise score and the AdamW nudge written out, and a check against the original
MiniGPT, rewritten to be read
Neil Haddley ⢠October 9, 2026
An experiment: the code that runs my trained MiniGPT model, rewritten for people, with a name for every value, every shape written down, every library call explained, and honest notes where nobody knows why it works
Voice Kit (Part 4)
Neil Haddley ⢠December 14, 2025
Automatically Boot your Raspberry Pi 3 into Google Voice Assistant
Voice Kit (Part 3)
Neil Haddley ⢠October 18, 2025
Adding Commands
Voice Kit (Part 2)
Neil Haddley ⢠October 16, 2025
Google Assistant API
Voice Kit (Part 1)
Neil Haddley ⢠October 11, 2025
Raspberry Pi Voice Kit
LangChain Agents
Neil Haddley ⢠August 25, 2024
Building LangChain agents that use LLMs as a reasoning engine to choose which tools to call, execute them, and loop until the task is complete
Colorization
Neil Haddley ⢠August 3, 2023
colorization.ipynb
Apple MacBook
Neil Haddley ⢠July 25, 2023
Setting up Anaconda on a MacBook for data science and machine learning â installs Python, the Conda package manager, and Jupyter Notebook
LangChain (RAG)
Neil Haddley ⢠July 21, 2023
Using LangChain to create a medical report application
Machine Learning (Part 4)
Neil Haddley ⢠June 8, 2022
Using Google Colab (Jupyter Notebooks in the cloud) to run machine learning experiments with GPU access and no local setup required