https://github.com/wickstrom/pattern-recognition-handbook
Material for the Pattern Recognition course FYS-3012 at UiT The Arctic University of Norway
https://github.com/wickstrom/pattern-recognition-handbook
bayesian-decision-theory clustering dimensionality-reduction fisher-discriminant-analysis kernel-methods kmeans-clustering linear-classifier nearest-neighbor neural-network non-linear-classification parzen-window pattern-recognition principal-component-analysis spectral-clustering support-vector-machines
Last synced: 25 days ago
JSON representation
Material for the Pattern Recognition course FYS-3012 at UiT The Arctic University of Norway
- Host: GitHub
- URL: https://github.com/wickstrom/pattern-recognition-handbook
- Owner: Wickstrom
- License: mit
- Created: 2025-06-24T13:08:09.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-11-14T16:16:26.000Z (3 months ago)
- Last Synced: 2025-11-14T18:23:52.283Z (3 months ago)
- Topics: bayesian-decision-theory, clustering, dimensionality-reduction, fisher-discriminant-analysis, kernel-methods, kmeans-clustering, linear-classifier, nearest-neighbor, neural-network, non-linear-classification, parzen-window, pattern-recognition, principal-component-analysis, spectral-clustering, support-vector-machines
- Language: Jupyter Notebook
- Homepage:
- Size: 23.6 MB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.MD
- License: LICENSE
Awesome Lists containing this project
README
# Pattern Recognition
This is the collection of notebooks for the course *FYS-3012 - Pattern Recognition*, taught at UiT The Arctic University of Norway.
You can view and execute the notebooks by clicking on the buttons below.
## 📑 Content
1. **Introduction to pattern recognition**
- What is pattern recognition?
- Applications of pattern recognition
- Practical information
[](https://nbviewer.jupyter.org/github/Wickstrom/pattern-recognition-handbook/blob/main/notebooks/00/intro.ipynb)
2. **Bayes decision theory**
- Motivation
- Naïve Bayes assumption
- Bayes classifier
- Probablity of error
- Dealing with risk
[](https://nbviewer.jupyter.org/github/Wickstrom/pattern-recognition-handbook/blob/main/notebooks/01/bayes_decision_theory.ipynb)
3. **Density estimation I**
- Parametric density estimation
- Likelihood function
- Maximum-likelihood estimation
- Non-parametric density estimation
- Histogram approach
- Parzen windowing
[](https://nbviewer.jupyter.org/github/Wickstrom/pattern-recognition-handbook/blob/main/notebooks/02/density_estimation.ipynb)
4. **Density estimation II**
- K nearest neighbor
- Mixture models
[](https://nbviewer.jupyter.org/github/Wickstrom/pattern-recognition-handbook/blob/main/notebooks/02/mixture_models.ipynb)
5. **Linear classifiers I**
- Mean squared error (MSE) classifier
- Least sum of squares classifier
- Widrow-Hoff algorithm
- Perceptron
[](https://nbviewer.jupyter.org/github/Wickstrom/pattern-recognition-handbook/blob/main/notebooks/03/linear_classifiers.ipynb)
6. **Linear classifiers II**
- Support vector machines
[](https://nbviewer.jupyter.org/github/Wickstrom/pattern-recognition-handbook/blob/main/notebooks/03/support_vector_machine.ipynb)
7. **Non-linear classifiers I**
- Multilayer Perceptron
- Backpropagation
- Gradient descent
[](https://nbviewer.jupyter.org/github/Wickstrom/pattern-recognition-handbook/blob/main/notebooks/04/neural_networks_1.ipynb)
8. **Non-linear classifiers II**
- Activation functions
- The vanishing gradient problem
- Gradient descent with momentum
- Multiclass classification with neural networks
- Softmax function
- Cross-entropy loss
- Weight initialization
[](https://nbviewer.jupyter.org/github/Wickstrom/pattern-recognition-handbook/blob/main/notebooks/04/neural_networks_2.ipynb)
9. **Non-linear classifiers III**
- Neural networks as representation learning
- A vector perspective on backpropagation
- Connecting neural networks and support vector machines
[](https://nbviewer.jupyter.org/github/Wickstrom/pattern-recognition-handbook/blob/main/notebooks/04/neural_networks_3.ipynb)
10. **Non-linear classifiers IV**
- Function approximation for non-linear classification
- Radial basis function (RBF) networks
- Prototypical learning
[](https://nbviewer.jupyter.org/github/Wickstrom/pattern-recognition-handbook/blob/main/notebooks/05/rbf_networks.ipynb)
11. **Non-linear classifiers V**
- Kernel methods
- Mercer's theorem
- Kernels
- Non-linear SVMs
[](https://nbviewer.jupyter.org/github/Wickstrom/pattern-recognition-handbook/blob/main/notebooks/06/kernel_methods.ipynb)
12. **Data transformations and dimensionality reduction I**
- Fisher discriminant analysis
- Principal component analysis (PCA)
[](https://nbviewer.jupyter.org/github/Wickstrom/pattern-recognition-handbook/blob/main/notebooks/07/linear_dim_reduction.ipynb)
13. **Data transformations and dimensionality reduction II**
- Kernel PCA
- Laplacian Eigenmaps
[](https://nbviewer.org/urls/raw.githack.com/Wickstrom/pattern-recognition-handbook/main/notebooks/08/non_linear_dim_reduction.ipynb)
14. **Ranking**
- Ranking
- PageRank algorithm
[](https://nbviewer.org/urls/raw.githack.com/Wickstrom/pattern-recognition-handbook/main/notebooks/09/ranking.ipynb)
15. **Clustering I**
- Sequential clustering
[](https://nbviewer.org/urls/raw.githack.com/Wickstrom/pattern-recognition-handbook/main/notebooks/10/seq_clustering.ipynb)
16. **Clustering II**
- Hierarchical
[](https://nbviewer.org/urls/raw.githack.com/Wickstrom/pattern-recognition-handbook/main/notebooks/11/hier_clustering.ipynb)
17. **Clustering III**
- K-means
- Spectral clustering
[](https://nbviewer.org/urls/raw.githack.com/Wickstrom/pattern-recognition-handbook/main/notebooks/12/clustering.ipynb)
17. **Clustering III**
- Clustering evaluation
[](https://nbviewer.org/urls/raw.githack.com/Wickstrom/pattern-recognition-handbook/main/notebooks/13/clustering_eval.ipynb)
## 💻 How to code locally
To run the notebooks locally the recommended steps are the following:
1. Download and install [Miniconda](https://docs.conda.io/projects/miniconda/en/latest/miniconda-install.html).
2. Download the [env.yml](https://github.com/FilippoMB/python-time-series-handbook/blob/main/env.yml) file.
3. Open the shell and navigate to the location with the `yml` file you just downloaded.
- If you are on Windows, open the Miniconda shell.
4. Install the environment with
```{bash}
> conda env create -f env.yml
```
5. Activate your environment:
```{bash}
> conda activate pytsa
```
6. Go to the folder with the notebooks
7. Launch Jupyter Lab with the command
```{bash}
> jupyter lab
```
## 🎥 Notebook format and slides
The notebooks are structured as a sequence of slides to be presented using [RISE](https://rise.readthedocs.io/en/latest/).
If you open a notebook you will see the following structure:

The top-right button indicates the type of slide, which is stored in the metadata of the cell. To enable the visualization of the slide type you must first install RISE and then on the top menu select `View -> Cell Toolbar -> Slieshow`. Also, to split the cells like in the example, you must enable `Split Cells Notebook` from the [nbextensions](https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/index.html).
By pressing the `Enter\Exit RISE Slideshow` button at the top you can enter the slideshow presentation.

See the [RISE documentation](https://rise.readthedocs.io/en/latest/) for more info.
## 📝 Citation
If you are using this material in your courses or in your research, please consider citing it as follows:
````bibtex
@misc{wick2024prbook,
author = {Kristoffer Wickstrøm},
title = {Pattern Recognition Course},
year = {2025},
howpublished = {Online},
url = {https://github.com/Wickstrom/pattern-recognition-handbook}
}
````
This repository is heavily based on [Time Series Analysis with Python](https://github.com/FilippoMB/python-time-series-handbook) by my collegue at UiT Filippo Maria Bianchi. If you find my repository useful, please head over there and give him a star.
````bibtex
@misc{bianchi2024tsbook,
author = {Filippo Maria Bianchi},
title = {Time Series Analysis with Python},
year = {2024},
howpublished = {Online},
url = {https://github.com/FilippoMB/python-time-series-handbook}
}
````