SVM简介

支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。

% 基于SVM的回归预测分析——上证指数开盘指数预测
%% 清空环境变量
function chapter_sh
tic;
close all;
clear;
clc;
format compact;
%% 数据的提取和预处理% 载入测试数据上证指数(1990.12.19-2009.08.19)
% 数据是一个4579*6的double型的矩阵,每一行表示每一天的上证指数
% 6列分别表示当天上证指数的开盘指数,指数最高值,指数最低值,收盘指数,当日交易量,当日交易额.
load chapter_sh.mat;% 提取数据
[m,n] = size(sh);
ts = sh(2:m,1);
tsx = sh(1:m-1,:);% 画出原始上证指数的每日开盘数
figure;
plot(ts,'LineWidth',2);
title('上证指数的每日开盘数(1990.12.20-2009.08.19)','FontSize',12);
xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);
ylabel('开盘数','FontSize',12);
grid on;% 数据预处理,将原始数据进行归一化
ts = ts';
tsx = tsx';% mapminmax为matlab自带的映射函数
% 对ts进行归一化
[TS,TSps] = mapminmax(ts,1,2); % 画出原始上证指数的每日开盘数归一化后的图像
figure;
plot(TS,'LineWidth',2);
title('原始上证指数的每日开盘数归一化后的图像','FontSize',12);
xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);
ylabel('归一化后的开盘数','FontSize',12);
grid on;
% 对TS进行转置,以符合libsvm工具箱的数据格式要求
TS = TS';% mapminmax为matlab自带的映射函数
% 对tsx进行归一化
[TSX,TSXps] = mapminmax(tsx,1,2);
% 对TSX进行转置,以符合libsvm工具箱的数据格式要求
TSX = TSX';%% 选择回归预测分析最佳的SVM参数c&g% 首先进行粗略选择:
[bestmse,bestc,bestg] = SVMcgForRegress(TS,TSX,-8,8,-8,8);% 打印粗略选择结果
disp('打印粗略选择结果');
str = sprintf( 'Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);
disp(str);% 根据粗略选择的结果图再进行精细选择:
[bestmse,bestc,bestg] = SVMcgForRegress(TS,TSX,-4,4,-4,4,3,0.5,0.5,0.05);% 打印精细选择结果
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 = mapminmax('reverse',predict',TSps);
predict = predict';% 打印回归结果
str = sprintf( '均方误差 MSE = %g 相关系数 R = %g%%',mse(2),mse(3)*100);
disp(str);%% 结果分析
figure;
hold on;
plot(ts,'-o');
plot(predict,'r-^');
legend('原始数据','回归预测数据');
hold off;
title('原始数据和回归预测数据对比','FontSize',12);
xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);
ylabel('开盘数','FontSize',12);
grid on;figure;
error = predict - ts';
plot(error,'rd');
title('误差图(predicted data - original data)','FontSize',12);
xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);
ylabel('误差量','FontSize',12);
grid on;figure;
error = (predict - ts')./ts';
plot(error,'rd');
title('相对误差图(predicted data - original data)/original data','FontSize',12);
xlabel('交易日天数(1990.12.19-2009.08.19)','FontSize',12);
ylabel('相对误差量','FontSize',12);
grid on;
snapnow;
toc;%% 子函数 SVMcgForRegress.m
function [mse,bestc,bestg] = SVMcgForRegress(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,msestep)
%SVMcg cross validation by faruto%
% by faruto
%Email:patrick.lee@foxmail.com QQ:516667408 http://blog.sina.com.cn/faruto BNU
%last modified 2010.01.17
%Super Moderator @ www.ilovematlab.cn% 若转载请注明:
% faruto and liyang , LIBSVM-farutoUltimateVersion
% a toolbox with implements for support vector machines based on libsvm, 2009.
% Software available at http://www.ilovematlab.cn
%
% Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for
% support vector machines, 2001. Software available at
% http://www.csie.ntu.edu.tw/~cjlin/libsvm% about the parameters of SVMcg
if nargin < 10msestep = 0.06;
end
if nargin < 8cstep = 0.8;gstep = 0.8;
end
if nargin < 7v = 5;
end
if nargin < 5gmax = 8;gmin = -8;
end
if nargin < 3cmax = 8;cmin = -8;
end
% X:c Y:g cg:acc
[X,Y] = meshgrid(cmin:cstep:cmax,gmin:gstep:gmax);
[m,n] = size(X);
cg = zeros(m,n);eps = 10^(-4);bestc = 0;
bestg = 0;
mse = Inf;
basenum = 2;
for i = 1:mfor j = 1:ncmd = ['-v ',num2str(v),' -c ',num2str( basenum^X(i,j) ),' -g ',num2str( basenum^Y(i,j) ),' -s 3 -p 0.1'];cg(i,j) = svmtrain(train_label, train, cmd);if cg(i,j) < msemse = cg(i,j);bestc = basenum^X(i,j);bestg = basenum^Y(i,j);endif abs( cg(i,j)-mse )<=eps && bestc > basenum^X(i,j)mse = cg(i,j);bestc = basenum^X(i,j);bestg = basenum^Y(i,j);endend
end
% to draw the acc with different c & g
[cg,ps] = mapminmax(cg,0,1);
figure;
[C,h] = contour(X,Y,cg,0:msestep:0.5);
clabel(C,h,'FontSize',10,'Color','r');
xlabel('log2c','FontSize',12);
ylabel('log2g','FontSize',12);
firstline = 'SVR参数选择结果图(等高线图)[GridSearchMethod]';
secondline = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...' CVmse=',num2str(mse)];
title({firstline;secondline},'Fontsize',12);
grid on;figure;
meshc(X,Y,cg);
% mesh(X,Y,cg);
% surf(X,Y,cg);
axis([cmin,cmax,gmin,gmax,0,1]);
xlabel('log2c','FontSize',12);
ylabel('log2g','FontSize',12);
zlabel('MSE','FontSize',12);
firstline = 'SVR参数选择结果图(3D视图)[GridSearchMethod]';
secondline = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...' CVmse=',num2str(mse)];
title({firstline;secondline},'Fontsize',12);

