ManavDhayeCoder's picture
Flask_files
8753927 verified
Raw
History Blame Contribute Delete
1.72 kB
from flask import Flask, render_template, request, jsonify
import numpy as np
import pickle
import math
from custom_data import CustomData,PredictPipeline
app = Flask(__name__)
df = pickle.load(open("df.pkl", "rb"))
@app.route("/")
def index():
return render_template(
"index.html",
company=df["Company"].unique(),
typename=df["TypeName"].unique(),
cpu=df["CPU_brand"].unique(),
gpu=df["Gpu_brand"].unique(),
os=df["os"].unique()
)
@app.route("/predict", methods=["POST"])
def predict():
data = request.get_json()
# Extract data
company = data["company"]
typename = data["typename"]
ram = int(data["ram"])
weight = float(data["weight"])
screen_size = float(data["screen_size"])
touchscreen = 1 if data["touchscreen"] == "yes" else 0
ips = 1 if data["ips"] == "yes" else 0
res = data["resolution"]
x_res = int(res.split("x")[0])
y_res = int(res.split("x")[1])
ppi = (((x_res ** 2) + (y_res ** 2)) ** 0.5) / screen_size
cpu = data["cpu"]
gpu = data["gpu"]
os = data["os"]
hdd = int(data["hdd"])
ssd = int(data["ssd"])
custom_data=CustomData(company,typename,ram,weight,touchscreen,ips,ppi,cpu,gpu,os,hdd,ssd)
custom_data_dataframe=custom_data.get_data_as_dataframe()
predict_pileline=PredictPipeline()
print(custom_data_dataframe)
output=predict_pileline.predict(custom_data_dataframe)
print(output)
# output_n = math.floor(np.exp(output[0]))
# print(output_n)
return jsonify({"price": output})
if __name__ == "__main__":
#app.run(debug=True)
app.run(host="0.0.0.0", port=7860)