Spaces:
Runtime error
Runtime error
| from flask import Flask, request, jsonify | |
| import pandas as pd | |
| import joblib | |
| import logging | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| app = Flask(__name__) | |
| try: | |
| model = joblib.load('model.joblib') | |
| columns = joblib.load('columns.joblib') | |
| logger.info("Model and columns loaded successfully in hosting script.") | |
| except Exception as e: | |
| logger.error(f"Failed to load model or columns: {e}") | |
| raise | |
| def index(): | |
| logger.info("Root endpoint called.") | |
| return jsonify({'status': 'ok'}) | |
| def health(): | |
| logger.info("Health check endpoint called.") | |
| return jsonify({'status': 'healthy'}) | |
| def predict(): | |
| try: | |
| logger.info("Predict endpoint called with data: %s", request.get_json(force=True)) | |
| data = request.get_json(force=True) | |
| input_df = pd.DataFrame(data) | |
| categorical_columns = ['Occupation', 'Gender', 'ProductPitched', 'MaritalStatus', 'Designation'] | |
| input_encoded = pd.get_dummies(input_df, columns=categorical_columns, drop_first=True) | |
| input_encoded = input_encoded.reindex(columns=columns, fill_value=0) | |
| prediction = model.predict(input_encoded) | |
| logger.info("Prediction made: %s", prediction.tolist()) | |
| return jsonify({'prediction': prediction.tolist()}) | |
| except Exception as e: | |
| logger.error(f"Prediction failed: %s", str(e)) | |
| return jsonify({'error': str(e)}), 400 | |
| # Do not call app.run(); waitress will serve it via Docker CMD | |