Матрица несоответствия с использованием table в иерархической кластеризации и кластеризации с помощью k-средних

Здраствуйте! У меня проблемы с вычислением матрицы неcоответстий. Я создал три набора точек с многомерным нормальным распределением:

library('MASS')
library('ggplot2')
library('reshape2')
library("ClusterR")
library("cluster")
library("dplyr")
library ("factoextra")
library("dendextend")
library("circlize")

mu1<-c(1,1)
mu2<-c(1,-9)
mu3<-c(-7,-2)

sigma1<-matrix(c(1,1,1,2), nrow=2, ncol=2, byrow = TRUE)
sigma2<-matrix(c(1,-1,-1,2), nrow=2, ncol=2, byrow = TRUE)
sigma3<-matrix(c(2,0.5,0.5,0.3), nrow=2, ncol=2, byrow = TRUE)

simulation1<-mvrnorm(100,mu1,sigma1)
simulation2<-mvrnorm(100,mu2,sigma2)
simulation3<-mvrnorm(100,mu3,sigma3)

X<-rbind(simulation1,simulation2,simulation3)
colnames(X)<-c("x","y")
X<-data.frame(X)

Я также построил кластеры, используя кластеризацию k-средних и иерархическую кластеризацию с k начальными центрами (k = 3):

//k-means clustering
    k<-3
    B<-kmeans(X, centers = k, nstart = 10)
    x_cluster = data.frame(X, group=factor(B$cluster))
    ggplot(x_cluster, aes(x, y, color = group)) + geom_point()

//hierarchical clustering
    single<-hclust(dist(X), method = "single")
    clusters2<-cutree(single, k = 3)
    fviz_cluster(list (data = X, cluster=clusters2))

Как я могу рассчитать матрицу несоответствий для полного набора данных (X), используя table в обоих этих случаях?


Ответы (1 шт):

Автор решения: black_paladin

А степени совпадения Вам не достаточно?

#errors, covar.of prognosis
rand.index(X$x,clusters2)
rand.index(B$cluster,clusters2)
si1<-cbind(simulation1, 1)
si2<-cbind(simulation1, 2)
si3<-cbind(simulation1, 3)
XX<-as.data.frame(rbind(si1,si2,si3))
rand.index(XX$V3,B$cluster)

С матрицей будут проблемы разной маркировки кластеров - обозначили "1" вместо "0" и уже несовпадение...

→ Ссылка