|
|
import os |
|
|
from flask import Flask, request, jsonify |
|
|
import joblib |
|
|
import pandas as pd |
|
|
|
|
|
|
|
|
app = Flask(__name__) |
|
|
|
|
|
|
|
|
MODEL_DIR = "model_artifacts" |
|
|
MODEL_FILENAME = "best_sales_forecast_model.joblib" |
|
|
MODEL_PATH = os.path.join(MODEL_DIR, MODEL_FILENAME) |
|
|
|
|
|
|
|
|
try: |
|
|
model = joblib.load(MODEL_PATH) |
|
|
print(" Model loaded successfully!") |
|
|
except Exception as e: |
|
|
print(f" Error loading model: {e}") |
|
|
model = None |
|
|
|
|
|
|
|
|
@app.route("/", methods=["GET"]) |
|
|
def index(): |
|
|
return jsonify({"status": "Backend is running!"}) |
|
|
|
|
|
|
|
|
@app.route("/predict", methods=["POST"]) |
|
|
def predict(): |
|
|
if model is None: |
|
|
return jsonify({"error": "Model not loaded"}), 500 |
|
|
|
|
|
try: |
|
|
|
|
|
data = request.get_json(force=True) |
|
|
if not data: |
|
|
return jsonify({"error": "No input data provided"}), 400 |
|
|
|
|
|
|
|
|
df = pd.DataFrame(data) |
|
|
|
|
|
|
|
|
if "Product_Id" in df.columns: |
|
|
df = df.drop("Product_Id", axis=1) |
|
|
|
|
|
|
|
|
predictions = model.predict(df) |
|
|
|
|
|
return jsonify({"predictions": predictions.tolist()}) |
|
|
|
|
|
except Exception as e: |
|
|
return jsonify({"error": str(e)}), 400 |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
app.run(host="0.0.0.0", port=5000) |
|
|
|