使用Pytorch实现简单的LSTM股票预测框架

1.数据获取

使用TuShare获取数据(需要在tushare网站申请账号,获取token号)

取1-4月数据作为训练集,5月数据作为测试集(测试集数据提取代码同训练集)

ts.set_token('208cf0f7e03acf9024568071ab959d8cf3d1908385a7009906dc66d5') 
pro = ts.pro_api()

time_temp = datetime.datetime.now() - datetime.timedelta(days=1)
end_dt = time_temp.strftime('%Y%m%d')

#准备训练集数据

df = ts.pro_bar(ts_code='603912.SH', start_date='20210101', end_date='20210501', freq='D')
df.head() #用 df.head() 可以查看一下下载下来的股票价格数据,显示数据如下:

#把数据按时间调转顺序,最新的放后面
df = df.iloc[::-1]
df.reset_index(inplace=True)
# print(df)

training_set = df.loc[:, ['close']]
#只取价格数据,不要表头等内容
training_set = training_set.values
#数据归一化
sc = MinMaxScaler(feature_range = (0, 1))
training_set_scaled = sc.fit_transform(training_set)
# print(training_set_scaled)
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
当然,我可以为您提供一个使用PyTorch框架LSTM回归预测代码。以下是一个示例代码: ```python import torch import torch.nn as nn # 定义LSTM模型 class LSTMRegressor(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(LSTMRegressor, self).__init__() self.hidden_size = hidden_size self.lstm = nn.LSTM(input_size, hidden_size, batch_first=True) self.fc = nn.Linear(hidden_size, output_size) def forward(self, x): out, _ = self.lstm(x) out = out[:, -1, :] out = self.fc(out) return out # 定义输入和输出的维度 input_size = 6 output_size = 1 # 定义模型超参数 hidden_size = 64 learning_rate = 0.001 num_epochs = 100 # 创建模型实例 model = LSTMRegressor(input_size, hidden_size, output_size) # 定义损失函数和优化器 criterion = nn.MSELoss() optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) # 创建输入数据和目标数据(示例数据) input_data = torch.randn(100, 10, input_size) # (batch_size, sequence_length, input_size) target_data = torch.randn(100, output_size) # (batch_size, output_size) # 训练模型 for epoch in range(num_epochs): # 前向传播 output = model(input_data) loss = criterion(output, target_data) # 反向传播和优化 optimizer.zero_grad() loss.backward() optimizer.step() # 打印训练信息 if (epoch+1) % 10 == 0: print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}') # 使用模型进行预测 input_test = torch.randn(1, 10, input_size) # (batch_size, sequence_length, input_size) output_test = model(input_test) print(f'Prediction: {output_test.item()}') ``` 这个代码定义了一个包含一个LSTM层和一个全连接层的模型,用于回归预测任务。您可以根据自己的数据和需求进行相应的修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值