temp / app.py
Lokiiparihar's picture
Create app.py
f9c8d99 verified
import numpy as np
import pandas as pd
from flask import Flask, request, jsonify
import joblib
# Initialize Flask app
sales_prediction_api = Flask(__name__)
# 👇 REQUIRED for Hugging Face Gunicorn
application = sales_prediction_api
# Load models
dt_model = joblib.load("decision_tree_model.pkl")
xgb_model = joblib.load("xgboost_model.pkl")
# Home route
@sales_prediction_api.route("/")
def home():
return "✅ SuperKart Sales Prediction API is running"
# Prediction route
@sales_prediction_api.route("/predict", methods=["POST"])
def predict():
data = request.get_json()
# Model choice
model_choice = data.get("model", "dt")
# Extract features (MATCHES STREAMLIT KEYS)
sample = {
"Product_Weight": data["Product_Weight"],
"Product_Sugar_Content": data["Product_Sugar_Content"],
"Product_Allocated_Area": data["Product_Allocated_Area"],
"Product_Type": data["Product_Type"],
"Product_MRP": data["Product_MRP"],
"Store_Size": data["Store_Size"],
"Store_Location_City_Type": data["Store_Location_City_Type"],
"Store_Type": data["Store_Type"],
"Store_Age": data["Store_Age"]
}
sample_df = pd.DataFrame([sample])
# Select model
if model_choice == "dt":
prediction = dt_model.predict(sample_df)[0]
elif model_choice == "xgb":
prediction = xgb_model.predict(sample_df)[0]
else:
return jsonify({"error": "Invalid model choice"}), 400
return jsonify({
"Prediction": float(prediction),
"ModelUsed": model_choice
})
if __name__ == '__main__':
sales_prediction_api.run(debug=True)