一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【用电量预测】基于matlab SVM用电量预测【含Matlab源码 103期】

二、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)”,“支持向量机” 也是由此来的。

三、部分源代码

clear all;
clc ;
close all
%得到文件路径,找到所有.dat格式的文件
sh = xlsread('data.xlsx','Sheet1','B2:B38');
addpath('./libsvm-3.20');%%添加工具箱
%extract data
[m,n] = size(sh);
n1 = round(length(sh)*0.7);%训练样本大小
ts = sh(1:n1,1);%训练数据
tsx = sh(n1+1:m,1);%测试数据
original = sh(n1+1:end,:);%原始测试数据
%归一化处理
[TS,TSps] = mapminmax(ts);
[TSX,TSXps] = mapminmax(tsx);
[TSX_zong,TSXps_zong] = mapminmax(sh);
%split the data into training and testingtrain_label = TS(1:n1,:);%训练数据标签
train_data = TS(1:n1,:);%训练数据
test_label = TSX(1:end,:);%测试数据标签
test_data = TSX(1:end,:);%测试数据
test_label_zong = TSX_zong(1:end,:);%测试数据标签
test_data_zong = TSX_zong(1:end,:);%测试数据
% Find the optimize value of c,g paramter
% Approximately choose the parameters:
% the scale of c is 2^(-5),2^(-4),...,2^(10)
% the scale of g is 2^(-5),2^(-4),...,2^(5)
[bestmse,bestc,bestg] = svmregress(train_label,train_label,-5,10,-5,5,3,1,1,0.0005);% Display the approximate result
disp('Display the approximate result');
str = sprintf( 'Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);
disp(str);
%Do training by using svmtrain of libsvm
cmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.01'];
model = svmtrain(train_label,train_data,cmd);%训练
%Do predicting by using svmpredict of libsvmclear all;
clc ;
close all
%得到文件路径,找到所有.dat格式的文件
sh = xlsread('data.xlsx','Sheet1','B2:B38');
addpath('./libsvm-3.20');%%添加工具箱
%extract data
[m,n] = size(sh);
n1 = round(length(sh)*0.7);%训练样本大小
ts = sh(1:n1,1);%训练数据
tsx = sh(n1+1:m,1);%测试数据
original = sh(n1+1:end,:);%原始测试数据
%归一化处理
[TS,TSps] = mapminmax(ts);
[TSX,TSXps] = mapminmax(tsx);
[TSX_zong,TSXps_zong] = mapminmax(sh);
%split the data into training and testingtrain_label = TS(1:n1,:);%训练数据标签
train_data = TS(1:n1,:);%训练数据
test_label = TSX(1:end,:);%测试数据标签
test_data = TSX(1:end,:);%测试数据
test_label_zong = TSX_zong(1:end,:);%测试数据标签
test_data_zong = TSX_zong(1:end,:);%测试数据
% Find the optimize value of c,g paramter
% Approximately choose the parameters:
% the scale of c is 2^(-5),2^(-4),...,2^(10)
% the scale of g is 2^(-5),2^(-4),...,2^(5)
[bestmse,bestc,bestg] = svmregress(train_label,train_label,-5,10,-5,5,3,1,1,0.0005);% Display the approximate result
disp('Display the approximate result');
str = sprintf( 'Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);
disp(str);
%Do training by using svmtrain of libsvm
cmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.01'];
model = svmtrain(train_label,train_data,cmd);%训练
%Do predicting by using svmpredict of libsvm

四、运行结果

五、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源码 103期】相关推荐

  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. stm32 堆和栈(stm32 Heap Stack)
  2. CentOS6.4安装VirtualBox,以及ISO镜像无法加载的解决方法
  3. dedecms织梦模板修改专题路径的方法
  4. spring注解controller示例
  5. java商品新增怎麽弄_添加新商品时如何初始化计数器 - java
  6. AngularJs ngIf、ngSwitch、ngHide/ngShow
  7. 敏捷开发一千零一问系列之三:序言及解决问题的心法(共振)
  8. 特斯拉首个中国工厂落户上海临港
  9. .net 自定义控件显示及传参--转
  10. 不要轻易在数据库(尤其是线上数据库)执行,update、delete数据 !!!
  11. ios测试游戏用什么软件,《超维对决》iOS测试安装说明
  12. HDOJ1548(BFS)
  13. 快手内容运营-数据分析面试
  14. 一、PocketSphinx-Android DNK环境搭建
  15. 从微软官网下载win10镜像.iso文件
  16. [maya学习笔记(18)] 粒子系统 - 落叶纷飞
  17. Ubuntu20.04 向日葵无法被远控的解决办法
  18. 一款好用的设计师导航,让设计师拥有良好的设计体验
  19. 触摸板触摸屏禁止手指缩放,这么处理才行
  20. 用友U8案例教程库存管理前台操作

热门文章

  1. 【ImageMagick】ImageMagick命令行工具
  2. Simplify Path
  3. sql server 2008r2 备份到局势网共享硬盘
  4. Linux网站搭建(3)---内网网站发布到外网(转)
  5. 从leap的手掌发出射线,射线碰撞到物体,用红色的小球表示碰撞点,并把碰撞点用linerenderer渲染出来
  6. 论文多个实验时VS或Unity工程需要每次新建吗?
  7. Atitit bootsAtitit bootstrap布局 栅格.docx 目录 1. 简述container与container-fluid的区别 1 1.1.1. 在bootstrap中的布局
  8. Atitit 学习的本质 团队管理与培训的本质 attilax总结 1. 学习的定义 1 2. 学习的本质是数据的处理,海量的数据,处理能力有限的大脑 2 2.1. 摘要(缩小数据体量。。这个过程有
  9. Atitit gui控件定位解决方案
  10. Atitit opencv 模板匹配