首页 > 解决方案 > Sagemaker 调用端点返回值类型?

问题描述

我有一个在 sagemaker 中使用 XGBoost 的分类器,但是尽管训练集在第一列(csv 文件,第一列被假定为 sagemaker xgboost 中的目标)中只有 1 和 0,但该算法返回一个小数。

前 3 条记录返回 1.08、0.34 和 0.91。我会假设概率,但 1.08?如果将这些四舍五入为 0 或 1,那么它们都是正确的,但为什么它返回非类值?

此外,该类仅包含一个预测方法 - 如果不使用您自己的模型,预测概率方法是不可能的吗?

调用它的代码是:

from flask import Flask
from flask import request
import boto3
from sagemaker.predictor import csv_serializer
import sagemaker

app = Flask(__name__)

@app.route("/")
def hello():
    numbers = request.args.get('numbers')

    #session
    boto_session = boto3.Session(profile_name="profilename",
                          region_name='regionname')

    #sagemaker session
    sagemaker_session = sagemaker.Session(boto_session=boto_session)

    #endpoint
    predictor = sagemaker.predictor.RealTimePredictor(endpoint="modelname", 
        sagemaker_session=sagemaker_session)
    predictor.content_type="text/csv"
    predictor.serializer=csv_serializer
    predictor.deserializer=None

    #result
    result=predictor.predict(numbers)
    result=result.decode("utf-8")
    return f'Output: {result}'

if __name__ == "__main__":
    app.run(debug=True, port=5000)

烧瓶部分工作正常,我可以在 127.0.0.1:5000 检索预测。

Sagemaker 版本 1.3.0。版本 1.9.0 不起作用 - 它需要 fcntrl ,它只是 mac/linux -在他们的 repo 上看到这个,显然它已在 pypi 上修复,但我已经尝试过,版本没有改变或解决问题,所以我坚持 1.3.0 直到他们解决它。1.3.0 版没有 predict_proba 方法。

标签: pythonmachine-learningflaskxgboostamazon-sagemaker

解决方案


推荐阅读