【MATLAB第29期】基于MATLAB的K最邻近KNN时间序列预测模型,含预测未来

简介: 【MATLAB第29期】基于MATLAB的K最邻近KNN时间序列预测模型,含预测未来

【MATLAB第29期】基于MATLAB的K最邻近KNN时间序列预测模型,含预测未来


一、简介


基于最邻近算法的分类,本质上是对离散的数据标签进行预测,实际上,最邻近算法也可以用于对连续的数据标签进行预测,这种方法叫做基于最邻近数据的回归,预测的值(即数据的标签)是连续值,通过计算数据点最临近数据点平均值而获得预测值。


k近邻回归模型是无参数模型,只是借助k个最近训练样本的目标数值,对待测样本的回归值进行决策。即根据样本的相似度预测回归值。

本文用来衡量样本待测样本回归值的方式为: 对K个近邻目标数值使用普通的算数平均算法


KNN参数根据每个查询点的最邻近的k个数据点的均值作为预测值,其中,k是用户指定的整数,即最邻近的邻居数量。


KNN模型建立

当使用knn计算某个数据点的预测值时,模型会从训练数据集中选择离该数据点最近的k个数据点,并且把它们的y值取均值,把该均值作为新数据点的预测值:对于knn分类,使用score方法评估模型,对于回归的问题,返回的是RMSE,也叫做均方根误差,是回归模型预测的优度度量,



二、展示代码


%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行
%%  导入数据(时间序列的单列数据)
result = xlsread('指数偏移预测2.xlsx');
data =result (:,2);%数据只需要第二列就够了, 不需要第一列编号数据,如果编号作为输入,数值作为输出误差会很大
%% 标准化数据预处理
mu = mean(data); %整个数据的均值 
sig = std(data);  %整个数据的标准值
dataStandardized = (data - mu) / sig;%标准化后的数据
%滑动窗口 参数设为9 ,即第1-70数据训练 ,预测10-79 。2-71测试,预测 11-80
XTrain= dataStandardized(1:70,:);%前70个数据训练
YTrain = dataStandardized(10:79,:);% 前70个数据训练
XTest = dataStandardized(2:71);%测试输入
YTest=data(11:80);%测试输出  测试输出数据就不用标准化处理了, 因为最后是直接与原值做对比的
%% KNN参数
%根据每个查询点的最邻近的k个数据点的均值作为预测值,其中,k是用户指定的整数,即最邻近的邻居数量。
k = 2;  %k一般取小值 ,2合适一些,1误差太小不真实
metric = 'euclidean';%欧式变换
%metric:计算距离的度量,
weights = {'uniform'};
%weights:权重,默认值weights ='uniform',为每个邻居分配统一的权重。
%构建模型
    mdl = mdl.fit(XTrain,YTrain);
    figure()
