Как создать иерархический кластер с использованием категориальных и числовых данных? - PullRequest
0 голосов
/ 17 октября 2018

Я хочу создать иерархический кластер для отображения типов карьеры и баланса, который есть у тех, кто в этой карьере, на своем банковском счете.Я набор данных с двумя переменными, заданием и балансом:

              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 голосов
/ 17 октября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...