You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS SageMaker调用Endpoint报错:无法将字符串转换为float类型问题排查

问题解决方法

直接报错原因

你当前的请求载荷中包含了CSV表头行,第一行的值为Year这类字符串,XGBoost推理容器默认会将所有输入解析为浮点型数值,因此触发转换失败报错。

根本原因

SageMaker内置XGBoost的算法模式推理容器,原生不支持直接传入字符串类型的分类特征,要求所有输入特征必须提前转换为数值类型。

具体修复步骤

  • 移除请求载荷中的CSV表头,保证载荷仅包含特征值行,不要保留列名行
  • 所有分类特征提前做数值编码:训练阶段就用LabelEncoder、独热编码等方式将Area这类字符串分类特征转换为数值,推理阶段用训练时拟合好的编码器对输入的分类值做相同转换,不要直接传入字符串到端点
  • 保证推理输入的特征顺序和训练数据集的特征顺序完全一致,内置容器不会自动对齐列名,只会按传入顺序解析特征
  • 简化载荷构造逻辑,避免多余格式问题:
# 第一步:先对分类特征做编码,area_encoder是训练阶段拟合好的编码器
df['Area'] = area_encoder.transform(df['Area'])
# 第二步:直接生成不带表头、不带索引的csv格式载荷
payload = df.to_csv(header=False, index=False).strip()
# 调用端点
response = runtime_client.invoke_endpoint(
    EndpointName=endpoint_name, 
    ContentType="text/csv", 
    Body=payload
)

如果需要直接传入带字符串特征的请求,可以将部署方式改为XGBoost自定义脚本模式,自己在推理的input_fn函数中实现字符串特征的编码逻辑,再喂给模型做预测。

内容的提问来源于stack exchange,提问作者kms

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:54:06