Вы можете начать с использованием функций 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)
).