guardiantria commited on
Commit
7396692
·
1 Parent(s): f91b371

Upload 10 files

Browse files
Files changed (3) hide show
  1. eda.py +0 -164
  2. final_pipeline1.pkl +2 -2
  3. prediction.py +1 -45
eda.py CHANGED
@@ -174,169 +174,5 @@ def run():
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()
 
174
 
175
 
176
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  if __name__=='__main__':
178
  run()
final_pipeline1.pkl CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:f150766620aa3d1883fadd0e14e23583208fb8ad3d3cd082f9bba21b6d4a59f6
3
- size 211273613
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:488cf790c7df6d4aac88394f2f377cf1e5f21b6654edaef2816d8624caa7f375
3
+ size 211294733
prediction.py CHANGED
@@ -49,49 +49,5 @@ def run() :
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()
 
49
  prediction_inf = final_pipeline.predict(data_inf)
50
  st.write('#Prediksi Harga Rumah Adalah Sebesar : AUD ', str(int(prediction_inf)))
51
 
52
+ if __name__ == '__main__':
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  run()