k-means聚类算法算法公式
K均值算法的距离计算方法及应用技巧(四)

K均值算法的距离计算方法及应用技巧K均值(K-means)算法是一种常用的聚类算法,它通过迭代的方式将数据点分成K个簇,使得每个数据点都属于与其最近的簇。
在K均值算法中,距离计算是至关重要的一环,它直接影响到最终聚类结果的准确性。
本文将介绍K均值算法中常用的距离计算方法及应用技巧。
1. 欧式距离计算方法欧式距离是最常用的距离计算方法之一,它可以用于计算多维空间中两点之间的距离。
欧式距离的计算公式如下:d(x, y) = √((x1 - y1)² + (x2 - y2)² + ... + (xn - yn)²)其中,x和y分别表示两个数据点的向量,n表示向量的维度。
欧式距离的计算方法简单直观,适用于大多数情况。
2. 曼哈顿距离计算方法曼哈顿距离是另一种常用的距离计算方法,它也可以用于多维空间中两点之间的距离计算。
曼哈顿距离的计算公式如下:d(x, y) = |x1 - y1| + |x2 - y2| + ... + |xn - yn|与欧式距离相比,曼哈顿距离更适用于城市街区等网格状结构的空间,而且计算过程中不需要开方,因此在某些情况下计算效率更高。
3. 切比雪夫距离计算方法切比雪夫距离是一种特殊的距离计算方法,它衡量的是两个点在各个坐标轴上的差值的最大绝对值。
切比雪夫距离的计算公式如下:d(x, y) = max(|x1 - y1|, |x2 - y2|, ..., |xn - yn|)切比雪夫距离的计算方法适用于离散空间和具有规则网格结构的空间,它能够有效地捕捉到各个维度上的最大差异,因此在某些特定情况下具有很好的效果。
4. 余弦相似度计算方法除了欧式距离、曼哈顿距离和切比雪夫距离之外,余弦相似度也是一种常用的距离计算方法。
余弦相似度计算方法衡量的是两个向量之间的夹角余弦值,其计算公式如下:similarity = (x•y) / (||x|| * ||y||)其中,x和y分别表示两个向量,x•y表示两个向量的点积,||x||和||y||分别表示两个向量的模。
K-means和GMM算法

1K-means算法原理模型1967年,James MacQueen提出“K-Means”(K均值),是基于距离的聚类算法。
两个对象距离越近,相似度越大,对指定的K个划分,迭代确定每个簇的中心和比较靠近该中心的归属节点,达到平方误差最小的平衡状态。
算法算法的描述如下:1、随机选取k个聚类质心点(cluster centroids)为u1,u2,…,uk∈Rn.2、重复下面过程直到收敛{对于每一个样例i,计算与质心的最小距离,判断其应该属于的类对于每一个类j,重新计算该类的质心,向量的平均值}算法的目标函数如下:J函数表示每个样本点到其质心的距离平方和。
K-means是要将J调整到最小。
固定每类的质心u(j),调整样本的所属类别c(i),让J函数减少。
然后,固定c(i),调整每个类的质心u(j),使J减少。
当J递减到最小时,u和c也同时收敛。
函数J是非凸函数,意味着我们不能保证取得的最小值是全局最小值。
K-means算法体现了EM迭代的思想,E步是估计隐含类别y的期望值,M步调整其他参数使得在给定类别y的情况下,极大似然估计P(x,y)能够达到极大值。
然后在其他参数确定的情况下,重新估计y,周而复始,直至收敛。
用K-means 解释就是开始不知道每个样本对应的隐含变量类别c(i),E步随便定一个c(i)给样本,然后是M步让P(x,c(i))最大(这里是让J最小),求出给定c的情况下,J最小时的质心u(j)(其他参数),质心确定后,重新E步估计样本的更好c(i)(归属到距离小的相似质心分类中,使J最小),c(i)得到重新调整。
重复到c没有调整。
算法是硬指定隐含类别变量给一个样本,而不是对每个类别赋予不同的概率。
总体思想是一个迭代优化过程,有目标函数,也有参数变量,只是多了个隐含变量类别c(i),确定其他参数质心u(j)估计隐含变量,再确定隐含变量估计其他参数,直至目标函数最优。
问题算法的缺点是:类型数目k需要首先较为合理的确定下来,没有在迭代过程中优化;算法会获得局部最优结果,需要好的选择初始的质心算法;小数量类别和孤立点的影响,需要考虑这些点的影响;计算数据相似度的距离算法和向量的特征维度,需要先确定下来。
聚类算法介绍(K-means+DBSCAN+典型案例)

