omm7 commited on
Commit
b7ea445
·
1 Parent(s): a617cf6

Fresh backend setup with Flask, Docker, and correct API

Browse files
Files changed (3) hide show
  1. Dockerfile +2 -7
  2. app.py +21 -11
  3. requirements.txt +2 -3
Dockerfile CHANGED
@@ -1,11 +1,6 @@
1
- FROM python:3.11-slim
2
 
 
3
  WORKDIR /app
4
-
5
  COPY . .
6
-
7
- RUN pip install --no-cache-dir -r requirements.txt
8
-
9
- EXPOSE 7860
10
-
11
  CMD ["python", "app.py"]
 
 
1
 
2
+ FROM python:3.9-slim
3
  WORKDIR /app
 
4
  COPY . .
5
+ RUN pip install -r requirements.txt
 
 
 
 
6
  CMD ["python", "app.py"]
app.py CHANGED
@@ -1,21 +1,31 @@
1
- from flask import Flask, jsonify
2
- import xgboost as xgb
3
- import pandas as pd
4
  import numpy as np
5
 
6
  app = Flask(__name__)
7
 
8
  # Load model
9
- model = xgb.XGBRegressor()
10
- model.load_model("model/xgb_superkart_model.pkl")
 
 
 
 
11
 
12
- # Load test data
13
- X_test = pd.read_csv("data/X_test.csv")
 
 
 
 
 
14
 
15
- @app.route("/predict", methods=["GET"])
16
- def get_forecast():
17
- preds = model.predict(X_test)
18
- return jsonify({"forecast": np.round(preds[:5], 2).tolist()})
 
19
 
20
  if __name__ == "__main__":
21
  app.run(host="0.0.0.0", port=7860)
 
1
+
2
+ from flask import Flask, request, jsonify
3
+ import pickle
4
  import numpy as np
5
 
6
  app = Flask(__name__)
7
 
8
  # Load model
9
+ with open("model/xgb_superkart_model.pkl", "rb") as f:
10
+ model = pickle.load(f)
11
+
12
+ @app.route("/", methods=["GET"])
13
+ def root():
14
+ return jsonify({"message": "SuperKart Backend is live!"})
15
 
16
+ @app.route("/predict", methods=["POST"])
17
+ def predict():
18
+ try:
19
+ content = request.json
20
+ data = content.get("data")
21
+ if not data or not isinstance(data, list):
22
+ return jsonify({"error": "Invalid input format. Expecting { 'data': [[...]] }"}), 400
23
 
24
+ arr = np.array(data)
25
+ preds = model.predict(arr)
26
+ return jsonify({"prediction": preds.tolist()})
27
+ except Exception as e:
28
+ return jsonify({"error": str(e)}), 500
29
 
30
  if __name__ == "__main__":
31
  app.run(host="0.0.0.0", port=7860)
requirements.txt CHANGED
@@ -1,5 +1,4 @@
1
  flask
2
- pandas
3
- xgboost
4
  numpy
5
- scikit-learn
 
 
1
  flask
 
 
2
  numpy
3
+ scikit-learn
4
+ xgboost