时间序列预测matlab代码ann
时间: 2024-09-21 09:06:09 浏览: 34
MATLAB神经网络气温预报代码-ANN_FlowForecasting:Matlab代码用于储层流入预测
时间序列预测常常使用机器学习方法,其中一种常用的技术是人工神经网络 (ANN)。在MATLAB中,你可以利用其内置的Neural Network Toolbox来实现这一过程。下面是一个简单的例子,展示了如何使用多层前馈神经网络 (Multilayer Perceptron, MLP) 对时间序列数据进行预测:
```matlab
% 导入所需库并生成示例数据
addpath('toolbox_path'); % 需要替换为你安装的Neural Network Toolbox路径
load timeseries_data.mat; % 假设你有名为timeseries_data的变量,包含输入和目标数据
% 准备数据(这里假设输入是过去n步的数据,输出是第n+1步)
n_inputs = 10; % 输入时间步数
n_outputs = 1; % 输出时间步数
input_data = timeseries_data(1:end-n_outputs,:);
output_data = timeseries_data(n_inputs+1:end,:);
% 划分训练集和测试集
[trainInd,testInd] = dividerand(size(input_data,1),0.7); % 70%用于训练,30%用于测试
trainInputs = input_data(trainInd,:);
trainOutputs = output_data(trainInd,:);
testInputs = input_data(testInd,:);
testOutputs = output_data(testInd,:);
% 创建MLP网络
net = feedforwardnet([n_inputs n_hidden_units n_outputs]); % n_hidden_units是你想要的隐藏层节点数
net.layers{1}.transferFcn = 'purelin'; % 非线性函数,这里设置为线性
net.trainFcn = 'trainscg'; % 使用梯度下降法训练
% 训练网络
options = trainingOptions('adam', ... % 优化选项
'MaxEpochs',50, ... % 最大迭代次数
'MiniBatchSize',10, ... % 批处理大小
'Shuffle','every-epoch', ... % 每次迭代都会随机打乱数据
'Verbose',false);
[net,tr] = train(net,trainInputs',trainOutputs',options);
% 测试模型
predicted = net(testInputs');
mse = mean((predicted - testOutputs')^2); % 计算均方误差
% 显示预测结果
plot(testInputs,[],'o',predicted,'r-')
xlabel('实际值')
ylabel('预测值')
title(['Mean Square Error: ' num2str(mse)])
阅读全文