【SVM时序预测】基于卷积神经网络结合支持向量机CNN-SVM实现期贷时序数据预测附matlab代码

该文介绍了一种融合CNN和SVM的股价预测方法,首先使用CNN从历史股价数据中提取特征,然后通过SVM对提取的特征进行预测,最后评估预测模型的精度,以实现股价波动的预测。
摘要由CSDN通过智能技术生成

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

一种基于CNN和SVM的股价预测方法.包括采集多源数据,通过多源数据提取股价因子,将提取出来的股价因子样本数据进行量化处理,对股价因子进行评价筛选,构建股价波动模型,先利用卷积神经网络CNN对历史股价数据进行特征提取,再利用支持向量机SVM对提取出的特征进行易发性预测,对股价波动模型进行精度评价,输出最终的股价预测图.​

⛄ 部分代码

% 支持向量机用于收盘价预测,首先是未优化的,其次是优化后的

%% 清空环境

tic;clc;clear;close all;format compact

%% 加载数据

data=xlsread('EUA五分钟.xlsx','G2:G30763'); 

save data data

load data

% 归一化

[a,inputns]=mapminmax(data',0,1);%归一化函数要求输入为行向量

data_trans=data_process(5,a);%% 对时间序列预测建立滚动序列,即用1到m个数据预测第m+1个数据,然后用2到m+1个数据预测第m+2个数据

input=data_trans(:,1:end-1);

output=data_trans(:,end);

%% 数据集 前75%训练 后25%预测

m=round(size(data_trans,1)*0.75);

Pn_train=input(1:m,:);

Tn_train=output(1:m,:);

Pn_test=input(m+1:end,:);

Tn_test=output(m+1:end,:);

%% 1.没有优化的SVM

bestc=0.001;bestg=10;%c和g随机赋值 表示没有优化的SVM

t=0;%t=0为线性核函数,1-多项式。2rbf核函数

cmd = ['-s 3 -t ',num2str(t),' -c ', num2str(bestc),' -g ',num2str(bestg),' -p 0.01 -d 1'];  

figure

plot(predict0,'r-')

hold on;grid on

plot(T_test,'b-')

xlabel('样本编号')

ylabel('收盘价/元')

if t==0

    title('线性核SVM预测')

elseif t==1

    title('多项式核SVM预测')

else

    title('RBF核SVM预测')

end

legend('实际输出','期望输出')

figure

error_svm=abs(predict0-T_test)./T_test*100;%测试集每个样本的相对误差

plot(error_svm,'r-*')

xlabel('样本编号')

ylabel('收盘价相对误差/%')

if t==0

    title('线性核SVM预测的误差')

elseif t==1

    title('多项式核SVM预测的误差')

else

    title('RBF核SVM预测的误差')

end

grid on

error_svm=abs(predict0-T_test)./T_test*100;%测试集每个样本的相对误差

plot(error_svm,'r-*')

xlabel('样本编号')

ylabel('收盘价相对误差/%')

if t==0

    title('线性核SVM预测的误差')

elseif t==1

    title('多项式核SVM预测的误差')

else

    title('RBF核SVM预测的误差')

end

grid on

error_svm=abs(predict0-T_test)./T_test*100;%测试集每个样本的相对误差

plot(error_svm,'r-*')

xlabel('样本编号')

ylabel('收盘价相对误差/%')

if t==0

    title('线性核SVM预测的误差')

elseif t==1

    title('多项式核SVM预测的误差')

else

    title('RBF核SVM预测的误差')

end

grid on

img =gcf;  %获取当前画图的句柄

print(img, '-dpng', '-r600', './img4.png')           %即可得到对应格式和期望dpi的图像

figure

error_svm=abs(predict0-T_test)./T_test*100;%测试集每个样本的相对误差

plot(error_svm,'r-*')

xlabel('样本编号')

ylabel('收盘价相对误差/%')

if t==0

    title('线性核SVM预测的误差')

elseif t==1

    title('多项式核SVM预测的误差')

disp('优化前的均方误差')

mse_svm=mse(predict0-T_test)

disp('优化前的平均相对误差')

mre_svm=sum(abs(predict0-T_test)./T_test)/length(T_test)

disp('优化前的平均绝对误差')

abs_svm=mean(abs(predict0-T_test))

disp('优化前的归一化均方误差')

a=sum((predict0-T_test).^2)/length(T_test);

b=sum((predict0-mean(predict0)).^2)/(length(T_test)-1);

one_svm=a/b

toc %结束计时

⛄ 运行结果

⛄ 参考文献

[1]杨培. 基于支持向量机的金融时序数据预测算法研究[D]. 合肥工业大学, 2013.

[2]马永杰, 马芸婷, and 陈佳辉. "结合卷积神经网络多层特征和支持向量机的车辆识别." 激光与光电子学进展 56.14(2019):7.

[3]王毅, and 方志策. "一种基于CNN和SVM的洪水灾害易发性预测方法.", CN111079999A. 2020.

⛳️ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

 

使用Matlab实现CNN-SVM支持向量机分类预测的步骤如下: 1. 数据准备:首先,需要准备训练和测试数据集。这些数据集应包含已标记的样本图像和对应的分类标签。 2. 卷神经网络(CNN)训练:使用Matlab的深度学习工具箱,可以构建和训练卷神经网络。首先,定义网络架构,包括卷层、池化层、全连接层等,并设置相应的超参数(如学习率、批处理大小等)。然后,使用训练数据集对网络进行训练,通过反向传播算法优化网络权重。重复训练过程直到达到预设的准确率或迭代次数。 3. 特征提取:在训练完成后,使用训练好的CNN模型提取图像的特征表示。通过将图像输入到CNN中,获取卷层或全连接层的输出作为特征向量。 4. 支持向量机SVM)训练:使用MatlabSVM工具箱,将CNN提取的特征向量作为输入数据,对SVM进行训练。在训练过程中,选择合适的核函数(如线性核、高斯核等),并设置相应的超参数(如正则化参数、惩罚项等)。训练过程将优化支持向量机模型的权重和偏置。 5. 分类预测:使用训练好的CNN-SVM模型进行分类预测。首先,将测试样本输入到CNN中,提取特征向量。然后,将特征向量作为输入数据,通过训练好的SVM模型进行分类预测。根据SVM模型返回的分类结果,确定图像的类别。 综上所述,借助Matlab的深度学习和机器学习工具箱,可以实现CNN-SVM支持向量机分类预测。通过训练卷神经网络支持向量机模型,提取图像特征并进行分类预测。这种组合方法可以充分利用卷神经网络在图像识别任务中的优势,并借助支持向量机的分类能力,提高分类预测的准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值