【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”即可获取下载链接。

相关文章
|
15天前
|
算法 数据可视化
基于SSA奇异谱分析算法的时间序列趋势线提取matlab仿真
奇异谱分析(SSA)是一种基于奇异值分解(SVD)和轨迹矩阵的非线性、非参数时间序列分析方法,适用于提取趋势、周期性和噪声成分。本项目使用MATLAB 2022a版本实现从强干扰序列中提取趋势线,并通过可视化展示了原时间序列与提取的趋势分量。代码实现了滑动窗口下的奇异值分解和分组重构,适用于非线性和非平稳时间序列分析。此方法在气候变化、金融市场和生物医学信号处理等领域有广泛应用。
|
8天前
|
算法 5G 数据安全/隐私保护
3D-MIMO信道模型的MATLAB模拟与仿真
该研究利用MATLAB 2022a进行了3D-MIMO技术的仿真,结果显示了不同场景下的LOS概率曲线。3D-MIMO作为5G关键技术之一,通过三维天线阵列增强了系统容量和覆盖范围。其信道模型涵盖UMa、UMi、RMa等场景,并分析了LOS/NLOS传播条件下的路径损耗、多径效应及空间相关性。仿真代码展示了三种典型场景下的LOS概率分布。
25 1
|
16天前
|
算法
基于GA遗传优化的离散交通网络双层规划模型设计matlab仿真
该程序基于GA遗传优化设计了离散交通网络的双层规划模型,以路段收费情况的优化为核心,并通过一氧化碳排放量评估环境影响。在MATLAB2022a版本中进行了验证,显示了系统总出行时间和区域排放最小化的过程。上层模型采用多目标优化策略,下层则确保总阻抗最小,实现整体最优解。
|
3天前
|
算法 数据挖掘 vr&ar
基于ESTAR指数平滑转换自回归模型的CPI数据统计分析matlab仿真
该程序基于ESTAR指数平滑转换自回归模型,对CPI数据进行统计分析与MATLAB仿真,主要利用M-ESTAR模型计算WNL值、P值、Q值及12阶ARCH值。ESTAR模型结合指数平滑与状态转换自回归,适用于处理经济数据中的非线性趋势变化。在MATLAB 2022a版本中运行并通过ADF检验验证模型的平稳性,适用于复杂的高阶自回归模型。
|
3天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了一种结合粒子群优化(PSO)与分组卷积神经网络(GroupCNN)的时间序列预测算法。该算法通过PSO寻找最优网络结构和超参数,提高预测准确性与效率。软件基于MATLAB 2022a,提供完整代码及详细中文注释,并附带操作步骤视频。分组卷积有效降低了计算成本,而PSO则智能调整网络参数。此方法特别适用于金融市场预测和天气预报等场景。
|
6天前
|
算法 5G 数据安全/隐私保护
SCM信道模型和SCME信道模型的matlab特性仿真,对比空间相关性,时间相关性,频率相关性
该简介展示了使用MATLAB 2022a进行无线通信信道仿真的结果,仿真表明信道的时间、频率和空间相关性随间隔增加而减弱,并且宏小区与微小区间的相关性相似。文中介绍了SCM和SCME模型,分别用于WCDMA和LTE/5G系统仿真,重点在于其空间、时间和频率相关性的建模。SCME模型在SCM的基础上进行了扩展,提供了更精细的参数化,增强了模型的真实性和复杂度。最后附上了MATLAB核心程序,用于计算不同天线间距下的空间互相关性。
10 0
|
9天前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的CNN-LSTM的时间序列回归预测matlab仿真
本项目展示了一种结合灰狼优化(GWO)与深度学习模型(CNN和LSTM)的时间序列预测方法。GWO算法高效优化模型超参数,提升预测精度。CNN提取局部特征,LSTM处理长序列依赖,共同实现准确的未来数值预测。项目包括MATLAB 2022a环境下运行的完整代码及视频教程,代码内含详细中文注释,便于理解和操作。
|
1月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
106 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
1月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
82 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
1月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
62 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码

热门文章

最新文章