SVM神经网络的回归预测分析---上证指数开盘指数预测
基于SVM的股票趋势预测

基于SVM的股票趋势预测股票市场是一个非常复杂的环境,股票走势的不确定性以及市场波动的频繁性都会让投资者感到困惑和不安。
因此,通过对股票的趋势进行预测已成为投资者们最关注的问题之一。
针对这一问题,SVM算法作为一种强大的分类器,被广泛应用于股票趋势预测的研究与应用中。
SVM是一种非常常用的机器学习算法,它是在计算机科学中广泛应用的一种分类算法。
它的核心思想就是通过计算出数据点之间的距离,把数据映射到高维空间中,从而实现对数据进行分类。
在股票市场中,SVM算法可以通过对市场中的各种情况进行分类,判断出当前股票走势的趋势。
通过对历史数据的学习和分析,SVM能够对未来的股价变化做出较为精确的预测。
需要指出的是,SVM算法并不能百分之百地预测股票走势的趋势,但它可以在一定程度上分析出基本面因素和技术面因素对股票价格变化的影响。
因此,SVM算法具有较高的准确率和可靠性,成为股票趋势预测中应用最为广泛的算法之一。
为了提高股票价格的预测准确率,研究人员在应用SVM算法进行股票趋势预测的过程中,经常会考虑到如何综合利用多种技术指标。
例如,可以结合MACD 指标、KDJ指标、RSI指标等多个技术指标对股票走势进行分析,进而预测股票的涨跌情况。
通过对不同的技术指标进行组合,可以更全面深入地分析市场情况,从而提高预测的准确率。
除了综合利用多个技术指标进行股票趋势预测外,SVM算法还可以通过自适应学习的方法来提高预测的准确率。
自适应学习是一种通用的学习方式,它能够在每一次的学习中调整参数,以保持算法的动态性,更好地适应时变的市场环境,从而提高预测的准确率。
当然,对于SVM算法而言,选择正确的核函数也是至关重要的。
一般来说,常用的核函数包括线性核函数、多项式核函数、高斯核函数等。
不同的核函数对于不同的股票市场和股票品种会有不同的适应性,因此,选择正确的核函数也是提高股票趋势预测准确率的关键所在。
综上所述,基于SVM的股票趋势预测具有很强的应用前景。
回归预测分析神经网络

%%S V M神经网络的回归预测分析---上证指数开盘指数预测%% 清空环境变量function chapter14tic;close all;clear;clc;format compact;%% 数据的提取和预处理% 数据是一个4579*6的double型的矩阵,每一行表示每一天的上证指数% 6列分别表示当天上证指数的开盘指数,指数最高值,指数最低值,收盘指数,当日交易量,当日交易额. load ;% 提取数据[m,n] = size(sh);ts = sh(2:m,1);tsx = sh(1:m-1,:);% 画出原始上证指数的每日开盘数figure;plot(ts,'LineWidth',2);title(,'FontSize',12);xlabel(,'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(,'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,,,;% 打印精细选择结果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 '];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(,'FontSize',12);ylabel('开盘数','FontSize',12);grid on;figure;error = predict - ts';plot(error,'rd');title('误差图(predicted data - original data)','FontSize',12);xlabel(,'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(,'FontSize',12);ylabel('相对误差量','FontSize',12);grid on;snapnow;toc;%% 子函数function [mse,bestc,bestg] =SVMcgForRegress(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,msestep)%SVMcg cross validation by faruto%% about the parameters of SVMcgif nargin < 10msestep = ;endif nargin < 8cstep = ;gstep = ;endif nargin < 7v = 5;endif nargin < 5gmax = 8;gmin = -8;endif 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 '];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);endendend% to draw the acc with different c & g[cg,ps] = mapminmax(cg,0,1);figure;[C,h] = contour(X,Y,cg,0:msestep:;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);。
基于SVM模型的股票预测分析

