Vertex AI端点CatBoost预测报错:ValueError: Unable to coerce value
Vertex AI CatBoost回归模型预测ValueError问题解决
在Vertex AI部署CatBoost回归模型后,执行预测时触发ValueError: Unable to coerce value错误,相关代码及报错信息如下:
原预测代码
sample = [[2.0200e+03, 4.5000e+01, -2.6090e+01, -2.4440e+01, 3.8000e+01, 2.0201e+05]] # get prediction response = endpoint.predict(sample) y_pred = response.predictions[0][0] print('API response: ', response) print('Predicted Value: ', y_pred)
报错信息
ValueError: Unable to coerce value: array([ 2.0200e+03, 4.5000e+01, -2.6090e+01, -2.4440e+01, 3.8000e+01, 2.0201e+05])
问题原因与解决方法
这个错误核心是输入格式不符合Vertex AI预测服务或CatBoost模型的要求,以下是针对性解决步骤:
- 改用特征名映射的字典输入:Vertex AI的预测接口更适配带特征名的字典结构,尤其是CatBoost模型训练时若定义了特征名,必须保持一致。示例代码:
# 替换为你训练时实际使用的特征名称 sample = [ { "feature_1": 2020.0, "feature_2": 45.0, "feature_3": -26.09, "feature_4": -24.44, "feature_5": 38.0, "feature_6": 202010.0 } ] response = endpoint.predict(instances=sample) y_pred = response.predictions[0] - 统一数据类型:确保输入数据类型与训练集完全匹配,比如训练时用的是
float64,输入就不要用科学计数法的数值,直接转换为普通浮点数或整数,避免类型解析异常。 - 检查模型部署配置:确认部署时使用的容器支持CatBoost模型的输入解析,若用自定义容器,需确保代码能正确处理输入的JSON格式,将其转换为CatBoost可识别的特征数组。
- 验证输入结构完整性:如果模型要求多实例输入,确保每个实例的特征数量、顺序(若用数组输入)与训练时一致,数组输入时需注意通过
instances参数传递:response = endpoint.predict(instances=sample)
内容的提问来源于stack exchange,提问作者Nurlybek Amangeldiuly
相关产品推荐
相关产品推荐

