swagger.json示例预测模型的json似乎不返回预测

时间:2019-10-14 13:01:11

标签: python azure-machine-learning-service

当尝试使用Azure ML Service为预测模型进行预测时,swagger.json包含以下输入架构:

"example": {"data": [{"date": "2019-08-30T00:00:00.000Z", "y_query": 1.0}]}

但是,当我将其作为输入生成预测时,收到以下错误:

data= {"data": [{"date": "2019-08-30T00:00:00.000Z", "y_query": 1 }]}
# Convert to JSON string
input_data = json.dumps(data)

# Set the content type
headers = {'Content-Type': 'application/json'}
# If authentication is enabled, set the authorization header
#headers['Authorization'] = f'Bearer {key}'

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

"{\"error\": \"DataException:\\n\\tMessage: y values are present for each date. Nothing to forecast.\\n\\tInnerException None\\n\\tErrorResponse \\n{\\n    \\\"error\\\": {\\n        \\\"code\\\": \\\"UserError\\\",\\n        \\\"inner_error\\\": {\\n            \\\"code\\\": \\\"InvalidData\\\"\\n        },\\n        \\\"message\\\": \\\"y values are present for each date. Nothing to forecast.\\\"\\n    }\\n}\"}"

我尝试不传递y值,这会导致“预期的两个轴得到1”并传递0作为y_query。任何有关如何使用此方法进行预测的指导将不胜感激。

有关Web服务的文档位于:https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-consume-web-service

2 个答案:

答案 0 :(得分:1)

尝试使用nan作为y_query的值。并确保日期是训练集中使用的时间单位之后的下一个时间单位。

答案 1 :(得分:0)

以下提交np.nan的方法对y_query有用。

input_sample = pd.DataFrame(data=[{'Feature1_text': 'text1', 'Feature2_int': 0, 'Feature3_double': 2.0, 'DateHour': '2019-11-12T04:00:00.000Z', 'y_query': np.nan}])
run(input_sample)

如前所述,请确保输入的日期时间是训练中最后一个日期之后的时间,否则会出现以下错误。

  

输入预测数据X_pred或输入Forecast_destination包含   日期早于训练数据中的最新日期。请删除   日期时间在训练日期范围内的预测行或进行调整   预测目的地的日期。