回归预测分析SVM神经网络

合集下载

机器学习:SVM和神经网络的比较

机器学习:SVM和神经网络的比较

机器学习:SVM和神经网络的比较机器学习是一种利用算法让计算机系统能够从数据中学习的技术。

在机器学习中,支持向量机(SVM)和神经网络是两种常用的算法。

本文将对这两种算法进行比较,包括其原理、应用、优缺点等方面的分析。

支持向量机(SVM)是一种用于分类和回归分析的监督学习模型。

其基本原理是通过一个最优超平面将不同类别的数据点分开,使得类别之间的间隔最大化。

SVM可用于线性和非线性分类,还可通过核函数将数据映射到更高维度的空间中,从而实现非线性分类。

SVM的优点之一是能够处理高维数据,且具有较好的泛化能力。

而且,由于其核函数的特性,SVM可以应用于非线性问题。

神经网络是一种通用的机器学习模型,受启发于人类神经系统的结构。

神经网络由多层神经元组成,每一层都与下一层相连,最终输出层生成预测结果。

训练神经网络需要大量的数据和计算资源,通常需要进行反向传播算法来更新权重和偏差,使得神经网络能够学习到正确的模式。

神经网络在图像和语音识别等领域有着广泛的应用,并且在深度学习中占据着重要的地位。

下面我们将从不同的角度对SVM和神经网络进行比较:1.原理SVM基于最大化间隔的原则进行分类,它找出最优的超平面将不同类别的数据点分隔开。

神经网络则是通过多层神经元的组合来学习数据的模式和特征。

SVM是一种几何学方法,而神经网络则是一种统计学方法。

2.应用SVM在文本分类、图像分类、生物信息学、金融分析等领域有着广泛的应用。

而神经网络在语音识别、图像识别、自然语言处理、机器翻译等方面也有着杰出的成绩。

3.优缺点SVM的优点是能够处理高维数据,且泛化能力较好。

但对于大规模数据和非线性问题,SVM的计算开销较大。

神经网络的优点是能够处理大规模数据和非线性问题,并且可以通过调节网络结构和参数来适应不同的数据。

但神经网络的缺点是需要大量的数据和计算资源,训练时间较长,且容易出现过拟合的问题。

4.性能SVM在小规模数据和线性问题上有着不错的性能,但对于大规模数据和非线性问题,其性能可能不如神经网络。

基于SVM和BP神经网络的预测模型

基于SVM和BP神经网络的预测模型

基于SVM和BP神经网络的预测模型随着社会的不断发展和技术的日益进步,各种预测模型的应用越来越广泛。

其中,基于支持向量机(SVM)和反向传播神经网络(BP神经网络)的预测模型备受关注。

它们不仅可以对数据进行分类和回归预测,还可以在信号、音频、图像等领域中得到广泛应用。

本文将介绍SVM和BP神经网络的基本原理及其在预测模型中的应用。

一、支持向量机(SVM)的基本原理支持向量机是一种基于统计学习理论的分类和回归分析方法。

它的基本原理是通过将原始样本空间映射到高维空间,将不可分的样本转化为可分的线性空间,从而实现分类或者回归分析。

SVM的关键是选择合适的核函数,可以将样本映射到任意高维空间,并通过最大化间隔来实现对样本的分类。

在SVM的分类中,最大间隔分类被称为硬间隔分类,是通过选择支持向量(即距离分类界线最近的样本)来实现的。

而在实际中,可能存在一些噪声和难以分类的样本,这时采用软间隔分类可以更好地适应于数据。

软间隔SVM将目标函数添加一个松弛变量,通过限制松弛变量和间隔来平衡分类精度和泛化能力。

二、反向传播神经网络(BP神经网络)的基本原理BP神经网络是一种典型的前馈型神经网络,具有非线性映射和逼近能力。

它可以用于分类、回归、时间序列预测、模式识别等问题,被广泛应用于各个领域。

