tbdavid2019 commited on
Commit
d425aca
·
1 Parent(s): 9c22744
Files changed (1) hide show
  1. app.py +9 -9
app.py CHANGED
@@ -90,11 +90,11 @@ class StockPredictor:
90
  scaled_data = self.scaler.fit_transform(df[selected_features])
91
 
92
  X, y = [], []
93
- for i in range(len(scaled_data) - 1):
94
- X.append(scaled_data[i])
95
- y.append(scaled_data[i+1])
96
 
97
- return np.array(X).reshape(-1, 1, len(selected_features)), np.array(y)
98
 
99
  def build_model(self, input_shape):
100
  model = Sequential([
@@ -109,7 +109,7 @@ class StockPredictor:
109
 
110
  def train(self, df, selected_features):
111
  X, y = self.prepare_data(df, selected_features)
112
- self.model = self.build_model((1, X.shape[2]))
113
  history = self.model.fit(
114
  X, y,
115
  epochs=50,
@@ -124,10 +124,10 @@ class StockPredictor:
124
  current_data = last_data.copy()
125
 
126
  for _ in range(n_days):
127
- next_day = self.model.predict(current_data.reshape(1, 1, -1), verbose=0)
128
  predictions.append(next_day[0])
129
 
130
- current_data = next_day
131
 
132
  return np.array(predictions)
133
 
@@ -218,8 +218,8 @@ def predict_stock(category, stock, stock_item, period, selected_features):
218
  predictor = StockPredictor()
219
  predictor.train(df, selected_features)
220
 
221
- last_data = predictor.scaler.transform(df.iloc[-1:][selected_features])
222
- predictions = predictor.predict(last_data[0], 5)
223
 
224
  # 創建日期索引
225
  dates = [datetime.now() + timedelta(days=i) for i in range(6)]
 
90
  scaled_data = self.scaler.fit_transform(df[selected_features])
91
 
92
  X, y = [], []
93
+ for i in range(len(scaled_data) - 5):
94
+ X.append(scaled_data[i:i+5])
95
+ y.append(scaled_data[i+5])
96
 
97
+ return np.array(X), np.array(y)
98
 
99
  def build_model(self, input_shape):
100
  model = Sequential([
 
109
 
110
  def train(self, df, selected_features):
111
  X, y = self.prepare_data(df, selected_features)
112
+ self.model = self.build_model((X.shape[1], X.shape[2]))
113
  history = self.model.fit(
114
  X, y,
115
  epochs=50,
 
124
  current_data = last_data.copy()
125
 
126
  for _ in range(n_days):
127
+ next_day = self.model.predict(current_data.reshape(1, current_data.shape[0], current_data.shape[1]), verbose=0)
128
  predictions.append(next_day[0])
129
 
130
+ current_data = np.vstack([current_data[1:], next_day])
131
 
132
  return np.array(predictions)
133
 
 
218
  predictor = StockPredictor()
219
  predictor.train(df, selected_features)
220
 
221
+ last_data = predictor.scaler.transform(df[selected_features].iloc[-5:])
222
+ predictions = predictor.predict(last_data, 5)
223
 
224
  # 創建日期索引
225
  dates = [datetime.now() + timedelta(days=i) for i in range(6)]