基于TCN时间序列预测生猪价格:从数据到模型实现
本文介绍了一种基于TCN(Temporal Convolutional Network,时间卷积网络)的时间序列预测方法,用于预测生猪价格。通过使用历史数据中的多个特征(如仔猪价格、生猪存栏量、屠宰量、玉米价格、豆粕价格和牛肉价格),我们构建了一个TCN模型来预测未来的生猪价格。文章详细介绍了数据预处理、模型构建、训练和评估的完整流程,并输出了模型的R2和RMSE指标以评估性能。此外,我们还通过可
1. 引言
生猪价格是农业经济中的重要指标,其波动对养殖户、消费者和市场都有重要影响。准确预测生猪价格有助于制定合理的生产和销售策略。本文将介绍如何使用TCN(Temporal Convolutional Network,时间卷积网络)对生猪价格进行时间序列预测,并通过可视化展示预测结果和特征重要性。
2. 数据集介绍
我们使用的数据集包含以下字段: 时间:日期 仔猪价格:仔猪的市场价格 生猪存栏:生猪存栏量 屠宰量:规模以上生猪定点屠宰企业的屠宰量 玉米价格:玉米的市场价格 豆粕价格:豆粕的市场价格 牛肉价格:牛肉的市场价格 生猪价格:生猪的市场价格(目标变量) 数据集的时间跨度为2010年1月至2024年11月。
| 时间 | 仔猪价格 | 生猪存栏 | 规模以上屠宰企业屠宰量 | 玉米价格 | 豆粕价格 | 牛肉价格 | 生猪价格 |
| 2010/1 | 17.41 | 45500 | 2128 | 1.9 | 3.85 | 34.0775 | 12.21 |
| 2010/2 | 16.6 | 44330 | 1596 | 1.9 | 3.73 | 34.495 | 11.05 |
| 2010/3 | 15.61 | 44130 | 1774 | 1.92 | 3.61 | 33.856 | 10.08 |
| 2010/4 | 14.78 | 43600 | 1933 | 1.98 | 3.51 | 33.445 | 9.85 |
| 2024/9 | 41.45 | 42694 | 2640 | 2.5 | 3.4 | 61.42 | 18.96 |
| 2024/10 | 36.37 | 42694 | 2876 | 2.4 | 3.38 | 61.24 | 17.60 |
| 2024/11 | 34.42 | 42694 | 3190 | 2.36 | 3.35 | 60.85 | 16.59 |
3. 方法概述
3.1 TCN简介
TCN是一种基于卷积神经网络(CNN)的时间序列模型,具有以下特点:
-
使用因果卷积(Causal Convolution)确保未来数据不会影响过去数据的预测。
-
支持并行计算,训练效率高。
-
能够捕捉长期依赖关系。
3.2 模型设计
我们将使用TCN模型预测生猪价格,具体步骤如下:
-
数据预处理:标准化特征,构建时间序列数据。
-
模型构建:使用Keras实现TCN模型。
-
模型训练:训练模型并评估性能。
-
可视化:展示预测结果和特征重要性。
4. 代码实现
TCN(Temporal Convolutional Network,时间卷积网络)是一种专门用于处理时间序列数据的卷积神经网络(CNN)架构。它结合了卷积神经网络的高效性和时间序列建模的能力,能够捕捉时间序列中的长期依赖关系。以下是TCN模型的原理介绍:
4.1 TCN的核心思想
TCN的核心思想是通过因果卷积(Causal Convolution)和膨胀卷积(Dilated Convolution)来捕捉时间序列中的长期依赖关系。与传统的RNN(如LSTM、GRU)相比,TCN具有以下优势:
-
并行计算:TCN可以并行处理时间序列数据,训练速度更快。
-
长时依赖:通过膨胀卷积,TCN能够捕捉时间序列中较长时间跨度的依赖关系。
-
稳定梯度:TCN避免了RNN中常见的梯度消失或爆炸问题。
4.2 TCN的网络结构
TCN的网络结构通常由多个TCN块堆叠而成,每个TCN块包含以下组件:
-
因果卷积层:确保时间方向性。
-
膨胀卷积层:扩大感受野,捕捉长期依赖。
-
激活函数:通常使用ReLU。
-
残差连接:增强模型的表达能力。
-
归一化层:如Batch Normalization,用于加速训练。
-
主要代码:
def TCN(input_shape): inputs = Input(shape=input_shape) # 第一层卷积 conv1 = Conv1D(filters=64, kernel_size=3, padding='causal', activation='relu')(inputs) # 第二层卷积 conv2 = Conv1D(filters=64, kernel_size=3, padding='causal', activation='relu')(conv1) # 残差连接 res = Add()([conv1, conv2]) # 全局池化 pooled = MaxPooling1D(pool_size=2)(res) # 展平 flattened = Flatten()(pooled) # 全连接层 outputs = Dense(1)(flattened) model = Model(inputs, outputs) return model
5. 结果分析
5.1 模型性能

-
R2 Score: 0.9176
-
RMSE: 2.1395
模型在测试集上表现良好,R2接近1,RMSE较低,说明预测结果与实际值较为接近。
5.2 可视化结果
-
预测结果图:展示了实际值与预测值的对比,两者趋势基本一致。

-
特征重要性图:展示了卷积层权重的平均值,反映了各特征对预测的贡献。

6. 总结
本文使用TCN模型对生猪价格进行了时间序列预测,并通过可视化展示了预测结果和特征重要性。TCN模型在捕捉时间序列数据的长期依赖关系方面表现出色,适合用于类似的经济指标预测任务。
7. 程序和数据获得!
以上实验就介绍完了。获得实验数据和完整代码,请私我。
更多推荐

所有评论(0)