mrshibly commited on
Commit
879011a
·
verified ·
1 Parent(s): c9c1d04

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -5
app.py CHANGED
@@ -8,24 +8,37 @@ import pandas as pd
8
  # Load data and scaler
9
  df = pd.read_csv('HistoricalQuotes.csv')
10
  df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y')
11
- df.set_index('Date', inplace=True)
12
- df = df[[' Close/Last']].rename(columns={' Close/Last': 'Close'})
13
  df = df.sort_index()
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  df['Close'] = df['Close'].replace({r'\$': ''}, regex=True).astype(float)
15
 
16
  scaler = MinMaxScaler(feature_range=(0, 1))
17
  scaler.fit(df['Close'].values.reshape(-1, 1))
18
 
19
- # Define LSTM model (matching trained model: hidden_size=50)
20
  class LSTMModel(nn.Module):
21
  def __init__(self, input_size=1, hidden_size=50, num_layers=2, output_size=1, dropout=0.2):
22
  super().__init__()
 
 
23
  self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True, dropout=dropout)
24
  self.fc = nn.Linear(hidden_size, output_size)
25
 
26
  def forward(self, x):
27
- h0 = torch.zeros(num_layers, x.size(0), hidden_size)
28
- c0 = torch.zeros(num_layers, x.size(0), hidden_size)
29
  out, _ = self.lstm(x, (h0, c0))
30
  return self.fc(out[:, -1, :])
31
 
 
8
  # Load data and scaler
9
  df = pd.read_csv('HistoricalQuotes.csv')
10
  df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y')
 
 
11
  df = df.sort_index()
12
+
13
+ # Find the closing price column
14
+ possible_columns = [' Close/Last', 'Close', 'close', 'close_last']
15
+ close_column = None
16
+ for col in possible_columns:
17
+ if col in df.columns:
18
+ close_column = col
19
+ break
20
+
21
+ if close_column is None:
22
+ raise KeyError(f"None of {possible_columns} found in columns: {list(df.columns)}")
23
+
24
+ df = df[[close_column]].rename(columns={close_column: 'Close'})
25
  df['Close'] = df['Close'].replace({r'\$': ''}, regex=True).astype(float)
26
 
27
  scaler = MinMaxScaler(feature_range=(0, 1))
28
  scaler.fit(df['Close'].values.reshape(-1, 1))
29
 
30
+ # Define LSTM model
31
  class LSTMModel(nn.Module):
32
  def __init__(self, input_size=1, hidden_size=50, num_layers=2, output_size=1, dropout=0.2):
33
  super().__init__()
34
+ self.hidden_size = hidden_size
35
+ self.num_layers = num_layers # Store num_layers as instance variable
36
  self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True, dropout=dropout)
37
  self.fc = nn.Linear(hidden_size, output_size)
38
 
39
  def forward(self, x):
40
+ h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
41
+ c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
42
  out, _ = self.lstm(x, (h0, c0))
43
  return self.fc(out[:, -1, :])
44