# Import necessary libraries import numpy as np import joblib # For loading the serialized model import pandas as pd # For data manipulation from flask import Flask, request, jsonify # For creating the Flask API # Initialize Flask app with a name nozzleselect_api = Flask("ABMs Nozzle Selection") #define the name of the app # Load the trained prediction model model = joblib.load("nozzle_selection_model.joblib") #define the location of the serialized model # Define a route for the home page @nozzleselect_api.get('/') def home(): """ This function handles GET requests to the root URL ('/') of the API. It returns a simple welcome message. """ return "Welcome to ABM's Nozzle Select Predictor API!" #define a welcome message # Define an endpoint to predict churn for a single customer @nozzleselect_api.post('/v1/predict') def predict_nozzle(): """ This function handles POST requests to the '/v1/predict' endpoint. It expects a JSON payload containing property details and returns the predicted sales outcome price as a JSON response. """ # Get JSON data from the request data = request.get_json() # Extract relevant product ans store features from the input data. The order of the column names matters. sample = { 'nozzle': data['nozzle'], 'cg': data['cg'], 'cg_fw': data['cg_fw'], # 'Decide': data['Decide'] } # Convert the extracted data into a DataFrame input_data = pd.DataFrame([sample]) # Make a sales prediction using the trained model prediction = model.predict(input_data).tolist()[0] # Return the prediction as a JSON response return jsonify({'Nozzle_Pressure': prediction}) """ # Define an endpoint for batch prediction (POST request) @nozzleselect_api.post('/v1/predictbatch') def predict_nozzle_batch(): This function handles POST requests to the '/v1/predictbatch' endpoint. It expects a CSV file containing property details for multiple properties and returns the predicted rental prices as a dictionary in the JSON response. # Get the uploaded CSV file from the request file = request.files['file'] # Read the CSV file into a Pandas DataFrame input_data = pd.read_csv(file) # Make predictions for all properties in the DataFrame predicted_nozzle = model.predict(input_data).tolist() # Return the prediction as a JSON response return jsonify({'nozzle': predicted_nozzle}) """ # Run the Flask app in debug mode if __name__ == '__main__': nozzleselect_api.run(debug=True)