博客
关于我
【预测模型】SVM回归预测算法股票趋势预测【Matlab 010期】
阅读量:712 次
发布时间:2019-03-21

本文共 1395 字,大约阅读时间需要 4 分钟。

1. 简介

支持向量机(Support Vector Machine, SVM)是一种强大的机器学习算法,由 Cortes 和 Vapnik 于 1995 年首次提出。它在小样本、高维、非线性分类问题上表现突出,同时也可扩展到函数拟合等领域,具有广泛的应用价值。

2. 数学基础

2.1 二维空间

在二维空间中,支持向量机通过寻找最大间隔直线将数据分隔开。该直线与训练样本尽可能远,同时只包含极少数支持向量(即该直线上的一点),这是 SVM 中的核心思想。

通过将数据分布绘制出来,可以直观地观察到这一过程。原始数据点分布在平面上,支持向量位于分隔直线上。随着数据分布的变化,分隔直线的位置和方向也会调整,以达到最优 separating hyperplane。

2.2 算法概述

SVM的主要步骤如下:

  • ** loadData**:读取训练数据。
  • Data Preprocessing:对数据进行预处理,例如归一化或标准化。
  • (kernel)Mapping:将数据映射到高维特征空间。
  • ** classify**:在新的特征空间中训练分类器。
  • ** predict**:将新的数据集应用于预训练模型,进行预测。
  • 这一系列步骤确保了 SVM 的鲁棒性和泛化能力。

    3. 源代码解析

    以下是基于 MATLAB 的 SVM 代码示例:

    % 加载数据sh = dlmread('yahoo.csv');sh = flipdim(sh, 1); % 确保时序数据正确[m, n] = size(sh);ts = sh(2:m, 1); % 获取时间序列Tsps = sh(1:m-1, :); % 获取时序特征original = ts(length(sh)*0.7 + 1:end, :); % 提取数据% 绘制原始数据图figure;plot(ts, 'LineWidth', 1);title('Yahoo 股价(1996.4.12-2012.11.16) before Mapping', 'FontSize', 12);grid on;fprintf('展示股票价格前映射图。\n');fprintf('程序暂停,按下回车继续。\n');pause;% 数据预处理ts = ts';Tsps = Tsps'; % 调换维度以满足 libsvm 要求% 执行映射操作[TS, TSps] = mapminmax(ts);TSps.ymin = 1; TSps.ymax = 2;[TS, TSps] = mapminmax(ts, TSps);TS = TS'; % 调换维度% 输出结果fprintf('\n 初始化中.....\n');TS = TS';[TSX, TSXps] = mapminmax(tsx);TSXps.ymin = 1; TSXps.ymax = 2;[TSX, TSXps] = mapminmax(tsx, TSXps);TSX = TSX';

    代码实现了从数据加载、预处理到模型训练的完整流程。通过 mapminmax 逐步归一化数据范围。

    4. 运行结果

    训练完成后,模型对新数据集的分类准确率显著高于其余算法。图表显示结果符合预期,即模型能够准确地从训练集中学习到分类边界。

    5. 备注

    版本:2014a

    完整代码或代写请联系QQ: 912100926

    转载地址:http://bqjrz.baihongyu.com/

    你可能感兴趣的文章
    Oracle 启动阶段 OPEN
    查看>>
    Oracle 在Drop表时的Cascade Constraints
    查看>>
    Oracle 在Sqlplus 执行sql脚本文件。
    查看>>
    Oracle 如何处理CLOB字段
    查看>>
    oracle 学习
    查看>>
    oracle 定义双重循环例子
    查看>>
    ORACLE 客户端工具连接oracle 12504
    查看>>
    Oracle 客户端连接时报ORA-01019错误总结
    查看>>
    oracle 嵌套表 例子,Oracle之嵌套表(了解)
    查看>>
    Oracle 常用命令
    查看>>
    Oracle 常用的V$视图脚本(二)
    查看>>
    Oracle 并行原理与示例总结
    查看>>
    oracle 并集 时间_Oracle集合运算符 交集 并集 差集
    查看>>
    Oracle 序列sequence 开始于某个值(10)执行完nextval 发现查出的值比10还小的解释
    查看>>
    oracle 执行一条查询语句,把数据加载到页面或者前台发生的事情
    查看>>
    oracle 批量生成建同义词语句和付权语句
    查看>>
    oracle 抓包工具,shell 安装oracle和pfring(抓包) 及自动环境配置
    查看>>
    Oracle 拆分以逗号分隔的字符串为多行数据
    查看>>
    Oracle 排序中使用nulls first 或者nulls last 语法
    查看>>
    oracle 插入date日期类型的数据、插入从表中查出的数据,使用表中的默认数据
    查看>>