chelscelis commited on
Commit
6923a01
·
verified ·
1 Parent(s): 915a836

saved model's training progress

Browse files
Files changed (3) hide show
  1. Dockerfile +1 -2
  2. forecast_model.h5 +3 -0
  3. main.py +6 -24
Dockerfile CHANGED
@@ -10,5 +10,4 @@ RUN pip install --no-cache-dir -r requirements.txt
10
 
11
  COPY . .
12
 
13
- #CMD [ "python3", "-m" , "predict_sales_api", "run", "--host=0.0.0.0"]
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
- # sequence_len = 60
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
- x_train, y_train = [], []
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
- # app.run(debug=False, host='0.0.0.0', port=5005)
 
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)