我有一个在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)-请参见this on their repo,显然它已在pypi上修复,但我已经尝试过,该版本未更改或解决了问题,所以我m坚持使用1.3.0,直到他们解决为止。 1.3.0版没有预言方法。