我正在构建多个 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 中创建一个内部函数,该函数使用每次运行的数据。这有意义吗?