BP神经网络由输入层、隐含层和输出层组成,其中隐含层是核心层,通过数学函数对其输入进行加工和处理,将处理的结果传递到输出层。

BP神经网络的训练过程就是通过调整网络的权值和阈值来减小训练误差的过程。

BP神经网络的训练过程可以分为前向传播和反向传播两部分。

前向传播是通过给定的输入,将输入信号经过网络传递到输出层,并计算输出误差。

反向传播是通过计算误差梯度,将误差传递回隐含层和输入层,并调整网络的权值和阈值。

三、SVM与BP神经网络在预测模型中的应用SVM和BP神经网络的预测模型在实际中广泛应用于各个领域,如无线通信、金融、物流、医疗等。

时间序列预测的方法与分析

时间序列预测的方法与分析

时间序列预测的方法与分析时间序列预测是一种用于分析和预测时间相关数据的方法。

它通过分析过去的时间序列数据,来预测未来的数据趋势。

时间序列预测方法可以分为传统统计方法和机器学习方法。

下面将分别介绍这两种方法以及它们的分析步骤。

1. 传统统计方法传统统计方法主要基于时间序列数据的统计特征和模型假设进行分析和预测。

常用的传统统计方法包括移动平均法、指数平滑法和ARIMA模型。

(1) 移动平均法:移动平均法通过计算不同时间段内的平均值来预测未来的趋势。

该方法适用于数据变动缓慢、无明显趋势和周期性的情况。

(2) 指数平滑法:指数平滑法通过对历史数据进行加权平均,使得近期数据具有更大的权重,从而降低对过时数据的影响。

该方法适用于数据变动较快、有明显趋势和周期性的情况。

(3) ARIMA模型:ARIMA模型是一种常用的时间序列预测模型,它结合了自回归(AR)、差分(I)和滑动平均(MA)的概念。

ARIMA模型可以用于处理非平稳时间序列数据,将其转化为平稳序列数据,并通过建立ARIMA模型来预测未来趋势。

2. 机器学习方法机器学习方法通过训练模型来学习时间序列数据的特征和规律,并根据学习结果进行预测。

常用的机器学习方法包括回归分析、支持向量机(SVM)和神经网络。

(1) 回归分析:回归分析通过拟合历史数据,找到数据之间的相关性,并建立回归模型进行预测。

常用的回归算法包括线性回归、多项式回归和岭回归等。

(2) 支持向量机(SVM):SVM是一种常用的非线性回归方法,它通过将数据映射到高维空间,找到最佳分割平面来进行预测。

SVM可以处理非线性时间序列数据,并具有较好的泛化能力。

(3) 神经网络:神经网络是一种模仿人脑神经元组织结构和工作原理的计算模型,它通过训练大量的样本数据,学习到数据的非线性特征,并进行预测。

常用的神经网络包括前馈神经网络、循环神经网络和长短期记忆网络等。

对于时间序列预测分析,首先需要收集并整理时间序列数据,包括数据的观测时间点和对应的数值。

回归预测分析神经网络

回归预测分析神经网络

%%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回归算法介绍与比较

机器学习技术中的SVM回归算法介绍与比较SVM(支持向量机)回归是一种常用的机器学习算法,用于预测连续性的输出变量。

SVM回归通过在特征空间中找到一个最佳拟合的超平面,将输入数据映射到高维空间,使得数据点尽可能靠近这个超平面,同时最小化预测误差。

本文将介绍SVM回归算法的原理、优点、缺点,并与其他机器学习算法进行比较。

SVM回归的原理:SVM回归的核心思想是在特征空间中寻找一个最佳拟合的超平面,使得数据点到该超平面的距离最小化。

与分类问题不同的是,SVM回归允许一些数据点位于超平面的两侧,形成一个分布区间。

SVM回归的关键是选择合适的核函数,常用的核函数有线性核、多项式核和径向基函数(RBF)核。

SVM回归的优点:1. 适用于高维空间:SVM回归通过将数据映射到高维空间,可以处理高维数据集。

