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

MATLAB R2021B环境下基于Takagi-Sugeno-Kang模糊神经网络的时间序列...

MATLAB环境下一种基于Takagi Sugeno Kang型模糊神经网络的时间序列预测方法(以hopkinsirandeath数据集为例)。 算法运行环境为MATLAB R2021B,采用Takagi Sugeno Kang模糊神经网络对时间序列进行预测,以hopkinsirandeat数据为例进行说明。 压缩包=程序+数据+参考。 dat=load('hopkinsirandeath.txt')'; dat1=load('hopkinsiranconfirmed.txt')'; dat2=load('hopkinsiranrecovered.txt')';

最近在折腾时间序列预测的时候,发现TSK模糊神经网络这个组合拳挺有意思的。就拿伊朗的新冠死亡数据(hopkinsirandeath.txt)当例子,咱们一起看看怎么用MATLAB玩转这个预测模型。

先看数据长啥样。把三个数据集都加载进来转置一下,方便后续处理:

dat = load('hopkinsirandeath.txt')'; dat1 = load('hopkinsiranconfirmed.txt')'; dat2 = load('hopkinsiranrecovered.txt')';

这里转置操作主要是为了适配后续神经网络输入需要的维度格式。实际用的时候建议先做个归一化,毕竟不同指标的数值量级可能差得离谱。

接下来是核心的TSK模型搭建。MATLAB自带的Fuzzy Logic工具箱里有现成的工具,咱们用genfis生成初始模糊推理系统:

numMFs = 3; % 隶属函数个数 inputDelay = 1:2; % 输入延迟 tskOpt = genfisOptions('SubtractiveClustering'); initialFIS = genfis(dat(:,1:end-1), dat(:,2:end), tskOpt);

这段代码有几个需要注意的点:inputDelay设定了用前两个时间步的数据预测下一步,相当于构建了一个动态系统。genfisOptions这里用了减法聚类来自动确定规则数,比手动指定规则更智能些。

MATLAB环境下一种基于Takagi Sugeno Kang型模糊神经网络的时间序列预测方法(以hopkinsirandeath数据集为例)。 算法运行环境为MATLAB R2021B,采用Takagi Sugeno Kang模糊神经网络对时间序列进行预测,以hopkinsirandeat数据为例进行说明。 压缩包=程序+数据+参考。 dat=load('hopkinsirandeath.txt')'; dat1=load('hopkinsiranconfirmed.txt')'; dat2=load('hopkinsiranrecovered.txt')';

训练环节用的是经典的ANFIS算法:

epochs = 50; trnOpt = anfisOptions('InitialFIS', initialFIS, 'EpochNumber', epochs); trnFIS = anfis(dat(:,1:end-1), dat(:,2:end), trnOpt);

训练过程中可以实时观察误差下降曲线。如果发现误差没明显下降,可能需要调整隶属函数类型或者增加训练轮次。这里有个小技巧:把训练过程包装在try-catch块里,防止程序崩掉。

预测部分就比较直接了:

predicted = evalfis(trnFIS, dat(:,end)); figure plot([dat(end) predicted]) legend('真实值','预测值')

不过实际操作中发现,直接拿原始数据训练效果可能翻车。最好做一下数据滑动窗口处理,像这样生成输入输出对:

lookback = 5; % 回溯窗口 for i = 1:length(dat)-lookback inputData(i,:) = dat(i:i+lookback-1); targetData(i) = dat(i+lookback); end

这种处理方式相当于让模型学会根据前5天的数据预测第6天的数值,对波动剧烈的时间序列特别有效。

跑完整个流程后,建议计算几个关键指标:

rmse = sqrt(mean((predicted - dat_test).^2)); mae = mean(abs(predicted - dat_test)); fprintf('RMSE: %.2f, MAE: %.2f\n', rmse, mae);

在伊朗死亡数据上跑出来的典型结果,RMSE大概在15-20之间波动。不过要注意这个数据集本身存在不少突变点,建议配合异常检测做预处理。

最后吐槽下遇到的坑:TSK模型对初始参数敏感,有时候换个隶属函数类型结果能差出一倍。还有内存管理的问题,数据量大的时候记得用pack命令清理内存碎片。完整代码包里有数据预处理、模型调参和可视化模块,需要自取。

http://www.cnnetsun.cn/news/1261992.html

相关文章:

  • LeetCode102.二叉树层序遍历
  • 霸王餐券预扣库存场景下,如何防止同一用户多设备并发“薅羊毛”
  • 力扣解题-200. 岛屿数量
  • 国内代理 IP 的类型:住宅 IP、机房 IP、移动 4G/5G IP 区别
  • AI 内容导出乱、格式崩、公式变?我开发了这只鸭子帮我全解决了
  • 智能楼道灯控制器(有完整资料)
  • AI安全应用实战复盘:一场2小时的深度交流,我们聊了什么?
  • esp网络时钟
  • 【无线通信】基于matlab统计信道的低复杂度旋转和位置优化为6D可移动天线无线通信【含Matlab源码 15160期】
  • 2026年,一周就能背完的web前端八股文!(春招最新附答案)!
  • 根据文章举报数量确定推荐
  • NineData 社区版 V4.10.0 发布:新增 9 条异构数据库复制链路,DevOps 能力再升级!
  • Redis知识点
  • 简单 的部分背包问题(贪心算法)
  • Kmeans聚类与肘部法确定聚类个数:Matlab实战
  • COMSOL 激光烧蚀3D体热源引力场温度场仿真探索
  • 使用Springboot实现MQTT通信
  • 多智能体事件触发一致性
  • 类内部方法内 写创建对象
  • GraphRAG 完全指南
  • 非计算机专业如何顺利转行网络安全领域?_如何转行网络安全工程师
  • 基于自适应PI的构网型变流器预同步控制策略复现报告
  • 【跨模态一致性增强模块+开源代码】定位与验证:一个提升深度伪造检测的双流网络
  • 如何从bode图得到单位阶跃的趋势
  • 大数据领域 ETL 中的元数据管理策略
  • 企业微信外部客户群自动化管理:建群+群发+踢人一体化
  • 2200 行 Python 桌面应用拆解:架构设计与关键实现细节(周报收取统计)
  • 开源OpenClaw部署指南
  • 广州信号灯厂家售后
  • 2026 年数据库变更审批工具怎么选?NineData 凭什么排进第一梯队