• 通过20天预测7天


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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    深度学习(七)——神经网络的卷积操作
    学术论文引言、正文和致谢格式规范标准 - 易智编译EaseEditing
    iPhone手机屏幕分辨率
    365天深度学习训练营-第P3周:天气识别
    Go微服务框架go-kratos实战05:分布式链路追踪 OpenTelemetry 使用
    【POJ No. 3630】 电话表 Phone List
    SAE J3016路面机动车驾驶自动化系统相关术语的分类和定义(2021中文版-全文)
    『吴秋霖赠书活动 | 第二期』《ChatGPT原理与实战》
    揭秘计算机奇迹:探索I/O设备的神秘世界!
    机器学习基本知识(2)
  • 原文地址:https://blog.csdn.net/wenxi2367/article/details/134452915