聚类小练习1
2016-08-15 16:25
197 查看
数据来源为华为杯全国研究生数学建模比赛2015年B题第一问,它提供的数据格式为.mat(maltab默认保存数据类型)。
数据一共有200组,每组数据有100个特征。
编写运用maltab。
clear
clc
load 1.mat;
sud=0;
jig=ones(200,200);
d=ones(200,1);
for i=1:200;
for j=1:200;
sd=sum((data(:,i)-data(:,j)).^2);
sud=sd+sud;
jig(i,j)=sqrt(sd)/2;
end
end
for i=1:200;
ac=sort(jig(i,:));
d(i)=ac(200);
end
md=sort(d);
maxd=md(200);
[c,d]=find(jig==maxd);
err=0.01;
dd=ones([1,2]);
u=zeros([2,200]);
errma=1;
E=0;
n=1;
while errma>err;
n=n+1;
if n==1000000;
break;
end
for i=1:200;
for j=1:2;
dd(1,j)=jig(c(j),i);
if j==2 && dd(1,j)>dd(1,1);
u(1,i)=1;
end
if j==2 && dd(1,j)<=dd(1,1);
u(2,i)=1;
end
end
end
adds=0;
for j=1:2;
adds=adds+jig(c(j),:)*u(j,:)';
end
errma=abs(adds-E);
E=adds;
for j=1:2;
sum1=[];
dd1=find(u(j,:)==1);
for k=1:length(dd1);
sum2=0;
for i=1:length(dd1);
sum2=sum2+jig(dd1(k),dd1(i));
end
sum1=[sum1 sum2];
end
mb=sort(sum1);
dd2=find(sum1==mb(1));
c(i)=dd1(dd2);
end
end
最终结果为
第一类(组号)
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
133 134 135 136 137 138 139 140
第二类(组号)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 141 142 143 144 145 14
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
193 194 195 196 197 198 199 200
数据一共有200组,每组数据有100个特征。
编写运用maltab。
clear
clc
load 1.mat;
sud=0;
jig=ones(200,200);
d=ones(200,1);
for i=1:200;
for j=1:200;
sd=sum((data(:,i)-data(:,j)).^2);
sud=sd+sud;
jig(i,j)=sqrt(sd)/2;
end
end
for i=1:200;
ac=sort(jig(i,:));
d(i)=ac(200);
end
md=sort(d);
maxd=md(200);
[c,d]=find(jig==maxd);
err=0.01;
dd=ones([1,2]);
u=zeros([2,200]);
errma=1;
E=0;
n=1;
while errma>err;
n=n+1;
if n==1000000;
break;
end
for i=1:200;
for j=1:2;
dd(1,j)=jig(c(j),i);
if j==2 && dd(1,j)>dd(1,1);
u(1,i)=1;
end
if j==2 && dd(1,j)<=dd(1,1);
u(2,i)=1;
end
end
end
adds=0;
for j=1:2;
adds=adds+jig(c(j),:)*u(j,:)';
end
errma=abs(adds-E);
E=adds;
for j=1:2;
sum1=[];
dd1=find(u(j,:)==1);
for k=1:length(dd1);
sum2=0;
for i=1:length(dd1);
sum2=sum2+jig(dd1(k),dd1(i));
end
sum1=[sum1 sum2];
end
mb=sort(sum1);
dd2=find(sum1==mb(1));
c(i)=dd1(dd2);
end
end
最终结果为
第一类(组号)
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
133 134 135 136 137 138 139 140
第二类(组号)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 141 142 143 144 145 14
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
193 194 195 196 197 198 199 200
相关文章推荐
- css 文本图标对齐与定位二三事
- 51nod-最大子段和问题
- 关于hibernate查询
- JavaEE——将访问的内容按照指定格式文件下载下来
- POJ3254-Corn Fields(状压DP)
- Java IO 文件
- 监控线上错误日志
- hibernate基础篇
- 旅行 (Standard IO)
- 使用 gooreplacer 解决 stackoverflow 网站缓慢问题
- 炫酷反演魔术 魔术揭秘
- 可视化日历程序----Date时间类 Calendar日历类的应用
- iOS开发摇一摇功能
- 理解SVG transform坐标变换
- 项目08-15
- 如何提高代码质量(管理篇):代码复查
- JavaScript中var的重要性
- tomcat启动报错java.lang.IllegalArgumentException
- 工厂模式
- spring框架结构