pandas - 调用 sagemaker 端点时如何构造“text/csv”有效负载
问题描述
我的训练数据看起来像
df = pd.DataFrame({'A' : [2, 5], 'B' : [1, 7]})
我在 AWS Sagemaker 中训练了一个模型,并将模型部署在一个端点后面。端点接受负载为“text/csv”。
要使用 boto3 调用端点,您可以执行以下操作:
import boto3
client = boto3.client('sagemaker-runtime')
response = client.invoke_endpoint(
EndpointName="my-sagemaker-endpoint-name",
Body= my_payload_as_csv,
ContentType = 'text/csv')
如何从我的 Dataframe 构建有效负载“my_payload_as_csv”以正确调用 Sagemaker 端点?
解决方案
如果您从数据框示例开始
df = pd.DataFrame({'A' : [2, 5], 'B' : [1, 7]})
你排队
df_1_record = df[:1]
并转换df_1_record
为这样的csv:
import io
from io import StringIO
csv_file = io.StringIO()
# by default sagemaker expects comma seperated
df_1_record.to_csv(csv_file, sep=",", header=False, index=False)
my_payload_as_csv = csv_file.getvalue()
my_payload_as_csv
好像
'2,1\n'
然后您可以调用 sagemaker 端点
import boto3
client = boto3.client('sagemaker-runtime')
response = client.invoke_endpoint(
EndpointName="my-sagemaker-endpoint-name",
Body= my_payload_as_csv,
ContentType = 'text/csv')
推荐阅读
- java - FXMLLoader 中 loader.setLocation 中的路径错误
- nosql - 我们可以在 Couchbase 中拥有超过 1024 个节点吗?
- java - 来自 HTTPS 请求的 SSLException 通过 SOCKS 代理上的套接字
- c - 我无法解决此错误 [Error] cannot convert 'list**' to 'list*' for argument '1' to 'void remplire(list*)'
- python - 使用python登录Instagram但它给出了错误
- java - java.io.IOException: Permission denied 写入可移动 SD 卡时出错
- verilog - 如何解决这个“语法错误,意外'='”问题?
- javascript - 如何在一个 onClick(ReactJS) 中调用一个类和 setState
- python-3.x - Python理解表达式的优化
- mysql - 从每天的多个 where 条件中选择计数日期