支持向量机(Support Vector Machine,SVM)最先由Cortes和Vapnik提出,它是一种有监督的模式识别方法。它的主要思想是建立一个分类决策面。SVM利用核函数将数据映射到高维空间,使其尽可能的线性可分。常用的核函数包括线性核函数、多项式核、径向基核(RBF)、傅里叶核、样条核和Sigmoid核函数等。通过比较这些核函数适用的数据特点,无论样本数据特点是高维还是低维,数据量大还是小,RBF核函数展现了很好的分类性能。因此,选择RBF作为SVM的分类核函数。

优化问题取决于两个重要参数c和g,这两个参数会影响SVM的预测性能。SVM预测问题取决于两个重要参数c和g,这两个参数会影响SVM的预测性能。为了提高模型的预测性能,引入网格式搜索法(GS)优化模型建立过程中的两个重要参数。同时避免模型过学习和欠学习的现象发生,采用5倍交叉验证法以训练集最小均方根误差为适应度函数来进行参数寻优。当达到最小均方根误差时,所得到的c和g为最佳参数。GS中,以0.5为间隔进行全局搜索,c和g的范围均是(2-10, 210)

SVM预测过程为:

(1)输入数据,规定训练输入、训练输出、预测输入和预测输出

(2)为加快网络收敛速度,进行数据归一化处理

(3)参数寻优,网格数搜索开始

(4)得到最优参数建立预测模型,避免模型过学习和欠学习的现象发生,采用5倍交叉验证法以训练集最小均方根误差为适应度函数来进行参数寻优。当达到最小均方根误差时,所得到的c和g为最佳参数。

(5)预测数据输入

(6)得出预测结果

部分代码

