|
from flask import Flask, request, jsonify
|
|
import joblib
|
|
import numpy as np
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
xgb = joblib.load("xgb_model.pkl")
|
|
rf = joblib.load("rf_model.pkl")
|
|
|
|
@app.route("/recommend", methods=["POST"])
|
|
def recommend():
|
|
data = request.get_json()
|
|
|
|
|
|
length = float(data["length"])
|
|
width = float(data["width"])
|
|
price = float(data["price"])
|
|
coverage = float(data["coverage"])
|
|
area_range = float(data["area_range"])
|
|
tile_type = data["tile_type"].lower()
|
|
|
|
|
|
tile_type_num = 0 if tile_type == "floor" else 1
|
|
tile_area = length * width
|
|
price_per_sqft = price / coverage
|
|
budget_eff = coverage / price
|
|
|
|
features = np.array([[tile_type_num, length, width, price, coverage,
|
|
area_range, tile_area, price_per_sqft, budget_eff]])
|
|
|
|
|
|
prob = (xgb.predict_proba(features)[0][1] + rf.predict_proba(features)[0][1]) / 2
|
|
result = "β
Recommended" if prob >= 0.5 else "β Not Recommended"
|
|
|
|
return jsonify({"result": result, "score": round(float(prob), 3)})
|
|
|
|
if __name__ == "__main__":
|
|
app.run(debug=True)
|
|
|