matlab30个案例分析案例15-SVM神经网络的信息粒化时序回归预测

合集下载

(最新整理)MATLAB智能算法30个案例分析

(最新整理)MATLAB智能算法30个案例分析

MATLAB智能算法30个案例分析编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(MATLAB智能算法30个案例分析)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为MATLAB智能算法30个案例分析的全部内容。

MATLAB 智能算法30个案例分析第 1 章1、案例背景遗传算法(Genetic Algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。

遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。

在遗传算法中,染色体对应的是数据或数组,通常是由一维的串结构数据来表示,串上各个位置对应基因的取值。

基因组成的串就是染色体,或者叫基因型个体( Individuals)。

一定数量的个体组成了群体(Population)。

群体中个体的数目称为群体大小(Population Size),也叫群体规模.而各个个体对环境的适应程度叫做适应度( Fitness) .2、案例目录:1.1 理论基础1.1。

1 遗传算法概述1. 编码2. 初始群体的生成3。

适应度评估4。

选择5。

交叉6. 变异1。

1.2 设菲尔德遗传算法工具箱1. 工具箱简介2。

工具箱添加1.2 案例背景1。

2.1 问题描述1. 简单一元函数优化2. 多元函数优化1。

2。

2 解决思路及步骤1。

3 MATLAB程序实现1.3.1 工具箱结构1.3。

2 遗传算法中常用函数1。

创建种群函数-crtbp2。

适应度计算函数—ranking 3. 选择函数—select4。

MATLAB-智能算法30个案例分析【精品文档】(完整版)

MATLAB-智能算法30个案例分析【精品文档】(完整版)

MATLAB 智能算法30个案例分析(终极版)1 基于遗传算法的TSP算法(王辉)2 基于遗传算法和非线性规划的函数寻优算法(史峰)3 基于遗传算法的BP神经网络优化算法(王辉)4 设菲尔德大学的MATLAB遗传算法工具箱(王辉)5 基于遗传算法的LQR控制优化算法(胡斐)6 遗传算法工具箱详解及应用(胡斐)7 多种群遗传算法的函数优化算法(王辉)8 基于量子遗传算法的函数寻优算法(王辉)9 多目标Pareto最优解搜索算法(胡斐)10 基于多目标Pareto的二维背包搜索算法(史峰)11 基于免疫算法的柔性车间调度算法(史峰)12 基于免疫算法的运输中心规划算法(史峰)13 基于粒子群算法的函数寻优算法(史峰)14 基于粒子群算法的PID控制优化算法(史峰)15 基于混合粒子群算法的TSP寻优算法(史峰)16 基于动态粒子群算法的动态环境寻优算法(史峰)17 粒子群算法工具箱(史峰)18 基于鱼群算法的函数寻优算法(王辉)19 基于模拟退火算法的TSP算法(王辉)20 基于遗传模拟退火算法的聚类算法(王辉)21 基于模拟退火算法的HEV能量管理策略参数优化(胡斐)22 蚁群算法的优化计算——旅行商问题(TSP)优化(郁磊)23 基于蚁群算法的二维路径规划算法(史峰)24 基于蚁群算法的三维路径规划算法(史峰)25 有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测(郁磊)26 有导师学习神经网络的分类——鸢尾花种类识别(郁磊)27 无导师学习神经网络的分类——矿井突水水源判别(郁磊)28 支持向量机的分类——基于乳腺组织电阻抗特性的乳腺癌诊断(郁磊)29 支持向量机的回归拟合——混凝土抗压强度预测(郁磊)30 极限学习机的回归拟合及分类——对比实验研究(郁磊)智能算法是我们在学习中经常遇到的算法,主要包括遗传算法,免疫算法,粒子群算法,神经网络等,智能算法对于很多人来说,既爱又恨,爱是因为熟练的掌握几种智能算法,能够很方便的解决我们的论坛问题,恨是因为智能算法感觉比较“玄乎”,很难理解,更难用它来解决问题。

SVM的信息粒化时序回归预测城市用水量

SVM的信息粒化时序回归预测城市用水量

SVM的信息粒化时序回归预测城市用水量张清周;黄源;赵明【摘要】利用基于信息粒化的支持向量机预测模型对某市11个月的时用水量数据进行模拟训练,对下一个月的每日最高时用水量进行预测.首先提取每日的最高时用水量,再将每7个数据变换为一个三角型模糊粒子,该模糊粒子中的三个参数Low、R和Up分别代表一周内最高时用水量变化的最小值、平均值和最大值,然后利用SVM对最高时用水量及Low、R和Up进行预测.针对SVM在预测时调整自身相关参数困难的问题,提出了运用网格法对模型中的参数进行优化选择.实例分析结果表明,该模型建模速度快,预测精度高,且实用性强.【期刊名称】《供水技术》【年(卷),期】2012(006)004【总页数】4页(P43-46)【关键词】信息粒化;支持向量机;网格算法;用水量预测;相对误差【作者】张清周;黄源;赵明【作者单位】哈尔滨工业大学市政环境工程学院,黑龙江哈尔滨150090;哈尔滨工业大学市政环境工程学院,黑龙江哈尔滨150090;哈尔滨工业大学市政环境工程学院,黑龙江哈尔滨150090【正文语种】中文【中图分类】TU991.31城市用水量预测的精度直接影响管网系统优化运行的实用性。

从模型的理论基础来看,可以将城市用水量预测模型划分为两个主要类别:一类是以统计学原理为基础的预测模型,如季节指数平滑法预测模型和ARIMA模型;另一类是以混沌理论、神经网络、支持向量机等理论为基础的预测模型,如最大Lyapunov指数预测模型、模糊神经网络预测模型和支持向量回归机模型[1-5]。

上述预测方法只能得到用水量的点预测,但在管网优化调度和运行管理中,还需要掌握一段时期内用水量的变化范围。

因此,笔者先将原始数据进行信息粒化,在此基础上构建支持向量机的预测模型,采用该模型预测日最高时用水量及其一段时期内的变化范围。

1 基于信息粒化的支持向量机预测方法1.1 信息粒化信息粒化就是把大量复杂的信息按各自的特征划分成若干较简单的块,每个块作为一个信息粒,这种处理信息的过程称为信息粒化。

matlab神经网络43个案例分析

matlab神经网络43个案例分析

MATLAB神经网络43个案例分析简介神经网络(Neural Network)是一种模拟人类神经元行为的计算模型,它通过对大量输入数据进行训练,学习到输入和输出之间的复杂关系。

MATLAB是一个强大的数学计算工具,具有丰富的神经网络函数和工具箱,可以用于神经网络的设计、训练和应用。

本文将介绍43个使用MATLAB进行神经网络分析的案例,主要包括神经网络的基本概念、神经网络模型的建立、参数的调整和优化等方面。

二级标题1: 基本概念在开始具体的案例分析之前,首先理解神经网络的基本概念是非常重要的。

三级标题1: 神经元神经网络的基本单元是神经元(Neuron),它模拟了生物神经元的工作原理。

神经元接收多个输入信号,并通过一个激活函数产生输出信号。

常用的激活函数包括Sigmoid函数、ReLU函数等。

三级标题2: 神经网络的结构神经网络由多层神经元组成,通常包括输入层、隐藏层和输出层。

输入层接收外部输入,隐藏层用于处理中间信息,输出层产生最终的输出。

三级标题3: 前向传播和反向传播神经网络的训练过程主要包括前向传播和反向传播两个步骤。

前向传播是通过输入数据按照网络结构进行计算,得到输出结果。

反向传播是根据输出结果与真实结果之间的误差,通过调整网络参数来提高模型性能。

二级标题2: 案例分析三级标题4: 案例1: 图像分类本案例通过使用神经网络和MATLAB工具箱,对手写数字图像进行分类。

首先,将图像数据转化为向量形式,并通过网络进行训练。

然后,将训练好的网络用于分类未知图像,并评估分类性能。

三级标题5: 案例2: 时序预测本案例使用神经网络来预测时间序列数据。

通过对历史数据进行训练,建立时序模型,并利用该模型来预测未来的数据。

通过调整网络结构和参数,提高预测准确性。

三级标题6: 案例3: 异常检测本案例利用神经网络进行异常检测。

通过对正常数据进行训练,建立正常模型,并使用该模型检测异常数据。

通过调整网络的灵敏度和阈值,提高异常检测的性能。

matlab智能算法30个案例分析

matlab智能算法30个案例分析

matlab智能算法30个案例分析Matlab智能算法30个案例分析。

Matlab作为一种强大的数学软件,拥有丰富的算法库和强大的编程能力,能够实现各种复杂的智能算法。

本文将针对Matlab智能算法进行30个案例分析,帮助读者深入了解Matlab在智能算法领域的应用和实践。

1. 遗传算法。

遗传算法是一种模拟自然选择和遗传机制的优化算法,能够有效解决复杂的优化问题。

在Matlab中,可以利用遗传算法工具箱快速实现各种优化问题的求解,例如函数最小化、参数优化等。

2. 神经网络。

神经网络是一种模拟人脑神经元网络的计算模型,能够实现复杂的非线性映射和模式识别。

Matlab提供了丰富的神经网络工具箱,可以用于神经网络的建模、训练和应用,例如分类、回归、聚类等任务。

3. 模糊逻辑。

模糊逻辑是一种处理不确定性和模糊信息的逻辑推理方法,能够有效处理模糊规则和模糊数据。

Matlab中的模糊逻辑工具箱提供了丰富的模糊推理方法和工具,可以用于模糊控制、模糊识别等领域。

4. 粒子群算法。

粒子群算法是一种模拟鸟群觅食行为的优化算法,能够有效处理多维优化问题。

在Matlab中,可以利用粒子群算法工具箱快速实现各种优化问题的求解,例如函数最小化、参数优化等。

5. 蚁群算法。

蚁群算法是一种模拟蚂蚁觅食行为的优化算法,能够有效处理离散优化问题和组合优化问题。

Matlab中的蚁群算法工具箱提供了丰富的蚁群优化方法和工具,可以用于解决各种组合优化问题。

6. 遗传规划算法。

遗传规划算法是一种结合遗传算法和规划算法的优化方法,能够有效处理复杂的规划问题。

在Matlab中,可以利用遗传规划算法工具箱快速实现各种规划问题的求解,例如路径规划、资源分配等。

7. 人工免疫算法。

人工免疫算法是一种模拟免疫系统的优化算法,能够有效处理多峰优化问题和动态优化问题。

在Matlab中,可以利用人工免疫算法工具箱快速实现各种复杂的优化问题的求解。

8. 蜂群算法。

matlab30个案例分析案例13-SVM神经网络中的参数优化

matlab30个案例分析案例13-SVM神经网络中的参数优化

%% SVM神经网络中的参数优化---如何更好的提升分类器的性能%% 清空环境变量function chapter13_GAclose all;clear;clc;format compact;%% 数据提取% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量load chapter13_wine.mat;% 画出测试数据的box可视化图figure;boxplot(wine,'orientation','horizontal','labels',categories);title('wine数据的box可视化图','FontSize',12);xlabel('属性值','FontSize',12);grid on;% 画出测试数据的分维可视化图figuresubplot(3,5,1);hold onfor run = 1:178plot(run,wine_labels(run),'*');endxlabel('样本','FontSize',10);ylabel('类别标签','FontSize',10);title('class','FontSize',10);for run = 2:14subplot(3,5,run);hold on;str = ['attrib ',num2str(run-1)];for i = 1:178plot(i,wine(i,run-1),'*');endxlabel('样本','FontSize',10);ylabel('属性值','FontSize',10);title(str,'FontSize',10);end% 选定训练集和测试集% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];% 相应的训练集的标签也要分离出来train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];% 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];% 相应的测试集的标签也要分离出来test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];%% 数据预处理% 数据预处理,将训练集和测试集归一化到[0,1]区间[mtrain,ntrain] = size(train_wine);[mtest,ntest] = size(test_wine);dataset = [train_wine;test_wine];% mapminmax为MATLAB自带的归一化函数[dataset_scale,ps] = mapminmax(dataset',0,1);dataset_scale = dataset_scale';train_wine = dataset_scale(1:mtrain,:);test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );%% 选择GA最佳的SVM参数c&g% GA的参数选项初始化ga_option.maxgen = 200;ga_option.sizepop = 20;ga_option.cbound = [0,100];ga_option.gbound = [0,100];ga_option.v = 5;ga_option.ggap = 0.9;[bestacc,bestc,bestg] = gaSVMcgForClass(train_wine_labels,train_wine,ga_option);% 打印选择结果disp('打印选择结果');str = sprintf( 'Best Cross Validation Accuracy = %g%% Best c = %g Best g = %g',bestacc,bestc,bestg);disp(str);%% 利用最佳的参数进行SVM网络训练cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];model = svmtrain(train_wine_labels,train_wine,cmd);%% SVM网络预测[predict_label,accuracy] = svmpredict(test_wine_labels,test_wine,model);% 打印测试集分类准确率total = length(test_wine_labels);right = sum(predict_label == test_wine_labels);disp('打印测试集分类准确率');str = sprintf( 'Accuracy = %g%% (%d/%d)',accuracy(1),right,total);disp(str);%% 结果分析% 测试集的实际分类和预测分类图figure;hold on;plot(test_wine_labels,'o');plot(predict_label,'r*');xlabel('测试集样本','FontSize',12);ylabel('类别标签','FontSize',12);legend('实际测试集分类','预测测试集分类');title('测试集的实际分类和预测分类图','FontSize',12);grid on;snapnow;%% 子函数gaSVMcgForClass.mfunction [BestCVaccuracy,Bestc,Bestg,ga_option] = gaSVMcgForClass(train_label,train_data,ga_option)% gaSVMcgForClass%% 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% 参数初始化if nargin == 2ga_option = struct('maxgen',200,'sizepop',20,'ggap',0.9,...'cbound',[0,100],'gbound',[0,1000],'v',5);end% maxgen:最大的进化代数,默认为200,一般取值范围为[100,500]% sizepop:种群最大数量,默认为20,一般取值范围为[20,100]% cbound = [cmin,cmax],参数c的变化范围,默认为(0,100]% gbound = [gmin,gmax],参数g的变化范围,默认为[0,1000]% v:SVM Cross Validation参数,默认为5%MAXGEN = ga_option.maxgen;NIND = ga_option.sizepop;NVAR = 2;PRECI = 20;GGAP = ga_option.ggap;trace = zeros(MAXGEN,2);FieldID = ...[rep([PRECI],[1,NVAR]);[ga_option.cbound(1),ga_option.gbound(1);ga_option.cbound(2),ga_opti on.gbound(2)]; ...[1,1;0,0;0,1;1,1]];Chrom = crtbp(NIND,NVAR*PRECI);gen = 1;v = ga_option.v;BestCVaccuracy = 0;Bestc = 0;Bestg = 0;%cg = bs2rv(Chrom,FieldID);for nind = 1:NINDcmd = ['-v ',num2str(v),' -c ',num2str(cg(nind,1)),' -g ',num2str(cg(nind,2))];ObjV(nind,1) = svmtrain(train_label,train_data,cmd);end[BestCVaccuracy,I] = max(ObjV);Bestc = cg(I,1);Bestg = cg(I,2);for gen = 1:MAXGENFitnV = ranking(-ObjV);SelCh = select('sus',Chrom,FitnV,GGAP);SelCh = recombin('xovsp',SelCh,0.7);SelCh = mut(SelCh);cg = bs2rv(SelCh,FieldID);for nind = 1:size(SelCh,1)cmd = ['-v ',num2str(v),' -c ',num2str(cg(nind,1)),' -g ',num2str(cg(nind,2))];ObjVSel(nind,1) = svmtrain(train_label,train_data,cmd);end[Chrom,ObjV] = reins(Chrom,SelCh,1,1,ObjV,ObjVSel);if max(ObjV) <= 50continue;end[NewBestCVaccuracy,I] = max(ObjV);cg_temp = bs2rv(Chrom,FieldID);temp_NewBestCVaccuracy = NewBestCVaccuracy;if NewBestCVaccuracy > BestCVaccuracyBestCVaccuracy = NewBestCVaccuracy;Bestc = cg_temp(I,1);Bestg = cg_temp(I,2);endif abs( NewBestCVaccuracy-BestCVaccuracy ) <= 10^(-2) && ...cg_temp(I,1) < BestcBestCVaccuracy = NewBestCVaccuracy;Bestc = cg_temp(I,1);Bestg = cg_temp(I,2);endtrace(gen,1) = max(ObjV);trace(gen,2) = sum(ObjV)/length(ObjV);end%figure;hold on;trace = round(trace*10000)/10000;plot(trace(1:gen,1),'r*-','LineWidth',1.5);plot(trace(1:gen,2),'o-','LineWidth',1.5);legend('最佳适应度','平均适应度',3);xlabel('进化代数','FontSize',12);ylabel('适应度','FontSize',12);axis([0 gen 0 100]);grid on;axis auto;line1 = '适应度曲线Accuracy[GAmethod]';line2 = ['(终止代数=', ...num2str(gen),',种群数量pop=', ...num2str(NIND),')'];line3 = ['Best c=',num2str(Bestc),' g=',num2str(Bestg), ...' CVAccuracy=',num2str(BestCVaccuracy),'%'];title({line1;line2;line3},'FontSize',12);。

