k-means算法及改进

k-means是最常用的聚类算法

k-means算法流程

1)选择k个类为初始中心

2)在第i次迭代中,对任意样本,计算其到各中心的距离,将样本归到距离最短的中心所在的类

3)利用均值等方法更新类的中心值

4)对于聚类中心,经过2)3)迭代后,值保持不变,迭代结束,否则继续迭代。

k-means伪代码

选择k个点作为初始质心
repeat
•   计算每个点到质心的距离,将其归到距离最短的质心所在的类,形成k个簇
•   重新计算每个簇的质心
until 簇不发生变化或达到最大迭代次数

k-means聚类算法缺点

1)初始中心点位置随机,不同的初始点有不同的迭代次数

2)需人为确定初始聚类中心

3)聚类中心的个数难以估计,不确定数据集应该划分为多少类

k-means改进

kmeans++算法思想

1)假设分为k类
2)从输入的数据点集合中随机选择一个点作为第一个聚类中心
3)对数据集中的每个点,计算其与聚类中心的距离d
4)选择一个新的数据点作为新的聚类中心,选取原则是d较大的点被选择的概率较大
5)重复3和4直到k个聚类中心被选出来
6)利用k个初始的聚类中心运行标准的k-means算法

简而言之,选择中心点时各中心点的距离尽可能的远。

ISODATA

ISODATA是迭代自组织数据分析法。在k-means中,k需要预先人为地确定,在整个算法过程中无法更改。而当遇到高维度、海量的数据集时,k的大小难以估计。ISODATA针对这个问题进行了改进,算法思想是:当属于某个类别的样本数过少时把这个类别去除;当属于某个类别的样本数过多、分散程度较大时把这个类别分为两个子类别。

kernel k-means

传统K-means采用欧式距离进行样本间的相似度度量,而kernel k-means参照支持向量机中核函数的思想,将所有样本映射到另外一个特征空间中再进行聚类,可以改善聚类效果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值