superkart-api / app.py
siaese's picture
Upload folder using huggingface_hub
c4b89b9 verified
# import numpy as np
# import joblib
# import pandas as pd
# from flask import Flask, request, jsonify
# # Initialize the Flask app with a custom name
# super_kart_predictor_api = Flask("Super Kart Sales Predictor")
# # Load the trained model from the specified path
# # Make sure model_path variable is defined or replace with the actual path string
# model = joblib.load(model_path)
# # Define a route for the home page (GET request)
# @super_kart_predictor_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 the Super Kart Sales Predictor API!"
# # Define a route for predictions (POST request)
# @super_kart_predictor_api.post("/v1/sales")
# def predict_sales():
# """
# This function handles POST requests to the /v1/sales endpoint.
# It expects a JSON payload containing commodity sales details and returns
# the predicted sales as a JSON response
# """
# # Get JSON data from the POST request
# superkart_data = request.get_json
# print(superkart_data)
# # Extract relevant features from the JSON payload into a dictionary
# sample = {
# 'Product_Weight': superkart_data['Product_Weight'],
# 'Product_Allocated_Area': superkart_data['Product_Allocated_Area'],
# 'Product_MRP': superkart_data['Product_MRP'],
# 'Store_Tenure': superkart_data['Store_Tenure'],
# 'Product_Category': superkart_data['Product_Category'],
# 'Product_Sugar_Content': superkart_data['Product_Sugar_Content'],
# 'Product_Type': superkart_data['Product_Type'],
# 'Store_Id': superkart_data['Store_Id'],
# 'Store_Size': superkart_data['Store_Size'],
# 'Store_Location_City_Type': superkart_data['Store_Location_City_Type'],
# 'Store_Type': superkart_data['Store_Type'],
# 'Perishability': superkart_data['Perishability']
# }
# # Create a DataFrame from the input dictionary for model compatibility
# input_data = pd.DataFrame([sample])
# # Predict sales price using the loaded model
# predicted_sales_price = model.predict(input_data)[0]
# # Convert predicted sales price back from log scale using exponential
# predicted_sales = np.exp(predicted_sales_price)
# # Convert the prediction to a float type with rounding to 2 decimal places
# predicted_sales = float(predicted_sales, 2)
# # Return the prediction as a JSON response
# return jsonify({"predicted_sales_price": predicted_sales})
import numpy as np
import joblib
import pandas as pd
from flask import Flask, request, jsonify
# Initialize the Flask app with a custom name
super_kart_predictor_api = Flask("Super Kart Sales Predictor")
# Load the trained model from the specified path
# Make sure model_path variable is defined or replace with the actual path string
model_path = "super_kart_prediction_gbr_tuned_model_v1_0.joblib"
model = joblib.load(model_path)
# Define a route for the home page (GET request)
@super_kart_predictor_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 the Super Kart Sales Predictor API!"
# Define a route for predictions (POST request)
@super_kart_predictor_api.post("/v1/sales")
def predict_sales():
"""
This function handles POST requests to the /v1/sales endpoint.
It expects a JSON payload containing commodity sales details and returns
the predicted sales as a JSON response
"""
# Get JSON data from the POST request
superkart_data = request.get_json()
print(f"\nIncoming request data: \n{superkart_data}\n")
# Extract relevant features from the JSON payload into a dictionary
sample = {
'Product_Weight': superkart_data['Product_Weight'],
'Product_Allocated_Area': superkart_data['Product_Allocated_Area'],
'Product_MRP': superkart_data['Product_MRP'],
'Product_Sugar_Content': superkart_data['Product_Sugar_Content'],
'Product_Type': superkart_data['Product_Type'],
'Product_Category': superkart_data['Product_Category'],
'Store_Id': superkart_data['Store_Id'],
'Store_Establishment_Year': superkart_data['Store_Establishment_Year'],
'Store_Size': superkart_data['Store_Size'],
'Store_Location_City_Type': superkart_data['Store_Location_City_Type'],
'Store_Type': superkart_data['Store_Type'],
'Store_Tenure': superkart_data['Store_Tenure'],
'Perishability': superkart_data['Perishability'],
}
# Create a DataFrame from the input dictionary for model compatibility
input_data = pd.DataFrame([sample])
# Predict sales price using the loaded model
predicted_sales_price = model.predict(input_data)[0]
# Convert the prediction to a float type with rounding to 3 decimal places
predicted_sales = round(predicted_sales_price, 3)
print(f"\nPredicted Sales Price: {predicted_sales}\n")
# Return the prediction as a JSON response
return jsonify({"predicted_sales_price": predicted_sales})
# if __name__ == '__main__':
# super_kart_predictor_api.run()