当前位置: 首页 > news >正文

通过20天预测7天

训练集和测试集如何划分,我如何知道期望和实际的对比。

当你希望通过过去20天的数据来预测未来7天时,你需要进行以下步骤:

1. **数据准备:** 将过去20天的数据整理成合适的格式,其中包括20天的特征和未来7天的目标。

2. **划分训练集和测试集:** 将整理好的数据划分为训练集和测试集。例如,你可以使用前15天的数据作为训练集,后5天的数据作为测试集。

3. **模型训练:** 使用训练集来训练你的时间序列预测模型。这可能涉及到选择适当的模型结构(如LSTM、GRU等)、调整超参数等步骤。

4. **模型预测:** 使用训练好的模型在测试集上进行未来7天的预测。

5. **评估模型性能:** 比较模型预测的未来7天和实际的未来7天数据,评估模型的性能。这可以通过计算预测值和实际值之间的误差指标(如均方误差、平均绝对误差等)来完成。

以下是一个简单的例子,展示了如何实现这个过程:

```python
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import LSTM, Dense# 假设你有一个包含股票开盘价的numpy数组
stock_prices = np.array([/* 包含至少27天的开盘价数据 */])# 创建特征(X)和目标(y)
def create_dataset(dataset, look_back=20, look_forward=7):dataX, dataY = [], []for i in range(len(dataset)-look_back-look_forward+1):a = dataset[i:(i+look_back), 0]dataX.append(a)dataY.append(dataset[i+look_back:i+look_back+look_forward, 0])return np.array(dataX), np.array(dataY)# 归一化数据
scaler = MinMaxScaler(feature_range=(0, 1))
stock_prices_scaled = scaler.fit_transform(stock_prices.reshape(-1, 1))# 创建特征和目标
X, y = create_dataset(stock_prices_scaled)# 划分数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)# 转换数据为LSTM的输入格式 [样本数, 时间步, 特征数]
X_train = np.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
X_test = np.reshape(X_test, (X_test.shape[0], 1, X_test.shape[1]))# 构建LSTM模型
model = Sequential()
model.add(LSTM(units=50, input_shape=(1, 20)))
model.add(Dense(units=7))
model.compile(optimizer='adam', loss='mean_squared_error')# 模型训练
model.fit(X_train, y_train, epochs=50, batch_size=32)# 模型测试
predictions = model.predict(X_test)# 反归一化预测值和实际值
predictions = scaler.inverse_transform(predictions)
y_test = scaler.inverse_transform(y_test)# 打印模型在测试集上的预测结果和实际观测结果
print("未来7天的预测结果:", predictions[-1])
print("实际结果:", y_test[-1])
```

这个例子中,`look_back`参数是用来确定用多少天的数据作为输入特征,`look_forward`参数是用来确定预测未来多少天的数据。在你的实际应用中,你可以根据具体问题来调整这两个参数。

http://www.lryc.cn/news/232519.html

相关文章:

  • 【python】均值、中值和高斯滤波详解和示例
  • 基于STM32的循迹小车项目实战
  • Element UI 偶发性图标乱码问题
  • UniApp中的数据存储与获取指南
  • VUE基础的一些实战总结
  • 【算法】算法题-20231117
  • 轮播图(多个一起轮播)
  • OpenCV中的像素重映射原理及实战分析
  • 如何快速搭建Spring Boot接口调试环境并实现公网访问
  • 简单的用Python实现一下,采集某牙视频,多个视频翻页下载
  • 【手撕数据结构】二分查找(好多细节)
  • Python+Selenium WebUI自动化框架 -- 基础操作封装
  • PyCharm 【unsupported Python 3.1】
  • flutter TabBar指示器
  • PDF/X、PDF/A、PDF/E:有什么区别,为什么有这么多格式?
  • Microsoft发布了一份关于其产品安全修复的 11 月报告。
  • 12v24v60v高校同步降压转换芯片推荐
  • pip 问题
  • 云计算(一):弹性计算概述
  • Qt/C++ 获取QProcess启动的第三方软件的窗体标题
  • Borland编辑器DOS系统快捷键应用
  • KeyarchOS的CentOS迁移实践:使用操作系统迁移工具X2Keyarch V2.0
  • Golang抓包:实现网络数据包捕获与分析
  • 分类预测 | Matlab实现QPSO-SVM、PSO-SVM、SVM多特征分类预测对比
  • kubernetes部署jenkins
  • Node.js详解
  • v-html命令渲染的内容,使用scoped属性的情况下,样式不起作用
  • 浅谈vue2.0和vue3.0的区别
  • git clone报错SSL connect error
  • LeetCode(26)判断子序列【双指针】【简单】