File Exchange

image thumbnail

Pattern Recognition and Machine Learning Toolbox

version 1.0 (447 KB) by

Pattern Recognition and Machine Learning Toolbox

20 Ratings



This package is a Matlab implementation of the algorithms described in the book: Pattern Recognition and Machine Learning by C. Bishop (PRML).
The repo for this package is located at:
If you find a bug or have a feature request, please file issue there. I do not usually check the comment here.
The design goal of the code are as follows:

Succinct: Code is extremely terse. Minimizing the number of line of code is one of the primal target. As a result, the core of the algorithms can be easily spot.
Efficient: Many tricks for making Matlab scripts fast were applied (eg. vectorization and matrix factorization). Many functions are even comparable with C implementation. Usually, functions in this package are orders faster than Matlab builtin functions which provide the same functionality (eg. kmeans). If anyone found any Matlab implementation that is faster than mine, I am happy to further optimize.
Robust: Many numerical stability techniques are applied, such as probability computation in log scale to avoid numerical underflow and overflow, square root form update of symmetric matrix, etc.
Easy to learn: The code is heavily commented. Reference formulas in PRML book are indicated for corresponding code lines. Symbols are in sync with the book.
Practical: The package is designed not only to be easily read, but also to be easily used to facilitate ML research. Many functions in this package are already widely used (see Matlab file exchange).

Comments and Ratings (26)

Tiehang Duan

Qiong Song

Zikai Li



zwang8 (view profile)

yusen zhang

nice work, thanks. would you like to show us how to cite your work?

xin huang


Pablo (view profile)


Chi-Fu (view profile)

naushad waris

Can you please provide the PDF of your book or just give the link for downloading the "Pattern Recognition and Machine Learning".


ramimj (view profile)

Thank you for this work.
but why the classification results of rvmBinPred are reversed?


ashkan abbasi

Yang Sun

Thanks for clearing that up,

i am working using the hmm code, i understand that the emission matrix should be NxM
where N number of states and M number of symboles of the Observation, the HmmFilter used here uses another dimension for the Emission matrix it used Nxd where d is the length of the observation vector generated or used , can someone explain to me why?

Mo Chen

Mo Chen (view profile)

@Derry Fitzgerald. The behavior is correct, the probability is the MAP probability of the who sequence. However the description is not right. I should have wrote p is single value.

Hi, very nice toolbox, thanks!
I have noticed a bug in hmmViterbi_, it only outputs v as a single value instead of a vector of probabilities


Soobok (view profile)


Chi-Fu (view profile)


michio (view profile)

Bin Yang

Minsu Kim



update description

MATLAB Release
MATLAB 9.0 (R2016a)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video