我有一个混合数据集(有因子和数字变量类型),我想做一些聚类分析。这样我就可以研究每个集群中的条目来说明它们的共同点。
我知道对于这种类型的数据集,使用的距离是“Gower distance”。
这是我到目前为止所做的:
cluster <- daisy(mydata, metric = c("euclidean", "manhattan", "gower"),
stand = FALSE, type = list())
try <- agnes(cluster)
plot(try, hang = -1)
上面给了我一个树形图,但我的数据中有2000个条目,我无法识别树形图结束时的各个条目。此外,我希望能够从树形图中提取聚类。
答案 0 :(得分:2)
应该只有一个metric
daisy
功能。 daisy
函数提供(混合类型)观测的距离矩阵。
要从agnes
获取群集标签,可以使用cutree
功能。请参阅以下示例,使用mtcars
数据集;
mtcars
数据框具有数字刻度上的所有变量。但是,当人们看到变量的描述时,很明显一些
在聚类数据时,变量不能用作数字变量。
例如,vs
,引擎的形状应该是(无序的)因子变量,而齿轮的数量应该是有序因子。
# directly from the ?mtcars
mtcars2 <- within(mtcars, {
vs <- factor(vs, labels = c("V", "S"))
am <- factor(am, labels = c("automatic", "manual"))
cyl <- ordered(cyl)
gear <- ordered(gear)
carb <- ordered(carb)
})
# Compute all the pairwise dissimilarities (distances) between observations
# in the data set.
diss_mat <- daisy(mtcars2, metric = "gower")
# Computes agglomerative hierarchical clustering of the dataset.
k <- 3
agnes_clust <- agnes(x = diss_mat)
ag_clust <- cutree(agnes_clust, k)
# Clustering the dissimilarity matrix using
# partitioning around medoids
pam_clust <- pam(diss_mat, k)
# A comparision of the two clusterings
table(ag_clust, pam_clust=pam_clust$clustering)
# pam_clust
# ag_clust 1 2 3
# 1 6 0 0
# 2 2 10 2
# 3 0 0 12
其他几个用于群集混合类型数据的包
CluMix
和FD
。