上证指数开盘指数预测 Matlab相关推荐

  1. 【神经网络学习笔记】上证指数开盘指数预测

    摘要: 上证指数是反映上海证券交易所挂牌股票总体走势的统计指标.上海证券交易所股票指数的发布几乎是和股市行情的变化相同步的,它是我国股民和证券从业人员研判股票价格变化趋势必不可少的参考依据.本文通过分 ...

  2. 时序预测 | MATLAB实现趋势外推时间序列预测(含移动平均、指数平滑对比)

    时序预测 | MATLAB实现趋势外推时间序列预测(含移动平均.指数平滑对比) 目录 时序预测 | MATLAB实现趋势外推时间序列预测(含移动平均.指数平滑对比) 基本介绍 程序设计 学习总结 参考 ...

  3. 灰色马尔科夫预测 matlab代码(数据量太少,有局限性)

    首先声明,本人只是个刚学matlab不到一周的纯小白,写灰色马尔科夫是因为数学建模培训练题的时候要用到,但是在网上找不到现成的能用的代码(啊没错,我就是那种白嫖党),而且找到的基本都是"付费 ...

  4. MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测

    MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测 摘要 近些年,随着计算机技术的不断发展,神 ...

  5. matlab中的灰色预测,灰色预测MATLAB程序

    <灰色预测MATLAB程序>由会员分享,可在线阅读,更多相关<灰色预测MATLAB程序(11页珍藏版)>请在人人文库网上搜索. 1.实用标准文档灰色预测彷设曲七叫L叫耳/叫励 ...

  6. qr-rls算法matlab实现,【预测模型】基于RLS算法进行预测matlab源码

    一.简介 1 概述 递归最小二乘(RLS)算法是一种典型的数据处理方法,由著名学者高斯在1795年提出,高斯认为,根据所获得的观测数据来推断未知参数时,未知参数最可能的值是这样一个数据,即它使各项实际 ...

  7. 组合预测 | MATLAB实现EMD-KPCA-LSTM、EMD-LSTM、LSTM多变量时间序列预测对比

    组合预测 | MATLAB实现EMD-KPCA-LSTM.EMD-LSTM.LSTM多变量时间序列预测对比 目录 组合预测 | MATLAB实现EMD-KPCA-LSTM.EMD-LSTM.LSTM多 ...

  8. 时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM长短期记忆神经网络)

    时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM长短期记忆神经网络) 目录 时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM ...

  9. 时序预测 | MATLAB实现LSTM长短期记忆神经网络时间序列预测

    目录 时序预测 | MATLAB实现LSTM长短期记忆神经网络时间序列预测 预测效果 程序设计 案例1 案例2 参考资料 时序预测 | MATLAB实现LSTM长短期记忆神经网络时间序列预测 预测效果 ...

最新文章

  1. “吴恩达deeplearningai”微信公众号上线,将发布《机器学习训练秘籍》
  2. 【MM配置】Purchasing 采购配置
  3. pycharm 运行程序时提示错误信息:ModuleNotFoundError: No module named 'pytest' 解决方法
  4. 超越谷歌BERT!依图推出预训练语言理解模型ConvBERT
  5. Maven-学习笔记04【基础-Maven生命周期和概念模型图】
  6. Linux networkmanager
  7. 云计算炒作多过采纳 普及仍需时日
  8. 网络流Dinic算法模板 POJ1273
  9. linux中查找文件属于那个软件包的方法
  10. 《乌镇互联网饭局图鉴》
  11. Rust语言学习大纲
  12. Some normal compiling and debugging commands for C# 常见C#调试和编译命令
  13. 13. Element childNodes 属性
  14. erp系统原理和实施第五版pdf_ERP系统实施费用!
  15. 用Python代码自动生成文献的IEEE引用格式
  16. 只有python扩展库才需要导入以后才能使用其中对象_只有Python扩展库才需要导入以后才能使用其中的对象,Python标准库不需要导入即可使用其中的所有对象和方法。...
  17. 计算机视觉中的变分方法-扩散(Diffusion)
  18. 流行学习,比较好的一篇博客
  19. 动态规划--数位dp--二进制状态压缩
  20. 离散数学及其应用_第1章_基础:逻辑和证明

热门文章

  1. PyTorch scatter_ 从懵懂到清晰
  2. 华为推出智能眼镜;苹果首次在俄罗斯被起诉
  3. Vivado_AXI Quad SPI_IP核
  4. Python自动化小技巧11——excel文件的文字内容筛选
  5. 不同分辨率对应的像素输出时钟以及同步信号参数的整理
  6. ARM芯片tops的计算方法
  7. 分享一个网易新闻的api接口
  8. 2022年电脑行业前景
  9. EasyNVS摄像机公网全终端无插件网页摄像机直播管理服务运行出现“请求服务不存在或已停止”
  10. 安卓IMS 原理解析(二、IMS之InputReader事件获取)