In my view, Python is a good choice for building the machine learning part (you don't say anything about the rest of your application, so I can't comment of that).
NumPyNumPy is powerful and mature, and has lots of numerical packages built on top of it.
For example, SciKitsSciKits is a suite of such packages. It incorporates scikit-learn
scikit-learn
, which is
a Python module integrating classic machine learning algorithms in the tightly-knit scientific Python world (numpy, scipy, matplotlib). It aims to provide simple and efficient solutions to learning problems, accessible to everybody and reusable in various contexts: machine-learning as a versatile tool for science and engineering
With regards to performance, native NumPy operations are on par with their BLASBLAS counterparts (they basically are wrappers around BLAS). Thus, NumPy code that can be expressed in terms of vector/matrix operations tends to be as fast as comparable C/Fortran code.
On the flip side, code expressed as Python loops can be slow. Additionally, it is hard to speed things uphard to speed things up by using multiple threads. However, there are ways around both of these shortcomings: using multiprocessing
multiprocessing
instead of threading, numexpr
numexpr
, CythonCython and so on.