我前世从未做过聚类分析,而我整洁地遵循了一本书中有关如何在R中进行聚类分析的步骤。
R中的聚类分析实用指南:无监督机器学习:Alboukadel Kassambara先生的第1卷(多元分析)
但是我遇到了一个问题,因为在书中数据标准化代替了数字变量,但是我有一个数据集,该数据集由13个变量组成,其中最类别。我查了谷歌和一些stackoverflow问题,我找不到确切的答案,如如何处理分类变量和连续变量组合的聚类分析。有人提到层次聚类,而另一些人则提出另一种算法,因此,我对将哪种算法应用于包含分类变量和离散变量的数据集感到困惑。
答案 0 :(得分:1)
集群分析全是关于距离的。
您可以通过几个步骤解决问题:
第1步:定义值之间的距离。
您可以使用daisy()
包中的cluster
快速获取距离度量。此功能可同时使用连续变量和分类变量。
第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