热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SVR支持向量回归例子「建议收藏」

SVR支持向量回归例子「建议收藏」SVR支持向量回归例子欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段

SVR软件包的安装:https://www.cnblogs.com/Ran-Chen/p/9462825.html
%使用SVR模型,得到输入矢量x(x包含3个变量x1,x2,x3)到输出矢量y(y只包含一个变量)之间的映射关系,也就是计算y=f(x1,x2,x3)函数的f
%x1,x2,x3时简单的加法运算 y=x1+x2+x3
%训练个数 训练需要的时间(秒) 误差 相关系数
%100 0.0028 9.3469 0.7711
%500 0.05 7.38 0.8
%1000 0.17 4.5889 0.8618
%10000 4.1250 0.006051 0.9997
%20000 8.98 9.98041e-05 0.9999
%50000 33.24 9.97801e-05 0.9999
%60000
%平方后相加运算 y=x1的平方+x2的平方+x3的平方
%训练个数 训练需要的时间(秒) 误差 相关系数
%100 0.002 3212 0.72033
%500 0.04 2516 0.5748
%1000 0.16 2885 0.62
%10000 12.8 1150 0.7964
%20000 41 376 0.9199
%50000 159 4.90 0.998527
%60000 503 0.92 0.999717
%结论:随着训练SVR模型时使用的数据量变大,训练的效果越好。通过误差变小,相关系数变大来体现。

%%clean work
close all;%关闭所有figure窗口
clear;%清空变量
clc;%清空命令
format compact;%空格紧凑
%生成对模型进行训练的数据
%这个模型为y=f(x1,x2,x3),表示此模型有3个输入变量x1,x2,x3,输出变量有1个,y。
%x1 = (0:0.001:10)’; x2 = (20:0.001:30)’; x3 = (50:0.001:60)’;
x1=randi(10,10000,1); x2=randi(10,10000,1); x3=randi(10,10000,1); %使用1到10之间的随机数进行训练
y = x1.^2 + x2.^2 +x3.^2;
%y = x1 + x2 +x3;
%建立回归模型,也就是对模型进行训练
%x是该模型的输入矢量,x中每行有3个数据,分别是x1,x2,x3,y的每个矢量有1个数据
x(:,1)=x1;x(:,2)=x2;x(:,3)=x3;
fprintf(‘Start SVR train,please waiting …’);
tic;%记录SVR模型训练的时间
model = libsvmtrain(y,x,’-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01’);
toc
%利用建立的模型看其在训练集上的回归效果,也就是使用已经训练后的SVR模型,输入训练时使用的输入数据,预测输出结果
%下面libsvmpredict函数的第一个参数无所谓,但是具有和输出变量一样的列数和行数
%如果设置为训练模型时使用过的输出变量,那么在预测时,
%会计算预测的输出结果值和原始的输出结果值之间的误差mse和相关系数prob
[py,mse,prob] = libsvmpredict(y,x,model,’-b 0’);
%简单的加法运算
%训练个数 训练需要的时间(秒) 误差 相关系数
%100 0.0028 9.3469 0.7711
%500 0.05 7.38 0.8
%1000 0.17 4.5889 0.8618
%10000 4.1250 0.006051 0.9997
%20000 8.98 9.98041e-05 0.9999
%50000 33.24 9.97801e-05 0.9999
%60000
%平方后相加运算
%训练个数 训练需要的时间(秒) 误差
%100 0.002 3212 0.72033
%500 0.04 2516 0.5748
%1000 0.16 2885 0.62
%10000 12.8 1150 0.7964
%20000 41 376 0.9199
%50000 159 4.90 0.998527
%60000 503 0.92 0.999717
%结论:随着训练SVR模型时使用的数据量变大,训练的效果越好。通过误差变小,相关系数变大来体现。
figure;%建立一个窗口
plot(y,‘o’);%原始数据以o这种形式标记
hold on;%保持当前图像不刷新
plot(py,‘r*’);%回归数据以红色的*标记
legend(‘原始数据:训练SVR模型时,使用的输出变量’,‘回归数据:使用训练好的SVR模型,对训练时使用的输入变量进行预测’);%设置图例线条
grid on;%画图的时候添加网格线

%进行预测
testx1 = [8.5;3.6;1.5];testx2 = [2.1;2.6;5.8];testx3 = [3.2;5.5;7.8];
display(‘真实数据’);%控制台输出
testy = testx1.^2 + testx2.^2 + testx3.^2
%testy = testx1 + testx2 + testx3
%下面libsvmpredict函数的第一个参数和第二个参数设置为相同,
%就是收入给已经训练好的模型的输入参数
testx(:,1)=testx1;testx(:,2)=testx2;testx(:,3)=testx3;
[ptesty,tmse,prob2] = libsvmpredict(testy,testx,model,’-b 0’);
display(‘预测数据’);
ptesty


推荐阅读
  • 本文介绍了如何在VB.NET版机房收费系统中实现数据从DataGridView导出至Excel的功能,包括环境配置、代码实现及常见问题解决方法。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • Python 学习是否需要先掌握 C 语言?
    Python 是一门非常适合编程入门的语言,很多人疑惑是否需要先学习 C 语言才能更好地掌握 Python。本文将详细探讨这个问题,并为初学者提供专业的建议。 ... [详细]
author-avatar
dmcm0009
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有