博客
关于我
【预测模型】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/

    你可能感兴趣的文章
    Pandas - 有条件的删除重复项
    查看>>
    pandas -按连续日期时间段分组
    查看>>
    pandas -更改重新采样的时间序列的开始和结束日期
    查看>>
    pandas :to_excel() float_format
    查看>>
    pandas :加入有条件的数据框
    查看>>
    pandas :将多列汇总为一列,没有最后一列
    查看>>
    pandas :将时间戳转换为 datetime.date
    查看>>
    pandas :将行取消堆叠到新列中
    查看>>
    pandas DataFrame 中的自定义浮点格式
    查看>>
    Pandas DataFrame 的 describe()方法详解-ChatGPT4o作答
    查看>>
    Pandas DataFrame中删除列级的方法链接解决方案
    查看>>
    Pandas DataFrame中的列从浮点数输出到货币(负值)
    查看>>
    Pandas DataFrame中的列从浮点数输出到货币(负值)
    查看>>
    Pandas DataFrame多索引透视表-删除空头和轴行
    查看>>
    pandas DataFrame的一些操作
    查看>>
    Pandas Dataframe的日志文件
    查看>>
    Pandas df.iterrows() 并行化
    查看>>
    pandas GROUPBY+变换和多列
    查看>>
    pandas Groupby:创建两列的Groupby时,如何按正确的顺序对工作日进行排序?
    查看>>
    Pandas matplotlib 无法显示中文
    查看>>