[英]send post request using curl to mlflow api to multiple records
我提供了一個 mlflow model 並以這種格式發送 POST 請求:
curl -X POST -H "Content-Type:application/json; format=pandas-split"
--data '{"columns":["alcohol", "chlorides", "citric acid", "density",
"fixed acidity", "free sulfur dioxide", "pH", "residual sugar", "sulphates",
"total sulfur dioxide", "volatile acidity"],"data":[[12.8, 0.029, 0.48, 0.98,
6.2, 29, 3.33, 1.2, 0.39, 75, 0.66]]}'
http://127.0.0.1:1234/invocations
它正在得分。 但是,對於我的特定項目,用於評分的 rest api 的輸入將始終是 dataframe/csv 格式的多個記錄,而不是單個記錄。 有人可以指出我如何實現這一目標嗎?
{
"columns": [
"alcohol",
"chlorides",
"citric acid",
"density",
"fixed acidity",
"free sulfur dioxide",
"pH",
"residual sugar",
"sulphates",
"total sulfur dioxide",
"volatile acidity"
],
"index": [
0,
1
],
"data": [
[
12.8,
0.029,
0.48,
0.98,
6.2,
29.0,
3.33,
1.2,
0.39,
75.0,
0.66
],
[
12.8,
0.029,
0.48,
0.98,
6.2,
29.0,
3.33,
1.2,
0.39,
75.0,
0.66
]
]
}
要生成 json,請使用 pandas:
import pandas as pd
columns = ["alcohol", "chlorides", "citric acid", "density",
"fixed acidity", "free sulfur dioxide", "pH", "residual sugar", "sulphates",
"total sulfur dioxide", "volatile acidity"]
data = [[12.8, 0.029, 0.48, 0.98,
6.2, 29, 3.33, 1.2, 0.39, 75, 0.66], [12.8, 0.029, 0.48, 0.98,
6.2, 29, 3.33, 1.2, 0.39, 75, 0.66]]
df = pd.DataFrame(data, columns=columns)
json = df.to_json(orient="split")
print(json)
這有效:
import requests
host = 'localhost'
port = '8001'
url = f'http://{host}:{port}/invocations'
headers = {'Content-Type': 'application/json',}
http_data = test_df.to_json(orient='split')
r = requests.post(url=url, headers=headers, data=http_data)
print(f'Predictions: {r.text}')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.