写一段代码,用lstm预测股票
时间: 2023-09-23 22:06:02 浏览: 113
股票预测代码
### 回答1:
以下是使用 LSTM 预测股票的代码示例:
```python
import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense, LSTM
# 读取股票数据
df = pd.read_csv('stock_data.csv')
# 数据预处理
data = df['Close'].values.reshape(-1, 1)
data = data.astype('float32')
train_size = int(len(data) * .7)
train_data = data[:train_size]
test_data = data[train_size:]
# 创建训练数据集
def create_dataset(dataset, look_back=1):
dataX, dataY = [], []
for i in range(len(dataset)-look_back-1):
a = dataset[i:(i+look_back), ]
dataX.append(a)
dataY.append(dataset[i + look_back, ])
return np.array(dataX), np.array(dataY)
look_back = 3
trainX, trainY = create_dataset(train_data, look_back)
testX, testY = create_dataset(test_data, look_back)
# 创建 LSTM 模型
model = Sequential()
model.add(LSTM(4, input_shape=(1, look_back)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=100, batch_size=1, verbose=2)
# 预测股票价格
trainPredict = model.predict(trainX)
testPredict = model.predict(testX)
# 可视化预测结果
import matplotlib.pyplot as plt
plt.plot(data)
plt.plot(np.concatenate((trainPredict, testPredict)), color='red')
plt.show()
```
以上代码使用 LSTM 模型对股票价格进行预测,其中 `stock_data.csv` 是股票数据文件,`look_back` 参数表示使用前几天的数据来预测当天的股票价格。最后将预测结果可视化展示。
### 回答2:
用 Python 编写一个使用 LSTM(长短期记忆网络)模型来预测股票的简单代码:
```python
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import LSTM, Dense
# 读取股票数据集
data = pd.read_csv("stock_data.csv")
# 提取收盘价并进行归一化处理
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data['close'].values.reshape(-1, 1))
# 划分训练集和测试集
train_size = int(len(scaled_data) * 0.7)
train_data = scaled_data[:train_size, :]
test_data = scaled_data[train_size:, :]
# 创建输入和输出数据集
def create_dataset(dataset, time_step=1):
X, Y = [], []
for i in range(len(dataset) - time_step - 1):
a = dataset[i:(i + time_step), 0]
X.append(a)
Y.append(dataset[i + time_step, 0])
return np.array(X), np.array(Y)
time_step = 100
X_train, y_train = create_dataset(train_data, time_step)
X_test, y_test = create_dataset(test_data, time_step)
# 转换为LSTM可接受的格式 [样本数,时间步长,特征数]
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
# 创建并训练LSTM模型
model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1], 1)))
model.add(LSTM(units=50))
model.add(Dense(units=1))
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(X_train, y_train, epochs=10, batch_size=32)
# 使用训练好的模型进行预测
predicted_stock_prices = model.predict(X_test)
predicted_stock_prices = scaler.inverse_transform(predicted_stock_prices)
# 可视化结果
plt.plot(scaler.inverse_transform(test_data), color='blue', label='Actual Stock Price')
plt.plot(predicted_stock_prices, color='red', label='Predicted Stock Price')
plt.title('Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Stock Price')
plt.legend()
plt.show()
```
上述代码的大致流程为:
1. 导入必要的库,如 numpy、pandas、sklearn、keras。
2. 读取股票数据集,例如通过 `pd.read_csv()` 从 CSV 文件中读取。
3. 对数据进行归一化处理,使用 MinMaxScaler 将数据缩放到 0-1 范围内。
4. 划分训练集和测试集。
5. 定义一个函数来创建 LSTM 模型的输入和输出数据集。
6. 转换输入数据集的维度以适应 LSTM 模型。
7. 创建 LSTM 模型并训练它。
8. 使用训练好的模型进行预测,并将预测结果反归一化。
9. 可视化预测结果和实际股票价格,以比较它们的差异。
请注意,上述代码仅为示例代码,实际预测股票价格需要更详细和复杂的处理,例如特征选择、调参等。此外,预测股票价格是相当复杂和不确定的任务,LSTM 模型也不一定能够准确预测。因此,需要谨慎对待股票预测结果。
阅读全文