繁体   English   中英

Azure ML 时间序列预测 model 的数据输入格式(调用服务)部署为 web 服务(Python)

[英]Data input format (call the service) for Azure ML time series forecast model deployed as a web service (Python)

提前抱歉这个冗长的问题,因为我想尽可能详细地解释它。 我使用 Azure AutoML 来训练 model 并将其部署为 web 服务。 现在我可以通过 REST 端点访问(调用)它。

我有以下属性数据类型:日期(时间戳)、数字、数字、数字、数字、integer。 我使用以下参数训练了 model:

  • 时间戳间隔:15 分钟
  • Forecast Horizon:4(我需要每小时预测下一小时)
  • 目标滚动 window 大小:96(预测必须基于最近24小时的数据)

据我了解,基于上述内容,我必须向 model 提供最后 4 个条目以进行正确预测。 否则,将考虑时间间隔。 我对吗? 在这种情况下,我如何一次输入 4 个实例来进行单个预测? 以下示例是错误的,因为它要求为每个实例提供 4 个预测:

    import requests
    import json

    # URL for the web service
    scoring_uri = 'http://xxxxx-xxxxxxx-xxxxxx-xxxxxxx.xxxxx.azurecontainer.io/score'

    data = {"data":
            [
                [
                    2020-10-04 19:30:00,1.29281,1.29334,1.29334,1.29334,1
                ],
                [
                    2020-10-04 19:45:00,1.29334,1.29294,1.29294,1.29294,1
                ],
                [
                    2020-10-04 21:00:00,1.29294,1.29217,1.29334,1.29163,34
                ],
                [
                    2020-10-04 21:15:00,1.29217,1.29257,1.29301,1.29115,195]
            ]
            }
    # Convert to JSON string
    input_data = json.dumps(data)

    # Set the content type
    headers = {'Content-Type': 'application/json'}

    # Make the request and display the response
    resp = requests.post(scoring_uri, input_data, headers=headers)
    print(resp.text)

上述代码基于提供的 Microsoft 示例https://docs.microsoft.com/en-us/azure/machine-learning/how-to-consume-web-service?tabs=python#call-the-service-蟒蛇

我无法用我的数据复制提供的示例。 我有一个错误“语法错误:十进制 integer 文字中的前导零是不允许的;对八进制整数使用 0o 前缀”指向日期。 我假设,我需要指定数据类型但找不到如何。

我非常感谢任何帮助或指导。 谢谢你。

AlphaLu-0572 的回答解决了这个问题,将其添加为关闭问题的答案:

该服务以反序列化的 pandas 数据帧的形式获取数据。 在下面的示例中,它将如下所示:

import json

X_test = pd.DataFrame([

 ['2020-10-04 19:30:00', 1.29281, 1.29334, 1.29334, 1.29334, 1],
 ['2020-10-04 19:45:00', 1.29334, 1.29294, 1.29294, 1.29294, 1],
 ['2020-10-04 21:00:00', 1.29294, 1.29217, 1.29334, 1.29163, 34],
 ['2020-10-04 21:15:00', 1.29217, 1.29257, 1.29301, 1.29115, 195]],
 columns=['date', 'number_1', 'number_2', 'number_3', 'number_4', 'integer']

)

test_sample = json.dumps({'data': X_test.to_dict(orient='records')})

test_sample

这将导致 JSON 字符串为:

{"data": [{"date": "2020-10-04 19:30:00", "number_1": 1.29281, "number_2": 1.29334, "number_3": 1.29334, "number_4": 1.29334, "integer": 1}, {"date": "2020-10-04 19:45:00", "number_1": 1.29334, "number_2": 1.29294, "number_3": 1.29294, "number_4": 1.29294, "integer": 1}, {"date": "2020-10-04 21:00:00", "number_1": 1.29294, "number_2": 1.29217, "number_3": 1.29334, "number_4": 1.29163, "integer": 34}, {"date": "2020-10-04 21:15:00", "number_1": 1.29217, "number_2": 1.29257, "number_3": 1.29301, "number_4": 1.29115, "integer": 195}]}

请将列重命名为训练数据集中的相应列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM