Измените текстовые значения на int в задаче классификации / кластеризации - PullRequest
0 голосов
/ 21 января 2020

Имея задачу сделать кластеризацию в R с набором данных, который содержит категориальные текстовые значения (например, «синий», «красный»). Алгоритм k-средних принимает только цифры c, поэтому мне нужно преобразовать эти текстовые категории в категории int. Есть ли однострочное решение? или, может быть, какой-то другой?

         Attribute1 Attribute2                     Attribute1 Attribute2
Instance1  "blue"     "red"         =>  Instance1       1          2
Instance2  "green"    "blue"            Instance2       3          1

a[,1] <- sapply(a[,1],switch,"blue"=1,"red"=2,"green"=3)

делает задачу, но для первого столбца "a" фрейма данных

x_num <- as.numeric(x)

делает иначе, но выглядит нравится.

1 Ответ

0 голосов
/ 21 января 2020

Итак, когда мы проводим кластерный анализ, мы хотим сделать наши кластеры как можно дальше друг от друга. метод, о котором я подумал, слишком прямолинеен и будет работать плохо (если он будет реализован). Хорошее решение - применить метрику расстояния c, которая может обрабатывать смешанные типы данных. В комментариях упоминается газонокосилка, которая является универсальной. Расстояние Jaccard также существует для двоичных категорий. Пример решения Гауера (R): функция

library(cluster)
gower.dissimilarity.mtrx <- daisy(DataFrame, metric = c("gower"))

здесь равна 'daisy', хотя есть и 'dist', что делает то же самое, но с евклидовым методом. больше на топи c

...