MLDemos puts together a number of open-source libraries for machine learning in a single framework that allows to draw data, experiment and visualize the effects of training and model parameters.

The accent is put on the visualization and its main purpose is education and understanding of several classification, clustering and regression algorithms. Different visualization modes allow to grasp different aspects of the results obtained by the algorithms.

Attached are the Windows binaries, please refer to the website for the mac version and the source code.

NOTE:
Kernel K-Means was reported to not behave as expected in the linux version.

Changes to previous version:

Introduced Plugins: Algorithms and InputOutput

Algorithms are now accessed through 4 different interfaces (Classifiers, Clusterers, Regressors, Dynamical Systems) in the form of plugins. The software loads all the .dll / .so / .dylib found in the 'plugins' folder at runtime, and populates the graphical interface with their respective option panels. This makes it quite easy to implement additional algorithms, look at the examples provided in the sources for a template. It is possible to combine multiple algorithms into a collection of plugins, (e.g. to allow for a single algorithm to propose regression, classification and clustering).

InputOutput plugins allow to send data to the software (replacing the current dataset) as well as sending requests for classification, clustering, regression or dynamical systems responses. The plugin then fetches the results when they are obtained. The algorithm is trained using the parameters currently selected in the graphical interface. The RandomEmitter plugin shows an extremely basic implementation as a template.

Added Kernel PCA (under the Classification tab for the time being, will probably move to somewhere else at some point)

Added the Comparison dialog. For each family of problems, it is possible to compare multiple algorithms or multiple parameters for the same algorithms on the data currently displayed in the canvas. Clicking the Compare button on the algorithm options panel adds the current parameters to the comparison battery. The Comparison dialog then allows to decide the number of cross-validation runs, ratio of training/testing samples and the visualization type (histograms or boxplots).

Loading and running algorithms now works on multi-dimensional data (although only the first two dimensions are displayed)

Added framework for multi-class classification (only implemented it for GMM and KNN for now)

Added a projection display for Linear Projection methods, that now use naive bayes after projections. A "Set Projection/Set Source" button now allows to swap the samples in the canvas with the projected samples, and vice versa.

Added a 'help' page, displaying specific implementation information on the algorithms selected in the info/statistics dialog, which has been renamed. It now provides information on each algorithm when selected.

Added Reinforcement Learning (Reward Maximization) algorithms to the architecture. It is now possible to draw a reward function (using the +/- tool in the toolbar) and have the system display the maximization process.

Many structural changes on the source code (extracted common libraries to avoid redundant compiling). OpenCV is no longer needed by the main project but only by two plugins (PCAFaces and LinearMethods) which now link to OpenCV2.2.

Bug fixes and small changes in the interface dynamics.

The linux version is now packaged as a standalone program that works on all 2.6.X distributions

Algorithms are now accessed through 4 different interfaces (Classifiers, Clusterers, Regressors, Dynamical Systems) in the form of plugins. The software loads all the .dll / .so / .dylib found in the 'plugins' folder at runtime, and populates the graphical interface with their respective option panels. This makes it quite easy to implement additional algorithms, look at the examples provided in the sources for a template. It is possible to combine multiple algorithms into a collection of plugins, (e.g. to allow for a single algorithm to propose regression, classification and clustering).

InputOutput plugins allow to send data to the software (replacing the current dataset) as well as sending requests for classification, clustering, regression or dynamical systems responses. The plugin then fetches the results when they are obtained. The algorithm is trained using the parameters currently selected in the graphical interface. The RandomEmitter plugin shows an extremely basic implementation as a template.

Added Kernel PCA (under the Classification tab for the time being, will probably move to somewhere else at some point)

Added algorithm information on the Statistics window to display data such as the number of support vectors and basis functions.
Added two new weak learners to the Boosting classification: Random Rectangles and Random Circles.
Fixed a crash when Cross-Validation was run on an untrained classifier.
Minor bugs fixes.

Added algorithm information on the Statistics window to display data such as the number of support vectors and basis functions.
Added two new weak learners to the Boosting classification: Random Rectangles and Random Circles.
Fixed a crash when Cross-Validation was run on an untrained classifier.
Minor bugs fixes.

Added Train/Test ratio, Cross-Validation for Classification and Regression and ROC curves for classification.
Extended ranges for various variables (e.g. #weak learners for boosting).
Classified samples now appear with the estimated class color (toggle with "Show Model" in the display options).
Optimized the display of samples while drawing (should be WAY smoother for drawing now).
Minor bug fixes.

Added ICA, removed Naive Bayes (not really informative or useful the way it was).
Added sparsity control and information display for SOGP
Fixed crashes with KNN classification and regression
Fixed LDA and Fisher LDA as they were not working properly.
Minor fixes to the interface on the Mac version