模糊聚类划分matlab代码,Matlab协同模糊聚类建模

%本程序实现了把协同模糊聚类算法和G-K算法相结合,构建T-S模型

%并用该模型对数据进行测试

%输入数据:

%ytrain:训练数据的实际输出,是一个列向量

%xtrain:训练数据矩阵,分为两组,每组的每行代表一个特征.每组特征不同

%ytest:测试数据的实际输出,是一组列向量

%xtest:测试数据矩阵,其每行代表一个特征,并且与训练数据矩阵中的第一组相同

%输出数据:

%trainRMSE:模型对训练数据的均方根误差

%testRMSE:模型对测试数据的均方根误差

%最后输出模型对测试数据的拟合图

%说明:

%由于交叉验证的原因,对不用的测试数据分组不同,所以n也有不同

clear all

fid=fopen('MPG.txt','r');

original=fscanf(fid,'%f',[8,392]);

%--------------------------------------------

%用于训练的数据

ytrain=original(1,1:2:392)';

xtrain(:,:,1)=original([2 5 7],1:2:392);

xtrain(:,:,2)=original([3 4 5],1:2:392);

%--------------------------------------------

%用于测试的数据

ytest=original(1,2:2:262)';

xtest=original([2 5 7],2:2:262);

status=fclose(fid);

%--------------------------------------------

%初始化变量

c=3;                             %规则数

r=0.01;

n=168;

dis=1;

ntest=size(xtest,2)

datasize=size(xtrain,1);

RMSESUM=0;

coll=0.2;                        %协同系数

L=7                              %用于交叉验证方法,将测试数据分组数

%--------------------------------------------

%初始化矩阵

v=zeros(c,datasize,2);           %原形矩阵

sigma=zeros(c,datasize,2);       %协方差矩阵

d=zeros(c,n,2);                  %距离矩阵

u=rand(c,n,2);                   %模糊划分矩阵

p=zeros(1,c,2);                  %规则概率

w=ones(c,2);                     %权值

first=ones(n,1);

