c-均值算法与模糊c均值聚类的比较。
姓名:谭红光。
学号:02125128
班级:021252
一原理:均值的原理:
c均值聚类算法是一种典型的无监督动态聚类算法。该算法是在类别数目已知(=k)的条件下进行的,能够使聚类结果的距离平方和最小,即算法的基础是误差平方和准则。其基本过程是建立初始的聚心和聚类,通过多次迭代,逐渐调整各类的聚心和各像元的类别,直至得到聚类准则约束下的最好结果为止。
本实验的具体过程如下:
选择初始类别中心,假设有c个类别,设置其中心分别为。
在第k步迭代中,对于任何一个像元x(是一个n维向量,n是高光谱图像的波段数目),按如下方法把它调整到。各类别中的某一个类别中去。
令d(x,y)为向量x,y之间的距离,若:
j = 1 2 … c ()
则,其中是以为中心的类。
由上一步得到的(i=1 2…c)个类别新的中心。
其中ni是类别的数目。是按照最小j的原则,j的表达式为:
对所有的i=1 2…c。如果,,则迭代结束(在程序中,则按照每个类别的对应的那些像素不再变化,则停止迭代),否则转到第二步继续迭代。
2.模糊c均值的原理。
在数字图像由于存在混合像素的原因,也就是说一个像素中不仅存在一类地物,因而采用硬分类方式往往不合适,而模糊c均值就是引入模糊集对每个像素的划分概率不单单是用0或1这样的硬分类方式,而是0和1之间的范围内(包括0和1)。
定义是n个样本组成的样本集合,c为预定的类别数目,为每个聚类中心,是第个样本对于第类的隶属度函数。用隶属度函数定义的聚类损失函数可以写为:
其中,是一个可以控制聚类结果的模糊程度的常数。
在不同的隶属度定义方法下最小化式的损失函数,就得到不同的模糊聚类方法。其中最有代表的是模糊c均值方法,它要求一个样本对于各个聚类的隶属度之和为1,即。
在条件式下求得其极小值,令对和的偏导数为0,可得必要条件:
用迭代的方法求解上式,就是模糊c均值算法。算法步骤如下:
1) .设定聚类数目c和参数b。
2) 初始化各个聚类中心。
3)重复下面的运算,直到各个样本的隶属度值稳定:
当算法收敛时,就得到了各类的聚类中心和各个样本对于各类的隶属度值,从而完成了模糊聚类划分。
二**:均值:
x=xlsread('c:\users\administrator\desktop\')
c=3; 选初始聚类中心。
ii_julu=0记录距离最大值对应的ii、jj的值。
jj_julu=0;
for ll=1:c-1
juli_old=0;
juli=0;
if ll==1
for ii=1:length(x(:,1))
for jj=1:length(x(:,1))
juli=(norm(x(ii,:)x(jj,:)2;
if juli>juli_old
juli_old=juli;
ii_juli=ii;
jj_juli=jj;
endend
endchushizhongxin(ll,:)x(ii_juli,:)
chushizhongxin(ll+1,:)x(jj_juli,:)
elsefor ii=1:length(x(:,1))
cc=1;for kk=1:ll %排除已经选出的初始中心点。
cc=(sum(abs((x(ii,:)chushizhongxin(kk,:)cc);
endif cc
for kk=1:ll
juli=(norm(x(ii,:)chushizhongxin(kk,:)2+juli;
endif juli>juli_old
juli_old=juli;
ii_juli=ii;
endjuli=0;
endend
chushizhongxin(ll+1,:)x(ii_juli,:)
endend
shuyu=zeros(1,length(x(:,1)))与样本对应属于哪一类就记为几。
z=chushizhongxin;
yz=z+1仅仅是初始化上一次聚类中心。
for w=1:30
if sum(sum(yz~=z));矩阵相等的判断后仍是矩阵。
yz=z进行本次迭代前将记录上次聚类中心。
%聚类 for ll=1:length(x(:,1共有x的列向量个数参加聚类。
p=1计数值,属于哪一类就记数字几。
m=zeros(1,c暂存某数与各聚类中心的距离,共c个。
for l=1:c;
m(l)=norm(x(ll,:)z(l,:)采用欧式距。
pp=0;for kk=1:c-1 %排除已经选出的初始中心点。
cc(kk)=(m(l)>m(kk));
endpp=sum(cc);
if l>1&&~pp
p=lend
endshuyu(ll)=p;
end% 计算类内距离 j
gg=zeros(1,c);
jj=1;for ii=1:length(x(:,1))
if ii==1
gg(jj)=shuyu(ii);
endtt=0;
hh=jj;
while hh>0&&ii>1
tt(hh)=(shuyu(ii)==gg(hh));
hh=hh-1;
endpp=sum(tt);
if ii>1&&~pp
jj=jj+1;
gg(jj)=shuyu(ii);
end end
j=zeros(1,c);
leineijuli=0;
for jj=1:length(x(:,1))
leineijuli(jj)=norm(x(jj,:)z(gg(shuyu(jj)),
endfor ii=1:length(gg)
for jj=1:length(x(:,1))
if shuyu(jj)==gg(ii)
j(ii)=leineijuli(jj)+j(ii);
endend
endsumj=zeros(1,30);
sumj(w)=sum(j);
%更改聚类中心。
xi=zeros(1,c记录每一类所含样本数。
psy=zeros(1,c记录123出现的次序。
pi=1;for l=1:length(x(:,1));
if ~ismember(shuyu(l),psy); psy中没有的才记下。
psy(pi)=shuyu(l);
pi=pi+1;
endend
for ll=1:c;
for l=1:length(x(:,1));
if shuyu(l)==psy(ll按照psy中123值的顺序记录次数。
xi(ll)=xi(ll)+1;
endend
endbz=zeros(c,length(x(1本次聚类中心。
for l=1:cshuyu()中有c种类型1到c
for ll=1:length(x(:,1shuyu()有x的列向量个元素。
if shuyu(ll)==psy(l);
bz(l,:)bz(l,:)x(ll属于一类的对应位置相加。end
模式识别大作业 二
k means算法的应用。一 问题描述。用c means算法对所给数据进行聚类,并已知类別数为2,随机初始样本聚类中心,进行10次求解,并计算聚类平均正确率。二 算法简介。1 在 1967 年提出的k means算法 22 到目前为止用于科学和工业应用的诸多聚类算法中一种极有影响的技术。它是聚类方法...
模式识别大作业
一。问题重述。利用fisher线性判别法和最近邻算法对sonar数据进行分类,并得出正确率。二。fisher线性判别法思路。用训练样本求出d维空间到一维空间的投影方向w,进而求出样本均值,进而可求出阈值t,带入测试样本得到投影点y,将y与t相比,即可进行分类判别。2.1 fisher准则函数中的基本...
模式识别大作业
作业1 用身高和 或体重数据进行性别分类 一 基本要求 用和的数据作为训练样本集,建立bayes分类器,用测试样本数据对该分类器进行测试。调整特征 分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。具体做法 1 应用单个特征进行实验 以 a 身高或者 b 体重数...