RMHalak commited on
Commit
86120d5
·
verified ·
1 Parent(s): 04bedbc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +80 -64
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 sliders for each item in the dictionaries
62
- bedrooms = st.slider('Bedrooms', min_value=min_dict['bedrooms'], max_value=max_dict['bedrooms'], value=min_dict['bedrooms'])
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
- if (bedrooms != min_dict['bedrooms'] or
76
- bathrooms != min_dict['bathrooms'] or
77
- sqft_living != min_dict['sqft_living'] or
78
- sqft_lot != min_dict['sqft_lot'] or
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
- new_pred = init_new_pred()
89
- new_pred['bedrooms'] = bedrooms
90
- new_pred['bathrooms'] = bathrooms
91
- new_pred['sqft_living'] = sqft_living
92
- new_pred['sqft_lot'] = sqft_lot
93
- new_pred['floors'] = floors
94
- new_pred['waterfront'] = int(waterfront)
95
- new_pred['view'] = view
96
- new_pred['condition'] = condition
97
- new_pred['sqft_above'] = sqft_above
98
- new_pred['sqft_basement'] = sqft_basement
99
- new_pred['yr_built'] = yr_built
100
- new_pred['yr_renovated'] = yr_renovated
101
- new_pred[f'city_{city}'] = 1
102
 
103
- # Process the prediction
104
- new_pred = pd.DataFrame([new_pred])
105
- new_pred = create_new_features(new_pred)
106
- new_pred = normalize(new_pred)
 
 
 
 
 
 
 
 
 
107
 
108
- # Predict the price
109
- predicted_price = model.predict(new_pred)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
 
111
- # Display the predicted price at the top of the app
112
- price_placeholder.write(f"Predicted Price: ${predicted_price[0][0]:,.2f}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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)