【发布时间】:2021-02-01 17:51:19
【问题描述】:
我正在制作一个 LSTM 模型,并在我在 kaggle 上找到的 TSLA 数据集上对其进行训练。所以我的问题是,当我调用 model.predict 时,这个预测是否给了我第二天的股票价格?这是一步预测吗?当我打印 model.predict 时,我得到一个巨大的列表,所以我使用 numpy argmax 函数给我一个数字。代码如下:
import tensorflow as tf
from tensorflow.keras.layers import LSTM, Dense, Dropout, Input, GlobalMaxPooling1D
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from tensorflow.keras.optimizers import Adam
df = pd.read_csv('TSLA.csv')
series = df['Close'].values.reshape(-1, 1)
scaler = StandardScaler()
scaler.fit(series[:len(series)//2])
series = scaler.transform(series).flatten()
X = []
Y = []
T = 10
D = 1
for t in range(len(series) - T):
X.append(series[t:t+T])
Y.append(series[t+T])
X = np.array(X).reshape(-1, T, D)
Y = np.array(Y)
N = len(X)
print(X.shape, Y.shape)
model = tf.keras.Sequential([
Input(shape=(T, D)),
LSTM(50),
Dense(100, activation='relu'),
Dropout(0.25),
Dense(1)
])
model.compile(optimizer=Adam(lr=0.01), loss='mse')
r = model.fit(X[:-N//2], Y[:-N//2], validation_data=(X[-N//2:], Y[-N//2:]), epochs=200)
plt.plot(r.history['loss'])
plt.plot(r.history['val_loss'])
plt.show()
preds = model.predict(X)
outs = preds[:,0]
print(outs)
print(np.argmax(outs))
【问题讨论】:
标签: python tensorflow machine-learning keras lstm