Puma optimizer (PO): a novel metaheuristic optimization algorithm and its application in machine learning