milk wraps libsvm in a Pythonic way (the models learned have weight arrays that are accessible from Python directly, the models are pickle()able, you can pass any Python function as a kernel,....)

It also supports k-means clustering with an implementation that is careful not to use too much memory (if your dataset fits into memory, milk can cluster it).

It does not have its own file format or in-memory format, which I consider a feature as it works on numpy arrays directly (or anything that is convertible to a numpy-array) without forcing you to copy memory around. For SVMs, you can even just use any datatype if you have your own kernel function.

Changes to previous version:

no scipy.weave dependency

flatter namespace

faster kmeans

affinity propagation (borrowed from scikits-learn & slightly improved to take less memory and time)

Added a new module: milk.ext.jugparallel to interface with jug
(http://luispedro.org/software/jug). This makes it easy to parallelise things
such as n-fold cross validation (each fold runs on its own processor) or
multiple kmeans random starts.

Add some new functions: measures.curves.precision_recall,
milk.unsupervised.kmeans.select_best.kmeans.