我对同一事件有两个观察结果。我们说X
和Y
。
我想有nc
个集群。我正在使用sklearn
进行群集。
x = KMeans(n_clusters=nc).fit_predict(X)
y = KMeans(n_clusters=nc).fit_predict(Y)
是否有一项衡量标准可以让我对x
和y
进行比较:即如果群集1
和x
为y
,则此度量为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())
相同。
答案 0 :(得分:2)
只需提取kmeans对象的聚类中心(参见docs):
x_centers = x.cluster_centers_
y_centers = y.cluster_centers_
您必须决定使用哪个指标来比较这些指标。请记住,中心是浮点数,聚类过程是启发式算法,聚类过程是随机算法。这意味着,即使对于在相同数据上训练的集群对象,您也会得到一些高概率地解释为不完全相同的的东西。
本link讨论了一些方法和问题。
答案 1 :(得分:0)
兰德指数及其调整后的版本可以做到这一点。匹配的两个聚类分配(即使标签本身被视为任意标签,也不同)得分为1。值为0表示它们根本不同意。调整后的兰德指数使用其基线作为对簇的点的随机分配。