一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【电力负荷预测】基于matlab SVM短期电力负荷预测【含Matlab源码 280期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、SVM简介

机器学习的一般框架:
训练集 => 提取特征向量 => 结合一定的算法(分类器:比如决策树、KNN)=>得到结果
1 SVM定义
支持向量机(support vector machines,SVM)是一种二分类模型,它将实例的特征向量映射为空间中的一些点,SVM 的目的就是想要画出一条线,以 “最好地” 区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类。SVM 适合中小型数据样本、非线性、高维的分类问题。

SVM 最早是由 Vladimir N. Vapnik 和 Alexey Ya. Chervonenkis 在1963年提出,目前的版本(soft margin)是由 Corinna Cortes 和 Vapnik 在1993年提出,并在1995年发表。深度学习(2012)出现之前,SVM 被认为机器学习中近十几年来最成功,表现最好的算法。

2 SVM 基本概念
将实例的特征向量(以二维为例)映射为空间中的一些点,如下图的实心点和空心点,它们属于不同的两类。SVM 的目的就是想要画出一条线,以“最好地”区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类。

Q1:能够画出多少条线对样本点进行区分?
答:线是有无数条可以画的,区别就在于效果好不好,每条线都可以叫做一个划分超平面。比如上面的绿线就不好,蓝线还凑合,红线看起来就比较好。我们所希望找到的这条效果最好的线就是具有 “最大间隔的划分超平面”。

Q2:为什么要叫作“超平面”呢?
答:因为样本的特征很可能是高维的,此时样本空间的划分就不是一条线了。

Q3:画线的标准是什么?/ 什么才叫这条线的效果好?/ 哪里好?
答:SVM 将会寻找可以区分两个类别并且能使间隔(margin)最大的划分超平面。比较好的划分超平面,样本局部扰动时对它的影响最小、产生的分类结果最鲁棒、对未见示例的泛化能力最强。

Q4:间隔(margin)是什么?
答:对于任意一个超平面,其两侧数据点都距离它有一个最小距离(垂直距离),这两个最小距离的和就是间隔。比如下图中两条虚线构成的带状区域就是 margin,虚线是由距离中央实线最近的两个点所确定出来的(也就是由支持向量决定)。但此时 margin 比较小,如果用第二种方式画,margin 明显变大也更接近我们的目标。


Q5:为什么要让 margin 尽量大?
答:因为大 margin 犯错的几率比较小,也就是更鲁棒啦。

Q6:支持向量是什么?
答:从上图可以看出,虚线上的点到划分超平面的距离都是一样的,实际上只有这几个点共同确定了超平面的位置,因此被称作 “支持向量(support vectors)”,“支持向量机” 也是由此来的。

三、部分源代码

clc;
clear
C = 30;
theta = 2;%C为最小二乘支持向量机的正则化参数,theta为高斯径向基的核函数参数,两个需要进行优化选择调试
NumOfPre = 1;%预测天数,在此预测本季度最后七天
%以负荷的加权为参考1
al = 2;%温度的加权
be = 1;%湿度的加权
th = 1;%星期的加权
Time = 48;
Data = xlsread('input.xls');%此为从excel表格读数据的命令,表示将表格的数据读到Data数组中,省略表格中的第一行第一列文字部分 可输入你要预测的表格名称Data = Data(2:end,:);
[M,N] = size(Data);%计算读入数据的行和列 M行N列
Data1 = Data;
for i = 1:2maxData = max(Data(:,i));minData = min(Data(:,i));Data1(:,i) = (Data(:,i) - minData)/(maxData-minData);%对温度进行归一化处理
endfor i = 4:NData1(:,i) = log10(Data(:,i)) ;%对负荷进行对数处理 温度和负荷的预处理 可采用不同的方法 可不必拘泥
end
Dim =  M - 2 - NumOfPre;%训练样本数%拥有完整特征描述的数据共有M-2组!!
Input = zeros(M,8,Time);%预先分配处理后的输入向量空间%8是特征空间的维度!也是x的元素数!!
y = zeros(Dim,Time);
for i = 3:M for j = 1:Time%%选取前一天温度、同一时刻的负荷,前两天的负荷,当天的温度作为输入特征x = [Data1(i-1,1:3), Data1(i-1,j+3), Data1(i-2,j+3),Data1(i,1:3)];%x就是每一个负荷对应的特征向量!!!x(1)=al*x(1);x(6)=al*x(6);x(2)=be*x(2);x(7)=be*x(7);x(3)=th*x(3);x(8)=th*x(8);Input(i-2,:,j) = x;%Input(i,:,k)的含义为:第i天第j个时刻的负荷所对应的特征向量y(i-2,j) = Data1(i,j+3);end
end
Dist = zeros(Dim,Dim,Time);%预先分配距离空间
for i=1:Timefor j=1:Dimfor k=1:DimDist(j,k,i) = (Input(j,:,i) - Input(k,:,i))*(Input(j,:,i) - Input(k,:,i))';endend
end

