Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
@@ -6,23 +6,6 @@ from utils import create_new_features, normalize, init_new_pred
|
|
6 |
with open('./trained_model.pkl', 'rb') as file:
|
7 |
model = pickle.load(file)
|
8 |
|
9 |
-
# Placeholder for displaying the predicted price at the top
|
10 |
-
price_placeholder = st.empty()
|
11 |
-
|
12 |
-
city = st.selectbox(
|
13 |
-
'Select City',
|
14 |
-
['Algona', 'Auburn', 'Beaux Arts Village', 'Bellevue',
|
15 |
-
'Black Diamond', 'Bothell', 'Burien', 'Carnation', 'Clyde Hill',
|
16 |
-
'Covington', 'Des Moines', 'Duvall', 'Enumclaw', 'Fall City',
|
17 |
-
'Federal Way', 'Inglewood-Finn Hill', 'Issaquah', 'Kenmore',
|
18 |
-
'Kent', 'Kirkland', 'Lake Forest Park', 'Maple Valley', 'Medina',
|
19 |
-
'Mercer Island', 'Milton', 'Newcastle', 'Normandy Park',
|
20 |
-
'North Bend', 'Pacific', 'Preston', 'Ravensdale', 'Redmond',
|
21 |
-
'Renton', 'Sammamish', 'SeaTac', 'Seattle', 'Shoreline',
|
22 |
-
'Skykomish', 'Snoqualmie', 'Snoqualmie Pass', 'Tukwila', 'Vashon',
|
23 |
-
'Woodinville', 'Yarrow Point']
|
24 |
-
)
|
25 |
-
|
26 |
# Define min and max values from the dictionaries
|
27 |
min_dict = {
|
28 |
'bedrooms': 0,
|
@@ -57,56 +40,89 @@ max_dict = {
|
|
57 |
'house_age': 114,
|
58 |
'years_since_renovation': 2014
|
59 |
}
|
|
|
|
|
|
|
60 |
|
61 |
-
# Create
|
62 |
-
|
63 |
-
bathrooms = st.slider('Bathrooms', min_value=min_dict['bathrooms'], max_value=max_dict['bathrooms'], value=min_dict['bathrooms'])
|
64 |
-
sqft_living = st.slider('Square Feet (Living)', min_value=min_dict['sqft_living'], max_value=max_dict['sqft_living'], value=min_dict['sqft_living'])
|
65 |
-
sqft_lot = st.slider('Square Feet (Lot)', min_value=min_dict['sqft_lot'], max_value=max_dict['sqft_lot'], value=min_dict['sqft_lot'])
|
66 |
-
floors = st.slider('Floors', min_value=min_dict['floors'], max_value=max_dict['floors'], value=min_dict['floors'])
|
67 |
-
waterfront = st.checkbox('Waterfront', value=False)
|
68 |
-
view = st.slider('View', min_value=min_dict['view'], max_value=max_dict['view'], value=min_dict['view'])
|
69 |
-
condition = st.slider('Condition', min_value=min_dict['condition'], max_value=max_dict['condition'], value=min_dict['condition'])
|
70 |
-
sqft_above = st.slider('Square Feet (Above)', min_value=min_dict['sqft_above'], max_value=max_dict['sqft_above'], value=min_dict['sqft_above'])
|
71 |
-
sqft_basement = st.slider('Square Feet (Basement)', min_value=min_dict['sqft_basement'], max_value=max_dict['sqft_basement'], value=min_dict['sqft_basement'])
|
72 |
-
yr_built = st.slider('Year Built', min_value=min_dict['yr_built'], max_value=max_dict['yr_built'], value=min_dict['yr_built'])
|
73 |
-
yr_renovated = st.slider('Year Renovated', min_value=min_dict['yr_renovated'], max_value=max_dict['yr_renovated'], value=min_dict['yr_renovated'])
|
74 |
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
floors != min_dict['floors'] or
|
80 |
-
waterfront != min_dict['waterfront'] or
|
81 |
-
view != min_dict['view'] or
|
82 |
-
condition != min_dict['condition'] or
|
83 |
-
sqft_above != min_dict['sqft_above'] or
|
84 |
-
sqft_basement != min_dict['sqft_basement'] or
|
85 |
-
yr_built != min_dict['yr_built'] or
|
86 |
-
yr_renovated != min_dict['yr_renovated']):
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
with open('./trained_model.pkl', 'rb') as file:
|
7 |
model = pickle.load(file)
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
# Define min and max values from the dictionaries
|
10 |
min_dict = {
|
11 |
'bedrooms': 0,
|
|
|
40 |
'house_age': 114,
|
41 |
'years_since_renovation': 2014
|
42 |
}
|
43 |
+
|
44 |
+
# Display the predicted price at the top of the app
|
45 |
+
price_placeholder.write(f"Predicted Price: ${predicted_price[0][0]:,.2f}")
|
46 |
|
47 |
+
# Create two columns: one for the city and one for the map
|
48 |
+
col1, col2 = st.columns([1, 2]) # Adjust the width ratios as needed
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
|
50 |
+
# Display city dropdown in the first column
|
51 |
+
with col1:
|
52 |
+
# Placeholder for displaying the predicted price at the top
|
53 |
+
price_placeholder = st.empty()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
|
55 |
+
st.subheader('City Selection')
|
56 |
+
city = st.selectbox(
|
57 |
+
'Select City',
|
58 |
+
['Algona', 'Auburn', 'Beaux Arts Village', 'Bellevue',
|
59 |
+
'Black Diamond', 'Bothell', 'Burien', 'Carnation', 'Clyde Hill',
|
60 |
+
'Covington', 'Des Moines', 'Duvall', 'Enumclaw', 'Fall City',
|
61 |
+
'Federal Way', 'Inglewood-Finn Hill', 'Issaquah', 'Kenmore',
|
62 |
+
'Kent', 'Kirkland', 'Lake Forest Park', 'Maple Valley', 'Medina',
|
63 |
+
'Mercer Island', 'Milton', 'Newcastle', 'Normandy Park',
|
64 |
+
'North Bend', 'Pacific', 'Preston', 'Ravensdale', 'Redmond',
|
65 |
+
'Renton', 'Sammamish', 'SeaTac', 'Seattle', 'Shoreline',
|
66 |
+
'Skykomish', 'Snoqualmie', 'Snoqualmie Pass', 'Tukwila', 'Vashon',
|
67 |
+
'Woodinville', 'Yarrow Point']
|
68 |
+
)
|
69 |
|
70 |
+
# Create sliders for each item in the dictionaries
|
71 |
+
bedrooms = st.slider('Bedrooms', min_value=min_dict['bedrooms'], max_value=max_dict['bedrooms'], value=min_dict['bedrooms'])
|
72 |
+
bathrooms = st.slider('Bathrooms', min_value=min_dict['bathrooms'], max_value=max_dict['bathrooms'], value=min_dict['bathrooms'])
|
73 |
+
sqft_living = st.slider('Square Feet (Living)', min_value=min_dict['sqft_living'], max_value=max_dict['sqft_living'], value=min_dict['sqft_living'])
|
74 |
+
sqft_lot = st.slider('Square Feet (Lot)', min_value=min_dict['sqft_lot'], max_value=max_dict['sqft_lot'], value=min_dict['sqft_lot'])
|
75 |
+
floors = st.slider('Floors', min_value=min_dict['floors'], max_value=max_dict['floors'], value=min_dict['floors'])
|
76 |
+
waterfront = st.checkbox('Waterfront', value=False)
|
77 |
+
view = st.slider('View', min_value=min_dict['view'], max_value=max_dict['view'], value=min_dict['view'])
|
78 |
+
condition = st.slider('Condition', min_value=min_dict['condition'], max_value=max_dict['condition'], value=min_dict['condition'])
|
79 |
+
sqft_above = st.slider('Square Feet (Above)', min_value=min_dict['sqft_above'], max_value=max_dict['sqft_above'], value=min_dict['sqft_above'])
|
80 |
+
sqft_basement = st.slider('Square Feet (Basement)', min_value=min_dict['sqft_basement'], max_value=max_dict['sqft_basement'], value=min_dict['sqft_basement'])
|
81 |
+
yr_built = st.slider('Year Built', min_value=min_dict['yr_built'], max_value=max_dict['yr_built'], value=min_dict['yr_built'])
|
82 |
+
yr_renovated = st.slider('Year Renovated', min_value=min_dict['yr_renovated'], max_value=max_dict['yr_renovated'], value=min_dict['yr_renovated'])
|
83 |
|
84 |
+
if (bedrooms != min_dict['bedrooms'] or
|
85 |
+
bathrooms != min_dict['bathrooms'] or
|
86 |
+
sqft_living != min_dict['sqft_living'] or
|
87 |
+
sqft_lot != min_dict['sqft_lot'] or
|
88 |
+
floors != min_dict['floors'] or
|
89 |
+
# waterfront != min_dict['waterfront'] or
|
90 |
+
view != min_dict['view'] or
|
91 |
+
condition != min_dict['condition'] or
|
92 |
+
sqft_above != min_dict['sqft_above'] or
|
93 |
+
sqft_basement != min_dict['sqft_basement'] or
|
94 |
+
yr_built != min_dict['yr_built'] or
|
95 |
+
yr_renovated != min_dict['yr_renovated']):
|
96 |
+
|
97 |
+
new_pred = init_new_pred()
|
98 |
+
new_pred['bedrooms'] = bedrooms
|
99 |
+
new_pred['bathrooms'] = bathrooms
|
100 |
+
new_pred['sqft_living'] = sqft_living
|
101 |
+
new_pred['sqft_lot'] = sqft_lot
|
102 |
+
new_pred['floors'] = floors
|
103 |
+
new_pred['waterfront'] = int(waterfront)
|
104 |
+
new_pred['view'] = view
|
105 |
+
new_pred['condition'] = condition
|
106 |
+
new_pred['sqft_above'] = sqft_above
|
107 |
+
new_pred['sqft_basement'] = sqft_basement
|
108 |
+
new_pred['yr_built'] = yr_built
|
109 |
+
new_pred['yr_renovated'] = yr_renovated
|
110 |
+
new_pred[f'city_{city}'] = 1
|
111 |
|
112 |
+
# Process the prediction
|
113 |
+
new_pred = pd.DataFrame([new_pred])
|
114 |
+
new_pred = create_new_features(new_pred)
|
115 |
+
new_pred = normalize(new_pred)
|
116 |
+
|
117 |
+
# Predict the price
|
118 |
+
predicted_price = model.predict(new_pred)
|
119 |
+
|
120 |
+
# Display the map in the second column
|
121 |
+
with col2:
|
122 |
+
if ()
|
123 |
+
st.subheader('Map')
|
124 |
+
data = pd.DataFrame({
|
125 |
+
'latitude': [47.6097, 47.6205, 47.6762], # Example latitudes
|
126 |
+
'longitude': [-122.3331, -122.3493, -122.3198] # Example longitudes
|
127 |
+
})
|
128 |
+
st.map(data)
|