JohnsonSAimlarge's picture
Upload folder using huggingface_hub
626919b verified
import numpy as np
import joblib
import pandas as pd
from flask import Flask, request, jsonify
sales_revenue_predictor_api = Flask("Superkart sales Revenue Predictor")
# Load trained model
model = joblib.load("Sales_revenue_prediction_model_v1_0.joblib")
# Define the expected columns (based on your dataset)
EXPECTED_COLUMNS = [
'Product_Id', 'Product_Weight', 'Product_Sugar_Content',
'Product_Allocated_Area', 'Product_Type', 'Product_MRP',
'Store_Id', 'Store_Establishment_Year', 'Store_Size',
'Store_Location_City_Type', 'Store_Type'
]
@sales_revenue_predictor_api.get('/')
def home():
return "Welcome to the SuperKart Sales Prediction API!"
@sales_revenue_predictor_api.post('/v1/sales')
def predict_sales():
sales_data = request.get_json()
# Manually build DataFrame with missing/default values
input_data = pd.DataFrame([sales_data])
# Add missing expected columns if any
missing_cols = set(EXPECTED_COLUMNS) - set(input_data.columns)
if missing_cols:
return jsonify({"error": f"columns are missing: {missing_cols}"}), 400
# Predict
prediction = model.predict(input_data)[0]
return jsonify({"Sales": round(float(prediction), 2)})
@sales_revenue_predictor_api.post('/v1/salesbatch')
def predict_sales_batch():
file = request.files['file']
input_data = pd.read_csv(file)
# Check for missing columns
missing_cols = set(EXPECTED_COLUMNS) - set(input_data.columns)
if missing_cols:
return jsonify({"error": f"columns are missing: {missing_cols}"}), 400
# Predict
predictions = model.predict(input_data).tolist()
predictions = [round(float(p), 2) for p in predictions]
# Use ID column or row index
ids = input_data['Product_Id'].tolist() if 'Product_Id' in input_data.columns else list(range(1, len(predictions) + 1))
return jsonify(dict(zip(ids, predictions)))
if __name__ == '__main__':
sales_revenue_predictor_api.run(debug=True)