Python:如何使用k-means算法比较聚类之间的相似性?

时间:2016-05-13 21:29:17

标签: python cluster-analysis k-means

我对同一事件有两个观察结果。我们说XY。 我想有nc个集群。我正在使用sklearn进行群集。

x = KMeans(n_clusters=nc).fit_predict(X)
y = KMeans(n_clusters=nc).fit_predict(Y)

是否有一项衡量标准可以让我对xy进行比较:即如果群集1xy,则此度量为Returns <- read.csv("MyData.csv",header=TRUE,stringsAsFactor=F) Date<-as.character(Returns[,1]) DateTS<- as.POSIXlt(Date, format = "%m/%d/%Y") TSData<-data.frame(Returns[,2:6],row.names=DateTS) TSData<-as.xts(TSData) MyReturns <- TSData[-1,1] ModelData<-data.frame(MyReturns) set.seed(1) HMM<-depmix(MyReturns~1,data=ModelData,nstates=2,family=gaussian()) 相同。

2 个答案:

答案 0 :(得分:2)

只需提取kmeans对象的聚类中心(参见docs):

x_centers = x.cluster_centers_
y_centers = y.cluster_centers_

您必须决定使用哪个指标来比较这些指标。请记住,中心是浮点数,聚类过程是启发式算法,聚类过程是随机算法。这意味着,即使对于在相同数据上训练的集群对象,您也会得到一些高概率地解释为不完全相同的的东西。

link讨论了一些方法和问题。

答案 1 :(得分:0)

兰德指数及其调整后的版本可以做到这一点。匹配的两个聚类分配(即使标签本身被视为任意标签,也不同)得分为1。值为0表示它们根本不同意。调整后的兰德指数使用其基线作为对簇的点的随机分配。