文件名称:
Matlab协同模糊聚类建模-testing.m
开发工具:
文件大小: 1008byte
下载次数: 0
上传时间: 2019-08-13
详细说明: Matlab协同模糊聚类建模-testing.m MATLAB代码 %本程序实现了把协同模糊聚类算法和G-K算法相结合,构建T-S模型 %并用该模型对数据进行测试 %输入数据: %ytrain:训练数据的实际输出,是一个列向量 %xtrain:训练数据矩阵,分为两组,每组的每行代表一个特征.每组特征不同 %ytest:测试数据的实际输出,是一组列向量 %xtest:测试数据矩阵,其每行代表一个特征,并且与训练数据矩阵中的第一组相同 %输出数据: %trainRMSE:模型对训练数据的均方根误差 %testRMSE:模型对测试数据的均方根误差 %最后输出模型对测试数据的拟合图 %说明: %由于交叉验证的原因,对不用的测试数据分组不同,所以n也有不同 clear all fid=fopen; original=fscanf; %-------------------------------------------- %用于训练的数据 ytrain=original; xtrain=original; xtrain=original; %-------------------------------------------- %用于测试的数据 ytest=original; xtest=original; status=fclose; %-------------------------------------------- %初始化变量 c=3; %规则数 r=0.01; n=168; dis=1; ntest=size datasize=size; RMSESUM=0; coll=0.2; %协同系数 L=7 %用于交叉验证方法,将测试数据分组数 %-------------------------------------------- %初始化矩阵 v=zeros; %原形矩阵 sigma=zeros; %协方差矩阵 d=zeros; %距离矩阵 u=rand; %模糊划分矩阵 p=zeros; %规则概率 w=ones; %权值 first=ones; [center,u,objFcn] = fcm,c); %模糊划分矩阵的初始化 [center,u,objFcn] = fcm,c); %模糊划分矩阵的初始化 %-------------------------------------------- %交叉验证,分七组,其中六组训练,一组测试 for p=1:L AA=xtrain;BB=ytrain; pr=*28 1; for pp=1:28 BB=[]; AA=[]; end data=AA; y=BB; validationx=xtrain,1); validationy=ytrain; fi=data; fi=data; %-------------------------------------------- %计算前件参数--原形矩阵v while oldu=u; for i=1:c for j=1:datasize A=0; A=0; B=0; B=0; C=0; C=0; D=0; D=0; for k=1:n A=A u^2*data; A=A u^2*data; B=B u^2; B=B u^2; C=C -u)^2*data; C=C -u)^2*data; D=D -u)^2; D=D -u)^2; end v= coll*C)/ coll*D); v= coll*C)/ coll*D); end end %-------------------------------------------- %计算前件参数--sigma for i=1:c for j=1:datasize sumdv1=0; sumdv2=0; for k=1:n sumdv1=sumdv1 u*-v)^2; sumdv2=sumdv2 u*-v)^2; end sigma=sumdv1/sum); sigma=sumdv2/sum); end end %-------------------------------------------- %计算后件参数--th for i=1:c bet1=diag); bet2=diag); th=inv first]*bet1*[fi first])*[fi first]*bet1*y; th=pinv first]*bet2*[fi first])*[fi first]*bet2*y; end %-------------------------------------------- %计算规则的概率p和权值w for i=1:c p=sum)/n; p=sum)/n; wdown1=1; wdown2=1; for j=1:datasize wdown1=wdown1**2*pi); wdown2=wdown2**2*pi); end if sqrt==0; w=1; else w=p/sqrt; end if sqrt==0; w=1; else w=p/sqrt; end end %-------------------------------------------- %计算样本到原形距离矩阵d for i=1:c for k=1:n fexp1=1; fexp2=1; for j=1:datasize fexp1=fexp1*exp-v)^2/)); fexp2=fexp2*exp-v)^2/)); end d=qz*fexp1; d=qz*fexp2; end end %-------------------------------------------- %更新模糊划分矩阵u uu=coll*u; uu=coll*u; for i=1:c for a=1:n if sum)<=0 u=0; else u=)/ /sum))*)/); end if sum)<=0 u=0; else u=)/ /sum))*)/); end end end dis=sum-u).^2)/n*c; dis=sqrt; end trainy=testing,c,th,sigma,v); %模型对每组训练数据的输出 TRAINRMSE=sqrt.^2)/42); %每组训练数据的RMSE RMSESUM=RMSESUM TRAINRMSE; %每组训练数据的RMSE和 end %-------------------------------------------- %训练及测试RMSE trainRMSE=RMSESUM/L testy=testing,c,th,sigma,v); %模型对测试数据的输出,参数采用第一组特征子集的参数 testRMSE=sqrt.^2))/ntest) %测试数据的RMSE %-------------------------------------------- %测试的拟合图 put=1:ntest; plot ylabel xlabel h=legend; 复制代码 %本函数实现了,通过加权平局法计算模糊模型的输出 %输入数据: %x:数据矩阵,每一行代表一个特征 %w:每条规则的权重,是一个列向量 %c:规则的个数 %th:模糊模型的后件参数,是一个矩阵,每一列代表一个规则的后件参数 %sigma:模糊模型的前件参数,是一个矩阵,每一行代表一个规则的前件参数 %v:原形矩阵,每一行代表每个规则中特征向量的中心 %输出数据: %testy:对应于输入数据x的每一列,通过模糊模型得到的输出,是一个行向量 function testy=measureyz n=size; datasize=size; %-------------------------------------------- %计算BET:代表对应此广义输入向量的第i条规则的适应度 for i=1:c FI=diag); for k=1:n BET=w*exp-v)*inv*-v)*0.5); end end %-------------------------------------------- %计算模型输出y for k=1:n testyup=0; testydown=0; for i=1:c testyup=testyup *BET* 1]*th)); testydown=testydown *BET); end testy=testyup/testydown; end 复制代码
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
相关搜索: