|
from flask import Flask, request, jsonify |
|
import joblib |
|
import numpy as np |
|
|
|
app = Flask(__name__) |
|
|
|
|
|
xgb = joblib.load("xgb_model.json") |
|
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) |
|
|