Hathang's picture
Update app.py
2af085b verified
Raw History Blame Contribute Delete
4.02 kB
import streamlit as st
import numpy as np
import Ulity as ult
import sklearn
st.title('HOUSE PRICE PREDICTION APPLICATION')
vung = st.sidebar.selectbox('Select region',['Việt Nam','Hà Nội','TP Hồ Chí Minh'])
method = st.sidebar.radio('Select treatment option:',['Alternative 1','Alternative 2(Most Recommended)','Alternative 3','Alternative 4'])
#Chọn phương án xử lý:',['Phương án 1','Phương án 2','Phương án 3','Phương án 4']
if vung=='Hà Nội':model = st.sidebar.selectbox("Select regression model",['XGBoost Regression'])
elif vung=="TP Hồ Chí Minh":
model = st.sidebar.selectbox("Select regression model",['RandomForest Regression'])
else:
model = st.sidebar.selectbox("Select regression model",['Catboost Regression'])
button = st.sidebar.button('Prediction')
col1, col2, col3 = st.columns(3)
with col1:
loaibds = st.selectbox('Type of real estate',['Nhà liền kề, biệt thự','Nhà mặt tiền','Nhà trong hẻm'])#Loại bất động sản'
loaibds_value = ['Nhà liền kề, biệt thự', 'Nhà mặt tiền', 'Nhà trong hẻm'].index(loaibds)
with col2:
huong = st.selectbox('The direction of the house',['Bắc','Nam','Tây','Tây Bắc','Tây Nam','Đông','Đông Bắc','Đông Nam'])
huong_value = ['Bắc','Nam','Tây','Tây Bắc','Tây Nam','Đông','Đông Bắc','Đông Nam'].index(huong)
with col3:
phaply = st.selectbox('Juridical',['Không','Có'])
phaply_value=['Không','Có'].index(phaply)
#city=['Hà Nội','Thành phố Hồ Chí Minh','Đà Nẵng','Lâm Đồng','Hải Phòng','Khánh Hòa','Bắc Ninh','Đồng Nai','Cần Thơ','Bà Rịa – Vũng Tàu','Thừa Thiên Huế','Đắk Lắk','Bình Dương']
#[4,8,7,5,10,6,12,3,2,9,0,11,1]
diachi1, diachi2=st.columns(2)
diachi3,diachi4=st.columns(2)
with diachi1:
if vung=='Việt Nam':
tinhthanhpho = st.selectbox('Province/City', list(ult.city_districts.keys()))
index_tinhthanhpho = list(ult.city_districts.keys()).index(tinhthanhpho)
tinhthanhpho_value = [3,7,6,4,8,5,9,2,1,0][index_tinhthanhpho]
elif vung == "Hà Nội":
tinhthanhpho = st.selectbox('Province/City',['Hà Nội'])
tinhthanhpho_value = 4
else:
tinhthanhpho = st.selectbox('Province/City', ['TP Hồ Chí Minh'])
tinhthanhpho_value = 8
if tinhthanhpho in ult.city_districts:
with diachi2:
quanhuyen = st.selectbox('District', list(ult.city_districts[tinhthanhpho].keys()))
if quanhuyen in ult.city_districts[tinhthanhpho]:
with diachi3:
xaphuong = st.selectbox('Wards', ult.city_districts[tinhthanhpho][quanhuyen])
with diachi4:diachi = st.text_input('Street')
col4,col5 = st.columns(2)
with col4:
matdodanso=ult.Find_Density(quanhuyen,tinhthanhpho)
matdo=st.number_input('Population density(person/km2)',matdodanso,disabled=True)
with col5:
gdp=ult.Find_GDPD(tinhthanhpho)
grdp=st.number_input('GRPD(%)',gdp,disabled=True)
col6, col7, col8,col9 = st.columns(4)
with col6:
dgtrcnha=st.number_input('Road in front of house(m)',step=1)
with col7:
solau=st.number_input('Number of floors',step=1)
with col8:
sophgngu=st.number_input('Number of bedroom',step=1)
with col9:
dientich=st.number_input('Acreage/Area(m2)',step=1)
if button:
st.snow()
if dientich!=0 and solau !=0 :
if method == 'Alternative 1':
new_record = np.array(
[dgtrcnha, loaibds_value, phaply_value, solau, sophgngu, dientich, tinhthanhpho_value, matdodanso, grdp])
sample = new_record.reshape(-1, 9)
else:
new_record = np.array(
[huong_value, dgtrcnha, loaibds_value, phaply_value, solau, sophgngu, dientich, tinhthanhpho_value,
matdodanso, grdp])
sample = new_record.reshape(-1, 10)
predict = ult.Prediction(sample, vung, method, model)
ult.Show_answer(predict,loaibds_value)
else:st.warning('You must type into Area and Number of floor!')