首页 > 解决方案 > 如何使用分类和数值数据创建层次集群是 R?

问题描述

我想创建一个分层集群来显示职业类型以及从事这些职业的人在其银行账户中的余额。我的数据集有两个变量,工作和平衡:

              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

我希望结果如下所示:

在此处输入图像描述

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

谁能帮我开始这个或给我一些帮助?

我不知道如何开始。

谢谢!

标签: rhierarchical-clustering

解决方案


您可以从使用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 将完整链接聚类应用于您的数据。最后,您可以将结果绘制为树:

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)


推荐阅读