Guide - Machine Learning with F#
F# is well-suited to machine learning because of its efficient execution, succinct style, data access capabilities and scalability. F# has been successfully used by some of the most advanced machine learning teams in the world, including several groups at Microsoft Research.
Try F# has some introductory machine learning algorithms. Further resources related to different aspects of machine learning are below.
Related material also exists in other Guides. For detailed information, refer to the guides for:
This guide includes resources related to machine learning programming with F#. To contribute to this guide, log on to GitHub, edit this page and send a pull request.
Note that the resources listed below are provided only for educational purposes related to the F# programming language. The F# Software Foundation does not endorse or recommend any commercial products, processes, or services. Therefore, mention of commercial products, processes, or services should not be construed as an endorsement or recommendation.
Resources for Machine Learning
Tutorials and Introductions
Introductions to different machine learning algorithms with F#:
- FSML - A machine learning project in F#
- Gaussian process regression in F#
- K-Means clustering in F#
- Simplify data with SVD and Math.NET in F#
- Recommendation Engine using Math.NET, SVD and F#
- Setting up F# Interactive for Machine Learning with Large Datasets
- Random Forests in F# - first cut
- Nearest Neighbor Classification, Part 1
- Nearest Neighbor Classification, Part 2
- Decision Tree Classification in F#
- Naïve Bayes Classification
- Logistic Regression in F#
- Support Vector Machine in F#: getting there
- AdaBoost in F#
- Support Vector Machines in F#
- Kaggle/StackOverflow contest field notes
- F# Data Mining
- Parallel Programming in F#: Aggregating Data:
- Particle Swarm Optimization in F#
Machine Learning Packages
Several F# machine learning packages are available. Some are accessed through F#’s interoperability mechanisms to R, Python and Java. .NET packages can be found by searching on nuget.org. For example:
Accord.MachineLearning - Contains Support Vector Machines, Decision Trees, Naive Bayesian models, K-means, Gaussian Mixture models and general algorithms such as Ransac, Cross-validation and Grid-Search for machine-learning applications. This package is part of the Accord.NET Framework. See also First steps with Accord.NET SVM in F#
Ariadne - Library for fitting Gaussian process regression models.
Encog Machine Learning Framework - An advanced neural network and machine learning framework. Encog contains classes to create a wide variety of networks, as well as support classes to normalize and process data for these neural networks. Encog trains using multithreaded resilient propagation. Encog can also make use of a GPU to further speed processing time. A GUI based workbench is also provided to help model and train neural networks. See, for example, ENCOG Neural Network XOR example in F#
Numl - A machine learning library intended to ease the use of using standard modeling techniques for both prediction and clustering
DiffSharp - An automatic differentiation (AD) library for incorporating derivative calculations with minimal changes into existing code, providing exact and efficient gradients, Jacobians and Hessians for machine learning and optimization applications.
Hype - An experimental deep learning library, where you can perform optimization on compositional machine learning systems of many components, even when such components themselves internally perform optimization. Underlying computations are run by a BLAS/LAPACK backend (OpenBLAS by default).