Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,70 +1,78 @@
|
|
1 |
-
import numpy as np
|
2 |
-
import pandas as pd
|
3 |
-
import matplotlib.pyplot as plt
|
4 |
from sklearn.preprocessing import MinMaxScaler
|
5 |
from keras.models import Sequential
|
6 |
-
from keras.layers import Dense,LSTM,Dropout
|
|
|
7 |
data = pd.read_csv('Google_train_data.csv')
|
8 |
-
data["Close"]=pd.to_numeric(data.Close,errors='coerce')
|
9 |
data = data.dropna()
|
10 |
-
trainData = data.iloc[:,4:5].values
|
11 |
-
|
|
|
12 |
trainData = sc.fit_transform(trainData)
|
|
|
13 |
X_train = []
|
14 |
y_train = []
|
15 |
|
16 |
-
for i in range
|
17 |
-
X_train.append(trainData[i-60:i,0])
|
18 |
-
y_train.append(trainData[i,0])
|
19 |
|
20 |
-
X_train,y_train = np.array(X_train),np.array(y_train)
|
21 |
-
X_train = np.reshape(X_train,(X_train.shape[0],X_train.shape[1],1))
|
22 |
-
model = Sequential()
|
23 |
|
24 |
-
model
|
|
|
25 |
model.add(Dropout(0.2))
|
26 |
|
27 |
-
model.add(LSTM(units=100, return_sequences
|
28 |
model.add(Dropout(0.2))
|
29 |
|
30 |
-
model.add(LSTM(units=100, return_sequences
|
31 |
model.add(Dropout(0.2))
|
32 |
|
33 |
-
model.add(LSTM(units=100, return_sequences
|
34 |
model.add(Dropout(0.2))
|
35 |
|
36 |
-
model.add(Dense(units
|
37 |
-
|
38 |
-
|
|
|
|
|
39 |
plt.plot(hist.history['loss'])
|
40 |
plt.title('Training model loss')
|
41 |
plt.ylabel('loss')
|
42 |
plt.xlabel('epoch')
|
43 |
plt.legend(['train'], loc='upper left')
|
44 |
plt.show()
|
|
|
45 |
testData = pd.read_csv('Google_test_data.csv')
|
46 |
-
testData["Close"]=pd.to_numeric(testData.Close,errors='coerce')
|
47 |
testData = testData.dropna()
|
48 |
-
testData = testData.iloc[:,4:5]
|
49 |
-
y_test = testData.iloc[60:,0:].values
|
50 |
-
|
51 |
-
|
|
|
52 |
inputClosing_scaled = sc.transform(inputClosing)
|
53 |
-
|
54 |
X_test = []
|
55 |
length = len(testData)
|
56 |
timestep = 60
|
57 |
-
|
58 |
-
|
|
|
|
|
59 |
X_test = np.array(X_test)
|
60 |
-
X_test = np.reshape(X_test,(X_test.shape[0],X_test.shape[1],1))
|
61 |
y_pred = model.predict(X_test)
|
62 |
predicted_price = sc.inverse_transform(y_pred)
|
63 |
-
|
64 |
-
plt.plot(
|
|
|
65 |
plt.title('Google stock price prediction')
|
66 |
plt.xlabel('Time')
|
67 |
plt.ylabel('Stock Price')
|
68 |
plt.legend()
|
69 |
plt.show()
|
70 |
-
|
|
|
1 |
+
import numpy as np
|
2 |
+
import pandas as pd
|
3 |
+
import matplotlib.pyplot as plt
|
4 |
from sklearn.preprocessing import MinMaxScaler
|
5 |
from keras.models import Sequential
|
6 |
+
from keras.layers import Dense, LSTM, Dropout
|
7 |
+
|
8 |
data = pd.read_csv('Google_train_data.csv')
|
9 |
+
data["Close"] = pd.to_numeric(data.Close, errors='coerce')
|
10 |
data = data.dropna()
|
11 |
+
trainData = data.iloc[:, 4:5].values
|
12 |
+
|
13 |
+
sc = MinMaxScaler(feature_range=(0, 1))
|
14 |
trainData = sc.fit_transform(trainData)
|
15 |
+
|
16 |
X_train = []
|
17 |
y_train = []
|
18 |
|
19 |
+
for i in range(60, 1149): # 60: timestep // 1149: length of the data
|
20 |
+
X_train.append(trainData[i - 60:i, 0])
|
21 |
+
y_train.append(trainData[i, 0])
|
22 |
|
23 |
+
X_train, y_train = np.array(X_train), np.array(y_train)
|
24 |
+
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
|
|
|
25 |
|
26 |
+
model = Sequential()
|
27 |
+
model.add(LSTM(units=100, return_sequences=True, input_shape=(X_train.shape[1], 1)))
|
28 |
model.add(Dropout(0.2))
|
29 |
|
30 |
+
model.add(LSTM(units=100, return_sequences=True))
|
31 |
model.add(Dropout(0.2))
|
32 |
|
33 |
+
model.add(LSTM(units=100, return_sequences=True))
|
34 |
model.add(Dropout(0.2))
|
35 |
|
36 |
+
model.add(LSTM(units=100, return_sequences=False))
|
37 |
model.add(Dropout(0.2))
|
38 |
|
39 |
+
model.add(Dense(units=1))
|
40 |
+
|
41 |
+
model.compile(optimizer='adam', loss="mean_squared_error")
|
42 |
+
hist = model.fit(X_train, y_train, epochs=20, batch_size=32, verbose=2)
|
43 |
+
|
44 |
plt.plot(hist.history['loss'])
|
45 |
plt.title('Training model loss')
|
46 |
plt.ylabel('loss')
|
47 |
plt.xlabel('epoch')
|
48 |
plt.legend(['train'], loc='upper left')
|
49 |
plt.show()
|
50 |
+
|
51 |
testData = pd.read_csv('Google_test_data.csv')
|
52 |
+
testData["Close"] = pd.to_numeric(testData.Close, errors='coerce')
|
53 |
testData = testData.dropna()
|
54 |
+
testData = testData.iloc[:, 4:5]
|
55 |
+
y_test = testData.iloc[60:, 0:].values
|
56 |
+
|
57 |
+
# input array for the model
|
58 |
+
inputClosing = testData.iloc[:, 0:].values
|
59 |
inputClosing_scaled = sc.transform(inputClosing)
|
60 |
+
|
61 |
X_test = []
|
62 |
length = len(testData)
|
63 |
timestep = 60
|
64 |
+
|
65 |
+
for i in range(timestep, length):
|
66 |
+
X_test.append(inputClosing_scaled[i - timestep:i, 0])
|
67 |
+
|
68 |
X_test = np.array(X_test)
|
|
|
69 |
y_pred = model.predict(X_test)
|
70 |
predicted_price = sc.inverse_transform(y_pred)
|
71 |
+
|
72 |
+
plt.plot(y_test, color='red', label='Actual Stock Price')
|
73 |
+
plt.plot(predicted_price, color='green', label='Predicted Stock Price')
|
74 |
plt.title('Google stock price prediction')
|
75 |
plt.xlabel('Time')
|
76 |
plt.ylabel('Stock Price')
|
77 |
plt.legend()
|
78 |
plt.show()
|
|