[center,u(:,:,1),objFcn] = fcm(xtrain(:,1:n,1)',c);        %模糊划分矩阵的初始化

[center,u(:,:,2),objFcn] = fcm(xtrain(:,1:n,2)',c);        %模糊划分矩阵的初始化

%--------------------------------------------

%交叉验证,分七组,其中六组训练,一组测试

for p=1:L

AA=xtrain;BB=ytrain;

pr=(p-1)*28+1;

for pp=1:28

BB(pr)=[];

AA(:,pr,:)=[];

end

data=AA;

y=BB;

validationx=xtrain(:,(pr:pr+27),1);

validationy=ytrain(pr:pr+27);

fi(:,:,1)=data(:,:,1)';

fi(:,:,2)=data(:,:,2)';

%--------------------------------------------

%计算前件参数--原形矩阵v

while(dis>r)

oldu=u;

for i=1:c

for j=1:datasize

A(i,j,1)=0;

A(i,j,2)=0;

B(i,1)=0;

B(i,2)=0;

C(i,j,1)=0;

C(i,j,2)=0;

D(i,j,1)=0;

D(i,j,2)=0;

for k=1:n

A(i,j,1)=A(i,j,1)+u(i,k,1)^2*data(j,k,1);

A(i,j,2)=A(i,j,2)+u(i,k,2)^2*data(j,k,2);

B(i,1)=B(i,1)+u(i,k,1)^2;

B(i,2)=B(i,2)+u(i,k,2)^2;

C(i,j,1)=C(i,j,1)+(u(i,k,1)-u(i,k,2))^2*data(j,k,1);

C(i,j,2)=C(i,j,2)+(u(i,k,2)-u(i,k,1))^2*data(j,k,2);

D(i,j,1)=D(i,j,1)+(u(i,k,1)-u(i,k,2))^2;

D(i,j,2)=D(i,j,2)+(u(i,k,2)-u(i,k,1))^2;

end

v(i,j,1)=(A(i,j,1)+coll*C(i,j,1))/(B(i,1)+coll*D(i,1));

v(i,j,2)=(A(i,j,2)+coll*C(i,j,2))/(B(i,2)+coll*D(i,2));

end

end

%--------------------------------------------

%计算前件参数--sigma

for i=1:c

for j=1:datasize

sumdv1=0;

sumdv2=0;

for k=1:n

sumdv1=sumdv1+u(i,k,1)*(data(j,k,1)-v(i,j,1))^2;

sumdv2=sumdv2+u(i,k,2)*(data(j,k,2)-v(i,j,2))^2;

end

sigma(i,j,1)=sumdv1/sum(u(i,:,1));

sigma(i,j,2)=sumdv2/sum(u(i,:,2));

end

end

%--------------------------------------------

%计算后件参数--th

for i=1:c

bet1=diag(u(i,:,1));

bet2=diag(u(i,:,2));

th(:,i,1)=inv([fi(:,:,1) first]'*bet1*[fi(:,:,1) first])*[fi(:,:,1) first]'*bet1*y;

th(:,i,2)=pinv([fi(:,:,2) first]'*bet2*[fi(:,:,2) first])*[fi(:,:,2) first]'*bet2*y;

end

%--------------------------------------------

%计算规则的概率p和权值w

for i=1:c

p(i,1)=sum(u(i,:,1))/n;

p(i,2)=sum(u(i,:,2))/n;

wdown1=1;

wdown2=1;

for j=1:datasize

wdown1=wdown1*(sigma(i,j,1)*2*pi);

wdown2=wdown2*(sigma(i,j,2)*2*pi);

end

if sqrt(wdown1)==0;

w(i,1)=1;

else

w(i,1)=p(i,1)/sqrt(wdown1);

end

if sqrt(wdown2)==0;

w(i,2)=1;

else

w(i,2)=p(i,2)/sqrt(wdown2);

end

end

%--------------------------------------------

%计算样本到原形距离矩阵d

for i=1:c

for k=1:n

fexp1=1;

fexp2=1;

for j=1:datasize

fexp1=fexp1*exp(-(data(j,k,1)-v(i,j,1))^2/(2*sigma(i,j,1)));

fexp2=fexp2*exp(-(data(j,k,2)-v(i,j,2))^2/(2*sigma(i,j,2)));

end

d(i,k,1)=qz(i,1)*fexp1;

d(i,k,2)=qz(i,2)*fexp2;

end

end

%--------------------------------------------

%更新模糊划分矩阵u

uu(:,:,1)=coll*u(:,:,1);

uu(:,:,2)=coll*u(:,:,2);

for i=1:c

for a=1:n

if sum(d(:,a,1))<=0

u(i,a,1)=0;

else

u(i,a,1)=(coll*uu(i,a,1))/(coll+1)+(d(i,a,1)/sum(d(:,a,1)))*(1-sum(uu(:,a,1))/(1+coll));

end

if sum(d(:,a,2))<=0

u(i,a,2)=0;

else

u(i,a,2)=(coll*uu(i,a,2))/(coll+1)+(d(i,a,2)/sum(d(:,a,2)))*(1-sum(uu(:,a,2))/(1+coll));

end

end

end

dis=sum(sum(oldu(:,:,1)-u(:,:,1)).^2)/n*c;

dis=sqrt(dis);

end

trainy=testing(validationx,w(:,1)',c,th(:,:,1),sigma(:,:,1),v(:,:,1));          %模型对每组训练数据的输出

TRAINRMSE=sqrt(sum((validationy-trainy').^2)/42);                               %每组训练数据的RMSE

RMSESUM=RMSESUM+TRAINRMSE;                                                      %每组训练数据的RMSE和

end

%--------------------------------------------

%训练及测试RMSE

trainRMSE=RMSESUM/L

testy=testing(xtest,w(:,1)',c,th(:,:,1),sigma(:,:,1),v(:,:,1));                 %模型对测试数据的输出,参数采用第一组特征子集的参数

testRMSE=sqrt((sum((ytest-testy').^2))/ntest)                                   %测试数据的RMSE

%--------------------------------------------

%测试的拟合图

put=1:ntest;

plot(put,ytest,'-',put,testy',':')

ylabel('MPG')

xlabel('样本')

h=legend('实际输出','模型输出',2);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php并发取源码,PHP读取大文件源码示例-Swoole多进程读取大文件

PHP读取大文件源码示例&#xff0c;通过PHP读取过大、超大型文件的思路及解决方案。在日常读取文件时&#xff0c;若文件 不是很大&#xff0c;通常使用file_get_contents,将内容一次性载入的变量中&#xff0c;也可以远程加载网页或者远端文件。若加载超过PHP限制的内存大小&a…

QQ如何设置会话窗默认使用腾讯视频播放视频文件

小编给大家整理了大量腾讯视频的使用方法和问题解决办法&#xff0c;这篇文章依然非常有价值&#xff0c;如果你遇到“QQ如何设置会话窗默认使用腾讯视频播放视频文件”方面的问题&#xff0c;赶紧看看吧。腾讯视频播放器推荐精准&#xff0c;越用越懂你&#xff0c;分秒就能计…

mysql 定期备份策略,MySQL--3--mysqldump备份策略

参考地址&#xff1a;http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/database-administration.html#backup-strategy-example5.9 备份策略在my.inf中启动二进制日志&#xff0c;用--log-bin[file_name]选项启动时&#xff0c;mysqld写入包含所有更新数据的SQL命令的日…

兔弟弟和月亮婆婆

有一天晚上&#xff0c;兔弟弟不想睡觉。他要去找小青蛙玩。兔妈妈摇摇头说&#xff1a;“乖孩子&#xff0c;睡觉吧。明天早些起来&#xff0c;找小青蛙玩去!” 兔弟弟不听妈妈的话&#xff0c;他说&#xff1a;“我要去&#xff0c;我要去&#xff0c;我不要睡觉!”兔妈妈不…

matlab问题利用M文件比较两个数大小,Matlab中写M文件及调用

1题、自然数n的阶乘function ylilu_fact(n)nfloor(n);%如果是小数,向下取整至整数y1;if n>1 %这里负数,0的阶乘都将得到1for i1:nyy*i;endend2题、n中取m的组合function ylilu_cnm(n,m)y1;if (n>m && n>0 & m>0)mmin(n-m,m);for i1:myy*(n-i1)/i;ende…

小老鼠艾尔的新毯子

今天分享一则非常暖心的故事《小老鼠艾尔的新毯子》最开心的事不是拥有什么宝贝&#xff0c;而是因为你的行动让别人开心&#xff0c;那才是最大的快乐。 小老鼠艾尔有一次在外出的时候&#xff0c;捡到一条漂亮的毛毯&#xff0c;实际上那是一个小姑娘的袜子&#xff0c;是她…

matlab 展开多项式,matlab中freqz的用法以及多项式的展开

对于一个变量a&#xff0c;matlab中定义需要这样 syms a&#xff1b;定义之后就可以写由变量组成的式子&#xff0c;比如 c(1a^-1)^5;可以用expand(c) 就能把c展开成多项式&#xff0c;每一项的系数就可以看到。freqz的用法MATLAB提供了专门用于求离散系统频响特性的函数freqz(…

IE11浏览器一个窗口打开多个页面设置方法

ie1166760一个窗口打开多个页面设置方法 IE11浏览器怎么设置一个窗口打开多个页面?一般新系统安装好了以后&#xff0c;默认的ie浏览器一个窗口都只能打开一个页面&#xff0c;一旦页面打开的多了的话&#xff0c;就会很卡&#xff0c;拖慢电脑的运行速度&#xff0c;而且整个…

php 如何模拟浏览器,利用php的curl扩展进行模拟浏览器访问网页

我们一般要抓取一个网站的静态页面来完成我们的需求&#xff0c;其实在这里面有很多种方式可以完成&#xff0c;php内置函数file_get_contents();file();readfile();都可以进行网页抓取&#xff0c;但是这种方式毕竟是有很大局限性的&#xff0c;例如我们要访问一个需要登录的网…

如何用极路由新插件【搜狐视频】进行远程下载

本文播放器家园网小编给大家分享如何用极路由新插件【搜狐视频】进行远程下载&#xff0c;如果大家在使用搜狐视频过程当中遇到类似问题&#xff0c;欢迎阅读本文!此外&#xff0c;在搜狐视频视频播放器上观看更流畅&#xff0c;画质更清晰&#xff0c;拒绝卡慢钝&#xff0c;而…

php数据库可转java数据库,php转java 系列2 Spring boo 链接数据库jdbc

php转java 系列2 Spring boo 链接数据库jdbcJDBC首先创建一个新项目&#xff0c;在创建项目时要注意导入依赖&#xff0c;在项目创建成功后就会看到在 pom.xml 文件中找到&#xff0c;但是如果在创建项目的时候没有导入&#xff0c;就要在pom.xml中手动的添加依赖&#xff1b;o…

edge浏览器下载位置设置在哪里设置

edge66760下载位置设置在哪里设置 edge浏览器下载位置设置在哪?很多Win10用户要求微软为Edge浏览器增加下载位置设置选项&#xff0c;那么win10 Edge浏览器的默认下载位置在哪里修改?怎么修改?在Windows10的反馈应用中&#xff0c;很多用户都反映Edge浏览器没有自定义下载位…

Python使用训练数据拟合模型

# 假设“满意度”是因变量&#xff0c;其他的是自变量 # 提取自变量&#xff08;特征&#xff09;和因变量&#xff08;目标&#xff09; X df_filtered_cleaned[[Bonus, Enhancement, Time_in_seconds]] y df_filtered_cleaned[Satisfaction] # 分割为训练集和测试集。 …

php连接excel表格数据类型,TP5 中使用PHPExcel 导出导入数据到excel表格

将下载好的PHPExcel文件夹放置在框架中的Vendor目录下&#xff0c;注意目录的结构&#xff0c;按照我的代码来基本上直接引用就能使用&#xff0c;如下图&#xff1a;导出数据代码如下//导出数据表 开始public function product(){$listdb(product)->select();vendor("…

PPTV网络电视如何修复浏览器支持异常

这篇文章主要说的是PPTV网络电视如何修复66760支持异常&#xff0c;希望可以帮助大家。pptv播放器是一款专注视频播放的客户端软件&#xff0c;免费下载安装&#xff0c;观看高清正版影视&#xff0c;可在线享受pptv播放器网站内全部免费高清正版视频&#xff0c;是最个性化、时…

oracle导致的负载高,Oracle 11g 数据库服务器CPU、IO负载高的故障排除流程

使用top查看负载高的进程~ [OSMSRDB]$ toptop - 11:02:43 up 12 days, 17:15, 4 users, load average: 1.50, 0.93, 0.36Tasks: 363 total, 1 running, 362 sleeping, 0 stopped, 0 zombieCpu(s): 1.2%us, 0.3%sy, 0.0%ni, 68.4%id,30.1%wa, 0.0%hi, 0.0%si, 0.0…

母狼高斯普和狐狸

《母狼高斯普和狐狸》母狼生了一只小狼&#xff0c;于是请来狐狸当教父。她说&#xff1a;“总之&#xff0c;狐狸是我们的近亲&#xff0c;见多识广而且头脑聪明;它能教好我儿子&#xff0c;帮他在世界上生存。” 狐狸装得很诚实地说&#xff1a;“亲爱的高司普太太&#xff…

oracle在线中文文档,Oracle TopLink

12.4.4. 事务管理将事务管理纳入到Service操作的执行中&#xff0c;你可以使用Spring通用的声明式的事务管理功能&#xff0c;参加下面的例子&#xff1a;xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-insta…

优酷视频什么是登录保护?

登陆维护是对于移动终端(包括iphone、android、ipad等手机端)的账户维护作用。 打开了登陆维护以后&#xff0c;在一个新的机器设备上开展登陆(包含账户密码登陆、第三方授权登录等方法)时&#xff0c;必须根据验证码短信开展身份认证&#xff0c;验证通过后才可以登录成功&am…

PP视频怎么关闭PP视频虚拟键盘显示

今天小编给广大用户分享PP视频怎么关闭PP视频虚拟键盘显示。此外&#xff0c;在PP视频视频播放器上观看更流畅&#xff0c;画质更清晰&#xff0c;拒绝卡慢钝&#xff0c;而且还有许多自制独播综艺&#xff0c;让你看到停不下来!PP视频视频播放器是PP视频官方推出的一款网络视频…