%% 清空环境变量
close all;
clear all;
clc;
format compact;
%% 数据的提取和预处理
data=xlsread('筛选后数据');
ts =  data((1:320),1);%训练集输出
tsx = data((1:320),2:end);%训练集输入
tts=data((321:end),1);%预测集输出
ttx= data((321:end),2:end);%预测集输入
% 数据预处理,将原始数据进行归一化
ts = ts';
tsx = tsx';
tts=tts';
ttx=ttx';% mapminmax为matlab自带的映射函数
% 对ts进行归一化
[TS,TSps] = mapminmax(ts,-1,1);    %矢量归一化
[TTS,TTSps]= mapminmax(tts,-1,1);
TS = TS';
TTS=TTS';% mapminmax为matlab自带的映射函数
% 对tsx进行归一化
[TSX,TSXps] = mapminmax(tsx,-1,1); %特征值归一化
[TTX,TTXps] = mapminmax(ttx,-1,1);
% 对TSX进行转置,以符合libsvm工具箱的数据格式要求
TSX = TSX';
TTX = TTX';%% 选择回归预测分析最佳的SVM参数c&g% 进行参数选择:
[bestmse,bestc,bestg] = SVMcgForRegress(TS,TSX,-10,10,-10,10);
% 打印参数选择结果
disp('打印参数选择结果');
str = sprintf( 'Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);
disp(str);%% 利用回归预测分析最佳的参数进行SVM网络训练
cmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.01'];
model = svmtrain(TS,TSX,cmd);%% SVM网络回归预测
[predict,mse] = svmpredict(TS,TSX,model);
[predict_2,mse_2] = svmpredict(TTS,TTX,model);
predict = mapminmax('reverse',predict',TSps);
predict_2 = mapminmax('reverse',predict_2',TTSps);
predict = predict';
predict_2 =predict_2'% 均方根误差计算
N = length(tts);
RMSE = sqrt((sum((tts-predict_2').^2))/N)
% % 相关系数
% N = length(tts);
% YUCE_R2 = (N*sum(predict_2'.*tts)-sum(predict_2)*sum(tts))^2/((N*sum((predict_2).^2)-(sum(predict_2'))^2)*(N*sum((tts).^2)-(sum(tts))^2))
%% 结果分析(测试集)
figure;
plot(tts,'-o');
hold on;
plot(predict_2,'r-^');
legend('实际负荷','预测负荷');
hold off;
title('SVM预测输出图','FontSize',12);
xlabel('2019年11月20日-2019年12月30日','FontSize',12);
ylabel('负荷(KW)','FontSize',12);

结果展示

​编辑

​编辑

微信公众号“matlab学习之家”

基于网格搜索优化支持向量机的负荷预测方法相关推荐

  1. Python实现直方图梯度提升分类模型(HistGradientBoostingClassifier算法)并基于网格搜索进行优化同时绘制PDP依赖图项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 基于直方图的梯度提升分类树.此估算器对缺失值 (NaN) 具有原 ...

  2. 文献综述--------山东某地区基于深度学习神经网络的配电网负荷预测研究

    摘  要:地区电网负荷预测是供电企业在电网建设.运营过程中一项十分要的基础性的工作.小到一个企业的负荷预测,大到全国性电网的负荷预测研究,它的应用结果都会对适用范围内的企业经营管理.电力设施(电网)的 ...

  3. python网格搜索法_Python中基于网格搜索算法优化的深度学习模型分析糖尿病数据...

    介绍 在本教程中,我们将讨论一种非常强大的优化(或自动化)算法,即网格搜索算法.它最常用于机器学习模型中的超参数调整.我们将学习如何使用Python来实现它,以及如何将其应用到实际应用程序中,以了解它 ...

  4. 【电力预测】基于matlab GUI灰色模型电力负荷预测【含Matlab源码 769期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [电力负荷预测]基于matlab GUI灰色模型电力负荷预测[含Matlab源码 769期] 获取代码方式2: 通过订阅紫极神光博客付费专 ...

  5. 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码

    基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 文章目录 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 1 GWO-SVM 模型 1.1 灰狼优化器GWO ...

  6. 基于注意力机制的 CNN-BiGRU 短期电力负荷预测方法

    提出了一种基于 Attention 机制的CNN-BiGRU(卷积神经网络+双向GRU+注意力机制)短期电力负荷预测方法,该方法将历史负荷数据作为输入,搭建由一维卷 积层和池化层等组成的 CNN 架构 ...

  7. R语言构建catboost模型:构建catboost模型并基于网格搜索获取最优模型参数(Select hyperparameters)、计算特征重要度

    R语言构建catboost模型:构建catboost模型并基于网格搜索获取最优模型参数(Select hyperparameters).计算特征重要度(feature importance) 目录

  8. 蒙特卡洛模拟电动汽车充电matlab,基于蒙特卡洛模拟的电动汽车充电负荷预测

    基于蒙特卡洛模拟的电动汽车充电负荷预测 The Prediction of Electric Vehicles Charging Load Based on Monte Carlo Simulatio ...

  9. MATLAB代码:基于蒙特卡洛算法的电动汽车充电负荷预测 关键词:蒙特卡洛 电动汽车 充电负荷预测

    MATLAB代码:基于蒙特卡洛算法的电动汽车充电负荷预测 关键词:蒙特卡洛 电动汽车 充电负荷预测 仿真平台:MATLAB 主要内容:代码主要做的是电动汽车的充电负荷模拟预测,具体为:从影响电动汽车充 ...

最新文章

  1. Google Test(GTest)使用方法和源码解析——断言的使用方法和解析
  2. 省选专练[CQOI2007]涂色
  3. 防火墙安装的十步骤,加强网络第一道保护屏
  4. YunTable 0.1版正式发布!!!(转载)
  5. the data structure i like
  6. DBUtils事务处理
  7. 用JDBC直连方式访问SQL Server 2005详解
  8. bashsupport插件_如何用 bash-support 插件将 Vim 编辑器打造成编写 Bash 脚本的 IDE
  9. 平稳序列的预测和拟合之模型检验
  10. ModalPopupExtender控件主要有两种使用方式:客户端使用方式和服务器端使用方式
  11. 机器学习 (一)------分类
  12. 普通类创建获取session 方式_Springboot系列之RestApi中获取枚举类属性的几种方式...
  13. Ext JS学习第八天 Ext基础之 认识Ext.js 和Ext-more.js
  14. centos7 修改语言为中文
  15. iOS图形学(三):屏幕成像原理
  16. MFC之学习绘制矩形、画刷使用
  17. PCWorld:微软Google进军社交搜索需解决八问题
  18. 工程计算书(计算稿)共享和服务—PASS云计算书平台
  19. unity3d学习笔记-特效(1.粒子系统)
  20. RFC2544测试指标

热门文章

  1. 《高级计算机网络》之无线传感网——大连理工大学研究生课程整理笔记(非常详细,通俗易懂)
  2. 创建类的三个步骤_如何通过5个简单的步骤创建企业网站
  3. 【信息系统项目管理师】项目管理十大知识领域记忆敲出(整体范围进度)
  4. 验证码由字符转换图片
  5. 读后感----《我奋斗了18年才和你坐在一起喝咖啡》
  6. Dweb3.0的核心基础设施?NA(Nirvana)Chain加速开凿链上域名流量通道
  7. 跟着鸟哥学linux【二】
  8. SQL Server中事务日志已满的原因以及解决办法
  9. screenfull全屏显示
  10. linux的debin版本,8个最佳的基于Debian的Linux发行版