Commit
·
7396692
1
Parent(s):
f91b371
Upload 10 files
Browse files- eda.py +0 -164
- final_pipeline1.pkl +2 -2
- 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:
|
3 |
-
size
|
|
|
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()
|