回归预测分析神经网络

合集下载

时间序列的预测方法

时间序列的预测方法

时间序列的预测方法时间序列预测是指根据过去一系列的观测值来预测未来的发展趋势。

它在很多领域都有应用,如经济学、金融学、气象学、交通运输等。

时间序列预测是一个复杂的问题,需要综合考虑多种因素和方法。

下面我将介绍一些常用的时间序列预测方法。

首先,最简单的方法是移动平均法和指数平滑法。

移动平均法是通过计算一定时间段内的平均值来估计未来的趋势。

指数平滑法则是根据历史数据的加权平均值来估计未来的趋势。

这两种方法都是基于历史数据的统计特征进行预测,适用于数据变化较为平稳的情况。

其次,回归分析是一种常用的时间序列预测方法。

它通过分析自变量和因变量之间的关系来建立一个回归模型,并利用回归模型进行预测。

回归模型可以是线性的也可以是非线性的,可以包含一或多个自变量。

回归分析适用于需要考虑多个因素对结果的影响的情况,例如经济数据的预测。

另外,ARIMA模型(自回归滑动平均模型)是一种广泛应用的时间序列预测方法。

ARIMA模型可以用来描述时间序列的非线性趋势、季节性和随机性。

它由自回归(AR)部分、差分(I)部分和滑动平均(MA)部分组成,因此可以适应不同类型的时间序列。

ARIMA模型的参数由经验估计和模型拟合来确定,可以通过模型的残差分析来验证模型的可靠性。

此外,神经网络模型也被广泛用于时间序列的预测。

神经网络模型具有较强的非线性拟合能力,可以很好地适应数据的复杂特征。

其中,循环神经网络(RNN)和长短期记忆网络(LSTM)是常用的时间序列预测模型。

RNN和LSTM都可以处理时序数据之间的依赖关系,适用于预测具有长期滞后影响的时间序列。

此外,支持向量回归(SVR)和决策树也是常见的时间序列预测方法。

SVR是一种非线性回归模型,通过在高维空间中找到一个最优的分离超平面来建立预测模型。

决策树则是通过对样本数据进行递归划分,构建一个树状结构来预测结果。

这两种方法都具有较强的拟合能力和泛化能力,可以用于各种类型的时间序列预测问题。

matlab30个案例分析案例14-SVM神经网络的回归预测分析

matlab30个案例分析案例14-SVM神经网络的回归预测分析