四、运行结果


五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013.
[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013.
[5]方清城.MATLAB R2016a神经网络设计与应用28个案例分析[M].清华大学出版社,2018.

【电力负荷预测】基于matlab SVM短期电力负荷预测【含Matlab源码 280期】相关推荐

  1. 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】

    一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群优化支持向量机短期电力负荷预测[含GUI源码 751期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  2. 【Matlab破损识别】机器视觉+SVM玉米种子破损识别(带面板)【含GUI源码 1651期】

    一.代码运行视频(哔哩哔哩) [Matlab破损识别]机器视觉+SVM玉米种子破损识别(带面板)[含GUI源码 1651期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考 ...

  3. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  4. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  5. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  6. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  7. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  8. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  9. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  10. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

最新文章

  1. arcmap shp导出cad无反应_地图数据获取|2、CAD地图获取
  2. 转:几款主流 NoSql 数据库的对比
  3. python学习手册中文版免费下载-Python学习手册(第3版)
  4. 前端学习(566):margin auto机制
  5. linux tee 日志输出_25 个 Linux 下最炫酷又强大的命令行神器,你用过其中哪几个呢?...
  6. fcc jQuery 练习
  7. 初学者应该如何开启自己的编程生涯?,nginx架构图
  8. redis zset转set 反序列化失败_关于Redis中的五种数据结构,要知其然知其所以然...
  9. 在Intellij IDEA里面配置Tomcat和Websphere Application Server
  10. fckeditor for java_FCKeditor最新版本2.4.1 for java 教程
  11. 使用MTK的SN writer工具写IMEI的方法
  12. ajax 七牛云上传图片,学习笔记:利用七牛云上传图片小结
  13. Python读取视频方法
  14. win7系统rpc服务器不可用无法开机,win7系统RPC服务器不可用的解决方法
  15. 使用 In-Trangle Test 检测极点
  16. Akka Actor模型的简介与Actor的创建方式
  17. 游戏策划入门(5)——开始绘制系统的结构流程图
  18. 二叉树的堂兄弟节点993
  19. 值班c语言程序,5.值班安排C语言程序报告.doc
  20. 【MySQL】聚合函数

热门文章

  1. sql server2008 如何获取上月、上周、昨天、今天、本周、本月的查询周期(通过存储过程)...
  2. ASP.NET Core真实管道详解[1]:中间件是个什么东西?
  3. Android -- 闹钟服务的使用(单次闹钟)
  4. C#获取当前时区转换方法
  5. js--属性和方法(私有/公有)
  6. Matlab返回多个值以及转化为C/C++工程
  7. Atitit 自然语言与人工语言的语法构建ast的异同点 目录 1. 语言节点gaishu。。 2 1.1. 节点、函数数量大约200个 2 1.2. 关键词节点 是 有 的 3 1.3. 标识符
  8. Atitit 提现功能安全条例 目录 1. 防余额篡改 1 2. 大额 频繁交易预警系统 1 3. 增加审核 流程 1 4. 增加审计 1 5. 财务出款核对 1 6. Other 2 6.1. 数
  9. Atitit.日志系统slf4j的使用
  10. Atitit.web三大编程模型 Web Page Web Forms 和 MVC