from flask import Flask, request, jsonify from flask_cors import CORS import joblib import pandas as pd import os app = Flask(__name__) CORS(app) # Enable CORS for all routes model = None preprocessor = None @app.route('/health', methods=['GET']) def health(): return jsonify({"status": "ok", "message": "Backend is running"}), 200 def load_model(): global model, preprocessor if model is None or preprocessor is None: print("📦 Loading model and preprocessor...") model = joblib.load('boston_housing_model.pkl') preprocessor = joblib.load('preprocessor.pkl') print("✅ Model and preprocessor loaded successfully.") @app.route('/predict', methods=['POST']) def predict(): try: load_model() # Load model only when needed data = request.json if not data: return jsonify({'error': 'No input data provided'}), 400 df = pd.DataFrame(data, index=[0]) processed_data = preprocessor.transform(df) prediction = model.predict(processed_data) print(f"📨 Received payload: {data}") print(f"🔮 Prediction: {prediction[0]}") return jsonify({'prediction': float(prediction[0])}) except Exception as e: return jsonify({'error': str(e)}), 500 if __name__ == '__main__': port = int(os.environ.get("PORT", 5000)) print(f"🚀 Starting backend server on port {port}") app.run(host='0.0.0.0', port=port)