1、西电大数据挖掘大作业kmeans和kmedoids 题 目: 数据挖掘 学 院: 电子工程学院 专 业: 智能科学与技术 学生姓名: * 学 号: 02115* k-means实验报告一、 waveform数据1、 算法描述1. 从数据集中任意选取k个赋给初始的聚类中心c1, c2, , ck;2. 对数据集中的每个样本点xi,计算其与各个聚类中心cj的欧氏距离并获取其类别标号: 3. 按下式重新计算k个聚类中心;重复步骤2和步骤3,直到达到最大迭代次数为止2、 实验结果二、 图像处理1、 算法描述同上;2、 实验结果代码:k_means:%K_means%函数说明%输入:% sample样本
2、集;% k 聚类数目;%输出:% y 类标(从0开始)% cnew 聚类中心% n 迭代次数function y cnew n=k_means(sample,k)N V=size(sample); %N为样本的个数 K为样本的维数 y=zeros(N,1); %记录样本类标dist=zeros(1,k); rand_num=randperm(N);cnew=(sample(rand_num(1,1:k),:);% 随机初始化聚类中心cold=zeros(k,V);n=0;while(cold=cnew) cold=cnew; n=n+1; %记录迭代次数 %对样本进行重新分类 for i=1:
3、N for j=1:k if(V=1) dist(1,j)=abs(sample(i,:)-cold(j,:); else dist(1,j)=norm(sample(i,:)-cold(j,:); end end for s=1:k if(dist(1,s)=min(dist) y(i,1)=s-1; end end end%更新聚类中心cnew=zeros(k,V);flag=zeros(k,1);for i=1:N for j=1:k if (y(I,1)=j-1) flag(j,1)=flag(j,1)+1; cnew(j,=cnew(j,+sample(I,; end endendf
4、or j=1:k cnew(j,=cnew(j,/flag(j,1);endendk_means_waveform:clear;clc;%数据读入%data=load(G:西电2014大三下大作业Data Mining k_meanswaveform.data);N K=size(data); %数据集的数目data0=zeros(1,K);data1=zeros(1,K);data2=zeros(1,K);for i=1:N if(data(i,K)=0) data0=cat(1,data(i,:),data0); elseif(data(i,K)=1) data1=cat(1,data(i
5、,:),data1); else data2=cat(1,data(i,:),data2); endendsample=cat(1,data0(1:100,:),data1(1:100,:),data2(1:100,:);label=sample(:,K); %样本的正确类标sample=sample(:,1:K-1); %样本集k=3; %聚类中心的数目%K_means%y cnew n=k_means(sample,k);%正确率统计%sum=zeros(1,6);N V=size(sample);for i=1:N if(y(i,1)=label(i,1) sum(1,1)=sum(1,
6、1)+1; endendfor i=1:N if(y(i,1)+label(i,1)=2) sum(1,2)=sum(1,2)+1; endendfor i=1:N if(y(i,1)=0)&(label(i,1)=0)|(y(i,1)=1)&label(i,1)=2)|(y(i,1)=2)&label(i,1)=1) sum(1,3)=sum(1,3)+1; endendfor i=1:N if(y(i,1)=0)&(label(i,1)=1)|(y(i,1)=1)&label(i,1)=0)|(y(i,1)=2)&label(i,1)=2) sum(1,4)=sum(1,4)+1; end
7、endfor i=1:N if(y(i,1)=0)&(label(i,1)=1)|(y(i,1)=1)&label(i,1)=2)|(y(i,1)=2)&label(i,1)=0) sum(1,5)=sum(1,5)+1; endendfor i=1:N if(y(i,1)=0)&(label(i,1)=2)|(y(i,1)=1)&label(i,1)=0)|(y(i,1)=2)&label(i,1)=1) sum(1,6)=sum(1,6)+1; endendsum=sum/N;creatrate=max(sum);disp(循环次数:);disp(n);disp(聚类中心为:);disp(
8、cnew);disp(正确率为:);disp(creatrate);k_means_picture:clear;clc;%数据读入%I1=imread(G:西电2014大三下大作业Data Mining k_meanslena.jpg);I2=rgb2gray(I1);% 转化为灰度图像I=im2double(I2);num v=size(I);sample=reshape(I,v*num,1);% 样本集k=2; %聚类中心的数目%K_means%y cnew n=k_means(sample,k);%v%I3=sample;if(cnew(1,1)=cnew(2,1) F0=255;F1=
9、0;else F0=0;F1=255;endfor i=1:num*v if(y(i,1)=0) I3(i,1)=F0; else I3(i,1)=F1; endendI3=reshape(I3,num,v);figure(1)subplot(1,3,1); imshow(I1);title(原图像);subplot(1,3,2);imshow(I2);title(灰度图像);subplot(1,3,3);imshow(I3);title(二值化图像);k_medoids实验报告一、 waveform数据1、 算法描述(1)随机选择k个对象作为初始的代表对象;(2) repeat (3) 指派
10、每个剩余的对象给离它最近的代表对象所代表的簇; (4) 随意地选择一个非代表对象Orandom; (5) 计算用Orandom代替Oj的总代价S; (6) 如果S0.001) %将所有样本分配到最近的代表点 for i=1:N for j=1:k dist(1,j)=norm(sample(i,:)-med(j,:); end temp(i,1)=min(dist); for s=1:k if(dist(1,s)=temp(i,1) temp(i,2)=s; end end end y=temp(:,2); Eold=sum(temp(:,1); %随机的选择一个非代表点,生成新的代表点集合
11、index=index+1; med_temp=med; E=zeros(1,k); for j=1:k med_temp(j,:)=sample(index,:); %将所有样本分配到最近的代表点 for i=1:N for t=1:k dist(1,t)=norm(sample(i,:)-med_temp(t,:); end temp(i,1)=min(dist); for s=1:k if(dist(1,s)=temp(i,1) temp(i,2)=s; end end end E(1,j)=sum(temp(:,1); end Enew=min(E); for t=1:k if(E(1
12、,t)=Enew) obest=t; end end if(Enew=med(2,1) F0=255;F1=0;else F0=0;F1=255;endfor i=1:num*v if(y(i,1)=1) I3(i,1)=F0; else I3(i,1)=F1; endendI3=reshape(I3,num,v);figure(1)subplot(1,4,1); imshow(I0);title(原图像);subplot(1,4,2);imshow(I1);title(加噪声后的图像);subplot(1,4,3);imshow(I2);title(灰度图像);subplot(1,4,4);imshow(I3);title(二值化图像);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1