排序,速度相对于K-Means较慢,一般只适合小数据量。
二,DBSCAN
在DBSCAN算法中将数据点分为一下三类:
01
核心点:在半径r内含有超过minPoints数目的点
边界点:在半径r内点的数量小于minPoints,但是落在核心点的邻域内
噪音点:既不是核心点也不是边界点的点
算密度单元的计算复杂度大,
每一簇内较大的点代表核心对象,较
小的点代表边界点(与簇内其他点密
度相连,但是自身不是核心对象)。
黑色的点代表离群点或者叫噪声点。
三,凝聚层级聚类(HAC)
HAC是自下而上的一种聚类算法。
1
HAC首先将每个数据点视为一个单一的簇,然后计算所有簇之间的距离来合并
簇,直到所有的簇聚合成为一个簇为止。
之间具有更多的相似性。
是一种探索性的分析。聚类分析所
使用方法的不同,常常会得到不同
的结论。不同研究者对于同一组数
据进行聚类分析,所得到的聚类数
未必一致。
从机器学习的角度讲,簇相当
于隐藏模式。聚类是搜索簇的
无监督学习过程。
01
02
04
03
05
06
从统计学的观点看,聚类分析
是通过数据建模简化数据的一
种方法。
典型的应用案例
例3:基于DBSCAN算法的交通事故读法点段排查方法
核心思想:对于构成交通事故多发点段的每个交通事敌,其发生的地点半径e(邻域)公里范围以内的其它交通
事故的个数,必须不小于一个给定的阈值(MinPts),也就是说其邻域的密度必须不小于某个阈值。
下面是DBSCAN算法的交通事故多发点段排查方法在交通事故黑点排查中的一些定义:
K-均值聚类算法

4.重复分组和确定中心的步骤,直至算法收敛;
2.算法实现
输入:簇的数目k和包含n个对象的数据库。 输出:k个簇,使平方误差准则最小。
算法步骤:
1.为每个聚类确定一个初始聚类中心,这样就有K 个初始 聚类中心。
2.将样本集中的样本按照最小距离原则分配到最邻近聚类
给定数据集X,其中只包含描述属性,不包含 类别属性。假设X包含k个聚类子集X1,X2,„XK;各 个聚类子集中的样本数量分别为n1,n2,„,nk;各个 聚类子集的均值代表点(也称聚类中心)分别为m1, m2,„,mk。
3.算法实例
则误差平方和准则函数公式为:
k
2
E p mi
i 1 pX i
单个方差分别为
E1 0 2.52 2 22 2.5 52 2 22 12.5 E2 13.15
总体平均误差是: E E1 E2 12.5 13.15 25.65 由上可以看出,第一次迭代后,总体平均误差值52.25~25.65, 显著减小。由于在两次迭代中,簇中心不变,所以停止迭代过程, 算法停止。
示为三维向量(分别对应JPEG图像中的红色、绿色 和蓝色通道) ; 3. 将图片分割为合适的背景区域(三个)和前景区域 (小狗); 4. 使用K-means算法对图像进行分割。
2 015/8/8
Hale Waihona Puke 分割后的效果注:最大迭代次数为20次,需运行多次才有可能得到较好的效果。
2 015/8/8
例2:
2 015/8/8
Ox y 102 200 3 1.5 0 450 552
数据对象集合S见表1,作为一个 聚类分析的二维样本,要求的簇的数 量k=2。
k均值算法

k均值算法
K均值(K-means)算法属于无监督学习中的聚类算法;聚类是根据样本特征向
量之间的相似度或距离,
将样本数据划分为若干个样本子集,每个子集定义为一个类;相似的样本聚集在相同的类,不相似的样本分散在不同的类。
由上面的定义可知,聚类算法只使用了样本的特征向量x xx,并没有使用样本的标签y yy,故聚类算法属于无监督学习
样本距离
样本距离越小,样本的相似性越大。
K均值聚类使用欧式距离的平方作为样本距离,计算公式如下:
如上所述,先计算向量对应元素的差值,然后取平方,最后求和;这个计算过程还可以表示为:先对两个样本的特征向量作差,然后求二范数的平方。
,1,。
k-means聚类算法 轮廓系数