基于SVM模型的股票预测分析在金融领域中,股票预测一直是一个被广泛关注的话题。
股票市场的不确定性和波动性给投资者带来不小的风险,因此能够准确预测股票走势的模型显得尤为重要。
机器学习中的支持向量机(Support Vector Machine,简称SVM)模型是一种常用的分类器,适用于股票市场中的预测分析。
本文将介绍基于SVM模型的股票预测分析方法。
一、SVM模型的原理SVM模型是一种监督学习算法,用于分类和回归分析。
SVM通过构造最大间隔超平面,将不同类别的数据分割开来,从而实现分类的目的。
同时,SVM还能够处理高维数据和非线性数据,通过核函数将数据映射到高维空间进行分类。
其核心思想是:在n维空间中找到一个超平面,将不同类别的数据分开并使得超平面到两类数据的最近点的距离最大化。
这些最近点被称为支持向量,SVM模型的学习过程主要就是寻找到这些支持向量。
在分类任务中,对于新的样本点,通过与超平面的位置关系来判定其所属类别。
二、数据预处理在进行SVM模型的训练前,需要对原始数据进行一些预处理。
一方面,原始数据可能存在异常值、缺失值等问题。
这些问题需要通过数据清洗和预处理来进行解决;另一方面,原始数据格式可能不适合SVM模型的训练,需要进行特征选择和数据重构,以便更好地反映股票市场的特征。
常用的数据预处理方法包括标准化、归一化、主成分分析(PCA)等,可以根据具体情况选择合适的方法进行处理。
通过数据预处理,能够提高SVM模型的训练效果,从而更好地进行股票预测分析。
三、SVM模型的参数调优SVM模型的另一个重要问题是参数的选择。
SVM模型中的参数包括核函数、正则化系数和核函数参数等。
不同的参数选择对SVM模型的预测结果会产生很大的影响,因此需要进行参数的调优来提高模型的性能。
常见的参数调优方法包括交叉验证和网格搜索等。
通过交叉验证,可以分割训练集和测试集,从而评估SVM模型的性能,并确定最佳参数。
网格搜索则是通过对参数取值的组合,进行模型的训练和评估,最终选择出最佳参数组合。
神经网络模型预测股票指数研究

神经网络模型预测股票指数研究股票指数是衡量股票市场走势的重要指标,对于投资者具有重要的参考意义。
然而,股票市场变化的不确定性及复杂性,使得准确预测股票指数成为投资者普遍面临的挑战。
近年来,随着神经网络技术的迅速发展,越来越多的学者开始尝试利用神经网络模型来进行股票指数预测研究。
一、神经网络模型概述神经网络是一种以模拟人脑神经元之间的相互作用为基础,具有自我学习和自适应能力的计算模型。
它通过对输入进行反复处理,不断优化隐藏层和输出层之间的权值和偏置,从而达到实现复杂非线性映射的目的。
神经网络能够处理大量数据,并利用内部学习规律和历史数据进行复杂预测,因此被广泛应用于股票等金融预测领域。
二、神经网络模型在股票指数预测中的应用神经网络模型在股票指数预测中常常被用来预测股票指数的未来走势和趋势,帮助投资者进行正确的投资决策。
神经网络模型可以利用历史数据来预测未来股市的发展,以及将财经新闻、政策变化等因素纳入预测模型中,以更加精准、全面地预测股票指数走势。
三、神经网络模型预测股票指数的难点神经网络模型预测股票指数面临的主要难点在于数据量和数据的不确定性。
股票市场变化的不确定性很大,而且受到很多影响因素的影响,其中有很多因素是难以被量化的。
这就导致了神经网络模型在处理股票指数预测时难以直接利用历史数据进行预测。
另外,神经网络模型的质量和效果还受到模型结构、网络拓扑和参数设置的影响,因此需要不断地改进和优化来提高预测效果。
四、神经网络模型预测股票指数的优点与传统的统计学方法相比,神经网络模型具有以下优点:1. 能够自动学习和适应模型的变化;2. 可以自动发现数据之间的关联性和规律;3. 模型具有自增长、自动优化、自我学习等特点,被认为具有更好的预测能力;4. 神经网络模型预测方法不需要对数据做任何假设,具有更强的灵活性。
五、神经网络模型预测股票指数的实例分析以某股票指数为例,可以将历史数据分为训练集和验证集,训练集用于拟合神经网络模型,验证集用于验证模型的预测能力。
基于SVM的股票预测算法研究

