Kmeans

基本思想

KMeans算法的基本思想就是将未知的数据集通过一定的相似性度量将未知类别的数据集自然地划分为K个数据集合,使得衡量标准达到比较好的值或者数据集合中心(采用均值)不变。也就是n的对象根据他们的属性分为k个分割,k < n。它与处理混合正态分布的最大期望算法很相似,因为他们都试图找到数据中自然聚类的中心。它假设对象属性来自于空间向量,并且目标是使各个群组内部的均方误差总和最小。

举例

KMeans是典型的物以类聚思想

理论支持

4算法步骤

1) 将数据分为k个非空子集

2) 计算每个类中心点(k-means中用所有点的平均值,K-medoid用离该平均值最近的一个点)center

3)将每个object聚类到最近的center

4) 返回2,当聚类结果不再变化的时候stop

实验

实验使用了iris数据,思路是将训练数据单独训练聚类,然后用已有的标签对照,计算准确率。

function [X,center,iter,accuracy] = trainkmeans( traindata,trainlabel,k )
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
[traindata_m,traindata_n]=size(traindata);
[trainlabel_m,trainlabel_n]=size(trainlabel);
 
 
%将训练数据保存结构体形式
for i=1:1:traindata_m
    X(i).data=traindata(i,:);
    X(i).label=0;
end
%初始化K个均值中心
center(1)=X(10);center(1).label=1;
center(2)=X(60);center(2).label=2;
center(3)=X(120);center(3).label=3;
newcenter(1)=X(10);newcenter(1).label=1;
newcenter(2)=X(60);newcenter(2).label=2;
newcenter(3)=X(120);newcenter(3).label=3;
%迭代求取最终的K个数据集合
change=1;iter=0;
while change~=0  
  for i=1:1:traindata_m%计算每个点到每个中心的距离,归为最小的
    for j=1:1:k
       D(j)=norm(X(i).data-center(j).data);
    end
       [temp,index]=min(D);
       X(i).label=index;
  end
  
  for i=1:1:k %重新计算中心值
    for j=1:1:traindata_n
        sum=0;count=0;
        for t=1:1:traindata_m
            if X(t).label==center(i).label
                 sum=sum+X(t).data(j);
                 count=count+1;
            end
        end
        newcenter(i).data(j)=sum/count;
    end
    if newcenter(i).data~=center(i).data
        change=change+1;iter=iter+1;
    else
        change=0;
    end
  end
 
  for i=1:1:k 
    center(i)=newcenter(i);
  end
end  
 
accuracy=0;
for i=1:1:trainlabel_m
    if X(i).label==trainlabel(i,1)
        accuracy=accuracy+1;
    end
end
accuracy=accuracy/trainlabel_m;
 
end


实验结果

对K值的选取确实很麻烦的,并且初始的中心选取也很麻烦。开始指定同一个类里面的三个数据作为最初的三个中心结果效果很差iter=33,准确率却只有0.4467,。然后在三个不同的类里面指定数据,迭代次数19,准确率却上升为0.8867.

6优势和劣势

优势:自然地聚类,方法简单

劣势:K值的选取困难、对初始中心敏感。

在实际应用中往往会已知一些数据,可以以这些数据为初始的中心点,然后按聚类算法聚类计算。

7主要应用

搜索引擎的爬虫后对网页的处理,聚类分析

8改进

1K值的选取通过观察误差准则的变化趋势判断,随着K值的增大误差准则慢慢变小,开始时候变化程度比较大,到达一定值后变化速度放慢,当K等于N时,误差准则等于0,转折点可作为K值的选取。

2ISODATA



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值