k-means聚类算法轮廓系数
轮廓系数(Silhouette Coefficient)是一种用于评估聚类结果的指标,其值在-1到1之间,数值越接近1表示聚类结果越好,越接近-1表示聚类结果越差。
轮廓系数结合了聚类内部的紧密度(cohesion)和聚类间的分离度(separation),通过计算样本与其同类簇的平均距离(a)和样本与其他簇的平均距离(b),并计算轮廓系数的差值(s=b-a),来衡量聚类结果的紧密度和分离度。
具体计算步骤如下:
1. 对于每个样本i,计算其与同簇其他样本的平均距离ai,ai越小表示样本i越紧密;
2. 对于每个样本i,计算其与其他簇样本的平均距离bi,bi越大表示样本i越分离;
3. 计算样本i的轮廓系数si=(bi-ai)/max(ai,bi),轮廓系数si的取值范围在-1
到1之间;
4. 计算所有样本的轮廓系数的平均值得到聚类结果的整体轮廓系数。
KMeans聚类算法的优势是运算速度快,但其聚类结果容易受到初始聚类中心的影响,且对于包含噪声的数据或者非凸形状的簇效果可能不好。
因此,使用轮廓系数来评估聚类结果可以帮助判断聚类的效果好坏,从而选择合适的聚类个数或者调整算法参数。
K-MEANS算法(K均值算法)

