r - 如何使用分类和数值数据创建层次集群是 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等是工作类别。
谁能帮我开始这个或给我一些帮助?
我不知道如何开始。
谢谢!
解决方案
您可以从使用dist
和hclust
函数开始。
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)
推荐阅读
- reactjs - Expo React Native App + Redux-Persist:AsyncStorage 问题
- c++11 - 我在迭代字符串向量时遇到问题
- kubernetes - 默认后端 - 404 没有 www ( ingress )
- python - Python3.5 wsgi中没有模块
- r - 使用 append() 和 get() 形成列表列表
- angular - 在组件中获取对象时未定义对象
- java - GeoTools 中的 OpenStreetMap 图层
- python - 如何在 Python Pillow 中设置字体的字距?
- emacs - 书签文件无法保存在 Emacs 中
- python - 尝试将数据拟合到 SARIMA 时,Nonetype 对象不可迭代