【发布时间】:2020-12-10 11:01:38
【问题描述】:
我正在尝试制作股票预测器,我知道我将创建的模型不会很好,但尽管如此。首先在下面我将添加形成 X 和 Y 的代码。X 包含 10 天的股票价格,Y 包含答案(未来几天的价格)。
import yfinance as yf
import numpy as np
import pandas as pd
import json
from sys import exit
from keras.models import Sequential
from keras.layers import LSTM
from keras.layers import Dropout
from keras.layers import Dense
with open('/content/drive/MyDrive/tickers.json', 'r', encoding='utf-8') as f:
tickers_list = eval(json.loads(f.read()))['tickers'][:100] # list of tickers
X = []
Y = []
for ticker in tickers_list:
stock = yf.download(ticker,'1990-01-01','2019-12-31')['Adj Close'].values
for i in range(len(stock)):
try:
stock[i+11]
except:
continue
X.append(stock[i:i+10])
Y.append([stock[i+11]])
X = np.array(X) #price for 10 days
Y = np.array(Y) #price for next day
之后我编写了用于创建模型的代码。
X_train = np.expand_dims(X, 1)
model = Sequential()
model.add(LSTM(units=64,return_sequences=True, input_shape=(10, 1)))
model.add(Dropout(0.2))
model.add(LSTM(units=64,return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=64,return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=64))
model.add(Dropout(0.2))
model.add(Dense(units=1))
model.compile(optimizer='adam',loss='mean_squared_error')
print(model.summary())
model.fit(X_train, Y, epochs=100, batch_size=32)
但是当我运行上面的代码时,我得到了错误。
Input 0 is incompatible with layer sequential_17: expected shape=(None, None, 1), found shape=[None, 1, 10]
如何解决? 谢谢你。
注意 如果您有任何建议可以使我的研究更好,请写在这里。
【问题讨论】:
-
X_train.shape的输出是什么? -
X_train.shape 的输出为 (474299, 1, 10)
标签: python tensorflow keras lstm