supravab's picture
Upload folder using huggingface_hub
6c640e6 verified
from flask import Flask, request, jsonify
import joblib
import numpy as np
import pandas as pd
# Initialize Flask app
store_sales_predictor_api = Flask("Super Kart Store Sales Predictor Application")
# Load the trained model
try:
superkart_model = joblib.load("superkart_storesales_prediction_model_v1_0.joblib")
print("Model loaded successfully.")
except FileNotFoundError:
print("Error: 'superkart_storesales_prediction_model_v1_0.joblib' not found. Please train and save the model first.")
superkart_model = None
# Define home page for app
@store_sales_predictor_api.get('/')
def home():
return "Welcome to Super Kart Store Sales Predictor Application",200
# Health check endpoint
@store_sales_predictor_api.get('/healthcheck')
def health_check():
"""
Returns a 200 status code and a JSON response to indicate the service is healthy.
"""
return jsonify({"status": "healthy"}), 200
# Define prediction form page for app
@store_sales_predictor_api.post('/v1/predict')
def predict_sales_price():
"""
Handles prediction requests.
Expects a JSON payload with 'features'.
"""
try:
# Get data from the POST request
payload = request.get_json()
# Extract Relevant Features from Payload
app_features = {
"Product_Weight": payload["Product_Weight"],
"Product_Sugar_Content": payload["Product_Sugar_Content"],
"Product_Allocated_Area": payload["Product_Allocated_Area"],
"Product_Type": payload["Product_Type"],
"Product_MRP": payload["Product_MRP"],
"Store_Establishment_Year": payload["Store_Establishment_Year"],
"Store_Location_City_Type": payload["Store_Location_City_Type"],
"Store_Id": payload["Store_Id"],
"Store_Type": payload["Store_Type"],
"Store_Size": payload["Store_Size"]}
# store app_features in dataframe
input_data = pd.DataFrame([app_features])
# Make prediction and get store sales
predicted_sales = superkart_model.predict(input_data)[0]
# calculate actual value
#predicted_sales_value = np.exp(predicted_sales)
# convert value to python float
predicted_sales_value = round(float(predicted_sales),2)
return jsonify({"predicted store sales total": predicted_sales_value}), 200
except Exception as e:
return jsonify({"error": str(e)}), 500
# Run the Flask app in debug mode
if __name__ == '__main__':
app.run(debug=True)