-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
138 lines (108 loc) · 4.35 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
from flask import Flask, render_template,request
import pickle
import pandas as pd
app = Flask(__name__)
# Define function to load label encoders
def load_label_encoders():
with open('trained_label_encoder/label_encoders.pkl', 'rb') as f:
label_encoders = pickle.load(f)
return label_encoders
# Define function to load trained models
def load_models():
models = {}
with open('trained_models/catboost_model.pkl', 'rb') as f:
catboost_model = pickle.load(f)
models['catboost_model'] = catboost_model
with open('trained_models/lgbm_model.pkl', 'rb') as f:
lgbm_model = pickle.load(f)
models['lgbm_model'] = lgbm_model
with open('trained_models/xgboost_model.pkl', 'rb') as f:
xgboost_model = pickle.load(f)
models['xgboost_model'] = xgboost_model
return models
@app.route("/")
def hello_world():
"""Renders a basic 'Hello, World!' message."""
return render_template("index.html") # Assumes a template named index.html
@app.route('/<service_name>')
def redirect(service_name):
# Here you can perform any necessary operations based on the service name
# and return the appropriate HTML file
if service_name == 'Monitoring':
return render_template('Monitoring_Index.html')
elif service_name == 'notebooks':
return render_template('notebooks_index.html')
elif service_name == 'prediction':
return render_template('predection.html')
elif service_name == 'service4':
return render_template('service4.html')
else:
return "Invalid service name"
@app.route('/Monitoring/<service_name>')
def monitoring(service_name):
# Here you can perform any necessary operations based on the service name
# and return the appropriate HTML file
if service_name == 'dataquality':
return render_template('file.html')
elif service_name == 'testsuite':
return render_template('test_suite.html')
else:
return "Invalid service name"
@app.route('/notebooks/<service_name>')
def notebooks(service_name):
# Here you can perform any necessary operations based on the service name
# and return the appropriate HTML file
if service_name == 'EDA':
return render_template('HomeStay_EDA.html')
elif service_name == 'OHE':
return render_template('HomeStay_OHE_MT.html')
elif service_name == 'label-encoding':
return render_template('Homestay_LabelEncode_Mt.html')
else:
return "Invalid service name"
@app.route('/prediction', methods=['POST'])
def process_data():
if request.method == 'POST':
# Retrieve form data
room_type = request.form['room_type']
accommodates = int(request.form['accommodates'])
bathrooms = int(request.form['bathrooms'])
city = request.form['city']
latitude = float(request.form['latitude'])
longitude = float(request.form['longitude'])
zipcode = int(request.form['zipcode'])
bedrooms = int(request.form['bedrooms'])
beds = int(request.form['beds'])
host_tenure = int(request.form['host_tenure'])
# Load label encoders
label_encoders = load_label_encoders()
# Perform label encoding for Room Type and City
room_type_encoder = label_encoders['room_type']
room_type_encoded = room_type_encoder.transform([room_type])[0]
city_encoder = label_encoders['city']
city_encoded = city_encoder.transform([city])[0]
# Create DataFrame from form data
data = {
'room_type': [room_type_encoded],
'accommodates': [accommodates],
'bathrooms': [bathrooms],
'city': [city_encoded],
'latitude': [latitude],
'longitude': [longitude],
'zipcode': [zipcode],
'bedrooms': [bedrooms],
'beds': [beds],
'host_tenure': [host_tenure]
}
df = pd.DataFrame(data)
# Load trained models
models = load_models()
# Make predictions
predictions = {}
for model_name, model in models.items():
predictions[model_name] = model.predict(df)
# Store predicted values in a list
predicted_values = [predictions[model_name][0] for model_name in models]
return render_template("result.html", predictions=predictions)
if __name__ == "__main__":
app.run(debug=True)