k-means 算法一.算法简介k -means 算法,也被称为k -平均或k -均值,是一种得到最广泛使用的聚类算法. 它是将各个聚类子集内的所有数据样本的均值作为该聚类的代表点,算法的主要思想是通过迭代过程把数据集划分为不同的类别,使得评价聚类性能的准如此函数达到最优,从而使生成的每个聚类内紧凑,类间独立.这一算法不适合处理离散型属性,但是对于连续型具有较好的聚类效果.二.划分聚类方法对数据集进展聚类时包括如下三个要点:〔1〕选定某种距离作为数据样本间的相似性度量k-means 聚类算法不适合处理离散型属性,对连续型属性比拟适合.因此在计算数据样本之间的距离时,可以根据实际需要选择欧式距离、曼哈顿距离或者明考斯距离中的一种来作为算法的相似性度量,其中最常用的是欧式距离.下面我给大家具体介绍一下欧式距离.假设给定的数据集 ,X 中的样本用d 个描述属性A 1,A 2…A d 来表示,并且d 个描述属性都是连续型属性.数据样本x i =<x i1,x i2,…x id >, x j =<x j1,x j2,…x jd >其中,x i1,x i2,…x id 和x j1,x j2,…x jd 分别是样本x i 和x j 对应d 个描述属性A 1,A 2,…A d 的具体取值.样本xi 和xj 之间的相似度通常用它们之间的距离d<x i ,x j >来表示,距离越小,样本x i 和x j 越相似,差异度越小;距离越大,样本x i 和x j 越不相似,差异度越大.欧式距离公式如下: 〔2k-means 聚类算法使用误差平方和准如此函数来评价聚类性能.给定数据集X,其中只包含描述属性,不包含类别属性.假设X 包含k 个聚类子集X 1,X 2,…X K ;{}|1,2,...,m X x m total ==(),i j d x x =各个聚类子集中的样本数量分别为n 1,n 2,…,n k ;各个聚类子集的均值代表点〔也称聚类中心〕分别为m 1,m 2,…,m k .如此误差平方和准如此函数公式为:〔3〕相似度的计算根据一个簇中对象的平均值来进展. 1) 将所有对象随机分配到k 个非空的簇中.2) 计算每个簇的平均值,并用该平均值代表相应的簇. 3) 根据每个对象与各个簇中心的距离,分配给最近的簇.4) 然后转2〕,重新计算每个簇的平均值.这个过程不断重复直到满足某个准如此函数才停止.三.算法描述1. 为中心向量c 1, c 2, …, c k 初始化k 个种子2. 分组:a) 将样本分配给距离其最近的中心向量b) 由样本构造不相交〔 non-overlapping 〕的聚类 3. 确定中心:a) 用各个聚类的中心向量作为新的中心 4. 重复分组和确定中心的步骤,直至算法收敛四.算法流程输入:簇的数目k 和包含n 个对象的数据库. 输出:k 个簇,使平方误差准如此最小. 算法步骤:1.为每个聚类确定一个初始聚类中心,这样就有K 个初始聚类中心.2.将样本集中的样本按照最小距离原如此分配到最邻近聚类3.使用每个聚类中的样本均值作为新的聚类中心. 5.完毕,得到K 个聚类21ikii p X E p m =∈=-∑∑五.算法举例数据对象集合S 见表1,作为一个聚类分析的二维样本,要求的簇的数量k=2.<1>选择 , 为初始的簇中心,即 , <2>对剩余的每个对象,根据其与各个簇中心的距离,将它赋给最近的簇.对 : 显然 ,故将 分配给 对于 : 因为 ,所以将 分配给 对于 : 因为 ,所以将 分配给 更新,得到新簇 和 计算平方误差准如此,单个方差为总体平均方差是:〔3〕计算新的簇的中心.重复〔2〕和〔3〕,得到O 1分配给C 1;O 2分配给C 2,O 3分配给C 2,O 4分配给C 2,O 5分配给C 1.更新,得到新簇 和 . 中心为 , . 单个方差分别为总体平均误差是: 由上可以看出,第一次迭代后,总体平均误差值52.25~25.65,显著减小.由于在两次迭代中,簇中心不变,所以停止迭代过程,算法停止.六.k -means 算法的性能分析6.1 k -means 算法的优缺点 主要优点:()10,2O ()20,0O ()110,2M O ==()220,0M O ==3O ()13,2.5d M O ==()23, 1.5d M O ==()()2313,,d M O d M O ≤3O 2C 4O ()14,d M O ==()24,5d M O ==()()2414,,d M O d M O ≤4O 2c 5O ()15,5d M O ==()25,d M O ==()()1525,,d M O d M O ≤5O 1C {}115,C O O ={}2234,,C O O O =122527.2552.25E E E =+=+=()()()()2,5.2222,2501=++=M {}115,C O O ={}2234,,C O O O =()2,5.21=M ()2 2.17,0M =()())(()222210 2.522 2.552212.5E ⎡⎤⎤⎡=-+-+-+-=⎣⎣⎦⎦1212.513.1525.65E E E =+=+=1.是解决聚类问题的一种经典算法,简单、快速.2.对处理大数据集,该算法是相对可伸缩和高效率的.因为它的复杂度是0 <n kt > , 其中, n 是所有对象的数目, k 是簇的数目, t 是迭代的次数.通常k < <n 且t < <n .3.当结果簇是密集的,而簇与簇之间区别明显时, 它的效果较好.主要缺点1.在簇的平均值被定义的情况下才能使用,这对于处理符号属性的数据不适用.2.必须事先给出k〔要生成的簇的数目〕,而且对初值敏感,对于不同的初始值,可能会导致不同结果.3.它对于"躁声〞和孤立点数据是敏感的,少量的该类数据能够对平均值产生极大的影响.针对K-Means算法对于不同的初始值,可能会导致不同结果.解决方法:1.多设置一些不同的初值,比照最后的运算结果〕一直到结果趋于稳定完毕,比拟耗时和浪费资源2.很多时候,事先并不知道给定的数据集应该分成多少个类别才最适宜.这也是 K-means 算法的一个不足.有的算法是通过类的自动合并和分裂,得到较为合理的类型数目 K,例如 ISODATA 算法.3. 所谓的gapstatistics〔 Gap统计模型〕6.2 ISODATA算法1.K-均值算法通常适合于分类数目的聚类,而ISODATA算法如此更加灵活;2.从算法角度看, ISODATA算法与K-均值算法相似,聚类中心都是通过样本均值的迭代运算来决定的;3.ISODATA算法参加了一些试探步骤,并且可以结合成人机交互的结构,使其能利用中间结果所取得的经验更好地进展分类.主要是在选代过程中可将一类一分为二,亦可能二类合二为一,即"自组织〞,这种算法具有启发式的特点. :1.考虑了类别的合并与分裂,因而有了自我调整类别数的能力.合并主要发生在某一类内样本个数太少的情况,或两类聚类中心之间距离太小的情况.为此设有最小类内样本数限制,以与类间中心距离参数 .假如出现两类聚类中心距离小于的情况,可考虑将此两类合并.分裂如此主要发生在某一类别的某分量出现类内方差过大的现象,因而宜分裂成两个类别,以维持合理的类内方差.给出一个对类内分量方差的限制参数 ,用以决定是否需要将某一类分裂成两类.2.由于算法有自我调整的能力,因而需要设置假如干个控制用参数,如聚类数期望值K、每次迭代允许合并的最大聚类对数L、与允许迭代次数I等.✓选择某些初始值.可选不同的参数指标,也可在迭代过程中人为修改,以将N 个模式样本按指标分配到各个聚类中心中去.✓计算各类中诸样本的距离指标函数.✓〔3〕~〔5〕按给定的要求,将前一次获得的聚类集进展分裂和合并处理〔〔4〕为分裂处理,〔5〕为合并处理〕,从而获得新的聚类中心.✓重新进展迭代运算,计算各项指标,判断聚类结果是否符合要求.经过屡次迭代后,假如结果收敛,如此运算完毕.6.3 k-means算法初始中心的选取对算法的影响棋盘格数据集<Checkerboard data set>仅使用其中486个正类数据,并将数据变换到[-1,1]之间,分布情况如如下图所示:原始数据初始聚类中心均在中心附近初始聚类中心在平面内随机选取七.k-means算法的改良方法7.1 k-means算法的改良方法——k-mode 算法◆k-modes 算法:实现对离散数据的快速聚类,保存了k-means算法的效率同时将k-means的应用X围扩大到离散数据.◆K-modes算法是按照k-means算法的核心内容进展修改,针对分类属性的度量和更新质心的问题而改良.具体如下:1.度量记录之间的相关性D的计算公式是比拟两记录之间,属性一样为0,不同为1.并所有相加.因此D越大,即他的不相关程度越强〔与欧式距离代表的意义是一样的〕;2.更新modes,使用一个簇的每个属性出现频率最大的那个属性值作为代表簇的属性值.7.2 k-means算法的改良方法——k-prototype算法◆k-Prototype算法:可以对离散与数值属性两种混合的数据进展聚类,在k-prototype中定义了一个对数值与离散属性都计算的相异性度量标准.◆K-Prototype算法是结合K-Means与K-modes算法,针对混合属性的,解决2个核心问题如下:1.度量具有混合属性的方法是,数值属性采用K-means方法得到P1,分类属性采用K-modes方法P2,那么D=P1+a*P2,a是权重,如果觉得分类属性重要,如此增加a,否如此减少a,a=0时即只有数值属性2.更新一个簇的中心的方法,方法是结合K-Means与K-modes的更新方法.7.3 k-means算法的改良方法——k-中心点算法k-中心点算法:k -means算法对于孤立点是敏感的.为了解决这个问题,不采用簇中的平均值作为参照点,可以选用簇中位置最中心的对象,即中心点作为参照点.这样划分方法仍然是基于最小化所有对象与其参照点之间的相异度之和的原如此来执行的.八.K-means算法在图像分割上的简单应用例1:图片:一只遥望大海的小狗;此图为100 x 100像素的JPG图片,每个像素可以表示为三维向量〔分别对应JPEG图像中的红色、绿色和蓝色通道〕;将图片分割为适宜的背景区域〔三个〕和前景区域〔小狗〕;1.使用K-means算法对图像进展分割.分割后的效果〔注:最大迭代次数为20次,需运行屡次才有可能得到较好的效果.〕例2:注:聚类中心个数为5,最大迭代次数为10.聚类中心个数为3〔程序如下〕clcclearticRGB= imread <'test5.jpg'>; %读入像img=rgb2gray<RGB>;[m,n]=size<img>;subplot<2,2,1>,imshow<img>;title<' 图一原图像'>subplot<2,2,2>,imhist<img>;title<' 图二原图像的灰度直方图'>hold off;img=double<img>;for i=1:200c1<1>=25;c2<1>=125;c3<1>=200;%选择三个初始聚类中心r=abs<img-c1<i>>;g=abs<img-c2<i>>;b=abs<img-c3<i>>;%计算各像素灰度与聚类中心的距离r_g=r-g;g_b=g-b;r_b=r-b;n_r=find<r_g<=0&r_b<=0>;%寻找最小的聚类中心n_g=find<r_g>0&g_b<=0>;%寻找中间的一个聚类中心n_b=find<g_b>0&r_b>0>;%寻找最大的聚类中心i=i+1;c1<i>=sum<img<n_r>>/length<n_r>;%将所有低灰度求和取平均,作为下一个低灰度中心c2<i>=sum<img<n_g>>/length<n_g>;%将所有低灰度求和取平均,作为下一个中间灰度中心c3<i>=sum<img<n_b>>/length<n_b>;%将所有低灰度求和取平均,作为下一个高灰度中心d1<i>=abs<c1<i>-c1<i-1>>;d2<i>=abs<c2<i>-c2<i-1>>;d3<i>=abs<c3<i>-c3<i-1>>;if d1<i><=0.001&&d2<i><=0.001&&d3<i><=0.001R=c1<i>;G=c2<i>;B=c3<i>;k=i;break;endendRGBimg=uint8<img>;img<find<img<R>>=0;img<find<img>R&img<G>>=128;img<find<img>G>>=255;tocsubplot<2,2,3>,imshow<img>;title<' 图三聚类后的图像'>subplot<2,2,4>,imhist<img>;title<' 图四聚类后的图像直方图'>。
聚类分析及k-means算法

举例应用
中国男足近几年到底在亚洲处于几流水平?下 图是采集的亚洲15只球队在2005年-2010年间大 型杯赛的战绩
对数据做了如下预处理:对于世界杯,进入决赛 圈则取其最终排名,没有进入决赛圈的,打入预 选赛十强赛赋予40,预选赛小组未出线的赋予50。 对于亚洲杯,前四名取其排名,八强赋予5,十六 强赋予9,预选赛没出现的赋予17。这样做是为了 使得所有数据变为标量,便于后续聚类。
处理后的数据如下:
数据变换:进行[0,1]规格化得到
初始类个数的选择; 初始类中心的选择;
设k=3,即将这15支球队分成三个集团。现 抽取日本、巴林和泰国的值作为三个类的种子, 即初始化三个类的中心为
A:{0.3, 0, 0.19}; B:{0.7, 0.76, 0.5}; C:{1, 1, 0.5};
相似性度量指标
空间距离 相似系数(similarity coefficient)
空间距离
假使每个样品有p个变量,则每个样品都 可以看成p维空间中的一个点,n个样品 就是p维空间中的n个点,则第i样品与第
j 样品之间的距离记为 dij
样品距离必须满足的条件
➢ 对称性 dij d ji 0 ➢ 三角不等式 dij dik d jk ➢ dij 0 则样品i与样品j不相等
样品到类中心的距离; 归类;
计算所有球队分别对三个中心点的欧氏 距离。下面是用程序求取的结果:
第一次聚类结果: A:日本,韩国,伊朗,沙特; B:乌兹别克斯坦,巴林,朝鲜; C:中国,伊拉克,卡塔尔,阿联酋,泰
国,越南,阿曼,印尼。
重新计算类中心;
下面根据第一次聚类结果,采用k-均值法调整各个类 的中心点。
斜交空间距离
相似系数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
k-means聚类算法算法公式
k-means聚类算法是一种基于距离的简单聚类算法,其核心思想是将数据点分成k类,最小化各类内部数据点之间的距离平方和。
具体而言,k-means聚类算法包含以下几个步骤:
1. 随机初始化k个中心点,分别记为m1, m2, ..., mk
2. 对于数据集中每个点x,计算其到每个中心点mi的距离d(xi, mi),并找到距离最近的中心点,将该点分到对应的类别Ci中。
3. 在每个类别Ci中,重新计算该类别中所有数据点的中心点mj (即平均值),并将中心点更新为新的mj。
如果新旧中心点之间的距离小于某个阈值时,停止迭代,否则回到步骤2。
k-means聚类算法可以用以下公式概括:
对于一个k类聚类:
1. 随机选取k个初始中心点m1, m2, ..., mk
2. 对于每个数据点x,计算其与各中心点mj的距离dj = ||x -
mj||^2 (其中||.||表示求取欧几里得距离)
3. 将x分配到距离最近的类别Ci中
4. 对于每个类别Ci,重新计算中心点mj,即mj = (x1 + x2 + ... + xn) / n,其中x1, x2, ..., xn表示Ci类别中的所有数据点
5. 重复步骤2-4,直到满足停止条件。