MATLAB_智能算法30个案例分析

MATLAB_智能算法30个案例分析

MATLAB_智能算法30个案例分析1.线性回归:使用MATLAB的回归工具箱,对给定的数据集进行线性回归分析,获取拟合的直线方程。

2.逻辑回归:使用MATLAB的分类工具箱,对给定的数据集进行逻辑回归分析,建立分类模型。

3.K均值聚类:使用MATLAB的聚类工具箱,对给定的数据集进行K 均值聚类算法,将数据集分为多个簇。

4.支持向量机:使用MATLAB的SVM工具箱,对给定的数据集进行支持向量机算法,建立分类或回归模型。

5.决策树:使用MATLAB的分类工具箱,对给定的数据集进行决策树分析,建立决策模型。

6.随机森林:使用MATLAB的分类和回归工具箱,对给定的数据集进行随机森林算法,集成多个决策树模型。

7. AdaBoost:使用MATLAB的分类工具箱,对给定的数据集进行AdaBoost算法,提升分类性能。

8.遗传算法:使用MATLAB的全局优化工具箱,利用遗传算法进行优化问题的求解。

9.粒子群优化:使用MATLAB的全局优化工具箱,利用粒子群优化算法进行优化问题的求解。

10.模拟退火算法:使用MATLAB的全局优化工具箱,利用模拟退火算法进行优化问题的求解。

