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: https://github.com/PRML/PRMLT
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).
nice work, thanks. would you like to show us how to cite your work?
Can you please provide the PDF of your book or just give the link for downloading the "Pattern Recognition and Machine Learning".
Thank you for this work.
but why the classification results of rvmBinPred are reversed?
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?
@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
Inspired: Information Theory Toolbox, Variational Bayesian Inference for Gaussian Mixture Model , Normalized Mutual Information, Kernel Learning Toolbox, Logistic Regression for Classification, Naive Bayes Classifier, Kalman Filter and Linear Dynamic System, Adaboost, Gram-Schmidt orthogonalization, EM for Mixture of Bernoulli (Unsupervised Naive Bayes) for clustering binary data, Probabilistic PCA and Factor Analysis, Bayesian Compressive Sensing (sparse coding) and Relevance Vector Machine, Dirichlet Process Gaussian Mixture Model, Pairwise Distance Matrix, Probabilistic Linear Regression, Log Probability Density Function (PDF), EM Algorithm for Gaussian Mixture Model (EM GMM), Deep Multilayer Perceptron Neural Network with Back-propagation, Variational Bayesian Linear Regression, Variational Bayesian Relevance Vector Machine for Sparse Coding, Hidden Markov Model Toolbox (HMM), Kmedoids, Kernel Kmeans, Kmeans Clustering
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.