基于SVM的股票预测算法研究一、引言随着机器学习技术的快速发展,在股票预测领域中越来越受到关注。
支持向量机(Support Vector Machine, SVM)作为一种优秀的机器学习方法,被广泛应用于股票预测分析中。
本文将介绍基于SVM的股票预测算法的研究。
首先,介绍SVM的原理;然后,探讨如何使用SVM进行股票预测;最后,针对实验结果进行分析,探究该算法的优缺点。
二、SVM原理SVM是一种基于统计学习理论的二分类模型。
其基本思想是将样本空间映射到高维空间,使得在高维空间中寻找最优分离超平面。
当新的数据点被映射到高维空间时,根据其位置关系可以进行分类预测。
SVM的核心是支持向量(Support Vector),即离超平面最近的一些训练样本点。
这些样本点决定了分类超平面的位置和形态。
因此,SVM训练的目标就是找到这些最近的训练样本点,并较好地区分分类。
三、基于SVM的股票预测在使用SVM进行股票预测时,需要首先准备好数据集。
常用的数据集包括股票历史数据、公司财务报告等信息。
具体实现上,首先需要对股票历史价格等数据进行特征提取,如最大值、最小值、平均值、标准差、收盘价等。
然后根据这些特征进行训练,得到一个SVM模型。
最后,将新的股票数据点输入此模型,便可以得到对应的预测结果。
需要注意的是,SVM算法对数据的分布形式非常敏感,因此需要对数据进行归一化处理,使其符合SVM的输入数据要求。
此外,在训练SVM模型时,也要注意选择适合的核函数,如线性核函数、多项式核函数、径向基函数等。
四、实验结果与分析为了验证基于SVM的股票预测算法的有效性,本文选取某家上市公司的股票数据作为训练集,共包含1000个数据点。
其中前800个数据点用于模型训练,后200个数据点用于测试。
在训练过程中,使用线性核函数,并对数据进行了归一化处理。
得到的模型准确率为85%,以200个测试数据为基础,共有170个股票数据点被正确预测。
基于SVM的股票指数预测

基于SVM的股票指数预测邹存利;张蕾;王玥;丛琳【摘要】随着中国经济的飞速发展,越来越多的人加入到股市这个大家庭中来。
由于股票市场具有高噪声、不确定等特性,使得股票的价格预测极为困难。
而较为准确的预测股票价格,有利于人们的投资。
本文选用国泰君安大智慧软件中2007年1月4日至2017年12月29日的沪深300指数中2676个交易日数据作为原始分析数据,通过建立支持向量机模型和ARMA模型进行分析并做出短期预测。
实验结果:采用支持向量机模型的预测数据与实际数据的拟合度较高,相对误差控制在4%左右;说明支持向量机模型可以对股票市场做出更准确的价格预测,可以为沪深股票市场股票价格走势的研究提供一些借鉴。
【期刊名称】《计算机科学与应用》【年(卷),期】2018(008)004【总页数】8页(P421-428)【关键词】沪深300指数;支持向量机;ARMA模型;股票预测;数据归一化【作者】邹存利;张蕾;王玥;丛琳【作者单位】[1]辽宁师范大学数学学院,辽宁大连;;[1]辽宁师范大学数学学院,辽宁大连;;[1]辽宁师范大学数学学院,辽宁大连;;[1]辽宁师范大学数学学院,辽宁大连;【正文语种】中文【中图分类】F21.引言股票市场瞬息万变,风险很高,而对股票指数的预测可以为我们从整体上把握股市的变动提供有效的信息。
沪深300指数是沪深证交所联合发布,以流动性和规模作为两大选样的根本标准,是一个能反映A股市场价格整体走势的指标。
所以对于沪深指数的预测具有十分重要的意义。
基于支持向量机的优良性能,考虑将其应用于股市指数的预测[5]。
支持向量机于1995年由Cortes和Vapnik等人正式发表,由于其在文本分类任务中显示出卓越性能,很快成为机器学习的主流技术,并直接掀起了“统计学习”在2000年前后的高潮。
Vapnik等人从六、七十年代开始致力于此方面研究,直到九十年代才使抽象的理论转化为通用的学习算法,其中核技巧才真正成为机器学习的通用基本技术。
基于SVM方法的股票市场预测研究

