streamlit_app / steps /predictor.py
Sarathkumar1304ai's picture
all files
92b63f0 verified
raw
history blame
1.59 kB
import json
import numpy as np
import pandas as pd
from zenml import step
from zenml.integrations.mlflow.services import MLFlowDeploymentService
@step
def predictor(service: MLFlowDeploymentService, input_data: str) -> np.ndarray:
"""
Makes predictions using a deployed MLflow model service.
Args:
service (MLFlowDeploymentService): The MLflow deployment service to use for prediction.
input_data (str): A JSON string containing the input data for prediction.
Returns:
np.ndarray: The predicted output.
"""
service.start(timeout=60)
# Load input data as a JSON object
data = json.loads(input_data) # Use json.loads to parse the input string
# Remove unnecessary keys if they exist
data.pop("Columns", None)
data.pop("index", None)
expected_columns = [
'Age',
'Gender',
'Tenure',
'Usage Frequency',
'Support Calls',
'Payment Delay',
'Subscription Type',
'Contract Length',
'Total Spend',
'Last Interaction'
]
# Create a DataFrame from the provided data
df = pd.DataFrame(data['data'], columns=expected_columns)
# Convert DataFrame to the appropriate format for prediction
json_list = list(df.T.to_dict().values()) # Convert DataFrame to a list of dictionaries
data_array = np.array(json_list) # Convert list of dictionaries to a numpy array
# Make predictions using the deployed service
prediction = service.predict(data_array)
return prediction
#http://127.0.0.1:8000/invocations