guardiantria commited on
Commit
f91b371
1 Parent(s): 3c712d1

Upload 10 files

Browse files
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