Interface for an object that can adapt the parameters of another object
based on some given data. This is most commonly used in conjunction with
learning algorithms to employ some heuristic for setting a parameter of
the algorithm based on the data. For learning algorithms, the adapter should
be called before learning has begun.