让我解释一下我的问题:
我必须更新使用版本1的笔记本的代码。从已在aws sagemaker中生成的xgboost端点进行批量预测。在定义了一个名为ordered_data的数据框架之后,当尝试运行以下命令时:
def batch_predict(data, xgb_predictor, rows=500):
split_array = np.array_split(data, int(data.shape[0] / float(rows) + 1))
predicates = ''
for array in split_array:
new_predictions = xgb_predictor.predictor.predict(array).decode('utf-8').
predictions = predictions + 'n' + predictions_new
predictions = predictions.replace('n', ',')
predictions = predictions.replace(',,', ',')
return np.fromstring(predictions[1:], sep=',')
def get_predictions(sorted_data, xgb_predictor):
xgb_predictor.content_type = 'text/csv'.
xgb_predictor.serializer = csv_serializer
xgb_predictor.deserializer = None
#predictions = batch_predict(ordered_data.as_matrix(), xgb_predictor) # get the scores for each piece of data
predictions = batch_predict(ordered_data.values, xgb_predictor)
predictions = pd.DataFrame(predictions, columns=['score'])
return predictions
xgb_predictor = sagemaker.predictor.RealTimePredictor(endpoint_name='sagemaker-xgboost-2023-01-18')
predictions = get_predictions(sorted_data, xgb_predictor)
predictions2 = pd.concat([predictions, raw_data[[['order_id']]]], axis=1).
我已经检查了sagemaker v2的文档,并尝试更新许多东西,并且我也运行了代码!——输出文件file2.ipynb
我得到几个错误,像:deprecated_class对象的"content_type"属性DeprecatedClass'没有setter。如果我删除我定义content_type的行,我得到:AttributeError: 'NoneType'对象没有属性'ACCEPT'。等等......我需要更新所有这些代码,但我不知道如何。
SageMaker RealTimePredictor类在Python SDK V2中有序列化器和反序列化器参数,输入数据的序列化和结果数据的反序列化行为可以通过初始化器参数配置。
注意:csv_serializer、json_serializer、npy_serializer、csv_deserializer、json_deserializer和numpy_deserializer对象在v2中已被弃用
serializer=CSVSerializer(),
deserializer=JSONDeserializer()