omm7 commited on
Commit
3d1adcb
·
verified ·
1 Parent(s): 842688f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -13
app.py CHANGED
@@ -4,35 +4,45 @@ import joblib
4
  import pandas as pd
5
  import os
6
 
7
- # Load the model and preprocessor
8
- model = joblib.load('boston_housing_model.pkl')
9
- preprocessor = joblib.load('preprocessor.pkl')
10
-
11
  app = Flask(__name__)
12
- CORS(app) # Enable CORS for all routes
 
 
 
13
 
14
- # Health check route
15
  @app.route('/health', methods=['GET'])
16
- def health_check():
17
  return jsonify({"status": "ok", "message": "Backend is running"}), 200
18
 
19
- # Prediction route
 
 
 
 
 
 
 
20
  @app.route('/predict', methods=['POST'])
21
  def predict():
22
  try:
 
 
23
  data = request.json
24
- app.logger.info(f"📩 Received payload: {data}")
 
25
 
26
  df = pd.DataFrame(data, index=[0])
27
  processed_data = preprocessor.transform(df)
28
  prediction = model.predict(processed_data)
29
 
30
- app.logger.info(f" Prediction result: {prediction[0]}")
31
- return jsonify({'prediction': prediction[0]})
 
 
32
  except Exception as e:
33
- app.logger.error(f"❌ Error: {e}")
34
- return jsonify({'error': str(e)})
35
 
36
  if __name__ == '__main__':
37
  port = int(os.environ.get("PORT", 5000))
 
38
  app.run(host='0.0.0.0', port=port)
 
4
  import pandas as pd
5
  import os
6
 
 
 
 
 
7
  app = Flask(__name__)
8
+ CORS(app) # Enable CORS for all routes
9
+
10
+ model = None
11
+ preprocessor = None
12
 
 
13
  @app.route('/health', methods=['GET'])
14
+ def health():
15
  return jsonify({"status": "ok", "message": "Backend is running"}), 200
16
 
17
+ def load_model():
18
+ global model, preprocessor
19
+ if model is None or preprocessor is None:
20
+ print("📦 Loading model and preprocessor...")
21
+ model = joblib.load('boston_housing_model.pkl')
22
+ preprocessor = joblib.load('preprocessor.pkl')
23
+ print("✅ Model and preprocessor loaded successfully.")
24
+
25
  @app.route('/predict', methods=['POST'])
26
  def predict():
27
  try:
28
+ load_model() # Load model only when needed
29
+
30
  data = request.json
31
+ if not data:
32
+ return jsonify({'error': 'No input data provided'}), 400
33
 
34
  df = pd.DataFrame(data, index=[0])
35
  processed_data = preprocessor.transform(df)
36
  prediction = model.predict(processed_data)
37
 
38
+ print(f"📨 Received payload: {data}")
39
+ print(f"🔮 Prediction: {prediction[0]}")
40
+
41
+ return jsonify({'prediction': float(prediction[0])})
42
  except Exception as e:
43
+ return jsonify({'error': str(e)}), 500
 
44
 
45
  if __name__ == '__main__':
46
  port = int(os.environ.get("PORT", 5000))
47
+ print(f"🚀 Starting backend server on port {port}")
48
  app.run(host='0.0.0.0', port=port)