这对于处理具有大量特征的数据集是非常有用的。

2. 强大的泛化能力:SVM回归通过最大化间隔,可以在面对新样本时具有较强的泛化能力。

这意味着SVM回归模型可以有效地应对多样的数据集。

3. 鲁棒性:SVM回归对于数据中的噪声和离群点具有较强的鲁棒性。

通过设置松弛变量的值,可以容忍一些误差值,从而使得模型鲁棒性更强。

SVM回归的缺点:1. 参数选择困难:SVM回归中的参数选择对结果影响较大,例如:核函数类型、核函数参数、惩罚因子等。

不同的参数选择可能导致不同的模型性能,参数优化需要经验和调试。

2. 计算资源消耗较大:SVM回归对于大规模数据集的训练和预测需要消耗较多的计算资源。

在处理大规模数据集时,需要考虑计算时间和内存消耗的问题。

3. 对缺失数据敏感:SVM回归对于包含缺失值的数据集比较敏感,需要在数据预处理阶段进行缺失值的处理。

与其他机器学习算法的比较:1. 与线性回归比较:SVM回归相对于线性回归来说,对于非线性关系的数据具有更好的拟合能力。

SVM回归通过核函数的使用可以将数据映射到高维空间,从而更好地处理非线性数据集。

SVM神经网络介绍

SVM神经网络介绍
l 1 T max y y x xj i i j i j i 2 i, j i 1
l

条件是: 0 i C , i 1,2...... l ; i y i 0
i 1
基本 综述 理论 概要 算法 实现
总结 参考文 献
Hale Waihona Puke 现在假定存在一个从输入特征空间到K维空间的映射,SVM方法可 用于在新的K维控件中设计超平面分类器,这就允许我们考虑在无 限维空间中进行隐含映射。根据设计的分类器:
H2
H
H1
+ + + -
+ + +
m arg in 2 w
几何间隔与样本的误分次数间存 在关系:
基本 综述 理论 概要 算法 实现
总结
-
-
2R
2
几何
1 g ( x) W
f ( x) w x b
H是分类面,而H1和H2是平行于H,且过离 H最近的两类样本的直线,H1与H,H2与H 之间的距离就是几何间隔
SVM算法实现
凸二次规划和线性可分 S310060024于义雪
基本 综述
理论 概要
算法 实现
总结 参考文 献
持向量机(Support Vector Machine)是Cortes和Vapnik于1995年 首先提出的,它在解决小样本、非线性及高维模式识别中表现出许 多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。 它是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的, 根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折衷, 以期获得最好的推广能力。 所谓VC维是对函数类的一种度量,可以简单的理解为问题的复 杂程度,VC维越高,一个问题就越复杂 。而SVM正是用来解决这 个问题的,它基本不关乎维数的多少,和样本的维数无关(有这样 的能力也因为引入了核函数 )。 机器学习本质上就是一种对问题真实模型的逼近 ,我们选择的 模型与问题真实解之间究竟有多大差距,我们无法得知,因此统计 学习引入了泛化误差界的概念,就是指真实风险应该由两部分内容 刻画,一是经验风险,代表了分类器在给定样本上的误差 ;二是置 信风险,代表了我们在多大程度上可以信任分类器在未知文本上分 类的结果 ,第二部分是没有办法精确计算的,因此只能给出一个估 计的区间,也使得整个误差只能计算上界,而无法计算准确的值 (所以叫做泛化误差界,而不叫泛化误差)。 。

LIBSVM做回归预测--终于弄通,很实用

LIBSVM做回归预测--终于弄通,很实用

LIBSVM做回归预测--终于弄通看了网上很多帖子和博客,自己琢磨了很久到现在才弄明白怎么用libsvm来做预测。

因为网上的帖子一般都是转来转去的,所以第一个人感觉这样写详细了,之后的人不管懂不懂照搬不误,这就苦了我们笨的人啦。

不过我研究了一天,终于有点眉目,写点体会,应该会比较详细吧,至少是过来人碰到的问题。

