DSexplorer
DSexplorer

Reputation: 365

Model testing on AWS sagemaker "could not convert string to float"

The XGboost model was trained on AWS sagemaker and deployed successfully but I keep getting the following error: ModelError: An error occurred (ModelError) when calling the InvokeEndpoint operation: Received client error (415) from model with message "could not convert string to float: ". Any thoughts?

Test data is as following:
      size       mean
269   5600.0  17.499633
103   1754.0   9.270272
160   4968.0  14.080601
40       4.0  17.500000
266  36308.0  11.421855

test_data_array = test_data.drop(['mean'], axis=1).as_matrix()
test_data_array = np.array([np.float32(x) for x in test_data_array])
xgb_predictor.content_type = 'text/csv'
xgb_predictor.serializer = csv_serializer

def predict(data, rows=32):
    split_array = np.array_split(data, int(data.shape[0] / float(rows) + 1))
    #print(split_array)
    predictions = ''

    for array in split_array:
        print(array[0], type(array[0]))
        predictions = ','.join([predictions, xgb_predictor.predict(array[0]).decode('utf-8')])

    return np.fromstring(predictions[1:], sep=',')

predictions = predict(test_data_array)

Upvotes: 3

Views: 2267

Answers (1)

Evan Zhuang
Evan Zhuang

Reputation: 106

SageMaker XGBoost cannot handle csv input with header. Please make sure the string header was removed before sending the data to the endpoint.

Also for csv prediction, SageMaker XGBoost assumes that CSV input does not have the label column. So please remove the label column in the input data as well.

Upvotes: 1

Related Questions