Spaces:
Running
Running
| from flask import Flask, render_template, request, jsonify | |
| import pandas as pd | |
| import joblib | |
| import os | |
| app = Flask(__name__) | |
| MODEL_PATH = os.environ.get("MODEL_PATH", "random_over_sampling_model.pkl") | |
| def load_model(): | |
| try: | |
| return joblib.load(MODEL_PATH) | |
| except FileNotFoundError: | |
| return None | |
| model = load_model() | |
| def preprocess_input(data): | |
| data['IMAGES_AND_REVIEWS'] = ((data['IMAGES'] > 0) & (data['REVIEWS'] > 0)).astype(int) | |
| data['SPECS_AND_REVIEWS'] = ((data['SPECS'] > 0) & (data['REVIEWS'] > 0)).astype(int) | |
| data['FAQ_AND_IMAGES'] = ((data['FAQ'] > 0) & (data['IMAGES'] > 0)).astype(int) | |
| data['WARRANTY_AND_SPECS'] = ((data['WARRANTY'] > 0) & (data['SPECS'] > 0)).astype(int) | |
| data['COMPARE_SIMILAR_AND_SPONSORED_LINKS'] = ((data['COMPARE_SIMILAR'] > 0) & (data['SPONSORED_LINKS'] > 0)).astype(int) | |
| return data | |
| def index(): | |
| return render_template("index.html") | |
| def predict(): | |
| if model is None: | |
| return jsonify({"error": "Model not loaded. Please ensure the model file exists."}), 500 | |
| try: | |
| body = request.get_json() | |
| features = [ | |
| "IMAGES", "REVIEWS", "FAQ", "SPECS", "SHIPPING", | |
| "BRO_TOGETHER", "COMPARE_SIMILAR", "VIEW_SIMILAR", | |
| "WARRANTY", "SPONSORED_LINKS" | |
| ] | |
| input_data = pd.DataFrame([{f: int(body.get(f, 0)) for f in features}]) | |
| processed = preprocess_input(input_data.copy()) | |
| prediction = int(model.predict(processed)[0]) | |
| probability = None | |
| if hasattr(model, "predict_proba"): | |
| proba = model.predict_proba(processed)[0] | |
| probability = float(proba[1]) if prediction == 1 else float(proba[0]) | |
| return jsonify({ | |
| "prediction": prediction, | |
| "probability": probability | |
| }) | |
| except Exception as e: | |
| return jsonify({"error": str(e)}), 500 | |
| if __name__ == "__main__": | |
| port = int(os.environ.get("PORT", 7860)) | |
| app.run(host="0.0.0.0", port=port) |