如何使用分类和数值数据is R创建分层集群?

时间:2018-10-17 13:03:45

标签: r hierarchical-clustering

我想创建一个层次结构集群,以显示职业类型以及从事这些职业的人在银行帐户中的余额。 我是一个包含两个变量的数据集,即工作和平衡:

              job balance
1       unemployed    1787
2         services    4789
3       management    1350
4       management    1476
5      blue-collar       0
6       management     747
7    self-employed     307
8       technician     147
9     entrepreneur     221
10        services     -88

我希望结果看起来像这样:

enter image description here

其中A,B,C等是工作类别。

任何人都可以帮我开始这个问题或给我一些帮助吗?

我不知道如何开始。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以先使用disthclust函数。

df <- read.table(text = "              job balance
1       unemployed    1787
2         services    4789
3       management    1350
4       management    1476
5      blue-collar       0
6       management     747
7    self-employed     307
8       technician     147
9     entrepreneur     221
10        services     -88")

dist计算每个元素之间的距离(默认情况下为欧氏距离):

distances <- dist(df$balance)

然后您可以使用上面生成的距离矩阵对值进行聚类:

clusters <- hclust(distances)

默认情况下,hclust将complete-linkage clustering应用于您的数据。 最后,您可以将结果绘制成一棵树:

plot(clusters, labels = df$job)

在这里,我们将所有条目聚集在数据框中,这就是为什么某些作业重复的原因。如果您希望每个作业只有一个值,则可以使用tapply

取每个作业的平均余额。
means <- tapply(df$balance, df$job, mean)

然后将作业聚在一起:

distances <- dist(means)
clusters <- hclust(distances)
plot(clusters)

然后,您可以尝试使用其他距离度量或其他聚类算法(有关其他方法,请参见help(dist)help(hclust))。