1

我提供了一个 mlflow 模型,并以这种格式发送 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 格式的多个记录,而不是单个记录。有人可以指出我如何实现这一目标吗?

4

2 回答 2

2

这有效:

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}')
于 2021-02-18T05:48:17.153 回答
1
{
    "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)
于 2021-02-11T10:56:34.120 回答