61

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.

BillH
  • 197
  • 1
  • 9
pad
  • 41,040
  • 7
  • 92
  • 166

4 Answers4

23

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.

Tomas Petricek
  • 240,744
  • 19
  • 378
  • 553
10

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.

Rick Minerich
  • 3,078
  • 19
  • 29
  • Infer.NET has a great promise. Don's recent blog post puts an job ad for the Infer.NET team, which is hiring a good engineer to push this project further. – Yin Zhu Nov 11 '11 at 03:37
  • 4
    I hope that means that they will also change the licensing. Right now it's not really usable for anything other than prototyping. – Robert Jeppesen Jan 20 '12 at 09:26
  • Yeah, Both InferNet and Sho are great bits of kit, that are let down by the non-commercial only licencing – James Jan 20 '12 at 22:07
  • The licence is sh*t. can't use it except for toying around. Actually the licence risk is the major problem with most MSFT solution. – nicolas Apr 04 '12 at 07:17
7

Hal Daume has implemented a lot of machine learning algorithms in OCaml and Haskell. Details see my answer in 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.

Community
  • 1
  • 1
Yin Zhu
  • 16,980
  • 13
  • 75
  • 117
  • 1
    Thanks for the news about WekaSharper. I have read all your blog posts about F# and data mining, they are really helpful for starters. Keep up your good work of blogging :). – pad Nov 11 '11 at 14:10
1

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#.