一、概述
数据聚类是对于静态数据分析的一门技术,在许多领域内都被广泛地应用,包括机器学习、数据挖掘、模式识别、图像分析、信息检索以及生物信息等。聚类是把相似的对象通过静态分类的方法分成不同的组别或者更多的子集,这样让在同一个子集中的成员对象都有相似的一些属性,常见的包括在坐标系中更加短的空间距离等。
K-means是一种基于距离的迭代式算法[1]。它将n个观察实例分类到k个聚类中,以使得每个观察实例距离它所在的聚类的中心点比其他的聚类中心点的距离更小。
其中,距离的计算方式可以是欧式距离(2-norm distance):
二维的公式
d = sqrt((x1-x2)^2+(y1-y2)^2)
三维的公式
d=sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)
或者是曼哈顿距离(Manhattan distance,1-norm distance)
N维的空间
其中两点的曼哈顿距离为:|x1-y1|+|x2-y2|+|x3-y3|+|x4-y4|+……+|xn-yn|
另外,(两点的坐标分别为(x1,x2,……,xn)、(y1,y2,……,yn))
二、思想
1.简单的K-means
1)所有的观测实例中随机抽取出k个观测点,作为聚类中心点,然后遍历其余的观测点找到距离各自最近的聚类中心点,将其加入到该聚类中。这样,我们就有了一个初始的聚类结果,这是一次迭代的过程。
2)我们每个聚类中心都至少有一个观测实例,这样,我们可以求出每个聚类的中心点(means),作为新的聚类中心,然后再遍历所有的观测点,找到距离其最近的中心点,加入到该聚类中。然后继续运行2)。
3)如此往复2),直到前后两次迭代得到的聚类中心点一模一样。
这样,算法就稳定了,这样得到的k个聚类中心,和距离它们最近的观测点构成k个聚类,就是我们要的结果。
2.改进的K-means:k-d tree
把n维特征的观测实例放到n维空间中,k-d tree每次通过某种算法选择一个特征(坐标轴),以它的某一个值作为分界做超平面,把当前所有观测点分为两部分,然后对每一个部分使用同样的方法,直到达到某个条件为止。
上面的表述中,有三步:
1)选择特征的方法
计算当前观测点集合中每个特征的方差,选择方差最大的一个特征,然后画一个垂直于这个特征的超平面将所有观测点分为两个集合。
2)以该特征的哪一个值为界 即垂直选择坐标轴的超平面的具体位置。
第一种是以各个点的方差的中值(median)为界。这样会使建好的树非常地平衡,会均匀地分开一个集合。这样做的问题是,如果点的分布非常不好地偏斜的,选择中值会造成连续相同方向的分割,形成细长的超矩形(hyperrectangles)。
替代的方法是计算这些点该坐标轴的平均值,选择距离这个平均值最近的点作为超平面与这个坐标轴的交点。这样这个树不会完美地平衡,但区域会倾向于正方地被划分,连续的分割更有可能在不同方向上发生。
3)达到什么条件算法结束
实际中,不用指导叶子结点只包含两个点时才结束算法。你可以设定一个预先设定的最小值,当这个最小值达到时结束算法。
3.改进的K-means:ball tree
三、实现
java实现:
相关推荐
使用kmean 和 slc的聚类算法,内附详细的实验报告和实验结果图。
对文本进行聚类,文本预处理-->构造特征向量-->聚类,压缩包内含有实验用语料亲测可用, 谢谢支持。
python简单实现kmean聚类算法
kmean聚类(实现)和层次聚类实验代码,仅供参考和学习
这是kmean聚类中用到的一个数据
K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means算法以欧式距离作为相似度测度,它是求...
kmean算法源代码,java.朋友介绍的可能有错误自己看吧
1.版本:matlab2019a,不会运行可私信 2.领域:【图像分割】 3.内容:基于Kmean聚类实现乳腺肿瘤分割附matlab代码 4.适合人群:本科,硕士等教研学习使用
K-means算法及最佳聚类数目的确定,通过计算原始数据中的:CH值、DB值、Gap值、轮廓系数,四种指标。 1.在Kmeans算法中,K值所决定的是在该聚类算法中,所要分配聚类的簇的多少。Kmeans算法对初始值是⽐较敏感的,...
负荷聚类,通过对负荷数据进行处理,提取典型用电方式,然后对典型用电方式进行聚类
数据挖掘聚类算法 KMean算法 以及基于密度的算法 简单容易看懂,适合大家学习
自己照着做的一些kmeans练习,适合新手看
K均值聚类算法,Python手写,新数据预测
掌握VC环境下k-mean聚类算法和模糊k-mean聚类算法的编程实现方法
Kmean聚类算法,能用,自己弄的
K-MEAN聚类算法功能展示,是一个多维的算法
【图像分割】基于Kmean聚类 分水岭、oust、粒子群算法优化脂肪肝图像分割附matlab代码.zip
本程序可以很快地找到视频和图片序列中的关键帧,该压缩包中已经有对应的图片序列,可以直接运行程序。
基于K-means聚类算法的图像分割以图像中的像素为数据点,按照指定的簇数进行聚类,然后将每个像素点以其对应的聚类中心替代,重构该图像。 算法步骤: ①随机选取K个初始聚类中心; ②计算每个样本到各聚类中心的...