对由分类数据和连续数据组成的数据集进行聚类分析?

cluster analysis on a dataset which consist of categorical and continuous data?

我这辈子从来没有做过聚类分析,我很熟练地按照一本关于如何在 R 中进行聚类分析的书的步骤进行操作。

R 聚类分析实用指南:无监督机器学习:第 1 卷(多变量分析),作者:Alboukadel Kassambara

但是我遇到了一个问题,因为在书中数据标准化取代了数字变量,但是我得到了一个由 13 个变量组成的数据集,其中大多数是 分类.我查阅了 google 和一些 Whosebug 问题,但找不到关于如何处理分类变量和连续变量组合的聚类分析的明确答案。有些人提到层次聚类,而有些人鼓吹另一种算法,所以我有点不知道应该将哪种算法应用于由分类变量和离散变量组成的数据集。

聚类分析与距离有关。

您可以通过几个步骤解决您的问题:

第 1 步:定义值之间的距离。

您可以使用 cluster 包中的 daisy() 快速获取距离度量。此函数适用于连续变量和分类变量的混合。

第 2 步:群集。

您可以对新形成的距离矩阵使用多种算法。层次聚类将提供一种视觉表示,您可能会发现它有助于确定您在分析中想要争论的聚类数量。

例子

示例数据:

a      b     c      d
frog   lamp  llama  7.8 
frog   onion cat    4.3
frog   lamp  soup   1.3
monkey onion  cat   8.1
dragon onion  llama  3.6

代码:

library(cluster)

#make the distance matrix
dist<-daisy(df)

#make a hierarchical cluster model
model<-hclust(dist)

#plotting the hierarchy
plot(model)

#cutting the tree at your decided level
clustmember<-cutree(model,3) 

#adding the cluster member as a column to your data
df1<-data.frame(df,cluster=clustmember)

结果:

a      b     c      d    cluster
frog   lamp  llama  7.8    1
frog   onion cat    4.3    2
frog   lamp  soup   1.3    1
monkey onion  cat   8.1    2
dragon onion  llama  3.6   3