Machine Learning for Adaptive Many-Core Machines - A Practical Approach