Machine Learning-Driven Adaptive OpenMP For Portable Performance on Heterogeneous Systems