您好,欢迎光临本网站![请登录][注册会员]  
文件名称: Matlab协同模糊聚类建模-testing.m
  所属分类: 其它
  开发工具:
  文件大小: 1008byte
  下载次数: 0
  上传时间: 2019-08-13
  提 供 者: weixin_********
 详细说明: 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最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索:
 输入关键字,在本站1000多万海量源码库中尽情搜索: