【SVM回归预测】基于EMD结合支持向量机实现电力负荷预测附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

近年来,电能质量问题已经成为当今电力工程领域里亟待解决的问题,而电力系统故障诊断分类是改善电能质量和保护电力系统的一个重要环节. 根据电力负荷特性的变化规律,考虑了日期类型、温度、天气情况等影响负荷预测的因素,本文提出将EMD-支持向量机算法应用于电力系统短期负荷预测。.采用EMD将传输线电压信号分解成有限个本征模函数(IMF);结果表明EMD-支持向量机算法比其他预测方法精确等级更高,可靠性更强,合理性和实用性都更强,取得了很好的预测结果。

⛄ 部分代码

function [mse,bestc,bestg] = SVMcgForRegress(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,msestep,kerneltype) %v,cstep这些不写的话就是默认值

%

% 利用网格搜索与交叉验证进行核参数与惩罚参数选择

% cmin cmax c的取值范围

% gmin gmax g的取值范围

% v 就是交叉验证参数  一般是5折交叉验证

% cstep gstep 网格取值的步长

% msestep 误差的步长  只是为了最后画等高线图用一用,这样比较好看

% kerneltype=0(线性核) 1(多项式核) 2(rbf核函数) 3(sigmoid核函数)

[X,Y] = meshgrid(cmin:cstep:cmax,gmin:gstep:gmax);

[m,n] = size(X);

cg = zeros(m,n);

eps = 10^(-4);

bestc = 0;

bestg = 0;

mse = Inf;

basenum = 2;

for i = 1:m  %每更改一组c g值,跑5折交叉验证  最终选择精度最高的那一组c g 

    for j = 1:n

        cmd = ['-v ',num2str(v),' -c ',num2str( basenum^X(i,j) ),' -g ',num2str( basenum^Y(i,j) ),' -s 3 -t ',num2str(kerneltype),' -p 0.1 -d 1'];

        cg(i,j) = svmtrain(train_label, train, cmd);

        

        if cg(i,j) < mse

            mse = cg(i,j);

            bestc = basenum^X(i,j);

            bestg = basenum^Y(i,j);

        end

        

        if abs( cg(i,j)-mse )<=eps && bestc > basenum^X(i,j)

            mse = cg(i,j);

            bestc = basenum^X(i,j);

            bestg = basenum^Y(i,j);

        end

        

    end

end %选择误差最接近的0的c,g。当存在多组c,g,就选择最小的那组cg

% to draw the acc with different c & g

[cg,ps] = mapminmax(cg,0,1);

%%

% figure;

% [C,h] = contour(X,Y,cg,0:msestep:0.5);%contour的作用就是画等高线

% clabel(C,h,'FontSize',10,'Color','r');

% xlabel('log2c','FontSize',12);

% ylabel('log2g','FontSize',12);

% firstline = 'SVR参数选择结果图(等高线图)[GridSearchMethod]'; 

% secondline = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...

%     ' CVmse=',num2str(mse)];

% title({firstline;secondline},'Fontsize',12);

% grid on;

% figure;

% meshc(X,Y,cg); %meshc就是比mesh的3d图在底层(Z=0)多了等高线而已

% % mesh(X,Y,cg);

% % surf(X,Y,cg);

% axis([cmin,cmax,gmin,gmax,0,1]);

% xlabel('log2c','FontSize',12);

% ylabel('log2g','FontSize',12);

% zlabel('MSE','FontSize',12);

% firstline = 'SVR参数选择结果图(3D视图)[GridSearchMethod]'; 

% secondline = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...

%     ' CVmse=',num2str(mse)];

% title({firstline;secondline},'Fontsize',12);

⛄ 运行结果

⛄ 参考文献

[1] 于洋. 基于EMD的SVM支持向量机模型在朝阳旱灾预测中的应用[J]. 江西水利科技, 2022(005):048.

[2] 何婷, 乔俊强, 包建勤,等. 基于EMD和SVM的电力系统故障分类识别[J]. 仪表技术, 2022(004):000.

[3] 尹立, 胡兆光, 韩新阳,等. 基于支持向量机的电力负荷预测研究[C]// 中国高等学校电力系统及其自动化专业学术年会. 2014.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值