guardiantria
commited on
Commit
•
f91b371
1
Parent(s):
3c712d1
Upload 10 files
Browse files- House_Perth.jpg +0 -0
- all_perth_310121.csv +0 -0
- app.py +10 -0
- eda.py +342 -0
- final_pipeline1.pkl +3 -0
- klasifikasi_kota.pkl +3 -0
- klasifikasi_kota.py +98 -0
- main.py +10 -0
- prediction.py +97 -0
- requirements.txt +8 -0
House_Perth.jpg
ADDED
all_perth_310121.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
app.py
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import eda
|
3 |
+
import prediction
|
4 |
+
|
5 |
+
halaman = st.sidebar.selectbox('Choice Page : ', ('eda', 'prediction'))
|
6 |
+
|
7 |
+
if halaman == 'eda' :
|
8 |
+
eda.run()
|
9 |
+
else :
|
10 |
+
prediction.run()
|
eda.py
ADDED
@@ -0,0 +1,342 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
import seaborn as sns
|
4 |
+
import matplotlib.pyplot as plt
|
5 |
+
import plotly.express as px
|
6 |
+
from PIL import Image
|
7 |
+
|
8 |
+
|
9 |
+
def run():
|
10 |
+
# Membuat Tittle
|
11 |
+
st.title('House Pricing In Perth Australia')
|
12 |
+
|
13 |
+
# Membuat Sub Headher
|
14 |
+
st.subheader('EDA untuk analisa Dataset House Pricing In Perth')
|
15 |
+
|
16 |
+
# Menambahkan gambar
|
17 |
+
image = Image.open('House_Perth.jpg')
|
18 |
+
st.image(image, caption='House in Perth')
|
19 |
+
|
20 |
+
# Membuat Garis lurus
|
21 |
+
st.markdown('---')
|
22 |
+
|
23 |
+
# DataFrame
|
24 |
+
data = pd.read_csv('all_perth_310121.csv')
|
25 |
+
|
26 |
+
# Membuat histogram berdasarkan user
|
27 |
+
st.write('#### Histogram berdasarkan Input User')
|
28 |
+
pilihan = st.radio('Pilih column : ', ('PRICE', 'CBD_DIST', 'NEAREST_STN_DIST','NEAREST_SCH_DIST'))
|
29 |
+
fig = plt.figure(figsize=(15,5))
|
30 |
+
sns.histplot(data[pilihan], bins=30, kde=True)
|
31 |
+
st.pyplot(fig)
|
32 |
+
|
33 |
+
# Membuat Linechart Harga Rumah Berdasarkan Tahun
|
34 |
+
st.write('#### LineChart Harga Rumah berdasarkan Tahun Pembangunan Rumah')
|
35 |
+
fig = plt.figure(figsize=(20,6))
|
36 |
+
sns.lineplot(x=data['BUILD_YEAR'], y=data['PRICE'])
|
37 |
+
st.pyplot(fig)
|
38 |
+
st.write('Terlihat pada line plot diatas bahwa harga rumah pada kawasan perth australia memiliki harga yang fluktuatif. Berdasarkan tahun pembuatan, harga rumah tertinggi dipegang oleh rumah yang di bangun pada tahun 1900an dan 1940an.')
|
39 |
+
st.markdown('---')
|
40 |
+
|
41 |
+
# Membuat Pie Chart Bedasarkan Bedrooms
|
42 |
+
# Menghitung jumlah kamar
|
43 |
+
df3 = data['BEDROOMS'].value_counts().reset_index()
|
44 |
+
df3.columns = ['BEDROOMS', 'Value']
|
45 |
+
# Mengatur sequence warna
|
46 |
+
colors = px.colors.qualitative.Set3
|
47 |
+
# Membuat pie chart dengan pengaturan visual yang diperindah
|
48 |
+
st.write('#### Persentase Jumlah Kamar Pada Rumah')
|
49 |
+
fig3 = px.pie(df3,
|
50 |
+
values='Value',
|
51 |
+
names='BEDROOMS',
|
52 |
+
color_discrete_sequence=colors,
|
53 |
+
title='Jumlah Kamar')
|
54 |
+
|
55 |
+
# Menambahkan layout yang lebih rapi
|
56 |
+
fig3.update_traces(textposition='inside', textinfo='percent+label')
|
57 |
+
fig3.update_layout(
|
58 |
+
margin=dict(l=20, r=20, t=50, b=20),
|
59 |
+
legend=dict(title='BEDROOMS'),
|
60 |
+
title_font=dict(size=20),
|
61 |
+
title_x=0.5
|
62 |
+
)
|
63 |
+
st.plotly_chart(fig3)
|
64 |
+
st.write('Dapat dilihat dari pie chart diatas, bahwa kebanyakan rumah pada kawasan perth memiliki jumlah kamar sebanyak 4 kamar dengan presentase 52.4%.Diikuti dengan jumlah kamar sebanyak 3 kamar sebanyak 34.5%')
|
65 |
+
st.write('Hal ini mengindikasi bahwa kawasan pada rumah perth di isi dengan 3 - 4 orang yang bisa dibilang cocok bagi orang-orang yang baru membina rumah tangga yang terdiri dari ayah ibu dan anak.Selain itu hal ini juga mengindikasi bahwa perumahan pada kawasan perth diperuntukan bagi orang-orang yang ingin memiliki rumah yang tidak mau memiliki banyak kamar di dalam rumahnya.')
|
66 |
+
st.markdown('---')
|
67 |
+
|
68 |
+
# Menghitung jumlah kamar mandi
|
69 |
+
df4 = data['BATHROOMS'].value_counts().reset_index()
|
70 |
+
df4.columns = ['BATHROOMS', 'Value']
|
71 |
+
|
72 |
+
# Mengatur sequence warna
|
73 |
+
colors = px.colors.qualitative.Set3
|
74 |
+
|
75 |
+
# Membuat pie chart dengan pengaturan visual yang diperindah
|
76 |
+
fig4 = px.pie(df4,
|
77 |
+
values='Value',
|
78 |
+
names='BATHROOMS',
|
79 |
+
color_discrete_sequence=colors,
|
80 |
+
title='Jumlah Kamar Mandi')
|
81 |
+
|
82 |
+
# Menambahkan layout yang lebih rapi
|
83 |
+
fig4.update_traces(textposition='inside', textinfo='percent+label')
|
84 |
+
fig4.update_layout(
|
85 |
+
margin=dict(l=20, r=20, t=50, b=20),
|
86 |
+
legend=dict(title='BATHROOMS'),
|
87 |
+
title_font=dict(size=20),
|
88 |
+
title_x=0.5
|
89 |
+
)
|
90 |
+
# Menampilkan pie chart
|
91 |
+
st.plotly_chart(fig4)
|
92 |
+
st.write('Dapat dilihat dari pie chart diatas, bahwa kebanyakan rumah pada kawasan perth memiliki jumlah kamar mandi sebanyak 2 kamar mandi dengan presentase 66.2%. Diikuti dengan jumlah kamar sebanyak 1 kamar sebanyak 26.3%')
|
93 |
+
st.write('Hal ini bisa dikatakan normal, dikarenakan memang tidak hanya di perth australia, bahkan di indonesia pun kebanyakan rumah hanya memiliki kamar mandi dengan jumlah 1-2 kamar mandi.')
|
94 |
+
st.markdown('---')
|
95 |
+
|
96 |
+
# Melihat top 5 harga rumah bersarakan suburb
|
97 |
+
top5_city_price = (data
|
98 |
+
.groupby(['SUBURB'])
|
99 |
+
.agg(mean_price=('PRICE','mean'))
|
100 |
+
.reset_index()
|
101 |
+
.sort_values('mean_price',ascending=False)
|
102 |
+
.head(5)
|
103 |
+
)
|
104 |
+
fig = plt.figure(figsize=(8,6))
|
105 |
+
top5_city_price['SUBURB'] = top5_city_price['SUBURB'].astype(str)
|
106 |
+
sns.barplot(data=top5_city_price, x='SUBURB', y='mean_price')
|
107 |
+
st.pyplot(fig)
|
108 |
+
st.write('Terlihat pada barchart diatas, bahwa kawasan pada perth yang memiliki rata-rata harga rumah termahal terdapat pada :')
|
109 |
+
st.write('Daiketh dengan rata-rata harga rumah sebesar 1,951,092 AUD')
|
110 |
+
st.write('Peppermint Grove dengan rata-rata harga rumah sebsar 1.793.549 AUD')
|
111 |
+
st.write('City Beach dengan rata-rata harga rumah sebesar 1,654,765 AUD')
|
112 |
+
st.write('Nedlands dengan rata-rata harga rumah sebesar 1,647,442 AUD')
|
113 |
+
st.write('Cottesloe dengan rata-rata harga rumah sebesar 1,646,283 AUD')
|
114 |
+
st.markdown('---')
|
115 |
+
|
116 |
+
|
117 |
+
# Melihat top data mean nearest sch dist berdasarkan harga dan suburb
|
118 |
+
nearest_sch_price = (data
|
119 |
+
.groupby(['SUBURB'])
|
120 |
+
.agg(mean_price=('PRICE','mean'), mean_nearest_sch_dist=('NEAREST_SCH_DIST','mean'))
|
121 |
+
.reset_index()
|
122 |
+
.sort_values('mean_nearest_sch_dist',ascending=True))
|
123 |
+
# Membuat scatter plot
|
124 |
+
fig = plt.figure(figsize=(8,6))
|
125 |
+
plt.scatter(x='mean_nearest_sch_dist', y='mean_price', data=nearest_sch_price, alpha=0.5)
|
126 |
+
|
127 |
+
# Menambahkan label sumbu dan judul
|
128 |
+
plt.xlabel('NEAREST_SCH_DIST')
|
129 |
+
plt.ylabel('Harga Rumah')
|
130 |
+
plt.title('Hubungan Price Dengan NEAREST_SCH_DIST')
|
131 |
+
|
132 |
+
# Menampilkan plot
|
133 |
+
st.pyplot(fig)
|
134 |
+
st.write('Terlihat pada scatterplot diatas, bahwa jarak sekolah terdekat tidak selalu berpengaruh terhadap harga rumah. Dimana jika kita lihat pada tabel diatas, terdapat rumah-rumah yang memiliki harga yang bisa dibilang tinggi walaupun dekat dengan jarak sekolah. Hal ini memang bisa terjadi dikarenakan terdapat faktor-faktor lain yang bisa mempengaruhi harga rumah mulai dari luas lantai, jumlah kamar, jumlah kamar mandi, garasi, dll')
|
135 |
+
|
136 |
+
# Melihat nearest stn dist berdasarkan harga dan suburb
|
137 |
+
nearest_stn_price = (data
|
138 |
+
.groupby(['SUBURB'])
|
139 |
+
.agg(mean_price=('PRICE','mean'), mean_nearest_stn_dist=('NEAREST_STN_DIST','mean'))
|
140 |
+
.reset_index()
|
141 |
+
.sort_values('mean_nearest_stn_dist',ascending=True))
|
142 |
+
# Membuat scatter plot
|
143 |
+
fig = plt.figure(figsize=(8,6))
|
144 |
+
plt.scatter(x='mean_nearest_stn_dist', y='mean_price', data=nearest_stn_price, alpha=0.5)
|
145 |
+
|
146 |
+
# Menambahkan label sumbu dan judul
|
147 |
+
plt.xlabel('Harga Rumah')
|
148 |
+
plt.ylabel('NEAREST_STN_DIST')
|
149 |
+
plt.title('Hubungan Price Dengan NEAREST_STN_DIST')
|
150 |
+
|
151 |
+
# Menampilkan plot
|
152 |
+
st.pyplot(fig)
|
153 |
+
st.write('Terlihat pada scatterplot diatas, bahwa jarak stasiun terdekat tidak selalu berpengaruh terhadap harga rumah sama seperti dengan jarak sekolah. Dimana jika kita lihat pada tabel diatas, terdapat rumah-rumah yang memiliki harga yang bisa dibilang tinggi walaupun dekat dengan jarak statsiun. Hal ini memang bisa terjadi dikarenakan faktor dari stasiun itu sendiri, stasiun yang memiliki jurusan yang banyak atau sedikit atau stasiun yang biasanya dikujungi orang-orang atau tidak. Selain itu terdapat faktor-faktor lain yang bisa mempengaruhi harga rumah mulai dari luas lantai, jumlah kamar, jumlah kamar mandi, garasi, dll.')
|
154 |
+
|
155 |
+
# Melihat rata-rata cbd dist berdasarkan harga dan sub urb
|
156 |
+
cbd_dist_price = (data
|
157 |
+
.groupby(['SUBURB'])
|
158 |
+
.agg(mean_price=('PRICE','mean'), mean_cbd_dist=('CBD_DIST','mean'))
|
159 |
+
.reset_index()
|
160 |
+
.sort_values('mean_cbd_dist',ascending=True))
|
161 |
+
# Membuat scatter plot
|
162 |
+
fig = plt.figure(figsize=(8,6))
|
163 |
+
plt.scatter(x='mean_cbd_dist', y='mean_price', data=cbd_dist_price, alpha=0.5)
|
164 |
+
|
165 |
+
# Menambahkan label sumbu dan judul
|
166 |
+
plt.xlabel('CBD_DIST')
|
167 |
+
plt.ylabel('Harga Rumah')
|
168 |
+
plt.title('Hubungan Price Dengan CBD_DIST')
|
169 |
+
|
170 |
+
# Menampilkan plot
|
171 |
+
st.pyplot(fig)
|
172 |
+
st.write('Terlihat pada scatterplot diatas, bahwa jarak Kawasan Pusat Bisnis bisa dikatakan memiliki pengaruh, dimana semakin dekat rumah dengan kawasan bisnis maka harga rumah tersebut semakin tinggi. Selain itu, terdapat juga harga rumah yang tinggi walaupun jarak ke kawasan pusat bisnis tidak terlalu dekat. Hal ini bisa terjadi dikarenakan terdapat faktor-faktor lain yang mempengaruhi harga rumah tersebut. Seperti kawasannya, luas lantai rumah, jumlah kamar, jumlah kamar mandi, dan lain-lain.')
|
173 |
+
|
174 |
+
|
175 |
+
|
176 |
+
|
177 |
+
# Membuat Tittle
|
178 |
+
st.title('House Pricing In Perth Australia')
|
179 |
+
|
180 |
+
# Membuat Sub Headher
|
181 |
+
st.subheader('EDA untuk analisa Dataset House Pricing In Perth')
|
182 |
+
|
183 |
+
# Menambahkan gambar
|
184 |
+
image = Image.open('House_Perth.jpg')
|
185 |
+
st.image(image, caption='House in Perth')
|
186 |
+
|
187 |
+
# Membuat Garis lurus
|
188 |
+
st.markdown('---')
|
189 |
+
|
190 |
+
# DataFrame
|
191 |
+
data = pd.read_csv('all_perth_310121.csv')
|
192 |
+
|
193 |
+
# Membuat histogram berdasarkan user
|
194 |
+
st.write('#### Histogram berdasarkan Input User')
|
195 |
+
pilihan = st.radio('Pilih column : ', ('PRICE', 'CBD_DIST', 'NEAREST_STN_DIST','NEAREST_SCH_DIST'))
|
196 |
+
fig = plt.figure(figsize=(15,5))
|
197 |
+
sns.histplot(data[pilihan], bins=30, kde=True)
|
198 |
+
st.pyplot(fig)
|
199 |
+
|
200 |
+
# Membuat Linechart Harga Rumah Berdasarkan Tahun
|
201 |
+
st.write('#### LineChart Harga Rumah berdasarkan Tahun Pembangunan Rumah')
|
202 |
+
fig = plt.figure(figsize=(20,6))
|
203 |
+
sns.lineplot(x=data['BUILD_YEAR'], y=data['PRICE'])
|
204 |
+
st.pyplot(fig)
|
205 |
+
st.write('Terlihat pada line plot diatas bahwa harga rumah pada kawasan perth australia memiliki harga yang fluktuatif. Berdasarkan tahun pembuatan, harga rumah tertinggi dipegang oleh rumah yang di bangun pada tahun 1900an dan 1940an.')
|
206 |
+
st.markdown('---')
|
207 |
+
|
208 |
+
# Membuat Pie Chart Bedasarkan Bedrooms
|
209 |
+
# Menghitung jumlah kamar
|
210 |
+
df3 = data['BEDROOMS'].value_counts().reset_index()
|
211 |
+
df3.columns = ['BEDROOMS', 'Value']
|
212 |
+
# Mengatur sequence warna
|
213 |
+
colors = px.colors.qualitative.Set3
|
214 |
+
# Membuat pie chart dengan pengaturan visual yang diperindah
|
215 |
+
st.write('#### Persentase Jumlah Kamar Pada Rumah')
|
216 |
+
fig3 = px.pie(df3,
|
217 |
+
values='Value',
|
218 |
+
names='BEDROOMS',
|
219 |
+
color_discrete_sequence=colors,
|
220 |
+
title='Jumlah Kamar')
|
221 |
+
|
222 |
+
# Menambahkan layout yang lebih rapi
|
223 |
+
fig3.update_traces(textposition='inside', textinfo='percent+label')
|
224 |
+
fig3.update_layout(
|
225 |
+
margin=dict(l=20, r=20, t=50, b=20),
|
226 |
+
legend=dict(title='BEDROOMS'),
|
227 |
+
title_font=dict(size=20),
|
228 |
+
title_x=0.5
|
229 |
+
)
|
230 |
+
st.plotly_chart(fig3)
|
231 |
+
st.write('Dapat dilihat dari pie chart diatas, bahwa kebanyakan rumah pada kawasan perth memiliki jumlah kamar sebanyak 4 kamar dengan presentase 52.4%.Diikuti dengan jumlah kamar sebanyak 3 kamar sebanyak 34.5%')
|
232 |
+
st.write('Hal ini mengindikasi bahwa kawasan pada rumah perth di isi dengan 3 - 4 orang yang bisa dibilang cocok bagi orang-orang yang baru membina rumah tangga yang terdiri dari ayah ibu dan anak.Selain itu hal ini juga mengindikasi bahwa perumahan pada kawasan perth diperuntukan bagi orang-orang yang ingin memiliki rumah yang tidak mau memiliki banyak kamar di dalam rumahnya.')
|
233 |
+
st.markdown('---')
|
234 |
+
|
235 |
+
# Menghitung jumlah kamar mandi
|
236 |
+
df4 = data['BATHROOMS'].value_counts().reset_index()
|
237 |
+
df4.columns = ['BATHROOMS', 'Value']
|
238 |
+
|
239 |
+
# Mengatur sequence warna
|
240 |
+
colors = px.colors.qualitative.Set3
|
241 |
+
|
242 |
+
# Membuat pie chart dengan pengaturan visual yang diperindah
|
243 |
+
fig4 = px.pie(df4,
|
244 |
+
values='Value',
|
245 |
+
names='BATHROOMS',
|
246 |
+
color_discrete_sequence=colors,
|
247 |
+
title='Jumlah Kamar Mandi')
|
248 |
+
|
249 |
+
# Menambahkan layout yang lebih rapi
|
250 |
+
fig4.update_traces(textposition='inside', textinfo='percent+label')
|
251 |
+
fig4.update_layout(
|
252 |
+
margin=dict(l=20, r=20, t=50, b=20),
|
253 |
+
legend=dict(title='BATHROOMS'),
|
254 |
+
title_font=dict(size=20),
|
255 |
+
title_x=0.5
|
256 |
+
)
|
257 |
+
# Menampilkan pie chart
|
258 |
+
st.plotly_chart(fig4)
|
259 |
+
st.write('Dapat dilihat dari pie chart diatas, bahwa kebanyakan rumah pada kawasan perth memiliki jumlah kamar mandi sebanyak 2 kamar mandi dengan presentase 66.2%. Diikuti dengan jumlah kamar sebanyak 1 kamar sebanyak 26.3%')
|
260 |
+
st.write('Hal ini bisa dikatakan normal, dikarenakan memang tidak hanya di perth australia, bahkan di indonesia pun kebanyakan rumah hanya memiliki kamar mandi dengan jumlah 1-2 kamar mandi.')
|
261 |
+
st.markdown('---')
|
262 |
+
|
263 |
+
# Melihat top 5 harga rumah bersarakan suburb
|
264 |
+
top5_city_price = (data
|
265 |
+
.groupby(['SUBURB'])
|
266 |
+
.agg(mean_price=('PRICE','mean'))
|
267 |
+
.reset_index()
|
268 |
+
.sort_values('mean_price',ascending=False)
|
269 |
+
.head(5)
|
270 |
+
)
|
271 |
+
fig = plt.figure(figsize=(8,6))
|
272 |
+
top5_city_price['SUBURB'] = top5_city_price['SUBURB'].astype(str)
|
273 |
+
sns.barplot(data=top5_city_price, x='SUBURB', y='mean_price')
|
274 |
+
st.pyplot(fig)
|
275 |
+
st.write('Terlihat pada barchart diatas, bahwa kawasan pada perth yang memiliki rata-rata harga rumah termahal terdapat pada :')
|
276 |
+
st.write('Daiketh dengan rata-rata harga rumah sebesar 1,951,092 AUD')
|
277 |
+
st.write('Peppermint Grove dengan rata-rata harga rumah sebsar 1.793.549 AUD')
|
278 |
+
st.write('City Beach dengan rata-rata harga rumah sebesar 1,654,765 AUD')
|
279 |
+
st.write('Nedlands dengan rata-rata harga rumah sebesar 1,647,442 AUD')
|
280 |
+
st.write('Cottesloe dengan rata-rata harga rumah sebesar 1,646,283 AUD')
|
281 |
+
st.markdown('---')
|
282 |
+
|
283 |
+
|
284 |
+
# Melihat top data mean nearest sch dist berdasarkan harga dan suburb
|
285 |
+
nearest_sch_price = (data
|
286 |
+
.groupby(['SUBURB'])
|
287 |
+
.agg(mean_price=('PRICE','mean'), mean_nearest_sch_dist=('NEAREST_SCH_DIST','mean'))
|
288 |
+
.reset_index()
|
289 |
+
.sort_values('mean_nearest_sch_dist',ascending=True))
|
290 |
+
# Membuat scatter plot
|
291 |
+
fig = plt.figure(figsize=(8,6))
|
292 |
+
plt.scatter(x='mean_nearest_sch_dist', y='mean_price', data=nearest_sch_price, alpha=0.5)
|
293 |
+
|
294 |
+
# Menambahkan label sumbu dan judul
|
295 |
+
plt.xlabel('NEAREST_SCH_DIST')
|
296 |
+
plt.ylabel('Harga Rumah')
|
297 |
+
plt.title('Hubungan Price Dengan NEAREST_SCH_DIST')
|
298 |
+
|
299 |
+
# Menampilkan plot
|
300 |
+
st.pyplot(fig)
|
301 |
+
st.write('Terlihat pada scatterplot diatas, bahwa jarak sekolah terdekat tidak selalu berpengaruh terhadap harga rumah. Dimana jika kita lihat pada tabel diatas, terdapat rumah-rumah yang memiliki harga yang bisa dibilang tinggi walaupun dekat dengan jarak sekolah. Hal ini memang bisa terjadi dikarenakan terdapat faktor-faktor lain yang bisa mempengaruhi harga rumah mulai dari luas lantai, jumlah kamar, jumlah kamar mandi, garasi, dll')
|
302 |
+
|
303 |
+
# Melihat nearest stn dist berdasarkan harga dan suburb
|
304 |
+
nearest_stn_price = (data
|
305 |
+
.groupby(['SUBURB'])
|
306 |
+
.agg(mean_price=('PRICE','mean'), mean_nearest_stn_dist=('NEAREST_STN_DIST','mean'))
|
307 |
+
.reset_index()
|
308 |
+
.sort_values('mean_nearest_stn_dist',ascending=True))
|
309 |
+
# Membuat scatter plot
|
310 |
+
fig = plt.figure(figsize=(8,6))
|
311 |
+
plt.scatter(x='mean_nearest_stn_dist', y='mean_price', data=nearest_stn_price, alpha=0.5)
|
312 |
+
|
313 |
+
# Menambahkan label sumbu dan judul
|
314 |
+
plt.xlabel('Harga Rumah')
|
315 |
+
plt.ylabel('NEAREST_STN_DIST')
|
316 |
+
plt.title('Hubungan Price Dengan NEAREST_STN_DIST')
|
317 |
+
|
318 |
+
# Menampilkan plot
|
319 |
+
st.pyplot(fig)
|
320 |
+
st.write('Terlihat pada scatterplot diatas, bahwa jarak stasiun terdekat tidak selalu berpengaruh terhadap harga rumah sama seperti dengan jarak sekolah. Dimana jika kita lihat pada tabel diatas, terdapat rumah-rumah yang memiliki harga yang bisa dibilang tinggi walaupun dekat dengan jarak statsiun. Hal ini memang bisa terjadi dikarenakan faktor dari stasiun itu sendiri, stasiun yang memiliki jurusan yang banyak atau sedikit atau stasiun yang biasanya dikujungi orang-orang atau tidak. Selain itu terdapat faktor-faktor lain yang bisa mempengaruhi harga rumah mulai dari luas lantai, jumlah kamar, jumlah kamar mandi, garasi, dll.')
|
321 |
+
|
322 |
+
# Melihat rata-rata cbd dist berdasarkan harga dan sub urb
|
323 |
+
cbd_dist_price = (data
|
324 |
+
.groupby(['SUBURB'])
|
325 |
+
.agg(mean_price=('PRICE','mean'), mean_cbd_dist=('CBD_DIST','mean'))
|
326 |
+
.reset_index()
|
327 |
+
.sort_values('mean_cbd_dist',ascending=True))
|
328 |
+
# Membuat scatter plot
|
329 |
+
fig = plt.figure(figsize=(8,6))
|
330 |
+
plt.scatter(x='mean_cbd_dist', y='mean_price', data=cbd_dist_price, alpha=0.5)
|
331 |
+
|
332 |
+
# Menambahkan label sumbu dan judul
|
333 |
+
plt.xlabel('CBD_DIST')
|
334 |
+
plt.ylabel('Harga Rumah')
|
335 |
+
plt.title('Hubungan Price Dengan CBD_DIST')
|
336 |
+
|
337 |
+
# Menampilkan plot
|
338 |
+
st.pyplot(fig)
|
339 |
+
st.write('Terlihat pada scatterplot diatas, bahwa jarak Kawasan Pusat Bisnis bisa dikatakan memiliki pengaruh, dimana semakin dekat rumah dengan kawasan bisnis maka harga rumah tersebut semakin tinggi. Selain itu, terdapat juga harga rumah yang tinggi walaupun jarak ke kawasan pusat bisnis tidak terlalu dekat. Hal ini bisa terjadi dikarenakan terdapat faktor-faktor lain yang mempengaruhi harga rumah tersebut. Seperti kawasannya, luas lantai rumah, jumlah kamar, jumlah kamar mandi, dan lain-lain.')
|
340 |
+
|
341 |
+
if __name__=='__main__':
|
342 |
+
run()
|
final_pipeline1.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:f150766620aa3d1883fadd0e14e23583208fb8ad3d3cd082f9bba21b6d4a59f6
|
3 |
+
size 211273613
|
klasifikasi_kota.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:0a1945546248ce084a4bb16a827fddf3f66a342ee507d0e6e8a72ba3a4ed7edb
|
3 |
+
size 35
|
klasifikasi_kota.py
ADDED
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import pickle
|
2 |
+
import pandas as pd
|
3 |
+
|
4 |
+
def klasifikasi_kota(kota):
|
5 |
+
if pd.isna(kota):
|
6 |
+
pass
|
7 |
+
elif kota in ["Armadale" , "Ashendon", "Bedfordale" ,'Brookdale', 'Camillo', 'Champion Lakes', 'Forrestdale', 'Harrisdale', 'Haynes', 'Hilbert',
|
8 |
+
'Karragullen', 'Kelmscott', 'Mount Nasura', 'Mount Richon', 'Piara Waters', 'Roleystone', 'Seville Grove', 'Wungong']:
|
9 |
+
return 1
|
10 |
+
elif kota in ['Eden Hill', 'Bassendean', 'Ashfield']:
|
11 |
+
return 2
|
12 |
+
elif kota in ['Bayswater', 'Bedford', 'Dianella', 'Embleton', 'Maylands', 'Morley', 'Noranda']:
|
13 |
+
return 3
|
14 |
+
elif kota in ['Ascot', 'Belmont', 'Cloverdale','Kewdale', 'Perth Airport', 'Redcliffe', 'Rivervale']:
|
15 |
+
return 4
|
16 |
+
elif kota in ['Bunbury']:
|
17 |
+
return 5
|
18 |
+
elif kota in ['Busselton']:
|
19 |
+
return 6
|
20 |
+
elif kota in ['City Beach', 'Daglish', 'Floreat', 'Wembley', 'West Leederville']:
|
21 |
+
return 7
|
22 |
+
elif kota in ['Bentley', 'Cannington', 'Canning Vale', 'East Cannington', 'Ferndale', 'Lynwood', 'Parkwood', 'Queens Park', 'Riverton',
|
23 |
+
'Rossmoyne', 'Shelley', 'Welshpool', 'Willetton', 'Wilson', 'Mount Claremont']:
|
24 |
+
return 8
|
25 |
+
elif kota in ['Claremont', 'Swanbourne']:
|
26 |
+
return 9
|
27 |
+
elif kota in ['Atwell', 'Aubin Grove', 'Banjup', 'Beeliar', 'Bibra Lake', 'Coogee', 'Coolbellup', 'Hamilton Hill', 'Hammond Hill', 'Henderson','Treeby',
|
28 |
+
'Jandakot', 'Munster', 'North Lake','South Lake', 'Spearwood', 'Success','Wattleup', 'Yangebup', 'Hammond Park','North Coogee','Cockburn Central']:
|
29 |
+
return 10
|
30 |
+
elif kota in ['Cottesloe']:
|
31 |
+
return 11
|
32 |
+
elif kota in ['East Fremantle']:
|
33 |
+
return 12
|
34 |
+
elif kota in ['Beaconsfield', 'Fremantle', 'Hilton', 'North Fremantle', "O'Connor", 'Samson', 'South Fremantle', 'White Gum Valley']:
|
35 |
+
return 13
|
36 |
+
elif kota in ['Beckenham', 'Gosnells', 'Huntingdale', 'Kenwick', 'Langford', 'Maddington', 'Martin', 'Orange Grove', 'Southern River', 'Thornlie']:
|
37 |
+
return 14
|
38 |
+
elif kota in ['Beldon', 'Burns Beach', 'Connolly', 'Craigie', 'Currambine', 'Duncraig', 'Edgewater', 'Greenwood', 'Heathridge', 'Hillarys', 'Iluka', 'Joondalup', 'Kallaroo',
|
39 |
+
'Kingsley', 'Kinross', 'Marmion', 'Mullaloo', 'Ocean Reef', 'Padbury', 'Sorrento', 'Warwick', 'Woodvale']:
|
40 |
+
return 15
|
41 |
+
elif kota in ['Bickley', 'Canning Mills', 'Carmel', 'Forrestfield', 'Gooseberry Hill', 'Hacketts Gully', 'High Wycombe', 'Kalamunda', 'Lesmurdie', 'Maida Vale', 'Paulls Valley',
|
42 |
+
'Pickering Brook', 'Piesse Brook', 'Walliston', 'Wattle Grove']:
|
43 |
+
return 16
|
44 |
+
elif kota in ['Anketell', 'Bertram', 'Calista', 'Casuarina', 'Hope Valley', 'Kwinana', 'Leda', 'Mandogalup', 'Medina', 'Orelia', 'Parmelia', 'Postans', 'The Spectacles', 'Naval Base',
|
45 |
+
'Wandi', 'Wellard','Kwinana Town Centre','Kwinana Beach']:
|
46 |
+
return 17
|
47 |
+
elif kota in ['Mandurah']:
|
48 |
+
return 18
|
49 |
+
elif kota in ['Alfred Cove', 'Applecross','Ardross', 'Attadale', 'Bateman', 'Bicton', 'Booragoon', 'Brentwood', 'Bull Creek', 'Kardinya', 'Leeming', 'Melville', 'Mt Pleasant', 'Murdoch', 'Myaree',
|
50 |
+
'Palmyra','Willagee',' Winthrop','Mount Pleasant','Winthrop']:
|
51 |
+
return 19
|
52 |
+
elif kota in ['Mosman Park']:
|
53 |
+
return 20
|
54 |
+
elif kota in ['Bailup', 'Beechina', 'Boya', 'Chidlow', 'Darlington', 'Glen Forrest', 'Gorrie', 'Greenmount', 'Helena Valley', 'Hovea', 'Mahogany Creek', 'Mt Helena', 'Mundaring',
|
55 |
+
'Parkerville', 'Sawyers Valley','Stoneville','Swan View', 'The Lakes', 'Wooroloo','Mount Helena']:
|
56 |
+
return 21
|
57 |
+
elif kota in ['Banksiadale', 'Barragup', 'Birchmont', 'Blythewood', 'Coolup', 'Dwellingup', 'Etmilyn', 'Fairbridge', 'Furnissdale', 'Holyoake', 'Inglehope', 'Keralup', 'Keysbrook', 'Marrinup',
|
58 |
+
'Meelon', 'Myara', 'Nambeelup', 'Nirimba', 'North Dandalup', 'North Yunderup', 'Oakley', 'Pinjarra', 'Point Grey', 'Ravenswood', 'Solus', 'South Yunderup',
|
59 |
+
'Stake Hill', 'Teesdale', 'West Coolup', 'West Pinjarra', 'Whittaker']:
|
60 |
+
return 22
|
61 |
+
elif kota in ['Dalkeith', 'Karrakatta', 'Mt Claremont', 'Nedlands', 'Swanbourne']:
|
62 |
+
return 23
|
63 |
+
elif kota in ['Bakers Hill', 'Clackline', 'Northam', 'Spencers Brook', 'Wundowie']:
|
64 |
+
return 24
|
65 |
+
elif kota in ['Peppermint Grove']:
|
66 |
+
return 25
|
67 |
+
elif kota in ['East Perth', 'Kings Park', 'Northbridge', 'Perth City', 'West Perth']:
|
68 |
+
return 26
|
69 |
+
elif kota in ['Mount Barker', 'Kendenup', 'Narrikup', 'Rocky Gully', 'Porongurup']:
|
70 |
+
return 27
|
71 |
+
elif kota in ['Baldivis', 'Cooloongup', 'East Rockingham', 'Golden Bay', 'Hillman', 'Karnup', 'Peron', 'Port Kennedy', 'Rockingham', 'Safety Bay', 'Secret Harbour',
|
72 |
+
'Shoalwater', 'Singleton', 'Waikiki', 'Warnbro']:
|
73 |
+
return 28
|
74 |
+
elif kota in ['Byford', 'Cardup', 'Darling Downs', 'Hopeland', 'Jarrahdale', 'Karrakup', 'Mardella', 'Mundijong', 'Oakbury', 'Oldbury', 'Serpentine', 'Whitby','Oakford']:
|
75 |
+
return 29
|
76 |
+
elif kota in ['Como', 'Karawara', 'Kensington', 'Manning', 'Salter Point', 'South Perth', 'Waterford']:
|
77 |
+
return 30
|
78 |
+
elif kota in ['Balcatta', 'Balga', 'Carine', 'Churchlands', 'Coolbinia', 'Dianella', 'Doubleview', 'Glendalough', 'Gwelup', 'Hamersley', 'Herdsman', 'Inglewood', 'Innaloo',
|
79 |
+
'Joondanna', 'Karrinyup', 'Menora', 'Mirrabooka', 'Mt Lawley', 'Nollamara', 'North Beach', 'Osborne Park', 'Scarborough', 'Stirling', 'Trigg', 'Tuart Hill',
|
80 |
+
'Watermans Bay', 'Wembley Downs', 'Westminster', 'Woodlands', 'Yokine','Mount Lawley']:
|
81 |
+
return 31
|
82 |
+
elif kota in ['Crawley', 'Daglish', 'Jolimont', 'Shenton Park', 'Subiaco']:
|
83 |
+
return 32
|
84 |
+
elif kota in ['Aveley', 'Ballajura', 'Baskerville', 'Beechboro', 'Belhus', 'Bellevue', 'Bennett Springs', 'Brabham', 'Brigadoon', 'Bullsbrook' , 'Caversham', 'Cullacabardee', 'Dayton', 'Ellenbrook',
|
85 |
+
'Gidgegannup', 'Guildford', 'Hazelmere', 'Henley Brook', 'Herne Hill', 'Jane Brook', 'Kiara', 'Koongamia', 'Lexia', 'Lockridge', 'Malaga', 'Melaleuca', 'Middle Swan', 'Midland',
|
86 |
+
'Midvale', 'Millendon', 'Noranda', 'Perth Airport', 'Red Hill','South Guildford', 'Stratton', 'The Vines', 'Upper Swan', 'Valley Ridge', 'Viveash' ,'West Swan', 'Whiteman', 'Woodbridge']:
|
87 |
+
return 33
|
88 |
+
elif kota in ['Burswood', 'Carlisle', 'East Victoria Park', 'Lathlain', 'St James', 'Victoria Park']:
|
89 |
+
return 34
|
90 |
+
elif kota in ['Highgate', 'Leederville', 'Mt Hawthorn', 'North Perth']:
|
91 |
+
return 35
|
92 |
+
elif kota in ['Alexander Heights', 'Alkimos', 'Ashby', 'Banksia Grove', 'Butler', 'Carabooda', 'Carramar', 'Clarkson', 'Darch', 'Eglinton', 'Girrawheen', 'Gnangara', 'Hocking', 'Jandabup', 'Jindalee',
|
93 |
+
'Koondoola', 'Landsdale', 'Madeley', 'Marangaroo', 'Mariginiup', 'Merriwa', 'Mindarie', 'Neerabup','Nowergup', 'Pearsall', 'Pinjar', 'Quinns Rocks', 'Ridgewood', 'Sinagra', 'Tamala Park',
|
94 |
+
'Tapping', 'Two Rocks', 'Wangara', 'Wanneroo', 'Yanchep','Mount Hawthorn']:
|
95 |
+
return 36
|
96 |
+
|
97 |
+
with open('klasifikasi_kota.pkl', 'wb') as file_2:
|
98 |
+
pickle.dump(klasifikasi_kota, file_2)
|
main.py
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import eda
|
3 |
+
import prediction
|
4 |
+
|
5 |
+
halaman = st.sidebar.selectbox('Choice Page : ', ('eda', 'prediction'))
|
6 |
+
|
7 |
+
if halaman == 'eda' :
|
8 |
+
eda.run()
|
9 |
+
else :
|
10 |
+
prediction.run()
|
prediction.py
ADDED
@@ -0,0 +1,97 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
import numpy as np
|
4 |
+
import pickle
|
5 |
+
from klasifikasi_kota import klasifikasi_kota
|
6 |
+
|
7 |
+
# Load Model
|
8 |
+
with open('final_pipeline1.pkl', 'rb') as file_1:
|
9 |
+
final_pipeline = pickle.load(file_1)
|
10 |
+
with open('klasifikasi_kota.pkl', 'rb') as file_2:
|
11 |
+
cardinality = pickle.load(file_2)
|
12 |
+
|
13 |
+
#function run
|
14 |
+
def run() :
|
15 |
+
data = pd.read_csv('all_perth_310121.csv')
|
16 |
+
with st.form('House Pricing Prediction'):
|
17 |
+
selected_suburb = st.selectbox('Pilih Suburb:', data['SUBURB'].unique())
|
18 |
+
price = st.number_input('Price', min_value=0, max_value=2440000, value=0)
|
19 |
+
bedroom = st.selectbox('Pilih Jumlah Bedroom:', data['BEDROOMS'].unique())
|
20 |
+
bathroom = st.selectbox('Pilih Jumlah Bathroom:', data['BATHROOMS'].unique())
|
21 |
+
landarea = st.number_input('Land Area', min_value=61, max_value=9999990, value=61, help ='Luas tanah dalam meter persegi')
|
22 |
+
floorarea = st.number_input('Floor Area', min_value=1, max_value=870, value=1, help ='Luas lantai dalam meter persegi')
|
23 |
+
cbddist = st.number_input('Central Business Distance', min_value=681, max_value=59800, value=681, help ='Menunjukkan Jarak ke Kawasan Pusat Bisnis (M)')
|
24 |
+
stndist = st.number_input('Nearest Station Distance', min_value=46, max_value=35500, value=46, help ='Menunjukkan Jarak ke Stasiun Terdekat (M)')
|
25 |
+
schdist = st.number_input('Nearest School Distance', min_value=0, max_value=23, value=0, help ='Menunjukkan Jarak ke Stasiun Terdekat (KM)')
|
26 |
+
|
27 |
+
submitted = st.form_submit_button('Predict')
|
28 |
+
|
29 |
+
data_inf = {
|
30 |
+
'SUBURB': selected_suburb,
|
31 |
+
'PRICE':price,
|
32 |
+
'BEDROOMS':bedroom,
|
33 |
+
'BATHROOMS' : bathroom,
|
34 |
+
'LAND_AREA': landarea,
|
35 |
+
'FLOOR_AREA': floorarea,
|
36 |
+
'NEAREST_STN_DIST' : stndist,
|
37 |
+
'NEAREST_SCH_DIST': schdist,
|
38 |
+
'CBD_DIST': cbddist
|
39 |
+
}
|
40 |
+
|
41 |
+
data_inf = pd.DataFrame([data_inf])
|
42 |
+
st.dataframe(data_inf)
|
43 |
+
|
44 |
+
if submitted:
|
45 |
+
# Melakukan klasifikasi kota
|
46 |
+
data_inf['AREA'] = data_inf['SUBURB'].apply(klasifikasi_kota)
|
47 |
+
|
48 |
+
# Memasukan Pipeline
|
49 |
+
prediction_inf = final_pipeline.predict(data_inf)
|
50 |
+
st.write('#Prediksi Harga Rumah Adalah Sebesar : AUD ', str(int(prediction_inf)))
|
51 |
+
|
52 |
+
|
53 |
+
|
54 |
+
# Load dataset
|
55 |
+
data = pd.read_csv('all_perth_310121.csv')
|
56 |
+
|
57 |
+
|
58 |
+
# Buat Form
|
59 |
+
with st.form('House Pricing Prediction1'):
|
60 |
+
selected_suburb = st.selectbox('Pilih Suburb:', data['SUBURB'].unique())
|
61 |
+
price = st.number_input('Price', min_value=0, max_value=2440000, value=0)
|
62 |
+
bedroom = st.selectbox('Pilih Jumlah Bedroom:', data['BEDROOMS'].unique())
|
63 |
+
bathroom = st.selectbox('Pilih Jumlah Bathroom:', data['BATHROOMS'].unique())
|
64 |
+
landarea = st.number_input('Land Area', min_value=61, max_value=9999990, value=61, help ='Luas tanah dalam meter persegi')
|
65 |
+
floorarea = st.number_input('Floor Area', min_value=1, max_value=870, value=1, help ='Luas lantai dalam meter persegi')
|
66 |
+
cbddist = st.number_input('Central Business Distance', min_value=681, max_value=59800, value=681, help ='Menunjukkan Jarak ke Kawasan Pusat Bisnis (M)')
|
67 |
+
stndist = st.number_input('Nearest Station Distance', min_value=46, max_value=35500, value=46, help ='Menunjukkan Jarak ke Stasiun Terdekat (M)')
|
68 |
+
schdist = st.number_input('Nearest School Distance', min_value=0, max_value=23, value=0, help ='Menunjukkan Jarak ke Stasiun Terdekat (KM)')
|
69 |
+
|
70 |
+
|
71 |
+
submitted = st.form_submit_button('Predict')
|
72 |
+
|
73 |
+
data_inf = {
|
74 |
+
'SUBURB': selected_suburb,
|
75 |
+
'PRICE':price,
|
76 |
+
'BEDROOMS':bedroom,
|
77 |
+
'BATHROOMS' : bathroom,
|
78 |
+
'LAND_AREA': landarea,
|
79 |
+
'FLOOR_AREA': floorarea,
|
80 |
+
'NEAREST_STN_DIST' : stndist,
|
81 |
+
'NEAREST_SCH_DIST': schdist,
|
82 |
+
'CBD_DIST': cbddist
|
83 |
+
|
84 |
+
}
|
85 |
+
data_inf = pd.DataFrame([data_inf])
|
86 |
+
st.dataframe(data_inf)
|
87 |
+
|
88 |
+
if submitted:
|
89 |
+
# Melakukan klasifikasi kota
|
90 |
+
data_inf['AREA'] = data_inf['SUBURB'].apply(klasifikasi_kota)
|
91 |
+
|
92 |
+
# Memasukan Pipeline
|
93 |
+
prediction_inf = final_pipeline.predict(data_inf)
|
94 |
+
st.write('#Prediksi Harga Rumah Adalah Sebesar : AUD ', str(int(prediction_inf)))
|
95 |
+
|
96 |
+
if __name__ == '__main__':
|
97 |
+
run()
|
requirements.txt
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
streamlit
|
2 |
+
pandas
|
3 |
+
seaborn
|
4 |
+
numpy
|
5 |
+
matplotlib
|
6 |
+
scikit-learn==1.2.2
|
7 |
+
Pillow
|
8 |
+
plotly
|