So I'm trying to use the models that I have created using autopilot in SageMaker Studio but I keep getting different errors. Ultimately I want it to be simple; take a dataframe and predict an output using that dataframe (pandas obviously). Here's what I have so far followed by the errors that I am getting.
import sagemaker, boto3, os
bucket = sagemaker.Session().default_bucket()
model = sagemaker.predictor.Predictor('Predict-Low', sagemaker_session=sagemaker.Session())
df = pd.read_csv('s3://sagemaker-studio-xxx/Sagemaker Data Predict Low.csv')
y = df['Low']
del df['Low']
y_hat = model.predict(df)
---------------------------------------------------------------------------
ParamValidationError Traceback (most recent call last)
<ipython-input-43-18ff980cf441> in <module>
----> 1 y_hat = model.predict(df)
/opt/conda/lib/python3.7/site-packages/sagemaker/predictor.py in predict(self, data, initial_args, target_model, target_variant, inference_id)
134 data, initial_args, target_model, target_variant, inference_id
135 )
--> 136 response = self.sagemaker_session.sagemaker_runtime_client.invoke_endpoint(**request_args)
137 return self._handle_response(response)
138
/opt/conda/lib/python3.7/site-packages/botocore/client.py in _api_call(self, *args, **kwargs)
384 "%s() only accepts keyword arguments." % py_operation_name)
385 # The "self" in this scope is referring to the BaseClient.
--> 386 return self._make_api_call(operation_name, kwargs)
387
388 _api_call.__name__ = str(py_operation_name)
/opt/conda/lib/python3.7/site-packages/botocore/client.py in _make_api_call(self, operation_name, api_params)
676 }
677 request_dict = self._convert_to_request_dict(
--> 678 api_params, operation_model, context=request_context)
679
680 service_id = self._service_model.service_id.hyphenize()
/opt/conda/lib/python3.7/site-packages/botocore/client.py in _convert_to_request_dict(self, api_params, operation_model, context)
724 api_params, operation_model, context)
725 request_dict = self._serializer.serialize_to_request(
--> 726 api_params, operation_model)
727 if not self._client_config.inject_host_prefix:
728 request_dict.pop('host_prefix', None)
/opt/conda/lib/python3.7/site-packages/botocore/validate.py in serialize_to_request(self, parameters, operation_model)
317 operation_model.input_shape)
318 if report.has_errors():
--> 319 raise ParamValidationError(report=report.generate_report())
320 return self._serializer.serialize_to_request(parameters,
321 operation_model)
ParamValidationError: Parameter validation failed:
Invalid type for parameter Body
To me it seems like it wants a string of bytes to do the prediction, so that's what I did. I converted the dataframe to a string of bytes and still got an error. Anyone know what I'm doing wrong?
By the way this is all being done in SageMaker Studio. Here is the data.
Date Company High Low Open Close Volume Adj Close \
0 7/13/2020 LIFE 4.380 3.880 4.21 3.88 62400 3.88
1 7/14/2020 LIFE 4.210 3.721 3.95 4.16 80800 4.16
2 7/15/2020 LIFE 4.550 4.053 4.17 4.50 212500 4.50
3 7/16/2020 LIFE 4.550 4.350 4.40 4.51 44600 4.51
4 7/17/2020 LIFE 5.170 4.410 4.54 5.09 257700 5.09
.. ... ... ... ... ... ... ... ...
255 7/16/2021 LIFE 4.590 4.440 4.46 4.50 156300 4.50
256 7/19/2021 LIFE 4.490 4.220 4.36 4.22 211700 4.22
257 7/20/2021 LIFE 4.546 4.230 4.23 4.47 212500 4.47
258 7/21/2021 LIFE 4.800 4.369 4.45 4.48 487500 4.48
259 7/22/2021 LIFE 4.510 4.260 4.44 4.45 235200 4.45
Sector Specifics \
0 Health Care Biotechnology: Biological Products (No Diagnos...
1 Health Care Biotechnology: Biological Products (No Diagnos...
2 Health Care Biotechnology: Biological Products (No Diagnos...
3 Health Care Biotechnology: Biological Products (No Diagnos...
4 Health Care Biotechnology: Biological Products (No Diagnos...
.. ... ...
255 Health Care Biotechnology: Biological Products (No Diagnos...
256 Health Care Biotechnology: Biological Products (No Diagnos...
257 Health Care Biotechnology: Biological Products (No Diagnos...
258 Health Care Biotechnology: Biological Products (No Diagnos...
259 Health Care Biotechnology: Biological Products (No Diagnos...
Open Difference from Yesterday Yesterday Open to Low \
0 0.00 0.000
1 -0.26 0.330
2 0.22 0.229
3 0.23 0.117
4 0.14 0.050
.. ... ...
255 0.01 0.080
256 -0.10 0.020
257 -0.13 0.140
258 0.22 0.000
259 -0.01 0.081
Yesterday Open to High Yesterday Open to Adj Close
0 0.000 0.00
1 0.170 -0.33
2 0.260 0.21
3 0.380 0.33
4 0.150 0.11
.. ... ...
255 0.100 0.00
256 0.130 0.04
257 0.130 -0.14
258 0.316 0.24
259 0.350 0.03