11.神经网络:使用MATLAB的神经网络工具箱,构建和训练多层感知机模型。

12.卷积神经网络:使用MATLAB的深度学习工具箱,构建和训练卷积神经网络模型。

13.循环神经网络:使用MATLAB的深度学习工具箱,构建和训练循环神经网络模型。

14.长短期记忆网络:使用MATLAB的深度学习工具箱,构建和训练长短期记忆网络模型。

15.GAN(生成对抗网络):使用MATLAB的深度学习工具箱,构建和训练生成对抗网络模型。

16.自编码器:使用MATLAB的深度学习工具箱,构建和训练自编码器模型。

17.强化学习:使用MATLAB的强化学习工具箱,构建和训练强化学习模型。

18.关联规则挖掘:使用MATLAB的数据挖掘工具箱,发现数据中的关联规则。

Matlab回归分析:详解+实例

Matlab回归分析:详解+实例
回归分析 —从姚明女儿的身高谈起
姚明女儿的身高
问 建立父母身高和女儿身高的模型 题 姚明2.26米,叶莉1.90米,预测姚明女儿身高
女孩身高y(cm) 156 172 162 158 164 166 160 155 174 165
父母平均身高 x(cm)
158.5
170.5
166
163.5
166
168.5 165.5
自变量X:用来解释Y的变量,通常有多个。
Y:薪资收入 X:学历、年龄、性别...
注意:(1)自变量可以是定量数据,也可以是定
性数据,它不决定回归模型的类型,决定回归模型 类型的是因变量;
(2)确定自变量的方法可以头脑风暴,但同时也 要看数据的可获得性,有时候可能头脑风暴想的很 好,但是没办法获取这个指标的数据也是不行的, 所以自变量的选取往往看一个数据的可获取性。
1 n
(x0 x)2 Lxx
小结
1.回归分析的任务 研究变量之间的相关关系
2.线性回归的步骤
(1) 推测回归函数; (3) 估计未知参数; (5) 预测.
(2) 建立回归模型; (4) 进行假设检验;
MATLAB中回归分析的实现
多元线性回归
1.确定回归系数的点估计值,用命令:
b=regress(Y,X)
女孩身高y(cm) 156 172 162 158 164 166 160 155 174 165
父母平均身高 x(cm)
158.5
170.5
166
163.5
166
168.5 165.5
159
180.5
169
基本模型
y 0 1x
y ~女孩身高
0, 1 ~回归系数
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%% SVM神经网络的信息粒化时序回归预测----上证指数开盘指数变化趋势和变化空间预测%% 清空环境变量function chapter15tic;close all;clear;clc;format compact;%% 原始数据的提取% 载入测试数据上证指数(1990.12.19-2009.08.19)% 数据是一个4579*6的double型的矩阵,每一行表示每一天的上证指数% 6列分别表示当天上证指数的开盘指数,指数最高值,指数最低值,收盘指数,当日交易量,当日交易额.load chapter15_sh.mat;% 提取数据ts = sh_open;time = length(ts);% 画出原始上证指数的每日开盘数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;print -dtiff -r600 original;snapnow;%% 对原始数据进行模糊信息粒化win_num = floor(time/5);tsx = 1:win_num;tsx = tsx';[Low,R,Up]=FIG_D(ts','triangle',win_num);% 模糊信息粒化可视化图figure;hold on;plot(Low,'b+');plot(R,'r*');plot(Up,'gx');hold off;legend('Low','R','Up',2);title('模糊信息粒化可视化图','FontSize',12);xlabel('粒化窗口数目','FontSize',12);ylabel('粒化值','FontSize',12);grid on;print -dtiff -r600 FIGpic;snapnow;%% 利用SVM对Low进行回归预测% 数据预处理,将Low进行归一化处理% mapminmax为matlab自带的映射函数[low,low_ps] = mapminmax(Low);low_ps.ymin = 100;low_ps.ymax = 500;% 对Low进行归一化[low,low_ps] = mapminmax(Low,low_ps);% 画出Low归一化后的图像figure;plot(low,'b+');title('Low归一化后的图像','FontSize',12);xlabel('粒化窗口数目','FontSize',12);ylabel('归一化后的粒化值','FontSize',12);grid on;print -dtiff -r600 lowscale;% 对low进行转置,以符合libsvm工具箱的数据格式要求low = low';snapnow;% 选择回归预测分析中最佳的SVM参数c&g% 首先进行粗略选择[bestmse,bestc,bestg] = SVMcgForRegress(low,tsx,-10,10,-10,10,3,1,1,0.1,1);% 打印粗略选择结果disp('打印粗略选择结果');str = sprintf( 'SVM parameters for Low:Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);disp(str);% 根据粗略选择的结果图再进行精细选择[bestmse,bestc,bestg] = SVMcgForRegress(low,tsx,-4,8,-10,10,3,0.5,0.5,0.05,1);% 打印精细选择结果disp('打印精细选择结果');str = sprintf( 'SVM parameters for Low:Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);disp(str);% 训练SVMcmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.1'];low_model = svmtrain(low, tsx, cmd);% 预测[low_predict,low_mse] = svmpredict(low,tsx,low_model);low_predict = mapminmax('reverse',low_predict,low_ps);predict_low = svmpredict(1,win_num+1,low_model);predict_low = mapminmax('reverse',predict_low,low_ps);predict_low%% 对于Low的回归预测结果分析figure;hold on;plot(Low,'b+');plot(low_predict,'r*');legend('original low','predict low',2);title('original vs predict','FontSize',12);xlabel('粒化窗口数目','FontSize',12);ylabel('粒化值','FontSize',12);grid on;print -dtiff -r600 lowresult;figure;error = low_predict - Low';plot(error,'ro');title('误差(predicted data-original data)','FontSize',12);xlabel('粒化窗口数目','FontSize',12);ylabel('误差量','FontSize',12);grid on;print -dtiff -r600 lowresulterror;snapnow;%% 利用SVM对R进行回归预测% 数据预处理,将R进行归一化处理% mapminmax为matlab自带的映射函数[r,r_ps] = mapminmax(R);r_ps.ymin = 100;r_ps.ymax = 500;% 对R进行归一化[r,r_ps] = mapminmax(R,r_ps);% 画出R归一化后的图像figure;plot(r,'r*');title('r归一化后的图像','FontSize',12);grid on;% 对R进行转置,以符合libsvm工具箱的数据格式要求r = r';snapnow;% 选择回归预测分析中最佳的SVM参数c&g% 首先进行粗略选择[bestmse,bestc,bestg] = SVMcgForRegress(r,tsx,-10,10,-10,10,3,1,1,0.1);% 打印粗略选择结果disp('打印粗略选择结果');str = sprintf( 'SVM parameters for R:Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);disp(str);% 根据粗略选择的结果图再进行精细选择[bestmse,bestc,bestg] = SVMcgForRegress(r,tsx,-4,8,-10,10,3,0.5,0.5,0.05);% 打印精细选择结果disp('打印精细选择结果');str = sprintf( 'SVM parameters for R:Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);disp(str);% 训练SVMcmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.1'];r_model = svmtrain(r, tsx, cmd);% 预测[r_predict,r_mse] = svmpredict(r,tsx,low_model);r_predict = mapminmax('reverse',r_predict,r_ps);predict_r = svmpredict(1,win_num+1,r_model);predict_r = mapminmax('reverse',predict_r,r_ps);predict_r%% 对于R的回归预测结果分析figure;hold on;plot(R,'b+');plot(r_predict,'r*');legend('original r','predict r',2);title('original vs predict','FontSize',12);grid on;figure;error = r_predict - R';plot(error,'ro');title('误差(predicted data-original data)','FontSize',12);grid on;snapnow;%% 利用SVM对Up进行回归预测% 数据预处理,将up进行归一化处理% mapminmax为matlab自带的映射函数[up,up_ps] = mapminmax(Up);up_ps.ymin = 100;up_ps.ymax = 500;% 对Up进行归一化[up,up_ps] = mapminmax(Up,up_ps);% 画出Up归一化后的图像figure;plot(up,'gx');title('Up归一化后的图像','FontSize',12);grid on;% 对up进行转置,以符合libsvm工具箱的数据格式要求up = up';snapnow;% 选择回归预测分析中最佳的SVM参数c&g% 首先进行粗略选择[bestmse,bestc,bestg] = SVMcgForRegress(up,tsx,-10,10,-10,10,3,1,1,0.5);% 打印粗略选择结果disp('打印粗略选择结果');str = sprintf( 'SVM parameters for Up:Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);disp(str);% 根据粗略选择的结果图再进行精细选择[bestmse,bestc,bestg] = SVMcgForRegress(up,tsx,-4,8,-10,10,3,0.5,0.5,0.2);% 打印精细选择结果disp('打印精细选择结果');str = sprintf( 'SVM parameters for Up:Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);disp(str);% 训练SVMcmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.1'];up_model = svmtrain(up, tsx, cmd);% 预测[up_predict,up_mse] = svmpredict(up,tsx,up_model);up_predict = mapminmax('reverse',up_predict,up_ps);predict_up = svmpredict(1,win_num+1,up_model);predict_up = mapminmax('reverse',predict_up,up_ps);predict_up%% 对于Up的回归预测结果分析figure;hold on;plot(Up,'b+');plot(up_predict,'r*');legend('original up','predict up',2);title('original vs predict','FontSize',12);grid on;figure;error = up_predict - Up';plot(error,'ro');title('误差(predicted data-original data)','FontSize',12);grid on;toc;snapnow;%% 子函数SVMcgForRegress.mfunction [mse,bestc,bestg] = SVMcgForRegress(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,msestep,flag)% 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图时的步进大小.默认为20% 输出:% bestacc:Cross Validation 过程中的最高分类准确率% bestc:最佳的参数c% bestg:最佳的参数g% about the parameters of SVMcgForRegressif nargin < 11flag = 0;endif nargin < 10msestep = 0.1;endif nargin < 7msestep = 0.1;v = 3;cstep = 1;gstep = 1;endif nargin < 6msestep = 0.1;v = 3;cstep = 1;gstep = 1;gmax = 5;endif nargin < 5msestep = 0.1;v = 3;cstep = 1;gstep = 1;gmax = 5;gmin = -5;endif nargin < 4msestep = 0.1;v = 3;cstep = 1;gstep = 1;gmax = 5;gmin = -5;cmax = 5;endif nargin < 3msestep = 0.1;v = 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 cbestc = 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']; if flag == 1;print('-dtiff','-r600',filename);end其中,function [low,R,up]=FIG_D(XX,MFkind,win_num)%byLiYangBNUMATH05Email:************************:516667408 % last modified 2009.2.25%modified IG based on Pedry by Keqiang Dong%output%low:low bounds%R:representatives%up:up bounds%input%X:times series waited to be IG%MFkind:the kind of membership function%triangle trapezoid asygauss asyparabola%win_num:number of windows%%if nargin < 3win_num = 10;endif nargin < 2MFkind = 'trapezoid';end[d1,d2] = size(XX);X = sort(XX);switch MFkind% trapezoidcase('trapezoid')if win_num == 1if mod(d2,2) ~= 0m = X( (d2+1)/2 );n = X( (d2+1)/2 );mflag = (d2+1)/2;nflag = (d2+1)/2;elsem = X( d2/2 );n = X( (d2+2)/2 );mflag = d2/2;nflag = (d2+2)/2;endR(1,1) = m;R(2,1) = n;k1 = mflag;k2 = d2 - nflag+1;c1 = ( sum(X(1:k1)) )/k1;c2 = ( sum(X(nflag:d2)) )/k2;low = 2*c1 - m;up = 2*c2 - n;elselow = [];R = [];up = [];k = floor(d2/win_num);for i = 1:(win_num-1)[l,r,u]=FIG_D(XX( (1+(i-1)*k):(k+(i-1)*k) ),MFkind,1);low = [low,l];R = [R,r];end[l,r,u] = FIG_D(XX( (1+(win_num-1)*k):d2 ),MFkind,1);low =[low,l];R = [R,r];up = [up,u];end%% trianglecase('triangle')if win_num == 1R = median(X);m = median(X);n = median(X);mflag = floor(d2/2);nflag = ceil(d2/2);k1 = mflag;k2 = d2-nflag+1;c1 = ( sum(X(1:k1)) )/k1;c2 = ( sum(X(nflag:d2)) )/k2;low = 2*c1 - m;up = 2*c2 - n;elselow = [];R = [];up = [];k = floor(d2/win_num);for i = 1:(win_num-1)[l,r,u]=FIG_D(XX( (1+(i-1)*k):(k+(i-1)*k) ),MFkind,1);low = [low,l];R = [R,r];up = [up,u];end[l,r,u] = FIG_D(XX( (1+(win_num-1)*k):d2 ),MFkind,1);low =[low,l];R = [R,r];up = [up,u];end%% asygausscase('asygauss') %这个与基于Pedrycz的是一样的,因为高斯型的核函数无法修改if win_num == 1m = median(X);n = median(X);mflag = floor(d2/2);nflag = ceil(d2/2);a_final = 0;Qa_final = 0;for index = 1:( mflag-1 )a = X(index);Qa=0;x = X( 1:(mflag-1) );y = (x<=m).*(exp(-(x-m).^2/a^2) );Qa = sum(y);Qa = Qa/(m-a);if Qa>=Qa_finalQa_final = Qa;a_final = a;endendlow = a_final;b_final = 0;Qb_final = 0;for index = ( nflag+1 ):d2b = X(index);Qb = 0;x = X( (nflag+1):d2 );y = (x>=m).*(exp(-(x-m).^2/b^2) );Qb = sum(y);Qb = Qb/(b-n);if Qb>=Qb_finalQb_final = Qb;b_final = b;endendup = b_final;elselow = [];R = [];up = [];k = floor(d2/win_num);for i = 1:(win_num-1)[l,r,u]=FIG_P(XX( (1+(i-1)*k):(k+(i-1)*k) ),MFkind,1);low = [low,l];R = [R,r];up = [up,u];end[l,r,u] = FIG_P(XX( (1+(win_num-1)*k):d2 ),MFkind,1);low =[low,l];R = [R,r];up = [up,u];end%% asyparabolacase('asyparabola')if win_num == 1R = median(X);m = median(X);n = median(X);mflag = floor(d2/2);nflag = ceil(d2/2);a_final = 0;Qa_final = 0;for index = 1:( mflag-1 )a = X(index);Qa=0;x = X( 1:( mflag-1) );y=(x<=m).*(1-(m-x).^2/(m-a)^2);Qa = sum(y);Qa = Qa/(m-a);if Qa>=Qa_finalQa_final = Qa;a_final = a;endendlow = a_final;b_final = 0;Qb_final = 0;for index = ( nflag+1 ):d2b = X(index);Qb = 0;x = X( (nflag+1):d2 );y=(x>=m).*(1-(m-x).^2/(m-b)^2);Qb = sum(y);Qb = Qb/(b-n);if Qb>=Qb_finalQb_final = Qb;b_final = b;endendup = b_final;elselow = [];R = [];up = [];k = floor(d2/win_num);for i = 1:(win_num-1)[l,r,u]=FIG_P(XX( (1+(i-1)*k):(k+(i-1)*k) ),MFkind,1);low = [low,l];R = [R,r];up = [up,u];end[l,r,u] = FIG_P(XX( (1+(win_num-1)*k):d2 ),MFkind,1);low =[low,l];R = [R,r];up = [up,u];endend。

相关文档
最新文档