Upload 6 files
Browse files- DecisionTreeRegressor.pkl +3 -0
- KNeighborsRegressor.pkl +3 -0
- RandomForestRegressor.pkl +3 -0
- XGBRegressor.pkl +3 -0
- app.py +65 -0
- requirements.txt +7 -0
DecisionTreeRegressor.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:2ba618d8dfdc11ff61401abd935637e999db1f6fc3653617fe2f7324e368e1fd
|
3 |
+
size 5880
|
KNeighborsRegressor.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:3be5cbb151093ff7c19bf4caefb9732a3565a04f38a836c011f681528b270703
|
3 |
+
size 305517
|
RandomForestRegressor.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:33dbfd7156d96d252a7b9ec8d9d12278194064a673dc7b9e5dbe9760c49811c9
|
3 |
+
size 356963890
|
XGBRegressor.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:6c1ad245b6488479d02dd3107f0fce80fa6b0b9c365e4f818928c9008e993a2c
|
3 |
+
size 10591527
|
app.py
ADDED
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import sklearn
|
3 |
+
import numpy as np
|
4 |
+
import pickle
|
5 |
+
import pandas as pd
|
6 |
+
|
7 |
+
random_forest = 'RandomForestRegressor.pkl'
|
8 |
+
k_nearest = 'KNeighborsRegressor.pkl'
|
9 |
+
decision_tree = 'DecisionTreeRegressor.pkl'
|
10 |
+
xgboost = 'XGBRegressor.pkl'
|
11 |
+
|
12 |
+
r_f = pickle.load(open(random_forest, 'rb'))
|
13 |
+
k_n = pickle.load(open(k_nearest, 'rb'))
|
14 |
+
d_t = pickle.load(open(decision_tree, 'rb'))
|
15 |
+
x_b = pickle.load(open(xgboost, 'rb'))
|
16 |
+
|
17 |
+
def predict_house_price(latitude,longitude,province,bedrooms,bathrooms):
|
18 |
+
dct = {'latitude':[latitude],
|
19 |
+
'longitude':[longitude],
|
20 |
+
'province':[province],
|
21 |
+
'bedrooms':[bedrooms],
|
22 |
+
'bathrooms':[bathrooms]}
|
23 |
+
pdt = pd.DataFrame.from_dict(dct)
|
24 |
+
predictions={}
|
25 |
+
price_r_f = r_f.predict(pdt)
|
26 |
+
predictions['r_f'] = round(np.exp(price_r_f.tolist()[0]),2)
|
27 |
+
price_k_n = k_n.predict(pdt)
|
28 |
+
predictions['k_n'] = round(np.exp(price_k_n.tolist()[0]),2)
|
29 |
+
price_d_t = d_t.predict(pdt)
|
30 |
+
predictions['d_t'] = round(np.exp(price_d_t.tolist()[0]),2)
|
31 |
+
price_x_b = x_b.predict(pdt)
|
32 |
+
predictions['x_b'] = round(np.exp(price_x_b.tolist()[0]),2)
|
33 |
+
return predictions
|
34 |
+
|
35 |
+
def main():
|
36 |
+
st.label_visibility='collapse'
|
37 |
+
st.title("House Price Prediction using KIJIJI data and different algorithms")
|
38 |
+
latitude = st.slider("Latitude : ", min_value = 41.00000, max_value = 65.00000, step = 0.001)
|
39 |
+
longitude = st.slider("Longitude : ", min_value = -140.00000, max_value = -51.00000, step = 0.001)
|
40 |
+
bedrooms = st.slider("Bedrooms : ", min_value = 1, max_value = 6, step = 1)
|
41 |
+
bathrooms = st.slider("Bathrooms : ", min_value = 1.0, max_value = 6.0, step = 0.5)
|
42 |
+
pro = {0: 'alberta',
|
43 |
+
1: 'britishcolumbia',
|
44 |
+
2: 'manitoba',
|
45 |
+
3: 'newbrunswick',
|
46 |
+
4: 'newfoundland',
|
47 |
+
5: 'novascotia',
|
48 |
+
6: 'ontario',
|
49 |
+
7: 'princeedwardisland',
|
50 |
+
8: 'quebec',
|
51 |
+
9: 'saskatchewan',
|
52 |
+
10: 'territories'}
|
53 |
+
prov = st.selectbox("Choose a Province: ", list(pro.values()))
|
54 |
+
province = list(pro.keys())[list(pro.values()).index(prov)]
|
55 |
+
if st.button("Predict"):
|
56 |
+
pd = predict_house_price(latitude,longitude,province,bedrooms,bathrooms)
|
57 |
+
st.write('Price Prediction from Random Forest Regressor ${}'.format(pd['r_f']))
|
58 |
+
st.write('Price Prediction from K-Neighbors Regressor ${}'.format(pd['k_n']))
|
59 |
+
st.write('Price Prediction from Decision Tree Regressor ${}'.format(pd['d_t']))
|
60 |
+
st.write('Price Prediction from XGB Regressor ${}'.format(pd['x_b']))
|
61 |
+
|
62 |
+
|
63 |
+
if __name__ == '__main__': #
|
64 |
+
main()
|
65 |
+
|
requirements.txt
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
matplotlib==3.6.2
|
2 |
+
streamlit==1.12.0
|
3 |
+
Pillow==9.2.0
|
4 |
+
numpy==1.23.1
|
5 |
+
pandas==1.4.3
|
6 |
+
plotly==5.11.0
|
7 |
+
sklearn==0.0
|