subplot(1,1,i)
    plot(10:79,YTest','-s','Color',[0 0 255]./255,'linewidth',1,'Markersize',5,'MarkerFaceColor',[0 0 255]./255) ;hold on
    plot(10:79,Ypred(i,:),'-o','Color',[0 0 0]./255,'linewidth',0.8,'Markersize',4,'MarkerFaceColor',[0 0 0]./255 ) ;hold off
    xlabel('样本','fontsize',12,'FontName','华文宋体');
ylabel('数值','fontsize',12,'FontName','华文宋体');
    %ylim([ 78 87])
   legend('KNN预测测试数据','实际分析数据','Location','NorthWest','FontName','华文宋体');
    title(strcat('kNN模型 (k = 2, metric = ''euclidean'', weights = ''', weights(i), ''')'),'fontsize',12,'FontName','华文宋体')
%%  均方根误差
error(1,i) = sqrt(sum((Ypred(i,:)  - YTest').^2) ./ size(YTest,1));
disp(['测试集' num2str(i) '数据的RMSE为:', num2str(error(1,i))])
end
%% 预测未来
ype_num=10;%预测数量-
 figure()
    plot(0:79,data,'-s','Color',[0 0 255]./255,'linewidth',1,'Markersize',5,'MarkerFaceColor',[0 0 255]./255) ;hold on
    plot(79:89,Ypred_10,'-o','Color','r','linewidth',0.8,'Markersize',4,'MarkerFaceColor',[0 0 0]./255 ) ;hold off
    xlabel('样本','fontsize',12,'FontName','华文宋体');
ylabel('数值','fontsize',12,'FontName','华文宋体');
   % ylim([ 78 87])
   legend('实际分析数据','KNN预测数据','Location','NorthWest','FontName','华文宋体');
    title(strcat('kNN模型 (k = 2, metric = ''euclidean'', weights = ''', weights(i), ''')'),'fontsize',12,'FontName','华文宋体')


三、运行结果



四、总结


knn回归模型的优缺点 knn回归有两个重要的参数:最邻近数据点的数量k,数据点之间距离的度量方法。

在实践中,通常使用较小的k值。默认的距离度量是欧式距离


knn回归模型的优点之一是模型很容易理解,通常不需要过多的调参就可以得到不错的性能,并且构建模型的速度通常很快。但是使用knn算法时,对数据进行预处理是很重要的,对特征很多的数据集、对于大多数特征值都为0的数据集,效果往往不是很好


五、代码获取


后台私信回复“29”即可获取下载链接。

相关文章
|
2天前
|
算法
MATLAB|【免费】融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型
这段内容介绍了一个使用改进的麻雀搜索算法优化CNN-BiLSTM模型进行多输入单输出预测的程序。程序通过融合正余弦和柯西变异提升算法性能,主要优化学习率、正则化参数及BiLSTM的隐层神经元数量。它利用一段简单的风速数据进行演示,对比了改进算法与粒子群、灰狼算法的优化效果。代码包括数据导入、预处理和模型构建部分,并展示了优化前后的效果。建议使用高版本MATLAB运行。
|
3天前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
摘要: 本文介绍了使用matlab2022a中优化后的算法,应用于时间序列回归预测,结合CNN、LSTM和Attention机制,提升预测性能。GWO算法用于优化深度学习模型的超参数,模拟灰狼社群行为以求全局最优。算法流程包括CNN提取局部特征,LSTM处理序列依赖,注意力机制聚焦相关历史信息。GWO的灰狼角色划分和迭代策略助力寻找最佳解。
|
4天前
|
机器学习/深度学习 算法 数据可视化
基于WOA优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
该文介绍了使用优化后的深度学习模型(基于CNN、LSTM和Attention机制)进行时间序列预测,对比了优化前后的效果,显示了性能提升。算法在MATLAB2022a中实现,利用WOA(鲸鱼优化算法)调整模型超参数。模型通过CNN提取局部特征,LSTM处理序列依赖,Attention机制关注相关历史信息。核心程序展示了WOA如何迭代优化及预测过程,包括数据归一化、网络结构分析和预测误差可视化。
|
4天前
|
机器学习/深度学习 算法 数据挖掘
基于WOA优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
使用MATLAB2022a,结合WOA优化算法调整了CNN-LSTM-Attention模型的超参数。WOA仿照鲸鱼捕食策略解决优化问题,提升时间序列预测准确性。模型先用CNN提取局部特征,接着LSTM处理长期依赖,最后注意力机制聚焦相关历史信息。优化前后效果对比图显示,预测性能显著改善。代码中展示了WOA优化的网络训练及预测过程,并绘制了预测值与真实值的比较图表。
|
4天前
|
机器学习/深度学习 安全 算法
Matlab基于SEIRD模型,NSIR预测模型,AHP层次分析法新冠肺炎预测与评估分析
Matlab基于SEIRD模型,NSIR预测模型,AHP层次分析法新冠肺炎预测与评估分析
|
4天前
|
机器学习/深度学习 算法 数据挖掘
基于PSO优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
摘要: 本文介绍了运用粒子群优化(PSO)调整深度学习模型超参数以提升时间序列预测性能的方法。在比较了优化前后的效果(Ttttttttttt12 vs Ttttttttttt34)后,阐述了使用matlab2022a软件的算法。文章详细讨论了CNN、GRU网络和注意力机制在时间序列预测中的作用,以及PSO如何优化这些模型的超参数。核心程序展示了PSO的迭代过程,通过限制和调整粒子的位置(x1)和速度(v1),寻找最佳解决方案(gbest1)。最终,结果保存在R2.mat文件中。
基于PSO优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
|
4天前
|
算法 数据安全/隐私保护 数据格式
基于混沌序列的图像加解密算法matlab仿真,并输出加解密之后的直方图
该内容是一个关于混沌系统理论及其在图像加解密算法中的应用摘要。介绍了使用matlab2022a运行的算法,重点阐述了混沌系统的特性,如确定性、非线性、初值敏感性等,并以Logistic映射为例展示混沌序列生成。图像加解密流程包括预处理、混沌序列生成、数据混淆和扩散,以及密钥管理。提供了部分核心程序,涉及混沌序列用于图像像素的混淆和扩散过程,通过位操作实现加密。
|
4天前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
4天前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)

热门文章

最新文章