%% SVM神经网络的回归预测分析---上证指数开盘指数预测%%% 清空环境变量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);xlabel('交易日天数(1990.12.19-2009.08.19)','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('交易日天数(1990.12.19-2009.08.19)','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('交易日天数(1990.12.19-2009.08.19)','FontSize',12);ylabel('开盘数','FontSize',12);grid on;figure;error = predict - ts';plot(error,'rd');title('误差图(predicted data - original data)','FontSize',12);xlabel('交易日天数(1990.12.19-2009.08.19)','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('交易日天数(1990.12.19-2009.08.19)','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%% by faruto%Email:patrick.lee@ QQ:516667408 /faruto BNU%last modified 2010.01.17%Super Moderator @ % 若转载请注明:% faruto and liyang , LIBSVM-farutoUltimateVersion% a toolbox with implements for support vector machines based on libsvm, 2009.% Software available at %% Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for% support vector machines, 2001. Software available at% .tw/~cjlin/libsvm% 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);。

学生成绩预测模型的对比分析

学生成绩预测模型的对比分析

学生成绩预测模型的对比分析随着人工智能和机器学习的快速发展,学生成绩预测模型被越来越多地应用于教育领域。

这些模型能够根据学生的历史成绩、考试成绩、出勤情况等因素,预测学生成绩的发展趋势。

为了比较不同的学生成绩预测模型的效果,本文将介绍和对比四种主流的学生成绩预测模型,包括线性回归、决策树、支持向量机和神经网络,并分析它们的优缺点。

一、线性回归线性回归是一种最基本的学生成绩预测模型。

它通过寻找一条最佳直线来预测学生的成绩。

该模型的优点是易于理解和实现,适用于大量数据。

不过,由于它只考虑了一些基本因素,如考试分数等,而没有考虑其他因素,如家庭背景、兴趣爱好等,因此它的精度有限。

此外,线性回归还容易受到异常值的影响。

二、决策树决策树是一种能够通过层次化的决策过程来预测结果的模型。

它能同时考虑多种因素,并运用树形结构进行逻辑推理。

决策树的优点是易于解释和理解,适用于多层次的决策问题。

但是,由于它容易出现过拟合和欠拟合的现象,因此需要采取一些措施来避免这些问题。

三、支持向量机支持向量机是一种基于最大间隔原理的分类模型。

它通过将数据映射到高维空间中,将数据分离成两个或多个类别。

支持向量机的优点是准确性高,适用于高维数据。

但是,由于它对数据的敏感度较高,因此需要特别注意训练集的选择。

四、神经网络神经网络是一种基于生物神经网络的模型,它能够通过多个神经元的组合来预测结果。

神经网络的优点是能够处理非线性问题和大量的数据,并且不容易受到异常值和噪声的干扰。

但是,神经网络也有缺点,例如需要大量的计算资源和时间,且难以理解和解释。

综上所述,不同的学生成绩预测模型各有其优缺点。

在选择一种预测模型时,需要考虑数据的复杂度、模型的准确性和可解释性等因素。

同时还需要注意模型的训练集和测试集的选择,以避免模型的过拟合和欠拟合问题。

在教育领域中,学生成绩预测模型可以帮助学生和老师了解学生的学习情况,从而更好地制定学习计划和提高学生的学习效果。

应用统计学中的预测建模技术与方法

应用统计学中的预测建模技术与方法

应用统计学中的预测建模技术与方法统计学是一门应用广泛的学科,其中的预测建模技术与方法在实际应用中具有重要的作用。

预测建模能够通过对过去和现有数据的分析,来预测未来的发展趋势和结果。

本文将介绍一些常见的预测建模技术与方法,并探讨它们在应用统计学中的应用。

一、线性回归分析线性回归分析是一种常见的预测建模技术,它通过对自变量和因变量之间的线性关系进行建模,来预测未来的因变量。

线性回归模型可以用来预测各种不同类型的数据,例如股票价格、销售量等。

通过对历史数据的回归分析,我们可以得到一个预测模型,以便在未来的情况下进行预测。

二、时间序列分析时间序列分析是一种专门用于预测时间相关数据的方法。

它建立在时间序列的基础上,通过对时间序列数据的统计和分析,来预测未来的趋势和变化。

时间序列分析可以应用于各种领域,例如经济学、气象学等。

在金融领域中,时间序列分析可以用于预测股票价格的波动情况,帮助投资者做出合理的决策。

三、决策树分析决策树分析是一种通过构建决策树来进行预测的方法。

决策树是一种用图形表示的预测模型,它通过将问题分解成一系列的决策节点和叶节点,并根据特定的规则来进行决策。

决策树分析可以应用于各种预测问题,例如市场调研、客户细分等。

通过对历史数据的分析,我们可以构建一个决策树模型,从而在未来的情况下进行预测。

四、神经网络分析神经网络分析是一种通过模拟人脑神经元之间的相互连接关系来进行预测的方法。

神经网络由多个神经元组成,每个神经元都有自己的权重和阈值。

通过对输入数据的处理和调整神经元之间的连接权重,神经网络可以学习和适应不同的数据模式,并进行预测。

神经网络分析可以应用于各种复杂的预测问题,例如语音识别、图像处理等。

五、贝叶斯统计分析贝叶斯统计分析是一种基于贝叶斯定理的预测方法。

贝叶斯定理将观察到的数据和先验知识结合起来,通过统计推断得到后验概率,并进一步进行预测。

贝叶斯统计分析可以应用于各种预测问题,例如医学诊断、风险评估等。

数据分析中的时间序列预测方法介绍

数据分析中的时间序列预测方法介绍

数据分析中的时间序列预测方法介绍引言:在当今信息时代,数据的高速增长和广泛应用,使得时间序列分析成为数据科学中的重要领域。

时间序列预测是指通过分析一系列按时间顺序排列的数据,来预测未来的趋势和模式。

时间序列预测在许多领域都有广泛的应用,例如金融预测、销售预测、天气预测等等。

本文将介绍几种常用的时间序列预测方法。

一、移动平均(Moving Average)移动平均是时间序列预测中最简单和常用的方法之一。

它通过计算时间窗口内数据点的平均值来预测未来的值。

移动平均适用于没有明显趋势和季节性变化的数据。

常见的移动平均方法包括简单移动平均(Simple Moving Average,SMA)、加权移动平均(Weighted Moving Average)和指数移动平均(Exponential Moving Average,EMA)。

其中,简单移动平均对时间窗口内的数据给予相同的权重,加权移动平均对数据点进行加权处理,指数移动平均则给予近期数据更高的权重。

二、指数平滑法(Exponential Smoothing)指数平滑法是一种基于加权平均的时间序列预测方法。

它通过对历史数据进行加权平均来预测未来的值,其中较新的数据点权重更高。

指数平滑法适用于数据具有较强的趋势,但没有明显的季节性变化。

常见的指数平滑法包括简单指数平滑(Simple Exponential Smoothing)和Holt-Winters指数平滑。

三、自回归移动平均模型(ARMA)自回归移动平均模型是一种基于时间序列预测的统计模型。

它将时间序列数据分解为自回归(AR)和移动平均(MA)两部分,并通过对这两部分进行建模来预测未来的值。

AR部分表示当前值与过去一段时间的值之间的关系,而MA部分表示当前值与随机误差之间的关系。

ARMA模型的参数可以通过最小化误差来估计,并可以使用ARMA模型来进行长期和短期的预测。

ARMA模型也可以扩展为自回归滑动平均模型(ARIMA),用于处理具有季节性变化的时间序列。

神经网络在回归问题上的应用研究

神经网络在回归问题上的应用研究

神经网络在回归问题上的应用研究神经网络是一种模仿人脑神经网络结构和功能而设计的数学模型,用于处理复杂的输入输出关系,近年来在计算机科学领域得到了广泛的应用。

其中,神经网络在回归问题上的应用研究是一个非常重要的方向。

回归问题是指一类针对回归分析的问题,即寻找输入与输出之间的函数关系,通常是一个连续变量做因变量的问题。

为了解决回归问题,传统的方法包括线性回归、多项式回归、岭回归等,并且这些方法在实际应用中得到了广泛的应用。

不过,这些方法存在的限制是需要人为地选择特征和参数,并且不能发现非线性关系。

相比之下,神经网络的优势就在于它可以用于任何形式的输入输出,自动学习关系并发现非线性特征。

现在,神经网络在回归问题上的应用非常广泛。

首先,神经网络可以用于解决多变量的回归问题。

多变量回归是一种更复杂的回归问题,其中存在多个输入变量和一个输出变量。

这种问题通常需要对每个输入变量的影响进行分析,并找到它们与输出变量之间的最佳关系。

神经网络的多层结构可以很好地表示这种关系,并利用反向传播算法进行参数优化。

其次,神经网络也可以用于时间序列预测。

时间序列预测是预测一个连续变量在未来时间段内的走势。

这种问题通常与数据的趋势、周期和季节性有关,因此需要寻找隐藏在数据中的模式。

传统的统计方法往往过于简单,不能充分挖掘数据的信息,而神经网络可以通过窗口滑动来识别这些模式并进行预测。

此外,神经网络也可以用于非参数回归问题。

非参数回归是在没有假定一个具体形式的基函数或先验概率下,对样本空间的连续数据建立回归函数的一种方法。

一个典型的例子是核回归,其中一个核函数(如高斯核)用于评估每个样本与目标之间的距离。

神经网络可以用于非参数回归,通过运用自适应阶段和反向传播算法,可以发现数据中的非线性特征。

最后,神经网络也可以用于局部回归问题。

局部回归是一种回归方法,其中与查询点相邻的训练数据被用来生成局部线性模型,查询点的输出变量是根据这些局部模型的加权平均值生成的。

多元线性回归与BP神经网络预测模型对比与运用研究

多元线性回归与BP神经网络预测模型对比与运用研究

多元线性回归与BP神经网络预测模型对比与运用研究一、本文概述本文旨在探讨多元线性回归模型与BP(反向传播)神经网络预测模型在数据分析与预测任务中的对比与运用。

我们将首先概述这两种模型的基本原理和特性,然后分析它们在处理不同数据集时的性能表现。

通过实例研究,我们将详细比较这两种模型在预测准确性、稳健性、模型可解释性以及计算效率等方面的优缺点。

多元线性回归模型是一种基于最小二乘法的统计模型,通过构建自变量与因变量之间的线性关系进行预测。

它假设数据之间的关系是线性的,并且误差项独立同分布。

这种模型易于理解和解释,但其预测能力受限于线性假设的合理性。

BP神经网络预测模型则是一种基于神经网络的非线性预测模型,它通过模拟人脑神经元的连接方式构建复杂的网络结构,从而能够处理非线性关系。

BP神经网络在数据拟合和预测方面具有强大的能力,但模型的结构和参数设置通常需要更多的经验和调整。

本文将通过实际数据集的应用,展示这两种模型在不同场景下的表现,并探讨如何结合它们各自的优势来提高预测精度和模型的实用性。

我们还将讨论这两种模型在实际应用中可能遇到的挑战,包括数据预处理、模型选择、超参数调整以及模型评估等问题。

通过本文的研究,我们期望为数据分析和预测领域的实践者提供有关多元线性回归和BP神经网络预测模型选择和应用的有益参考。

二、多元线性回归模型多元线性回归模型是一种经典的统计预测方法,它通过构建自变量与因变量之间的线性关系,来预测因变量的取值。

在多元线性回归模型中,自变量通常表示为多个特征,每个特征都对因变量有一定的影响。

多元线性回归模型的基本原理是,通过最小化预测值与真实值之间的误差平方和,来求解模型中的参数。

这些参数代表了各自变量对因变量的影响程度。

在求解过程中,通常使用最小二乘法进行参数估计,这种方法可以确保预测误差的平方和最小。

多元线性回归模型的优点在于其简单易懂,参数估计方法成熟稳定,且易于实现。

多元线性回归还可以提供自变量对因变量的影响方向和大小,具有一定的解释性。

数据挖掘中的预测分析技巧

数据挖掘中的预测分析技巧

数据挖掘中的预测分析技巧随着信息时代的到来,大数据已经成为了我们生活中的一部分。

而数据挖掘作为从大数据中提取有用信息的一种技术,正变得越来越重要。

在数据挖掘的过程中,预测分析技巧起到了至关重要的作用。

本文将介绍几种常见的预测分析技巧,并探讨其应用。

首先,逻辑回归是一种常见的预测分析技巧。

逻辑回归是一种通过建立逻辑模型来预测二元变量的方法。

它通过将自变量与因变量之间的关系转化为概率,从而进行预测。

逻辑回归常用于分类问题,如预测用户购买某种产品的概率。

在实际应用中,逻辑回归可以通过收集用户的历史购买记录、浏览记录等信息,来预测用户是否会购买某种产品。

逻辑回归的优点是模型简单,计算速度快,但也存在一些限制,如对数据的线性关系敏感。

其次,决策树是另一种常见的预测分析技巧。

决策树是一种通过建立决策规则来预测离散或连续变量的方法。

它通过将数据集划分为不同的子集,并根据特征值选择最佳划分方式,从而进行预测。

决策树常用于分类和回归问题,如预测用户的购买偏好或房价。

在实际应用中,决策树可以通过收集用户的个人信息、购买记录等来预测用户的购买偏好。

决策树的优点是模型易于理解和解释,但也存在一些限制,如容易过拟合和对数据的噪声敏感。

另外,支持向量机是一种常见的预测分析技巧。

支持向量机是一种通过构建超平面来预测离散或连续变量的方法。

它通过找到最佳的超平面,使得不同类别的样本点尽可能远离超平面,从而进行预测。

支持向量机常用于分类和回归问题,如预测股票价格或疾病的发生率。

在实际应用中,支持向量机可以通过收集股票的历史交易数据、公司的财务数据等来预测股票价格。

支持向量机的优点是对于高维数据和非线性关系有较好的适应性,但也存在一些限制,如对于大规模数据集计算复杂度较高。

最后,神经网络是一种常见的预测分析技巧。

神经网络是一种通过模拟人脑神经元的工作方式来预测离散或连续变量的方法。

它通过构建多层神经元网络,利用反向传播算法来进行训练和预测。

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

%%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);。

相关文档
最新文档