Update app.py
Browse files
app.py
CHANGED
|
@@ -5,7 +5,6 @@ from sklearn.linear_model import LinearRegression
|
|
| 5 |
import numpy as np
|
| 6 |
from pandas.tseries.offsets import MonthEnd
|
| 7 |
import datetime
|
| 8 |
-
from scipy import stats
|
| 9 |
|
| 10 |
def plot_and_predict(zip, start_year, start_month, prediction_months):
|
| 11 |
# Input validation for ZIP code
|
|
@@ -53,14 +52,6 @@ def plot_and_predict(zip, start_year, start_month, prediction_months):
|
|
| 53 |
future_months = np.array([last_month_index + i for i in range(1, prediction_months + 1)]).reshape(-1, 1)
|
| 54 |
predicted_prices = model.predict(future_months)
|
| 55 |
|
| 56 |
-
# Calculate standard error and prediction intervals
|
| 57 |
-
se = np.sqrt(np.sum((model.predict(X) - y) ** 2) / (len(y) - 2))
|
| 58 |
-
t = stats.t.ppf(0.975, len(y) - 2) # 95% prediction interval
|
| 59 |
-
prediction_interval = t * se * np.sqrt(1 + 1/len(y) + (future_months - np.mean(X))**2 / np.sum((X - np.mean(X))**2))
|
| 60 |
-
|
| 61 |
-
upper_bound = predicted_prices + prediction_interval
|
| 62 |
-
lower_bound = predicted_prices - prediction_interval
|
| 63 |
-
|
| 64 |
# Prepare data for plotting
|
| 65 |
historical_prices_trace = go.Scatter(
|
| 66 |
x=df['Date'],
|
|
@@ -80,10 +71,7 @@ def plot_and_predict(zip, start_year, start_month, prediction_months):
|
|
| 80 |
fig = go.Figure()
|
| 81 |
fig.add_trace(historical_prices_trace)
|
| 82 |
fig.add_trace(predicted_prices_trace)
|
| 83 |
-
|
| 84 |
-
go.Scatter(x=future_dates, y=upper_bound.flatten(), mode='lines', name='Upper Bound', line=dict(width=0)),
|
| 85 |
-
go.Scatter(x=future_dates, y=lower_bound.flatten(), mode='lines', name='Lower Bound', line=dict(width=0), fill='tonexty')
|
| 86 |
-
])
|
| 87 |
fig.update_layout(
|
| 88 |
title=f"Real Estate Price Prediction for Zip Code {zip}",
|
| 89 |
xaxis_title="Date",
|
|
|
|
| 5 |
import numpy as np
|
| 6 |
from pandas.tseries.offsets import MonthEnd
|
| 7 |
import datetime
|
|
|
|
| 8 |
|
| 9 |
def plot_and_predict(zip, start_year, start_month, prediction_months):
|
| 10 |
# Input validation for ZIP code
|
|
|
|
| 52 |
future_months = np.array([last_month_index + i for i in range(1, prediction_months + 1)]).reshape(-1, 1)
|
| 53 |
predicted_prices = model.predict(future_months)
|
| 54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
# Prepare data for plotting
|
| 56 |
historical_prices_trace = go.Scatter(
|
| 57 |
x=df['Date'],
|
|
|
|
| 71 |
fig = go.Figure()
|
| 72 |
fig.add_trace(historical_prices_trace)
|
| 73 |
fig.add_trace(predicted_prices_trace)
|
| 74 |
+
|
|
|
|
|
|
|
|
|
|
| 75 |
fig.update_layout(
|
| 76 |
title=f"Real Estate Price Prediction for Zip Code {zip}",
|
| 77 |
xaxis_title="Date",
|