⑴ K均值聚类分析的原理
在训练图像中,数据事件数量非常多。如果将这些数据事件逐一与模拟区域数据模式进行比对,对计算机性能要求高,计算效率低下。对数据事件分析发现,很多数据事件具有很高的相似性,可以将其划分为同一类。这样大大减少数据事件的个数,提高了运算效率。基于这样考虑,聚类分析技术被引入到多点地质统计学中。
J.B.MacQueen在1967年提出的K-means算法是到目前为止用于科学和工业应用的诸多聚类算法中一种极有影响的技术。它是聚类方法中一个基本的划分方法,常常采用误差平方和准则函数作为聚类准则函数,误差平方和准则函数定义为
多点地质统计学原理、方法及应用
式中:mi(i=1,2,…,k)是类i中数据对象的均值,分别代表K个类。
K-means算法的工作原理:首先随机从数据集中选取K个点作为初始聚类中心,然后计算各个样本到聚类中的距离,把样本归到离它最近的那个聚类中心所在的类。计算新形成的每一个聚类的数据对象的平均值来得到新的聚类中心,如果相邻两次的聚类中心没有任何变化,说明样本调整结束,聚类准则函数已经收敛。本算法的一个特点是在每次迭代中都要考察每个样本的分类是否正确。若不正确,就要调整,在全部样本调整完后,再修改聚类中心,进入下一次迭代。如果在一次迭代算法中,所有的样本被正确分类,则不会有调整,聚类中心也不会有任何变化,这标志着已经收敛,因此算法结束。
基本步骤如下:
a.对于数据对象集,任意选取K个对象作为初始的类中心;
b.根据类中对象的平均值,将每个对象重新赋给最相似的类;
c.更新类的平均值,即计算每个类中对象的平均值;
d.重复b和c步骤;
e.直到不再发生变化。
图2-7是利用K-means方法做的一个数据事件的聚类分析结果。数据类定义为10个。数据事件来自于图2-8,采用的数据样板是8×8的数据样板。
K-means算法优点为当聚类是密集的,且类与类之间区别明显时,效果较好。对于处理大数据集,这个算法是相对可伸缩和高效的,缺点主要有三个:
图2-7 K-means方法聚类结果
图2-8 用于聚类的训练图像,数据样板选择为8*8
1)在K-means算法中K是事先给定的,这个K值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。这是K-means算法的一个不足。
2)在K-means算法中,首先需要根据初始聚类中心来确定一个初始划分,然后对初始划分进行优化。这个初始聚类中心的选择对聚类结果有较大的影响,一旦初始值选择的不好,可能无法得到有效的聚类结果,这也成为K-means算法的一个主要问题。
3)从K-means算法框架可以看出,该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的时间开销是非常大的。所以需要对算法的时间复杂度进行分析、改进,提高算法应用范围。
⑵ 如何用MATLAB对股票数据做聚类分析
直接调kmeans函数。
k = 3;%类别数
idx = kmeans(X, k);%idx就是每个样本点的标号。
⑶ K-均值聚类K值如何自动选取
貌似有人提出了计算轮廓系数的方法,进行反复迭代,找到合适的k值
⑷ 如何使用sklearn k-mean对数据进行聚类分析
#-*-coding:utf-8-*-
fromsklearn.clusterimportKMeans
fromsklearn.externalsimportjoblib
importnumpy
final=open('c:/test/final.dat','r')
data=[line.strip().split(' ')forlineinfinal]
feature=[[float(x)forxinrow[3:]]forrowindata]
#调用kmeans类
clf=KMeans(n_clusters=9)
s=clf.fit(feature)
prints
#9个中心
printclf.cluster_centers_
#每个样本所属的簇
printclf.labels_
#用来评估簇的个数是否合适,距离越小说明簇分的越好,选取临界点的簇个数
printclf.inertia_
#进行预测
printclf.predict(feature)
#保存模型
joblib.mp(clf,'c:/km.pkl')
#载入保存的模型
clf=joblib.load('c:/km.pkl')
'''
#用来评估簇的个数是否合适,距离越小说明簇分的越好,选取临界点的簇个数
foriinrange(5,30,1):
clf=KMeans(n_clusters=i)
s=clf.fit(feature)
printi,clf.inertia_
'''
⑸ 关于K均值聚类分析,可以进行多维分析吗怎么判断其有效性。还有K值的选择可以随意定吗
回答:
1、k均值聚类的数据的维数是没有限制的,可以是一维的标量,也可以是多维的向量,只要数据是数值形式的就可以了。
2、你说的有效性有些模糊,是聚类结果的好坏么?如果是的话,可以通过判断迭代收敛后的目标函数值,函数值越小说明效果越好。这是因为k均值容易陷入局部极值得到次优解,对于不同的初始化中心结果可能会不同。因此,可以可以多行几次不同出始化中心的k均值,选择具有最优目标函数值的(最小的那个)作为相对较好的一个结果。至于,能否达到最好的目标函数值,至今没有特别好的方法,一些方法可以部分的避免陷入局部最优解,比如比较著名与简单的是global k-means,还有利用函数逼近的一些方法就比较麻烦了。
3、k值是你自己指定的,没有限制,当让了不能少于2也不能大于数据个数。
以上回答,全为手打,请给分!!!
⑹ K均值聚类
k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。
⑺ spss中K-means聚类分析后计算每一类数值的标准差和均值
用一下analyze菜单——compare means——means命令,点开options想算什么随你选
⑻ k-均值聚类分析法是什么意思
非常复杂的公式原理我也说不清楚,简单的说
k-均值聚类 对所有聚类的变量有个要求就是必须是连续性数值变量
既然是连续性数值变量,那么就可以就求出n个变量的均值点,
然后将每个个案的变量均值与总体的均值点在空间中比较,就可以找出位置上接近的点作为一类
这个就是大概的原理了,
不过用这个方法还有个难点 是需要自己指定聚类的类别数量,通常可以先采用系统聚类法 初步看大致聚成几类,然后再用这个方法进一步确认比较一下