# Is there a machine learning framework that supports partial evaluation ie can return a function?

Is there a machine learning framework that supports partial evaluation?

For example:

We train on [model, year, km, ..., colour, price].

Today we call
get_prediction(model, year, km, ..., colour)
It returns the value of price, ie a number (or a probability for a label).

Say I would like to call
get_prediction_function(model, year, ..., colour)
It should return a function price(km). (That function returns a number.)

Essentially we are pulling out a dimension or two.

In theory of course it gives us nothing, it just postpones some calculation. (In practice this small specialised object is very useful in some production applications.)

• A probabilistic generative model can do this through marginalization. – Emre Nov 5 '16 at 18:42
• @Emre Thanks, it is logical that it can be done and I assume it has been done. The question is really which production-ready frameworks support it today. One could also approximate it with brute force. – Adam Bittlingmayer Nov 5 '16 at 20:21
• When you say framework, what do you mean exactly? Would programming languages be frameworks here? You can use MatLab to create a function that returns a function, where the function you create stores the parameters you enter to be used in the function that is output. This can be done in R as well. – grldsndrs Nov 8 '16 at 6:27
• No. For example, Python does partial evaluation. But the resulting function is not self-contained and thus not trivially serialisable. So it's a syntactic capability, but does not make it possible to easily send the result over the wire, or call it a million times. (As opposed to something like price = lambda km: max(0, 300000 - km) * 42 + 1234.) – Adam Bittlingmayer Nov 8 '16 at 9:55