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