基于SVM方法的股票市场预测研究股票市场涨跌的不确定性已经成为了投资人最关心的问题之一。
假如能够提前预测出股票市场的走势,那么就可以帮助投资人更好地制定投资策略,减少投资风险,增加投资收益。
在现代科技的发展下,预测股票市场的方法有很多种,其中一种比较常用的方法是基于机器学习算法的预测方法。
本文将介绍一种基于SVM方法的股票市场预测研究。
1、股票市场预测概述股票市场预测一直是投资人的难题。
传统的预测方法有技术分析法、基本分析法和市场心理学等。
但是这些预测方法常常受到各种因素的影响,如政治局势、经济形势等等。
目前,基于机器学习的方法应用于股票市场预测成为了一个新的研究热点。
机器学习是研究如何让计算机通过经验不断提高性能的学科。
在股票市场预测中,机器学习算法可以通过建立数学模型来分析股票市场的历史数据,以获取市场趋势并进行预测。
机器学习算法的灵活性和准确性,使得它成为股票市场预测的一个有效工具。
2、SVM的基本原理支持向量机(SVM)是一种基于统计学习理论的机器学习算法。
它最初是由Vladimir N. Vapnik和Alexey Ya. Chervonenkis在1963年提出的。
SVM的基本思想是在高维空间中找到最优的超平面,从而实现数据的分类。
SVM算法具有很好的准确性和泛化能力,并且能够有效的避免过拟合现象。
在SVM算法中,数据点被表示为向量的形式,这些向量被加入到一个特征空间中。
特征空间的维度被称为特征数量,通常情况下,特征数量比数据点的数量多得多。
在特征空间中,SVM算法构建一个n维超平面,使得两侧的数据点能够分别归类到不同的类别中。
这个过程可以看作是在将数据点投影到低维空间中,尽可能的让不同的数据类别之间有最大的分割距离。
3、SVM在股票市场预测中的应用SVM算法是一种通用的机器学习算法,适用于多种领域。
在股票市场预测中,SVM算法也被大量研究和应用。
通过对历史股票数据的分析,我们可以得到一个股票价格的趋势,并以此为训练集。
基于支持向量机的上证指数开盘指数预测

