kmeans算法_数据挖掘十大算法—— Kmeans

十大算法 —— K均值聚类

1、基本介绍

(1)概述:K-均值聚类是一种动态聚类的方法。其主要适用于分类问题。该算法给出一组对象(记录),聚类或分类的目标是把这些对象分割成组或集群,使得这些对象相比于组间,在组内更趋于相似。K-均值聚类是一种无监督学习的方法,因为不需要事先标记的数据。K-均值算法在实践中容易实施和运行,速度相对较快,算法内容也非常容易修改。

(2)优点

[1] 算法简单、迅速;

[2] 对于处理大数据集,该算法是相对可伸缩和高效的,因为它的复杂度大约是O (nkt)。其中n是所有对象的数目,k是分类的数目,t是迭代的次数,该算法经常以局部最优结束;

[3] 当类是密集、球状或者团状,且类与类之间区别明显时,该算法聚类效果很好。

(3)缺点

[1] 该算法只有在类的平均值被定义的情况下才能使用,不适用于某些分类属性的数据;

[2] 对初值比较敏感,对于不同的初始值可能会导致不同的聚类结果;

[3] 不适合于发现非凸面形状的类,或者大小差别很大的类;

[4] 对于“噪声”和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。

(4)该算法使用时的一些注意事项

[1] 算法中的K值需要认真选取;

[2] 要慎重选取初始的聚类中心,如果选择不当可能很容易陷入局部最优;

[3] 样本要随机选取,可以提高算法的收敛速度。

2、算法流程

(1)问题说明

485ea3c875b7fc048ee85137444630dc.png

(2)算法步骤(文字描述版)

2f8c5e8539487bf4186e3c5c24fedc4c.png

(3)算法步骤(数学描述版)

7f82aa6ab03cbcd7620d2bb413bae425.png

3、详细例子

(1)例子一(靠嘴模拟)

9e73bf19e57e9818789528b3335e9763.png

(2)例子二(R语言实操)

[1] 代码

library(class)   # 加载class包

k1<-kmeans(as.matrix(iris[,1:4]),center=3)   # 使用class包对iris数据集进行聚类,用于iris一共3类,所以类的个数center=3

k1  # 查看聚类的效果,between_SS / total_SS这一项>80%,表示聚类效果不错

table(iris[which(k1$cluster==1),5])   # 查看聚类分在第一类的实际情况

table(iris[which(k1$cluster==2),5])   # 查看聚类分在第二类的实际情况

table(iris[which(k1$cluster==3),5])   # 查看聚类分在第三类的实际情况

[2] 结果

6c5d1b14152aa88874fee1a3ed3b9bef.png

45eccf2dad43de3fd38d046418b487d4.png

从结果来看,还是有一定的分类错误,比如分在第一类和分在第二类的就有不同的实际类别情况。这可能是由于初始的类别中心选择不当,或者算法流程本身的问题所导致的,存在一定的误差~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值