K聚类算法
- 格式:doc
- 大小:137.50 KB
- 文档页数:9
三维k-means聚类算法
在机器学习和数据挖掘领域,聚类是一种常见的数据分析技术,它通过将数据点分组成具有相似特征的簇来发现数据的内在结构。
而k-means算法是一种常用的聚类算法,它通过迭代的方式将数据
点分配到k个簇中,以最小化簇内的方差来实现聚类。
在三维空间中,数据通常具有更加复杂的特征和结构,因此传
统的二维k-means算法在处理三维数据时可能会面临一些挑战。
为
了解决这个问题,研究人员提出了三维k-means聚类算法,它是对
传统k-means算法的扩展,专门用于处理三维数据。
三维k-means聚类算法的核心思想与传统的k-means算法类似,都是通过迭代的方式不断优化簇的中心位置,以最小化簇内的方差。
然而,由于三维数据的特殊性,三维k-means算法在计算簇中心和
数据点之间的距离时需要考虑更多的因素,比如数据点在三个维度
上的坐标。
在实际应用中,三维k-means聚类算法可以被广泛应用于各种
领域,比如医学影像分析、气象数据分析、地质勘探等。
通过对三
维数据的聚类分析,可以帮助人们更好地理解数据的内在结构,发
现隐藏在数据中的规律和特征,为进一步的数据分析和应用提供有力的支持。
总之,三维k-means聚类算法是一种针对三维数据特点设计的聚类算法,它能够有效地处理三维数据,并在各种领域中发挥重要作用。
随着对三维数据分析需求的不断增加,相信三维k-means聚类算法将会得到更广泛的应用和进一步的发展。
k-means算法是一种基础的聚类算法,其原理和步骤如下:
原理:
k-means算法的主要目标是将n个数据点划分为k个簇,并使每个数据点与所属簇的中心点(即质心)的距离最小化。
其基本思路为先随机选择k个质心,然后迭代地执行以下两个步骤:
1. 簇分配:对于每个数据点,计算其与k个质心的距离,将其分配到距离最近的簇;
2. 更新质心:对于每个簇,计算其中所有数据点的均值,将其作为新的质心。
重复执行以上两个步骤,直到簇不再发生变化或达到最大迭代次数。
最终的簇划分结果即为算法的输出。
步骤:
1. 选择簇数k和数据集;
2. 初始化k个质心,可以随机选择或手动指定;
3. 对于每个数据点,计算其与k个质心的距离,将其分配到距离最近的簇;
4. 对于每个簇,重新计算质心,即将所有数据点的坐标求平均值;
5. 重复执行第3和第4步,直到簇不再发生变化或达到最大迭代次数;
6. 输出簇划分结果。
需要注意的是,k-means算法的结果可能会受到初始质心的影响。
因此,为了得到更好的结果,可以多次运行算法并选择最佳的簇划分结果。
同时,k-means算法要求数据点之间的距离可计算,因此对于某些非欧式距离的情况,需要进行适当的转换或修改算法。
试述k均值聚类的方法原理k均值聚类是一种经典的无监督学习算法,主要用于对数据集进行聚类分析。
k均值聚类算法的基本思想是采用欧氏距离度量样本之间的相似度,将数据集分成k个簇(cluster),使得每个样本点与其所在簇内的点的欧氏距离的平方和最小。
k均值聚类的求解过程可以分为如下几个步骤:1. 初始化:首先在数据集中随机地选择k个初始中心点作为簇的质心。
这些中心点通常会根据数据的分布情况,使用随机选取的方法确定。
2. 分配:对于每个数据点,计算它与所有簇质心的距离,并将其归为距离最近的簇。
该过程可以通过计算欧氏距离完成。
3. 更新:对于每个簇,重新计算其质心。
这个质心是该簇内所有数据点的平均值。
通过不断进行分配和更新操作,可以使得簇内的数据点更加紧密地聚合到簇心周围。
4. 重新分配:将所有数据点重新分配到簇中。
如果任意一个数据点的簇分配发生了改变,那么就需要重新计算所有簇的质心,将过程返回到步骤2,否则该算法停止。
在对数据集进行聚类分析时,k均值聚类算法的结果通常包括k个聚类簇,每个簇中包含若干个数据点。
在实际应用中,需要根据聚类结果对每个簇进行分析、研究或处理。
聚类分析可以帮助人们对数据集进行更加深入的理解,提供数据检索、数据分类、图像识别等领域的支持。
k均值聚类算法的优点包括:1. 算法简单易实现。
该算法的实现过程不需要特别复杂的理论知识,只需要简单的数学计算即可。
2. 聚类速度较快。
由于k均值聚类算法的求解过程中只需要进行有限次的迭代操作,因此其聚类速度较快。
3. 适用于大规模数据集。
对于大规模数据集,k均值聚类算法也可以进行高效的聚类分析。
4. 适用于数值型数据。
由于k均值聚类算法采用欧氏距离度量样本之间的相似度,因此其对数值型数据具有很好的适应性。
1. 聚类数目需要预先设定。
由于k均值聚类算法需要指定聚类的数量k,因此需要提前了解数据集的特征,否则可能会得到较差的聚类结果。
2. 对于非球形数据聚类效果不佳。
kmean算法原理
k均值聚类算法(k-means)是一种常用的聚类分析算法,它的主要原理如下:
1. 初始化:首先选择k个初始中心点,可以是随机选择或者根据先验知识选择。
这些中心点将作为聚类的中心。
2. 分配样本:将每个样本点分配给距离最近的中心点所代表的聚类。
3. 更新中心点:重新计算每个聚类的中心点,即将每个聚类中的样本点的均值作为新的中心点。
4. 重复步骤2和步骤3,直到满足终止条件(如达到最大迭代次数或者中心点不再更新)。
5. 输出结果:得到k个聚类,每个聚类包含一组样本点,这些样本点在空间中相互靠近,并且与其他聚类的样本点相距较远。
k均值聚类算法的核心思想是通过最小化各个样本点与所属聚类中心点之间的距离来实现聚类。
在迭代过程中,不断更新中心点的位置,使得所有样本点尽可能地靠近自己所属的聚类中心。
最终的聚类结果取决于初始中心点的选择和更新中心点的策略。
需要注意的是,k均值聚类算法对离群点比较敏感,并且需要预先设定聚类数量k。
因此,在应用k均值聚类算法时,需要根据具体问题进行合理的调参和评估聚类结果的质量。
利⽤Python如何实现K-means聚类算法⽬录前⾔算法原理⽬标函数算法流程Python实现总结前⾔K-Means 是⼀种⾮常简单的聚类算法(聚类算法都属于⽆监督学习)。
给定固定数量的聚类和输⼊数据集,该算法试图将数据划分为聚类,使得聚类内部具有较⾼的相似性,聚类与聚类之间具有较低的相似性。
算法原理1. 初始化聚类中⼼,或者在输⼊数据范围内随机选择,或者使⽤⼀些现有的训练样本(推荐)2. 直到收敛将每个数据点分配到最近的聚类。
点与聚类中⼼之间的距离是通过欧⼏⾥德距离测量得到的。
通过将聚类中⼼的当前估计值设置为属于该聚类的所有实例的平均值,来更新它们的当前估计值。
⽬标函数聚类算法的⽬标函数试图找到聚类中⼼,以便数据将划分到相应的聚类中,并使得数据与其最接近的聚类中⼼之间的距离尽可能⼩。
给定⼀组数据X1,...,Xn和⼀个正数k,找到k个聚类中⼼C1,...,Ck并最⼩化⽬标函数:其中是质⼼,计算表达式为上图a表达了初始的数据集,假设k=2。
在图b中,我们随机选择了两个k类所对应的类别质⼼,即图中的红⾊质⼼和蓝⾊质⼼,然后分别求样本中所有点到这两个质⼼的距离,并标记每个样本的类别为和该样本距离最⼩的质⼼的类别,如图c所⽰,经过计算样本和红⾊质⼼和蓝⾊质⼼的距离,我们得到了所有样本点的第⼀轮迭代后的类别。
此时我们对我们当前标记为红⾊和蓝⾊的点分别求其新的质⼼,如图4所⽰,新的红⾊质⼼和蓝⾊质⼼的位置已经发⽣了变动。
图e和图f重复了我们在图c和图d的过程,即将所有点的类别标记为距离最近的质⼼的类别并求新的质⼼。
最终我们得到的两个类别如图f。
当然在实际K-Mean算法中,我们⼀般会多次运⾏图c和图d,才能达到最终的⽐较优的类别。
算法流程注意点:1. 对于K-Means算法,⾸先要注意的是k值的选择,⼀般来说,我们会根据对数据的先验经验选择⼀个合适的k值,如果没有什么先验知识,则可以通过交叉验证选择⼀个合适的k值2. 在确定了k的个数后,我们需要选择k个初始化的质⼼,就像上图b中的随机质⼼。
kmeans聚类算法评价指标Kmeans聚类算法是一种经典的聚类算法,它将数据点分成K个簇,使得每个簇内的数据点相似度较高,不同簇之间的数据点相似度较低。
在Kmeans聚类算法中,评价聚类质量的指标是非常重要的,下面介绍几种常用的Kmeans聚类算法评价指标。
1. SSE(Sum of Squared Errors):SSE是Kmeans聚类算法中最常用的评价指标,它计算的是所有数据点到其所属簇中心的距离的平方和。
SSE值越小,表示簇内数据点的相似度越高,聚类效果越好。
2. 轮廓系数(Silhouette Coefficient):轮廓系数是一个综合评价指标,它考虑了簇内数据点之间的相似度和簇间数据点的相似度。
对于一个数据点i,它的轮廓系数为s(i)=(b(i)-a(i))/max(a(i),b(i)),其中a(i)表示数据点i与同簇其他数据点的平均距离,b(i)表示数据点i到其他簇中所有数据点的平均距离,s(i)的取值范围为[-1,1],值越接近1,表示数据点i的聚类效果越好。
3. CH指标(Calinski-Harabasz Index):CH指标是一个聚类质量的综合评价指标,它基于簇内的离散度和簇间的相似度,计算公式为CH=(B/(k-1))/(W/(n-k)),其中B表示簇间的离散度,W表示簇内的离散度,k表示簇的个数,n表示数据点的个数,CH指标的值越大,表示聚类效果越好。
4. DB指数(Davies-Bouldin Index):DB指数是一种基于簇内的离散度和簇间的相似度的聚类质量评价指标,它计算的是簇间距离与簇内距离之比的平均值,公式为DB= (1/k) *sum(max(R(i,j)+R(j,i))/D(i,j)),其中R(i,j)表示簇i和簇j之间的距离,D(i,j)表示簇i和簇j内所有数据点之间的平均距离,DB 指数的值越小,表示聚类效果越好。
以上是Kmeans聚类算法常用的一些评价指标,根据不同的应用场景,选择合适的评价指标来评估Kmeans聚类算法的聚类效果,可以更加准确地评估聚类算法的性能。
k-means参数详解K-Means 是一种常见的聚类算法,用于将数据集划分成K 个不同的组(簇),其中每个数据点属于与其最近的簇的成员。
K-Means 算法的参数包括聚类数K,初始化方法,迭代次数等。
以下是一些常见的K-Means 参数及其详细解释:1. 聚类数K (n_clusters):-说明:K-Means 算法需要预先指定聚类的数量K,即希望将数据分成的簇的个数。
-选择方法:通常通过领域知识、实际问题需求或通过尝试不同的K 值并使用评估指标(如轮廓系数)来确定。
2. 初始化方法(init):-说明:K-Means 需要初始的聚类中心点,初始化方法决定了这些初始中心点的放置方式。
-选择方法:常见的初始化方法包括"k-means++"(默认值,智能地选择初始中心点以加速收敛)和"random"(从数据中随机选择初始中心点)。
3. 最大迭代次数(max_iter):-说明:K-Means 算法是通过迭代优化来更新聚类中心的。
max_iter 参数定义了算法运行的最大迭代次数。
-调整方法:如果算法没有收敛,你可以尝试增加最大迭代次数。
4. 收敛阈值(tol):-说明:当两次迭代之间的聚类中心的变化小于阈值tol 时,算法被认为已经收敛。
-调整方法:如果算法在较少的迭代后就收敛,可以适度增加tol 以提高效率。
5. 随机种子(random_state):-说明:用于初始化算法的伪随机数生成器的种子。
指定相同的种子将使得多次运行具有相同的结果。
-调整方法:在调试和复现实验时,可以使用相同的随机种子。
这些参数通常是实现K-Means 算法时需要关注的主要参数。
在实际应用中,还可以根据数据的特性和问题的需求来选择合适的参数值。
通常,通过尝试不同的参数组合并使用评估指标(如轮廓系数)来评估聚类结果的质量。
k-medoids聚类算法**标题:深入解析K-Medoids聚类算法****引言:**K-Medoids聚类算法是一种有效的数据聚类方法,广泛应用于数据挖掘、模式识别和机器学习领域。
相比于K-Means算法,K-Medoids在处理离群点时更为鲁棒,因为它选择代表性的样本作为簇的中心,而不是简单地计算样本的均值。
本文将深入探讨K-Medoids聚类算法的原理、步骤以及应用领域,以帮助读者更好地理解和应用这一强大的聚类算法。
**1. K-Medoids聚类算法简介:**K-Medoids聚类算法是一种基于中心点的聚类方法,旨在将数据集分为预定数量的簇,使得每个簇的内部数据点之间的相似度较高,而不同簇之间的相似度较低。
与K-Means算法不同,K-Medoids使用实际数据点作为簇的中心,而非简单地计算数据点的均值。
**2. K-Medoids算法的工作原理:**K-Medoids算法的核心思想是选择每个簇的代表性样本,即簇的中心点,以最小化簇内部数据点与中心点之间的距离。
算法的工作步骤如下:- **初始化:** 随机选择k个数据点作为初始的簇中心。
- **簇分配:** 将每个数据点分配到最近的簇中心,形成k个簇。
- **中心更新:** 对于每个簇,选择一个新的中心,使得该簇内所有数据点到新中心的总距离最小。
- **收敛判定:** 重复簇分配和中心更新步骤,直到簇中心不再改变或改变微小,达到收敛。
**3. K-Medoids与K-Means的比较:**- **鲁棒性:** K-Medoids相比K-Means对离群点更为鲁棒,因为中心点是实际数据点,不受异常值的影响。
- **复杂度:** 由于K-Medoids需要计算中心点到所有其他数据点的距离,算法的复杂度相对较高,但在小规模数据集上表现良好。
- **收敛性:** K-Medoids的收敛性较差,且初始中心点的选择对结果影响较大。
**4. K-Medoids算法的改进和优化:**- **PAM算法:** Partitioning Around Medoids(PAM)是K-Medoids的经典算法,通过交换中心点与非中心点来优化簇的内部距离。
K均值算法是一种常用的聚类算法,它可以将数据集中的样本根据它们的特征分成不同的簇。
在使用K均值算法时,我们需要选择簇的个数K值。
K值的选择对聚类结果具有重要影响,因此选择一个合适的K值是非常重要的。
K值选择方法一:手肘法手肘法是一种常用的K值选择方法。
它通过观察不同K值对应的簇内平方和(SSE)的变化来选择合适的K值。
当K值增大时,簇内平方和会逐渐减小,但是当K值增大到一定程度之后,簇内平方和的下降速度会变缓。
这个转折点就是手肘法选择的K值。
在实际应用中,我们可以通过绘制K值与对应的簇内平方和的折线图来观察。
当折线图呈现出一个明显的拐点时,这个拐点对应的K值就是手肘法选择的K值。
手肘法的优点是简单易懂,容易通过图形化的方法观察K值的选择。
但是手肘法也存在一些缺点,比如对于不同形状的数据集,拐点可能不够明显,导致K值选择不准确。
K值选择方法二:轮廓系数轮廓系数是一种用于衡量聚类质量的指标,它可以在不需要知道真实簇数的情况下评价聚类结果。
对于每个样本,轮廓系数考虑了它与同簇中其他样本的相似度和与最近簇中样本的相似度,从而得出一个在-1到1之间的值。
当轮廓系数接近1时,表示样本聚类合理;当轮廓系数接近-1时,表示样本更适合被分到其他簇;当轮廓系数接近0时,表示样本在两个簇的边界上。
在使用轮廓系数选择K值时,我们可以尝试不同的K值,计算每个K值对应的平均轮廓系数,然后选择平均轮廓系数最大的K值作为最终的选择。
轮廓系数的优点是可以在聚类结果不够明显的情况下帮助我们选择K值,而且不需要预先知道真实簇数。
但是轮廓系数的计算复杂度较高,在处理大规模数据集时可能会受到限制。
K值选择方法三:Gap统计量Gap统计量是一种用于评价聚类质量的指标,它可以帮助我们选择合适的K 值。
Gap统计量的计算基于比较真实数据集与随机数据集的差异,通过比较不同K值对应的Gap统计量的大小来选择合适的K值。
在使用Gap统计量选择K值时,我们可以通过计算真实数据集与随机数据集的差异来得到一个Gap统计量,然后计算不同K值对应的Gap统计量。
4.1、摘要 在前面的文章中,介绍了三种常见的分类算法。分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应。但是很多时候上述条件得不到满足,尤其是在处理海量数据的时候,如果通过预处理使得数据满足分类算法的要求,则代价非常大,这时候可以考虑使用聚类算法。聚类属于无监督学习,相比于分类,聚类不依赖预定义的类和类标号的训练实例。本文首先介绍聚类的基础——距离与相异度,然后介绍一种常见的聚类算法——k均值和k中心点聚类,最后会举一个实例:应用聚类方法试图解决一个在体育界大家颇具争议的问题——中国男足近几年在亚洲到底处于几流水平。
4.2、相异度计算 在正式讨论聚类前,我们要先弄清楚一个问题:如何定量计算两个可比较元素间的相异度。用通俗的话说,相异度就是两个东西差别有多大,例如人类与章鱼的相异度明显大于人类与黑猩猩的相异度,这是能我们直观感受到的。但是,计算机没有这种直观感受能力,我们必须对相异度在数学上进行定量定义。
设,其中X,Y是两个元素项,各自具有n个可度量特征属性,那么X和Y的相异度定义为:,其中R为实数域。也就是说相异度是两个元素对实数域的一个映射,所映射的实数定量表示两个元素的相异度。
下面介绍不同类型变量相异度计算方法。 4.2.1、标量 标量也就是无方向意义的数字,也叫标度变量。现在先考虑元素的所有特征属性都是标量的情况。例如,计算X={2,1,102}和Y={1,3,2}的相异度。一种很自然的想法是用两者的欧几里得距离来作为相异度,欧几里得距离的定义如下:
其意义就是两个元素在欧氏空间中的集合距离,因为其直观易懂且可解释性强,被广泛用于标识两个标量元素的相异度。将上面两个示例数据代入公式,可得两者的欧氏距离为:
除欧氏距离外,常用作度量标量相异度的还有曼哈顿距离和闵可夫斯基距离,两者定义如下:
曼哈顿距离: 闵可夫斯基距离: 欧氏距离和曼哈顿距离可以看做是闵可夫斯基距离在p=2和p=1下的特例。另外这三种距离都可以加权,这个很容易理解,不再赘述。
下面要说一下标量的规格化问题。上面这样计算相异度的方式有一点问题,就是取值范围大的属性对距离的影响高于取值范围小的属性。例如上述例子中第三个属性的取值跨度远大于前两个,这样不利于真实反映真实的相异度,为了解决这个问题,一般要对属性值进行规格化。所谓规格化就是将各个属性值按比例映射到相同的取值区间,这样是为了平衡各个属性对距离的影响。通常将各个属性均映射到[0,1]区间,映射公式为:
其中max(ai)和min(ai)表示所有元素项中第i个属性的最大值和最小值。例如,将示例中的元素规格化到[0,1]区间后,就变成了X’={1,0,1},Y’={0,1,0},重新计算欧氏距离约为1.732。
4.2.2、二元变量 所谓二元变量是只能取0和1两种值变量,有点类似布尔值,通常用来标识是或不是这种二值属性。对于二元变量,上一节提到的距离不能很好标识其相异度,我们需要一种更适合的标识。一种常用的方法是用元素相同序位同值属性的比例来标识其相异度。
设有X={1,0,0,0,1,0,1,1},Y={0,0,0,1,1,1,1,1},可以看到,两个元素第2、3、5、7和8个属性取值相同,而第1、4和6个取值不同,那么相异度可以标识为3/8=0.375。一般的,对于二元变量,相异度可用“取值不同的同位属性数/单个元素的属性位数”标识。
上面所说的相异度应该叫做对称二元相异度。现实中还有一种情况,就是我们只关心两者都取1的情况,而认为两者都取0的属性并不意味着两者更相似。例如在根据病情对病人聚类时,如果两个人都患有肺癌,我们认为两个人增强了相似度,但如果两个人都没患肺癌,并不觉得这加强了两人的相似性,在这种情况下,改用“取值不同的同位属性数/(单个元素的属性位数-同取0的位数)”来标识相异度,这叫做非对称二元相异度。如果用1减去非对称二元相异度,则得到非对称二元相似度,也叫Jaccard系数,是一个非常重要的概念。
4.2.3、分类变量 分类变量是二元变量的推广,类似于程序中的枚举变量,但各个值没有数字或序数意义,如颜色、民族等等,对于分类变量,用“取值不同的同位属性数/单个元素的全部属性数”来标识其相异度。
4.2.4、序数变量 序数变量是具有序数意义的分类变量,通常可以按照一定顺序意义排列,如冠军、亚军和季军。对于序数变量,一般为每个值分配一个数,叫做这个值的秩,然后以秩代替原值当做标量属性计算相异度。
4.2.5、向量 对于向量,由于它不仅有大小而且有方向,所以闵可夫斯基距离不是度量其相异度的好办法,一种流行的做法是用两个向量的余弦度量,其度量公式为:
其中||X||表示X的欧几里得范数。要注意,余弦度量度量的不是两者的相异度,而是相似度!
4.3、聚类问题 在讨论完了相异度计算的问题,就可以正式定义聚类问题了。 所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用某种算法将D划分成k个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高。其中每个子集叫做一个簇。
与分类不同,分类是示例式学习,要求分类前明确各个类别,并断言每个元素映射到一个类别,而聚类是观察式学习,在聚类前可以不知道类别甚至不给定类别数量,是无监督学习的一种。目前聚类广泛应用于统计学、生物学、数据库技术和市场营销等领域,相应的算法也非常的多。本文仅介绍一种最简单的聚类算法——k均值(k-means)算法。
4.4、K-means算法及其示例 k均值算法的计算过程非常直观: 1、从D中随机取k个元素,作为k个簇的各自的中心。 2、分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。
3、根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。
4、将D中全部元素按照新的中心重新聚类。 5、重复第4步,直到聚类结果不再变化。 6、将结果输出。 由于算法比较直观,没有什么可以过多讲解的。下面,我们来看看k-means算法一个有趣的应用示例:中国男足近几年到底在亚洲处于几流水平?
今年中国男足可算是杯具到家了,几乎到了过街老鼠人人喊打的地步。对于目前中国男足在亚洲的地位,各方也是各执一词,有人说中国男足亚洲二流,有人说三流,还有人说根本不入流,更有人说其实不比日韩差多少,是亚洲一流。既然争论不能解决问题,我们就让数据告诉我们结果吧。
下图是我采集的亚洲15只球队在2005年-2010年间大型杯赛的战绩(由于澳大利亚是后来加入亚足联的,所以这里没有收录)。 其中包括两次世界杯和一次亚洲杯。我提前对数据做了如下预处理:对于世界杯,进入决赛圈则取其最终排名,没有进入决赛圈的,打入预选赛十强赛赋予40,预选赛小组未出线的赋予50。对于亚洲杯,前四名取其排名,八强赋予5,十六强赋予9,预选赛没出现的赋予17。这样做是为了使得所有数据变为标量,便于后续聚类。
下面先对数据进行[0,1]规格化,下面是规格化后的数据:
接着用k-means算法进行聚类。设k=3,即将这15支球队分成三个集团。 现抽取日本、巴林和泰国的值作为三个簇的种子,即初始化三个簇的中心为A:{0.3, 0, 0.19},B:{0.7, 0.76, 0.5}和C:{1, 1, 0.5}。下面,计算所有球队分别对三个中心点的相异度,这里以欧氏距离度量。下面是我用程序求取的结果:
从做到右依次表示各支球队到当前中心点的欧氏距离,将每支球队分到最近的簇,可对各支球队做如下聚类:
中国C,日本A,韩国A,伊朗A,沙特A,伊拉克C,卡塔尔C,阿联酋C,乌兹别克斯坦B,泰国C,越南C,阿曼C,巴林B,朝鲜B,印尼C。
第一次聚类结果: A:日本,韩国,伊朗,沙特; B:乌兹别克斯坦,巴林,朝鲜; C:中国,伊拉克,卡塔尔,阿联酋,泰国,越南,阿曼,印尼。 下面根据第一次聚类结果,调整各个簇的中心点。 A簇的新中心点为:{(0.3+0+0.24+0.3)/4=0.21, (0+0.15+0.76+0.76)/4=0.4175, (0.19+0.13+0.25+0.06)/4=0.1575} = {0.21, 0.4175, 0.1575}
用同样的方法计算得到B和C簇的新中心点分别为{0.7, 0.7333, 0.4167},{1, 0.94, 0.40625}。
用调整后的中心点再次进行聚类,得到:
第二次迭代后的结果为: 中国C,日本A,韩国A,伊朗A,沙特A,伊拉克C,卡塔尔C,阿联酋C,乌兹别克斯坦B,泰国C,越南C,阿曼C,巴林B,朝鲜B,印尼C。
结果无变化,说明结果已收敛,于是给出最终聚类结果: 亚洲一流:日本,韩国,伊朗,沙特 亚洲二流:乌兹别克斯坦,巴林,朝鲜 亚洲三流:中国,伊拉克,卡塔尔,阿联酋,泰国,越南,阿曼,印尼 看来数据告诉我们,说国足近几年处在亚洲三流水平真的是没有冤枉他们,至少从国际杯赛战绩是这样的。
其实上面的分析数据不仅告诉了我们聚类信息,还提供了一些其它有趣的信息,例如从中可以定量分析出各个球队之间的差距,例如,在亚洲一流队伍中,日本与沙特水平最接近,而伊朗则相距他们较远,这也和近几年伊朗没落的实际相符。另外,乌兹别克斯坦和巴林虽然没有打进近两届世界杯,不过凭借预算赛和亚洲杯上的出色表现占据B组一席之地,而朝鲜由于打入了2010世界杯决赛圈而有幸进入B组,可是同样奇迹般夺得2007年亚洲杯的伊拉克却被分在三流,看来亚洲杯冠军的分量还不如打进世界杯决赛圈重啊。其它有趣的信息,有兴趣的朋友可以进一步挖掘。