基于支持向量机的上证指数开盘指数预测作者:周易来源:《软件》2011年第05期摘要:支持向量机在模式分类、回归分析等领域应用的过程中,其性能依赖于参数的选取,而参数往往是随机给定的或凭测试经验给定。
针对这一情况,对影响模型分类、回归能力的相关参数进行了研究,采用交叉验证的思想对其中重要的两个参数(误差惩罚参数和高斯核参数)进行了优化,并成功的应用于上证指数开盘指数的预测,达到了很好的效果。
关键词:支持向量机;交叉验证;参数优化;上证指数中图分类号:TP 文献标志码:APrediction of Opened Index in Shanghai Composite IndexBased on Support Vector MachinesZhou Yi(Computer Science, South-Central University for Nationalities, Wuhan, Hubei 430074)Abstract: In the application of pattern classification, regression analysis and other fields, the performance of Support Vector Machine always depends on the parameter selection, and often given by random or experience. In response to this situation, the relevant parameters which affect the model of classification, regression ability had been studied, using Cross-Validation, two of the best important parameters (error penalty parameter and Gaussian kernel parameter ) is optimized, which can successfully used in the prediction of opened index in Shanghai Composite Index and achieve good results.Key words: Support Vector Machine; Cross Validation; parameter optimization; Shanghai Composite Index0 引言支持向量机(Support Vector Machine, SVM)由Vapnik于20 世纪90年代提出,可以解决小样本情况下的机器学习问题、高维问题、非线性问题、可以提高泛化性能、避免神经网络结构选择和局部极小点问题,在理论研究和算法实现方面都取得了突破性进展,开始成为克服“维数灾难”和“过学习”等传统困难的有力手段[1]。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SVM神经网络的回归预测分析---上证指数开盘指数预测该案例作者申明:1:本人长期驻扎在此板块里,对该案例提问,做到有问必答。
2:此案例有配套的教学视频,配套的完整可运行Matlab程序。
3:以下内容为该案例的部分内容(约占该案例完整内容的1/10)。
4:此案例为原创案例,转载请注明出处(Matlab中文论坛,《Matlab神经网络30个案例分析》)。
5:若此案例碰巧与您的研究有关联,我们欢迎您提意见,要求等,我们考虑后可以加在案例里。
6:您看到的以下内容为初稿,书籍的实际内容可能有少许出入,以书籍实际发行内容为准。
7:此书其他常见问题、预定方式等,请点击这里。
Contents●清空环境变量●数据的提取和预处理●选择回归预测分析最佳的SVM参数c&g●利用回归预测分析最佳的参数进行SVM网络训练●SVM网络回归预测●结果分析●子函数 SVMcgForRegress.m清空环境变量function chapter14tic;close all;clear;clc;format compact;数据的提取和预处理% 载入测试数据上证指数(1990.12.19-2009.08.19)% 数据是一个4579*6的double型的矩阵,每一行表示每一天的上证指数% 6列分别表示当天上证指数的开盘指数,指数最高值,指数最低值,收盘指数,当日交易量,当日交易额. load chapter14_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);grid on;% print -dtiff -r600 original;% 数据预处理,将原始数据进行归一化ts = ts';tsx = tsx';% mapminmax为matlab自带的映射函数% 对ts进行归一化[TS,TSps] = mapminmax(ts,1,2);% 画出原始上证指数的每日开盘数归一化后的图像figure;plot(TS,'LineWidth',2);title('原始上证指数的每日开盘数归一化后的图像','FontSize',12);grid on;% print -dtiff -r600 scale;% 对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);打印粗略选择结果Best Cross Validation MSE = 0.000961388 Best c = 0.25 Best g = 2打印精细选择结果Best Cross Validation MSE = 0.000961388 Best c = 0.25 Best g = 2利用回归预测分析最佳的参数进行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);Mean squared error = 2.35705e-005 (regression)Squared correlation coefficient = 0.999195 (regression)均方误差 MSE = 2.35705e-005 相关系数 R = 99.9195%结果分析figure;hold on;plot(ts,'o-','LineWidth',1);plot(predict,'r*-','LineWidth',1);legend('原始数据','回归预测数据');hold off;grid on;print -dtiff-r600result;figure;error = predict - ts';plot(error,'r*');title('误差(predicted data - original data)','FontSize',12);grid on;% print -dtiff -r600 resulterror;snapnow;toc;Elapsed time is 110.417548 seconds.子函数 SVMcgForRegress.mfunction [mse,bestc,bestg] = SVMcgForRegress(train_label,train,cmin,cmax,gmin,gmax, v,cstep,gstep,msestep)% SVMcgForClass% 输入:% train_label:训练集标签(待回归的变量).要求与libsvm工具箱中要求一致.% train:训练集(因变量).要求与libsvm工具箱中要求一致.% cmin:惩罚参数c的变化范围的最小值(取以2为底的对数后),即 c_min = 2^(cmin).默认为 -5% cmax:惩罚参数c的变化范围的最大值(取以2为底的对数后),即 c_max = 2^(cmax).默认为 5% gmin:参数g的变化范围的最小值(取以2为底的对数后),即 g_min = 2^(gmin).默认为 -5% gmax:参数g的变化范围的最小值(取以2为底的对数后),即 g_min = 2^(gmax).默认为 5% v:cross validation的参数,即给测试集分为几部分进行cross validation.默认为 3% cstep:参数c步进的大小.默认为 1% gstep:参数g步进的大小.默认为 1% msestep:最后显示MSE图时的步进大小.默认为 0.1% 输出:% mse:Cross Validation 过程中的最低的均方误差% bestc:最佳的参数c% bestg:最佳的参数g% about the parameters of SVMcgForRegressif nargin < 10msestep = 0.1;endif nargin < 7v = 3;cstep = 1;gstep = 1;endif nargin < 6v = 3;cstep = 1;gstep = 1;gmax = 5;endif nargin < 5v = 3;cstep = 1;gstep = 1;gmax = 5;gmin = -5;endif nargin < 4v = 3;cstep = 1;gstep = 1;gmax = 5;gmin = -5;cmax = 5;endif nargin < 3v = 3;cstep = 1;gstep = 1;gmax = 5;gmin = -5;cmax = 5;cmin = -5;end% X:c Y:g cg:mse[X,Y] = meshgrid(cmin:cstep:cmax,gmin:gstep:gmax);[m,n] = size(X);cg = zeros(m,n);% record accuracy with different c & g,and find the best mse with the smallest c bestc = 0;bestg = 0;mse = 10^10;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'];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 ( cg(i,j) == mse && bestc > basenum^X(i,j) )mse = cg(i,j);bestc = basenum^X(i,j);bestg = basenum^Y(i,j);endendend% draw the accuracy with different c & g[cg,ps] = mapminmax(cg,0,1);figure;subplot(1,2,1);[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);title('参数选择结果图(等高线图)','FontSize',12);grid on;subplot(1,2,2);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);title('参数选择结果图(3D视图)','FontSize',12);% filename = ['c',num2str(bestc),'g',num2str(bestg),num2str(msestep),'.tif']; % print('-dtiff','-r600',filename);版权所有:Matlab中文论坛Published with MATLAB® 7.9。