Я строю несколько моделей Prophet, где каждая модель передается в функцию pandas_udf, которая обучает модель и сохраняет результаты с MLflow.
@pandas_udf(result_schema, PandasUDFType.GROUPED_MAP)
def forecast(data):
......
with mlflow.start_run() as run:
......
Затем я вызываю этот UDF, который обучает модель для каждого KPI.
df.groupBy('KPI').apply(forecast)
Идея состоит в том, что для каждого KPI модель будет обучаться с несколькими гиперпараметрами и сохранять лучшие параметры для каждой модели в MLflow. Я хотел бы использовать Hyperopt, чтобы сделать поиск более эффективным.
В этом случае, где я должен разместить целевую функцию? Поскольку данные передаются в UDF для каждой модели, я подумал о создании внутренней функции в UDF, которая использует данные для каждого прогона. Имеет ли это смысл?