Подскажите по кластерному анализу.
Добавлено: 13 окт 2018, 10:02
Здравствуйте всем, есть у меня задача и пытаюсь решить ее на R. Сам кластерный анализ я провожу для того, чтобы узнать по каким кластерам можно разделить данные исходя из поведения игроков. То есть у каждого игрока есть 127 переменных статистики, и мне нужно узнать какие из игроков играют одинаково. В R я новичек, сам анализ я провожу так.
x <- read.table(file, sep=';', header=TRUE)
x <- x[-1] #отбросим колонку с именами игроков иначе ошибка при логарифмировании.
x <- log(x) #логарифмируем
x <- apply(x, 2, diff) #считаем разницу между последовательными элементами
x <- t(x) #транспонируем таблицу
is.na(x) <- do.call(cbind,lapply(x, is.infinite)) # Заменить все Inf на NA
is.na(x) <- do.call(cbind,lapply(x, is.nan)) # Заменить все NaN на NA
x <- na.omit(x) # Удалить строки, содержащие NA
kmeans(x, 25, 1000000) # будем разбивать на 25 кластеров, максимум 1000000 итераций
Тем самым получаю кластера и количество точек(игроков) которые относятся к данному кластеру, Но проблема в том, как мне узнать а именно какие игроки содержатся в кластере, то есть их имена, Дело в том,что при логарифмировании я убираю столбец с именами игроков.Иначе ошибка. Как мне обойти этот момент и получить данные не только о количестве игроков в кластере но и их имена. Знатоки R подскажите,как можно выйти из этой ситуации. На всякий случай вот данынеhttps://yadi.sk/i/Am2OhwxgMiI5Qw
x <- read.table(file, sep=';', header=TRUE)
x <- x[-1] #отбросим колонку с именами игроков иначе ошибка при логарифмировании.
x <- log(x) #логарифмируем
x <- apply(x, 2, diff) #считаем разницу между последовательными элементами
x <- t(x) #транспонируем таблицу
is.na(x) <- do.call(cbind,lapply(x, is.infinite)) # Заменить все Inf на NA
is.na(x) <- do.call(cbind,lapply(x, is.nan)) # Заменить все NaN на NA
x <- na.omit(x) # Удалить строки, содержащие NA
kmeans(x, 25, 1000000) # будем разбивать на 25 кластеров, максимум 1000000 итераций
Тем самым получаю кластера и количество точек(игроков) которые относятся к данному кластеру, Но проблема в том, как мне узнать а именно какие игроки содержатся в кластере, то есть их имена, Дело в том,что при логарифмировании я убираю столбец с именами игроков.Иначе ошибка. Как мне обойти этот момент и получить данные не только о количестве игроков в кластере но и их имена. Знатоки R подскажите,как можно выйти из этой ситуации. На всякий случай вот данынеhttps://yadi.sk/i/Am2OhwxgMiI5Qw