Resources for working with Machine Learning in F#

.NetF#Functional ProgrammingMachine Learning

.Net Problem Overview


I have learned a Machine Learning course using Matlab as a prototyping tool. Since I got addicted to F#, I would like to continue my Machine Learning study in F#.

I may want to use F# for both prototyping and production, so a Machine Learning framework would be a great start. Otherwise, I can start with a collection of libraries:

  • Highly-optimized linear algebra library
  • Statistics package
  • Visualization library (which allows to draw and interact with charts, diagrams...)
  • Parallel computing toolbox (similar to Matlab parallel computing toolbox)

And the most important resources (to me) are books, blog posts and online courses regarding Machine Learning in a functional programming language (F#/OCaml/Haskell...).

Can anyone suggest these kinds of resource? Thanks.


EDIT:

This is a summary based on the answers below:

Machine Learning frameworks:

  • Infer.NET: an .NET framework for Bayesian inference in graphical models with good F# support.
  • WekaSharper: a F# wrapper around the popular data mining framework Weka.
  • Microsoft Sho: a continuous environment development for data analysis (including matrix operations, optimization and visualization) on .NET platform.

Related libraries:

Reading list:

Any other pointers or suggestions are also welcome.

.Net Solutions


Solution 1 - .Net

There isn't a single place to look for resources on F# and machine learning, but here are a couple of links that may be quite useful:

  • Numerical Computing section on MSDN is a good resource on using various numerical libraries from F#. The most advanced library that implements linear algebra and other algorithsm useful in machine learning is Math.NET Numerics.

  • Visualizing Data section on MSDN has some resources on charting in F#. The FSharpChart library is now maintained by Carl Nolan who regularly posts updates to his blog.

There are also a few personal pages of people who are working on relevant topics:

  • Jurgen van Gael (who did PhD in machine learning) contributed to the Math.NET library and you can read about his experience here.

  • Yin Zhu who wrote the Numerical Computing chapter on MSDN (and is a PhD student interested in machine learning) has quite a few excellent articles on his blog.

Solution 2 - .Net

In addition to what Tomas mentioned, I spent some time with Infer.NET about a year ago and found it was pretty good for continuous graphical models. I know it's improved quite a lot over the last year in both the scope of the library and F# support. I suggest checking it out and seeing if it has what you need.

Solution 3 - .Net

Hal Daume has implemented a lot of machine learning algorithms in OCaml and Haskell. Details see my answer in https://stackoverflow.com/questions/2268885/machine-learning-in-ocaml-or-haskell

As side from the Numerical Computing in F# book chapter on MSDN, I'd also like to recommend my Wrapper for Weka, WekaSharper. It allows you to call machine learning algorithms in Weka using an F#-friendly interface.

I wrote an article, Why F# is the language for data mining, which reflects my thinking when I finished writing a alpha/prototype-like data mining package in F#. libml is available online. But the code was written about two years ago when I started to use F#, and I didn't have time to maintain it since then.

Solution 4 - .Net

APress has a book in "Alpha" slated for release soon: Machine Learning Projects for .NET Developers. http://www.apress.com/9781430267676

The currently existing content seems to be introductory, but quite good to learn from, and its code samples are primarily F#.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionpadView Question on Stackoverflow
Solution 1 - .NetTomas PetricekView Answer on Stackoverflow
Solution 2 - .NetRick MinerichView Answer on Stackoverflow
Solution 3 - .NetYin ZhuView Answer on Stackoverflow
Solution 4 - .Netuser74754View Answer on Stackoverflow