Machine learning in Clojure

2.2k views Asked by At

We have theano and numpy in Python to do symbolic and numeric computations, optimising our Machine Learning computations (eg: Matrix multiplications and GPU usage). What are the relevant tools in Clojure to do Machine learning (or at least things like matrix multiplications)?

2

There are 2 answers

1
Mark Fisher On

For the matrix/vector side there's core.matrix which is a plug-able library with an implementation at vectorz-clj that is being actively developed, and other high perf libs exist. Usage from the readme:

(def M (matrix [[1 2] [3 4]]))
(def v (matrix [1 2]))
(mul M v)
=> #<Matrix22 [[1.0,4.0],[3.0,8.0]]>

A 'mentor' to the project mentioned on an answer to this SO question that GPU was a target, but no mention of it in the docs.

What kind of specific functionality do you need as your question is a bit broad? Have you tried anything?

0
schaueho On

An important library / tool for mathematical operations, statistics and more in Clojure is incanter. There is also clatrix wrapping jBlas for matrix operations.

With regard to machine learning in general, there are at least two libraries interfacing / wrapping Apache Spark which includes MLlib for machine learning: there is sparking and flambo. clj-ml is basically a wrapper around Weka and some additions. Finally, clojure-opennlp is a wrapper around opennlp, an NLP toolkit comparable to NLTK in Python.

This list of ML tools provides quite some more links.