Spaces:
Sleeping
Sleeping
saved model's training progress
Browse files- Dockerfile +1 -2
- forecast_model.h5 +3 -0
- main.py +6 -24
Dockerfile
CHANGED
@@ -10,5 +10,4 @@ RUN pip install --no-cache-dir -r requirements.txt
|
|
10 |
|
11 |
COPY . .
|
12 |
|
13 |
-
|
14 |
-
CMD ["gunicorn", "-b", "0.0.0.0:7860", "main:app"]
|
|
|
10 |
|
11 |
COPY . .
|
12 |
|
13 |
+
CMD ["gunicorn", "-b", "0.0.0.0:7860", "main:app"]
|
|
forecast_model.h5
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:439fe48ffd89a6c30944d66e7310219c7ea4715ed2ee5d13799480ed19fb193d
|
3 |
+
size 1535000
|
main.py
CHANGED
@@ -1,9 +1,8 @@
|
|
1 |
import numpy as np
|
2 |
import pandas as pd
|
3 |
from flask import Flask, jsonify, request
|
|
|
4 |
from sklearn.preprocessing import MinMaxScaler
|
5 |
-
from tensorflow import keras
|
6 |
-
from tensorflow.keras import layers
|
7 |
|
8 |
app = Flask(__name__)
|
9 |
|
@@ -45,8 +44,7 @@ def predict_sales():
|
|
45 |
sales_data = sales_data.set_index('Date').reindex(full_date_range).fillna(0).reset_index()
|
46 |
sales_data = sales_data.rename(columns={'index': 'Date'})
|
47 |
|
48 |
-
|
49 |
-
sequence_len = 3 # for testing with few datapoints
|
50 |
if len(sales_data) <= sequence_len:
|
51 |
return jsonify({'code': 400, 'message': 'Insufficient data points for training after adding missing dates.'}), 400
|
52 |
|
@@ -55,26 +53,10 @@ def predict_sales():
|
|
55 |
|
56 |
scaler = MinMaxScaler(feature_range=(0, 1))
|
57 |
scaled_data = scaler.fit_transform(values.reshape(-1, 1))
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
for i in range(sequence_len, len(scaled_data)):
|
62 |
-
x_train.append(scaled_data[i - sequence_len:i, 0])
|
63 |
-
y_train.append(scaled_data[i, 0])
|
64 |
-
|
65 |
-
x_train, y_train = np.array(x_train), np.array(y_train)
|
66 |
-
x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
|
67 |
-
|
68 |
-
forecast_model = keras.Sequential()
|
69 |
-
forecast_model.add(layers.LSTM(100, return_sequences=True, input_shape=(x_train.shape[1], 1)))
|
70 |
-
forecast_model.add(layers.LSTM(100, return_sequences=False))
|
71 |
-
forecast_model.add(layers.Dense(25))
|
72 |
-
forecast_model.add(layers.Dense(1))
|
73 |
-
forecast_model.compile(optimizer='adam', loss='mean_squared_error')
|
74 |
-
forecast_model.fit(x_train, y_train, batch_size=1, epochs=3)
|
75 |
|
76 |
forecast_len = int(forecast_len_str)
|
77 |
-
|
78 |
future_dates = pd.date_range(start=sales_data['Date'].iloc[-1] + pd.Timedelta(days=1), periods=forecast_len)
|
79 |
predicted_sales = []
|
80 |
recent_historical_sales = scaled_data[-sequence_len:].reshape(1, -1, 1)
|
@@ -92,5 +74,5 @@ def predict_sales():
|
|
92 |
return jsonify({'code': 200, 'message': 'Forecasted sales successfully.', 'data': output_json}), 200
|
93 |
|
94 |
|
95 |
-
#if __name__ == '__main__':
|
96 |
-
#
|
|
|
1 |
import numpy as np
|
2 |
import pandas as pd
|
3 |
from flask import Flask, jsonify, request
|
4 |
+
from keras.models import load_model
|
5 |
from sklearn.preprocessing import MinMaxScaler
|
|
|
|
|
6 |
|
7 |
app = Flask(__name__)
|
8 |
|
|
|
44 |
sales_data = sales_data.set_index('Date').reindex(full_date_range).fillna(0).reset_index()
|
45 |
sales_data = sales_data.rename(columns={'index': 'Date'})
|
46 |
|
47 |
+
sequence_len = 60
|
|
|
48 |
if len(sales_data) <= sequence_len:
|
49 |
return jsonify({'code': 400, 'message': 'Insufficient data points for training after adding missing dates.'}), 400
|
50 |
|
|
|
53 |
|
54 |
scaler = MinMaxScaler(feature_range=(0, 1))
|
55 |
scaled_data = scaler.fit_transform(values.reshape(-1, 1))
|
56 |
+
|
57 |
+
forecast_model = load_model("forecast_model.h5")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
|
59 |
forecast_len = int(forecast_len_str)
|
|
|
60 |
future_dates = pd.date_range(start=sales_data['Date'].iloc[-1] + pd.Timedelta(days=1), periods=forecast_len)
|
61 |
predicted_sales = []
|
62 |
recent_historical_sales = scaled_data[-sequence_len:].reshape(1, -1, 1)
|
|
|
74 |
return jsonify({'code': 200, 'message': 'Forecasted sales successfully.', 'data': output_json}), 200
|
75 |
|
76 |
|
77 |
+
# if __name__ == '__main__':
|
78 |
+
# app.run(debug=False, port=5005)
|