1.算法运行效果图预览
2.算法运行软件版本
matlab2022a
3.算法理论概述
支持向量机是一种监督学习方法,主要用于分类和回归分析。它基于结构风险最小化原则构建最优超平面以实现最大间隔分类,并且在处理非线性问题时通过核函数映射到高维特征空间来实现线性可分。
4.部分核心程序
figure;
plot(Year,dn{i},'k-o');
hold on
plot(Year,Predict1{i},'r-s');
grid on
xlabel('year');
ylabel('value');
legend('真实值','训练预测值');
%获得误差
for i = 1:31
error(i) = mean(abs(dn{i}-Predict1{i}));
RMSE(i) = sqrt(sum(abs(dn{i}-Predict1{i}).^2)/6);
end
figure;
bar(RMSE);
title('31个城市训练数据的RMSE误差值');
%使用训练模型进行预测
%输入2017年到2020的X变量作为采集数据
%从excel中没提供这个数据集,所以需要这里先用模拟的数据。这里采用拟合法,得到未来几年大概的X值
for i = 1:31%31个城市
tmps1 = Xn{i};
for j = 1:24
tmps2 = tmps1(:,j);
X = [Year'];
%进行拟合
X2 = 2018;
tmps4(:,j) = [tmps2;tmps2(end)+0.001*(X2-2016)*(tmps2(end)-tmps2(end-1))];%调节过大的幅度
end
Xn2{i} = tmps4;
end
%进行预测
for i = 1:31%31个城市
[Predict2{i},error2] = svmpredict([1;1;1;1;1;1;1],Xn2{i},model{i});
end
%用北京的数据进行显示预测结果
Year2=[2011,2012,2013,2014,2015,2016,2018];
K=1;%设置不同的K,选择显示不同的城市
.......................................................
for i = 1:31
figure;
subplot(211);
plot(Year,dn{i},'bs','LineWidth',1,...
'MarkerSize',10);
hold on
plot(Year2,Predict2{i},'r-s','LineWidth',1,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',4)
grid on
xlabel('year');
ylabel('value');
legend('真实值','2018预测值');
title([NAME{i},'预测值']);
subplot(212);
bar([abs(dn{i}-Predict2{i}(1:end-1));0]);
title('误差');
end
%保存数据
XX=[];
for i = 1:31
XX=[XX,Predict2{i}(end)];
end
%注意,XX就是最后的2020年数据Y
XX