簡體   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