【MATLAB第53期】基于MATLAB的TSK模糊神经网络时间序列预测模型,含短期预测未来功能
一、效果展示
二、数据设置
- 数据采用一列数据
- 滑动窗口设置为5 ,可自行设置
- 70%训练
- 30%测试
- 预测未来值为10 ,可自行设置,控制10以内
三、模型参数
nRules = 1;%模糊推理规则的数量
velocity = 2;%学习速度[0,velocity]之间二进制搜索
nEpochs = 1; %运行次数
评价指标:
error = desired - output;% 相对误差
ESS = sum(error(1:n).^2);%误差平方和
SigmaM = sqrt(var(error(1:n)));%误差方差
DW = sum(diff(error(1:n)) .^ 2) / sum(error(1:n) .^ 2);%达宾-沃森值
R2 = 1 - ESS / sum((desired(1:n) - mean(desired(1:n))) .^ 2);%决定系数
MAPE = mean(abs(error(n+1:end)) ./ abs(desired(n+1:end))) * 100;%mape
SigmaF = sqrt(var(error(n+1:end)));%误差方差
Tale = %泰尔系数
四、代码展示
clear all
load data %导入数据 一列数据
tskData=data; %数据命名为tskData
acf = autocorr(tskData, length(tskData)-1);% 自相关
pacf = parcorr(tskData, length(tskData)-1);%偏自相关
figure();% 偏自相关绘图
grid on
bar(pacf);
title('偏自相关');
xlabel('Lag');
ylabel('Autocorrelation');
figure();% 自相关绘图
grid on
bar(acf);
title('自相关');
xlabel('Lag');
ylabel('Autocorrelation');
nInputs =5;%滑动窗口数量
nRules = 1;%模糊推理规则的数量
velocity = 2;%学习速度[0,velocity]之间二进制搜索
nEpochs = 1; %运行次数
nLearnSamples =0.7;% 训练样本数量比例
nSamples = length(tskData) - nInputs; %样本数量
learnPercent = 70;%训练比例
testPercent = 100 - learnPercent;%测试比例
Fn = 10;%预测未来数量 ,只支持短期预测。 如10以内
%滑动窗口处理
sample = zeros(nSamples, nInputs);
for i = 1:nSamples
sample(i,:) = tskData(i:i+nInputs-1);
end
五、代码获取
后台私信回复“53期”即可获取下载链接。