Azure ML中部署的Prophet时序模型端点测试输入数据格式
解决Azure ML中MLflow部署的fbProphet端点测试格式问题
核心问题分析
你遇到的报错本质是输入格式未匹配MLflow对fbProphet模型的解析要求:fbProphet的predict()方法需要接收包含ds列的DataFrame,而Azure ML的MLflow端点对输入的JSON结构有特定规范,错误的格式会导致模型无法将输入转换为合法的DataFrame,进而触发索引或解析错误。
正确的输入格式示例
推荐格式(Split结构,MLflow默认兼容)
这种格式明确指定列名和对应数据,能被MLflow直接解析为DataFrame,是最可靠的方式:
{ "input_data": { "columns": ["ds"], "data": [ ["2023-04-01 22:00:00"], ["2023-04-01 23:00:00"] ] } }
可选格式(Records结构,需模型支持)
如果你的模型在训练/注册时,自定义了输入解析逻辑支持records格式,也可以使用以下结构(注意仅需ds字段,预测时不需要y值):
{ "input_data": { "data": [ {"ds": "2023-04-01 22:00:00"}, {"ds": "2023-04-01 23:00:00"} ] } }
之前错误的原因说明
- 第一种错误:直接将records数组传给
input_data,MLflow默认无法将其直接解析为DataFrame,导致模型尝试用非法索引访问数据,触发报错。 - 第二种错误:JSON语法错误——缺少闭合的
},导致端点无法解析请求体。 - 第三种错误:仅传递日期列表或嵌套列表,无法被解析为带
ds列的结构化DataFrame,模型无法识别输入格式,触发索引错误。
关键注意点
- 预测时不需要输入
y值,y是训练阶段的目标变量,预测仅需提供待预测的ds日期。 - 确保JSON格式完全合法,无语法错误(如括号、引号闭合)。
内容的提问来源于stack exchange,提问作者sasha
相关产品推荐
相关产品推荐

