支持向量机matlab实例的教材,MATLAB支持向量机学习笔记

此文章为《量化投资以MATLAB为工具》一书中支持向量机(SVM)部分,自己的实验记录。

测试数据为上证指数1990.12.19至2009.08.19的真实指数,数据大小为4579x6的矩阵。其中每一行表示每一个交易日的上证指数各种指标,6列分别表示当天上证指数的开盘指数、指数最高值、指数最低值、收盘指数、当日交易量和当日交易额。

下面按书中提到步骤,对流程进行介绍:

获取上证指数的数据

可以从本书的在线资源中下载所有源码以及数据,定位到此章后,即可得到名为『chapter_sh.mat』的数据。输出为图形,如下所示:

377dddffb734

上证指数每日的开盘指数

选定自变量与因变量

选取第1个到第4578个交易日内每日的开盘指数、指数最高值、指数最低值、收盘指数、交易量和交易额作为自变量,选取第2个到第4579个交易日内每日的开盘数作为因变量。

代码如下:

[m, n] = size(sh);

ts = sh(2:m, 1);

tsx = sh(1: m-1, :);

数据预处理

通过使用mapminmax函数,对上证指数进行归一化处理,区间为1到2。处理后的图形如下图所示:

377dddffb734

上证指数每日的开盘指数归一化结果

参数选择

通过自定义的SVMcgForRegress.m函数,实现对参数的选择,先进行粗略选择,再进行精细选择。

粗略选择

其二维及三维结果如下图所示:

377dddffb734

粗略选择结果(二维)

377dddffb734

粗略选择结果(三维)

精细选择

其二维及三维结果如下图所示:

377dddffb734

精细选择结果(二维)

377dddffb734

精细选择结果(三维)

训练及回归预测

通过libSVM工具提供的svmtrain以及svmpredict函数完成对数据的训练。效果如下:

377dddffb734

原始数据和回归数据对比

从图中可以看到两者的数据基本是吻合的。

再通过predict - ts';得到两者的差值,生成的误差图如下:

377dddffb734

误差图

再求得它们之间的相对误差图,如下所示:

377dddffb734

相对误差图

从上图中可看到,后期预测数据相对实际数据的偏差较为平稳,基本处在0.1(10%)的区间内。

结语

通过对书中的随书代码进行重新校验,在此过程中,练习了MATLAB的使用,以及LibSVM类库的安装。

由于本书编写的时间较早,部分接口以及配置等都有所变动,在实验过程中,也遇到相关的问题,不过都通过网络方案予以解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值