Machine learning involves altering behaviour from experience. Normally this is done with self modifying code. You can't do this with an arduino, so what you would have to do is to use the EEPROM to control it.
So you need to find an application where you can do this.
Machine learning is -not- normally done with "self modifying code", at least not from what I recall in the free machine learning course I took last year (
https://www.coursera.org/course/ml).
What ML does require, though, in many cases, is more than a bit of RAM, of which is in short supply with a standard Arduino. That said, you could probably easily implement many ML algorithms within the context of a Mega, perhaps coupled with a RAM expansion.
You might even be able to implement some ML algorithms on a standard Arduino, provided you keep things very modest; I am sure algos like linear regression could be implemented, among others. I have also seen examples of small neural-nets done using an Arduino (though those tend to be RAM hungry).
I would encourage you, clifgray, to investigate the above class on ML if this is a topic which interests you...