p.s.这里暂且不讨论分类问题,其实分类比预测简单,下载下来的libsvm-2.88早已有easy.py 可以直接拿来做,所以简单,一步到位,之后如果有空就写写!用libsvm做回归的人有的疑惑大致有这些:1,怎么把数据整理成规定格式,我以前的帖子写了,只要用一个带有宏的excel就能搞定,话不多说。

2,有人会说svm就打几条命令就能得出结果(svm-train -s 3 -t 2 -c 1024.0 -g 0.0009765625 -p 0.0009765625 data.txtsvm-predict test.txt data.txt.model out.txt),干嘛还要下载python和gnuplot呢,其实了解svm理论的知道最核心的问题就是参数的选择,你不可能每次都很狗屎的猜到很好的参数,做出很好的预测,所以只能用这两个软件来寻参。

3,怎么寻参?核心的语句就这么一句,把dos框的路径调到C:\Python26,再键入(python C:\libsvm-2.88\python\gridregression.py -svmtrainC:\libsvm-2.88\windows\svm-train.exe -gnuplot C:\gnuplot\bin\pgnuplot.exe -log2c -10,10,1-log2g -10,10,1 -log2p -10,10,1 -v 10 -s 3 -t 2 C:\libsvm-2.88\python\data.txt >gridregression_data.parameter)能把这句执行下去,就算等老半天也是值得的。

支持向量机与神经网络算法的对比分析

支持向量机与神经网络算法的对比分析

支持向量机与神经网络算法的对比分析支持向量机(Support Vector Machine,SVM)和神经网络(Neural Network,NN)是两种常用的机器学习算法,它们在解决分类和回归问题上都具有较强的应用能力。

本文将从原理、优缺点、适用场景和实际应用等方面进行对比分析,以帮助读者更好地理解和选择适合自己需求的算法。

一、原理对比1、支持向量机(SVM)原理支持向量机是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。

简单来说,SVM的目标是找到一个最佳的超平面,将不同类别的样本分开,并且使得两个类别之间的间隔最大化。

当数据线性不可分时,可以通过核函数方法将数据映射到高维空间,实现非线性分类。

2、神经网络原理神经网络是一种模仿人脑神经元网络结构设计的一种算法。

它由输入层、隐层和输出层构成,每一层中包含多个神经元单元。

神经网络通过不断调整连接权值和偏置,学习输入数据的特征,并将学到的知识用于分类和预测。

二、优缺点对比优点:SVM可以有效处理高维数据,且对于小样本数量的数据依然表现稳定,泛化能力强。

通过核函数可以处理非线性分类问题,具有较好的灵活性和泛化能力。

缺点:在大规模数据集上训练的速度较慢,需要耗费大量的计算资源。

对参数的选择和核函数的调整较为敏感,需要谨慎选择。

优点:神经网络可以通过不断迭代学习特征,适用于复杂的非线性问题。

对于大规模数据集和高维数据具有较好的处理能力。

缺点:神经网络结构较为复杂,需要大量的训练数据和时间。

神经网络的训练需要大量的计算资源,对参数的选择和网络结构的设计要求较高。

三、适用场景对比SVM适用于小样本、高维度的数据集,特别擅长处理二分类问题。

在文本分类、图像识别、生物信息学等领域有着广泛的应用。

神经网络适用于大规模数据集和复杂的非线性问题。

在语音识别、自然语言处理、图像识别等领域有着广泛的应用。

四、实际应用对比在文本分类领域,SVM常被用于垃圾邮件过滤、情感分析等任务中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%% SVM神经网络的回归预测分析---上证指数开盘指数预测%% 清空环境变量function chapter14tic;close all;clear;clc;format compact;%% 数据的提取和预处理% 数据是一个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(,'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,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(,'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;%% 子函数 SVMcgForRegress.mfunction [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 = 0.06;endif nargin < 8cstep = 0.8;gstep = 0.8;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 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);endendend% 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);。

相关文档
最新文档