Подскажите по кластерному анализу.

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
Vlad501
Новоприбывший
Сообщения: 2
Зарегистрирован: 13 окт 2018, 09:54
Репутация: 0
Откуда: Омск

Подскажите по кластерному анализу.

Сообщение Vlad501 » 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

gamm
Гуру
Сообщения: 2775
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 622
Ваше звание: программист
Откуда: Казань

Re: Подскажите по кластерному анализу.

Сообщение gamm » 14 окт 2018, 02:42

1. rownames(x)<-x[,1] после загрузки. И см. элемент cluster в результате кластеризации (результат нужно куда-то положить)

2. Судя по программе, вы сделали совсем не то, чего хотели. Создайте небольшой модельный пример, и посмотрите результат после каждого шага.

Константин Силкин
Активный участник
Сообщения: 202
Зарегистрирован: 21 мар 2012, 07:37
Статьи: 3
Репутация: 36
Откуда: Воронеж

Re: Подскажите по кластерному анализу.

Сообщение Константин Силкин » 14 окт 2018, 08:47

Добрый день!
По своему опыту обработки данных знаю, что переходить к таким высоким материям как кластерный анализ можно только после того как становится понятно про данные все досконально. Иначе получишь что-то недоступное для интерпретации, если вообще получишь.
Мне, например, не понятно откуда после логарифмирования у вас получаются значения NaN, если все исходные данные неотрицательные?

gamm
Гуру
Сообщения: 2775
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 622
Ваше звание: программист
Откуда: Казань

Re: Подскажите по кластерному анализу.

Сообщение gamm » 14 окт 2018, 09:23

Vlad501 писал(а):
13 окт 2018, 10:02
сам анализ я провожу так.
У вас считается разница между игроками, а не между показателями одного игрока; результат зачем-то транспонируется, и кластеризуются показатели, а не игроки. И т.д.

Vlad501
Новоприбывший
Сообщения: 2
Зарегистрирован: 13 окт 2018, 09:54
Репутация: 0
Откуда: Омск

Re: Подскажите по кластерному анализу.

Сообщение Vlad501 » 15 окт 2018, 11:45

Ну я просто сделал как в примере с акциями, вычитал на хабре.ну и моя задача она такая же, только акции это игроки. Вот сейчас как раз встал вопрос, то есть я разделаю игроков по кластерам, то есть у меня 7 находятся в кластере,этот кластер получился из за того чтобы значение у этих игроков близки в этой переменной.
Вот сделал такую штуку.
> x<- read.table('d:\\2.csv', 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
> clusters <- kmeans(x, 45, 1000000)
> x$Marks <- as.factor(clusters$cluster)
Warning message:
In x$Marks <- as.factor(clusters$cluster) : Coercing LHS to a list
> x$Marks <- as.factor(clusters$cluster)
> plot(x$Marks)
И на выходе получилось http://www.cyberforum.ru/attachment....1&d=1539592389
И я вижу 45 кластеров и количество Игроков(переменных),которые входят в кластер, а как мне узнать, какие именно игроки попадают в кластер у меня их 543.
Изображение

Константин Силкин
Активный участник
Сообщения: 202
Зарегистрирован: 21 мар 2012, 07:37
Статьи: 3
Репутация: 36
Откуда: Воронеж

Re: Подскажите по кластерному анализу.

Сообщение Константин Силкин » 16 окт 2018, 23:28

Уважаемый, Vlad501! Вы видимо не заметили, что тут вам сделали несколько предложений, задали вопросы. Разберитесь сперва с ними, а потом и до кластеров дойдёте. Дублировать то что вы нам уже показывали нет никакого смысла, если вы хотите разобраться с проблемой.
По моему опыту такое большое число кластеров контрпродуктивно. Вы просто не сможете каждый из них проинтерпретировать. Вполне достаточно для начала из общих соображений разбить на 5 кластеров.

gamm
Гуру
Сообщения: 2775
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 622
Ваше звание: программист
Откуда: Казань

Re: Подскажите по кластерному анализу.

Сообщение gamm » 17 окт 2018, 14:31

Vlad501 писал(а):
15 окт 2018, 11:45
И на выходе получилось
вы упорно продолжаете множить глупости, не слушая, что вам говорят. Попробуйте вдумчиво почитать вывод вашей программы ниже, и понять, что вы кластеризовали (хинт - см. атрибут "names" у элемента списка x6$cluster).

Код: Выделить всё

> x <- read.table("W:/tmp/0000/2.csv", sep=';', header=TRUE)
> str(x)
'data.frame':   547 obs. of  98 variables:
 $ X      : Factor w/ 547 levels "plaer1","plaer10",..: 1 112 223 334 445 504 515 526 537 2 ...
 $ stat1  : num  5.72e-05 2.58e-04 0.00 0.00 5.27e-05 ...
 $ stat2  : num  0.464 0.451 0.394 0.596 0.474 ...
 $ stat4  : num  0.269 0.28 0.26 0.285 0.237 ...
 $ stat5  : num  0.081 0.0538 0.0931 0.1061 0.0693 ...
 $ stat7  : num  0.481 0.45 0.498 0.409 0.464 ...
 $ stat9  : num  0.0588 0.0609 0.0602 0.0946 0.0696 ...
 $ stat11 : num  0.429 0.558 0.554 0.504 0.585 ...
 $ stat12 : num  0.0988 0.0843 0.0564 0.0448 0.0593 ...
 $ stat13 : num  0.1176 0.0513 0.1156 0.1232 0.1206 ...
 $ stat14 : num  0.186 0.243 0.214 0.238 0.211 ...
 $ stat15 : num  0.0926 0.0497 0.088 0.0977 0.0979 ...
 $ stat16 : num  0.373 0.345 0.254 0.33 0.245 ...
 $ stat17 : num  0.0753 0.1591 0.0482 0.1347 0.0736 ...
 $ stat19 : num  0.266 0.266 0.306 0.221 0.26 ...
 $ stat20 : num  0.399 0.497 0.558 0.5 0.446 ...
 $ stat22 : num  0.624 0.683 0.643 0.649 0.668 ...
 $ stat23 : num  0.227 0.184 0.186 0.234 0.201 ...
 $ stat24 : num  0.574 0.503 0.535 0.505 0.553 ...
 $ stat25 : num  0.25 0.37 0.433 0.273 0.386 ...
 $ stat27 : num  0.000361 0.007157 0 0.000391 0 ...
 $ stat30 : num  0.439 0.518 0.464 0.485 0.394 ...
 $ stat32 : num  0.1278 0.0312 0.1479 0.1045 0.1446 ...
 $ stat33 : num  0.0822 0.0455 0.0767 0.0751 0.0854 ...
 $ stat35 : num  0.399 0.41 0.487 0.422 0.478 ...
 $ stat36 : num  0.106 0.069 0.0513 0.0479 0.0521 ...
 $ stat37 : num  0.0696 0.0268 0.0628 0.05 0.0705 ...
 $ stat38 : num  0.017501 0.030819 0.023496 0.000685 0.000885 ...
 $ stat39 : num  0.087 0.0588 0.0859 0.1123 0.1015 ...
 $ stat40 : num  0.218 0.198 0.21 0.188 0.204 ...
 $ stat41 : num  0.227 0.168 0.295 0.293 0.305 ...
 $ stat42 : num  0.1007 0.0529 0.0968 0.1152 0.1075 ...
 $ stat43 : num  0.257 0.277 0.28 0.249 0.24 ...
 $ stat44 : num  0.0595 0.1029 0.0358 0.1043 0.0409 ...
 $ stat45 : num  0.169 0.182 0.169 0.197 0.196 ...
 $ stat46 : num  0.444 0.405 0.426 0.416 0.451 ...
 $ stat47 : num  0.492 0.539 0.404 0.475 0.41 ...
 $ stat48 : num  0.267 0.234 0.242 0.302 0.261 ...
 $ stat49 : num  0.1477 0.2053 0.1667 0.0632 0.1017 ...
 $ stat50 : num  0.358 0.704 0.404 0.394 0.356 ...
 $ stat51 : num  0.266 0.28 0.236 0.297 0.252 ...
 $ stat54 : num  1.9 2.07 2.02 2.03 1.74 ...
 $ stat55 : num  0.0982 0.0658 0.0813 0.1021 0.0919 ...
 $ stat56 : num  0.0734 0.0572 0.0787 0.1027 0.0676 ...
 $ stat57 : num  0.431 0.491 0.347 0.599 0.43 ...
 $ stat58 : num  0.075 0.154 0.0338 0.1007 0.0566 ...
 $ stat59 : num  0.0931 0.0526 0.0787 0.0873 0.086 ...
 $ stat60 : num  0.0969 0.0413 0.0983 0.0762 0.067 ...
 $ stat61 : num  0.319 0.664 0.488 0.358 0.253 ...
 $ stat63 : num  0.1044 0.0959 0.0615 0.0491 0.0643 ...
 $ stat64 : num  0.431 0.426 0.419 0.5 0.469 ...
 $ stat65 : num  0.00 4.28e-04 3.27e-04 0.00 5.52e-05 ...
 $ stat66 : num  0.483 0.386 0.417 0.433 0.463 ...
 $ stat68 : num  0.262 0.364 0.281 0.309 0.263 ...
 $ stat69 : num  0.552 0.836 0.691 0.485 0.51 ...
 $ stat70 : num  0.332 0.335 0.316 0.341 0.288 ...
 $ stat71 : num  0.615 0.86 0.795 0.512 0.544 ...
 $ stat72 : num  0.299 0.41 0.384 0.353 0.452 ...
 $ stat73 : num  0.623 0.648 0.626 0.629 0.658 ...
 $ stat74 : num  0.47 0.478 0.484 0.454 0.439 ...
 $ stat75 : num  0.312 0.326 0.367 0.271 0.312 ...
 $ stat76 : num  0.446 0.465 0.45 0.435 0.468 ...
 $ stat77 : num  0.35 0.32 0.332 0.431 0.37 ...
 $ stat78 : num  0.227 0.184 0.186 0.234 0.201 ...
 $ stat79 : num  0.156 0.218 0.164 0.14 0.119 ...
 $ stat80 : num  0.175 0.157 0.159 0.209 0.171 ...
 $ stat81 : num  0.072 0.0545 0.0312 0.0315 0.0445 ...
 $ stat82 : num  0.000605 0.002836 0.000966 0.000145 0.0003 ...
 $ stat87 : num  0.483 0.41 0.431 0.58 0.512 ...
 $ stat88 : num  0.312 0.328 0.312 0.367 0.319 ...
 $ stat89 : num  0.343 0.358 0.351 0.551 0.448 ...
 $ stat90 : num  0.00978 0.01255 0.00238 0.02042 0.01318 ...
 $ stat93 : num  0.457 0.51 0.518 0.539 0.49 ...
 $ stat94 : num  0.272 0.348 0.29 0.333 0.25 ...
 $ stat95 : num  0.193 0.171 0.167 0.217 0.184 ...
 $ stat96 : num  0.0962 0.0337 0.0467 0.0973 0.1734 ...
 $ stat97 : num  0 0.000551 0 0 0 ...
 $ stat98 : num  0.273 0.245 0.251 0.325 0.278 ...
 $ stat99 : num  0.0428 0.2595 0.0205 0.0725 0.0321 ...
 $ stat100: num  0.1093 0.0513 0.1084 0.1031 0.1116 ...
 $ stat102: num  0.0662 0.159 0.1012 0.0797 0.1196 ...
 $ stat103: num  0.592 0.867 0.739 0.499 0.539 ...
 $ stat104: num  0.233 0.297 0.25 0.277 0.209 ...
 $ stat106: num  0.175 0.157 0.159 0.209 0.171 ...
 $ stat107: num  0.823 0.649 0.843 0.802 0.83 ...
 $ stat109: num  0.0813 0.0521 0.0863 0.0946 0.0677 ...
 $ stat110: num  0.304 0.334 0.333 0.303 0.288 ...
 $ stat111: num  0.388 0.339 0.298 0.382 0.307 ...
 $ stat113: num  0.461 0.449 0.395 0.59 0.473 ...
 $ stat115: num  0.465 0.447 0.459 0.421 0.436 ...
 $ stat117: num  0.305 0.282 0.29 0.28 0.308 ...
 $ stat118: num  0.433 0.42 0.425 0.405 0.447 ...
 $ stat119: num  0.19 0.156 0.179 0.224 0.2 ...
 $ stat120: num  0.393 0.403 0.374 0.41 0.364 ...
 $ stat121: num  0.295 0.233 0.264 0.335 0.273 ...
 $ stat122: num  0.251 0.15 0.259 0.27 0.308 ...
 $ stat123: num  0.21714 0.13632 0.26466 0.00279 0.01002 ...
 $ stat125: num  0.287 0.242 0.265 0.25 0.284 ...
> x1 <- x[-1] #отбросим колонку с именами игроков иначе ошибка при логарифмировании.
> str(x1)
'data.frame':   547 obs. of  97 variables:
 $ stat1  : num  5.72e-05 2.58e-04 0.00 0.00 5.27e-05 ...
 $ stat2  : num  0.464 0.451 0.394 0.596 0.474 ...
 $ stat4  : num  0.269 0.28 0.26 0.285 0.237 ...
 $ stat5  : num  0.081 0.0538 0.0931 0.1061 0.0693 ...
 $ stat7  : num  0.481 0.45 0.498 0.409 0.464 ...
 $ stat9  : num  0.0588 0.0609 0.0602 0.0946 0.0696 ...
 $ stat11 : num  0.429 0.558 0.554 0.504 0.585 ...
 $ stat12 : num  0.0988 0.0843 0.0564 0.0448 0.0593 ...
 $ stat13 : num  0.1176 0.0513 0.1156 0.1232 0.1206 ...
 $ stat14 : num  0.186 0.243 0.214 0.238 0.211 ...
 $ stat15 : num  0.0926 0.0497 0.088 0.0977 0.0979 ...
 $ stat16 : num  0.373 0.345 0.254 0.33 0.245 ...
 $ stat17 : num  0.0753 0.1591 0.0482 0.1347 0.0736 ...
 $ stat19 : num  0.266 0.266 0.306 0.221 0.26 ...
 $ stat20 : num  0.399 0.497 0.558 0.5 0.446 ...
 $ stat22 : num  0.624 0.683 0.643 0.649 0.668 ...
 $ stat23 : num  0.227 0.184 0.186 0.234 0.201 ...
 $ stat24 : num  0.574 0.503 0.535 0.505 0.553 ...
 $ stat25 : num  0.25 0.37 0.433 0.273 0.386 ...
 $ stat27 : num  0.000361 0.007157 0 0.000391 0 ...
 $ stat30 : num  0.439 0.518 0.464 0.485 0.394 ...
 $ stat32 : num  0.1278 0.0312 0.1479 0.1045 0.1446 ...
 $ stat33 : num  0.0822 0.0455 0.0767 0.0751 0.0854 ...
 $ stat35 : num  0.399 0.41 0.487 0.422 0.478 ...
 $ stat36 : num  0.106 0.069 0.0513 0.0479 0.0521 ...
 $ stat37 : num  0.0696 0.0268 0.0628 0.05 0.0705 ...
 $ stat38 : num  0.017501 0.030819 0.023496 0.000685 0.000885 ...
 $ stat39 : num  0.087 0.0588 0.0859 0.1123 0.1015 ...
 $ stat40 : num  0.218 0.198 0.21 0.188 0.204 ...
 $ stat41 : num  0.227 0.168 0.295 0.293 0.305 ...
 $ stat42 : num  0.1007 0.0529 0.0968 0.1152 0.1075 ...
 $ stat43 : num  0.257 0.277 0.28 0.249 0.24 ...
 $ stat44 : num  0.0595 0.1029 0.0358 0.1043 0.0409 ...
 $ stat45 : num  0.169 0.182 0.169 0.197 0.196 ...
 $ stat46 : num  0.444 0.405 0.426 0.416 0.451 ...
 $ stat47 : num  0.492 0.539 0.404 0.475 0.41 ...
 $ stat48 : num  0.267 0.234 0.242 0.302 0.261 ...
 $ stat49 : num  0.1477 0.2053 0.1667 0.0632 0.1017 ...
 $ stat50 : num  0.358 0.704 0.404 0.394 0.356 ...
 $ stat51 : num  0.266 0.28 0.236 0.297 0.252 ...
 $ stat54 : num  1.9 2.07 2.02 2.03 1.74 ...
 $ stat55 : num  0.0982 0.0658 0.0813 0.1021 0.0919 ...
 $ stat56 : num  0.0734 0.0572 0.0787 0.1027 0.0676 ...
 $ stat57 : num  0.431 0.491 0.347 0.599 0.43 ...
 $ stat58 : num  0.075 0.154 0.0338 0.1007 0.0566 ...
 $ stat59 : num  0.0931 0.0526 0.0787 0.0873 0.086 ...
 $ stat60 : num  0.0969 0.0413 0.0983 0.0762 0.067 ...
 $ stat61 : num  0.319 0.664 0.488 0.358 0.253 ...
 $ stat63 : num  0.1044 0.0959 0.0615 0.0491 0.0643 ...
 $ stat64 : num  0.431 0.426 0.419 0.5 0.469 ...
 $ stat65 : num  0.00 4.28e-04 3.27e-04 0.00 5.52e-05 ...
 $ stat66 : num  0.483 0.386 0.417 0.433 0.463 ...
 $ stat68 : num  0.262 0.364 0.281 0.309 0.263 ...
 $ stat69 : num  0.552 0.836 0.691 0.485 0.51 ...
 $ stat70 : num  0.332 0.335 0.316 0.341 0.288 ...
 $ stat71 : num  0.615 0.86 0.795 0.512 0.544 ...
 $ stat72 : num  0.299 0.41 0.384 0.353 0.452 ...
 $ stat73 : num  0.623 0.648 0.626 0.629 0.658 ...
 $ stat74 : num  0.47 0.478 0.484 0.454 0.439 ...
 $ stat75 : num  0.312 0.326 0.367 0.271 0.312 ...
 $ stat76 : num  0.446 0.465 0.45 0.435 0.468 ...
 $ stat77 : num  0.35 0.32 0.332 0.431 0.37 ...
 $ stat78 : num  0.227 0.184 0.186 0.234 0.201 ...
 $ stat79 : num  0.156 0.218 0.164 0.14 0.119 ...
 $ stat80 : num  0.175 0.157 0.159 0.209 0.171 ...
 $ stat81 : num  0.072 0.0545 0.0312 0.0315 0.0445 ...
 $ stat82 : num  0.000605 0.002836 0.000966 0.000145 0.0003 ...
 $ stat87 : num  0.483 0.41 0.431 0.58 0.512 ...
 $ stat88 : num  0.312 0.328 0.312 0.367 0.319 ...
 $ stat89 : num  0.343 0.358 0.351 0.551 0.448 ...
 $ stat90 : num  0.00978 0.01255 0.00238 0.02042 0.01318 ...
 $ stat93 : num  0.457 0.51 0.518 0.539 0.49 ...
 $ stat94 : num  0.272 0.348 0.29 0.333 0.25 ...
 $ stat95 : num  0.193 0.171 0.167 0.217 0.184 ...
 $ stat96 : num  0.0962 0.0337 0.0467 0.0973 0.1734 ...
 $ stat97 : num  0 0.000551 0 0 0 ...
 $ stat98 : num  0.273 0.245 0.251 0.325 0.278 ...
 $ stat99 : num  0.0428 0.2595 0.0205 0.0725 0.0321 ...
 $ stat100: num  0.1093 0.0513 0.1084 0.1031 0.1116 ...
 $ stat102: num  0.0662 0.159 0.1012 0.0797 0.1196 ...
 $ stat103: num  0.592 0.867 0.739 0.499 0.539 ...
 $ stat104: num  0.233 0.297 0.25 0.277 0.209 ...
 $ stat106: num  0.175 0.157 0.159 0.209 0.171 ...
 $ stat107: num  0.823 0.649 0.843 0.802 0.83 ...
 $ stat109: num  0.0813 0.0521 0.0863 0.0946 0.0677 ...
 $ stat110: num  0.304 0.334 0.333 0.303 0.288 ...
 $ stat111: num  0.388 0.339 0.298 0.382 0.307 ...
 $ stat113: num  0.461 0.449 0.395 0.59 0.473 ...
 $ stat115: num  0.465 0.447 0.459 0.421 0.436 ...
 $ stat117: num  0.305 0.282 0.29 0.28 0.308 ...
 $ stat118: num  0.433 0.42 0.425 0.405 0.447 ...
 $ stat119: num  0.19 0.156 0.179 0.224 0.2 ...
 $ stat120: num  0.393 0.403 0.374 0.41 0.364 ...
 $ stat121: num  0.295 0.233 0.264 0.335 0.273 ...
 $ stat122: num  0.251 0.15 0.259 0.27 0.308 ...
 $ stat123: num  0.21714 0.13632 0.26466 0.00279 0.01002 ...
 $ stat125: num  0.287 0.242 0.265 0.25 0.284 ...
> x2 <- log(x1) #логарифмируем 
> str(x2)
'data.frame':   547 obs. of  97 variables:
 $ stat1  : num  -9.77 -8.26 -Inf -Inf -9.85 ...
 $ stat2  : num  -0.769 -0.795 -0.931 -0.518 -0.746 ...
 $ stat4  : num  -1.31 -1.27 -1.35 -1.25 -1.44 ...
 $ stat5  : num  -2.51 -2.92 -2.37 -2.24 -2.67 ...
 $ stat7  : num  -0.732 -0.799 -0.697 -0.893 -0.767 ...
 $ stat9  : num  -2.83 -2.8 -2.81 -2.36 -2.67 ...
 $ stat11 : num  -0.847 -0.584 -0.591 -0.685 -0.537 ...
 $ stat12 : num  -2.31 -2.47 -2.88 -3.11 -2.83 ...
 $ stat13 : num  -2.14 -2.97 -2.16 -2.09 -2.12 ...
 $ stat14 : num  -1.68 -1.42 -1.54 -1.44 -1.55 ...
 $ stat15 : num  -2.38 -3 -2.43 -2.33 -2.32 ...
 $ stat16 : num  -0.985 -1.065 -1.372 -1.11 -1.406 ...
 $ stat17 : num  -2.59 -1.84 -3.03 -2 -2.61 ...
 $ stat19 : num  -1.32 -1.32 -1.18 -1.51 -1.35 ...
 $ stat20 : num  -0.92 -0.7 -0.583 -0.693 -0.807 ...
 $ stat22 : num  -0.472 -0.381 -0.442 -0.432 -0.404 ...
 $ stat23 : num  -1.48 -1.69 -1.68 -1.45 -1.6 ...
 $ stat24 : num  -0.556 -0.688 -0.625 -0.684 -0.592 ...
 $ stat25 : num  -1.386 -0.993 -0.836 -1.299 -0.952 ...
 $ stat27 : num  -7.93 -4.94 -Inf -7.85 -Inf ...
 $ stat30 : num  -0.822 -0.658 -0.768 -0.723 -0.933 ...
 $ stat32 : num  -2.06 -3.47 -1.91 -2.26 -1.93 ...
 $ stat33 : num  -2.5 -3.09 -2.57 -2.59 -2.46 ...
 $ stat35 : num  -0.92 -0.893 -0.719 -0.862 -0.738 ...
 $ stat36 : num  -2.24 -2.67 -2.97 -3.04 -2.95 ...
 $ stat37 : num  -2.66 -3.62 -2.77 -3 -2.65 ...
 $ stat38 : num  -4.05 -3.48 -3.75 -7.29 -7.03 ...
 $ stat39 : num  -2.44 -2.83 -2.45 -2.19 -2.29 ...
 $ stat40 : num  -1.52 -1.62 -1.56 -1.67 -1.59 ...
 $ stat41 : num  -1.48 -1.79 -1.22 -1.23 -1.19 ...
 $ stat42 : num  -2.3 -2.94 -2.34 -2.16 -2.23 ...
 $ stat43 : num  -1.36 -1.28 -1.27 -1.39 -1.43 ...
 $ stat44 : num  -2.82 -2.27 -3.33 -2.26 -3.2 ...
 $ stat45 : num  -1.78 -1.71 -1.78 -1.63 -1.63 ...
 $ stat46 : num  -0.812 -0.903 -0.853 -0.876 -0.796 ...
 $ stat47 : num  -0.709 -0.618 -0.905 -0.745 -0.891 ...
 $ stat48 : num  -1.32 -1.45 -1.42 -1.2 -1.34 ...
 $ stat49 : num  -1.91 -1.58 -1.79 -2.76 -2.29 ...
 $ stat50 : num  -1.028 -0.35 -0.905 -0.931 -1.031 ...
 $ stat51 : num  -1.33 -1.27 -1.44 -1.22 -1.38 ...
 $ stat54 : num  0.642 0.729 0.704 0.708 0.554 ...
 $ stat55 : num  -2.32 -2.72 -2.51 -2.28 -2.39 ...
 $ stat56 : num  -2.61 -2.86 -2.54 -2.28 -2.69 ...
 $ stat57 : num  -0.841 -0.712 -1.058 -0.512 -0.845 ...
 $ stat58 : num  -2.59 -1.87 -3.39 -2.3 -2.87 ...
 $ stat59 : num  -2.37 -2.95 -2.54 -2.44 -2.45 ...
 $ stat60 : num  -2.33 -3.19 -2.32 -2.57 -2.7 ...
 $ stat61 : num  -1.143 -0.41 -0.717 -1.028 -1.372 ...
 $ stat63 : num  -2.26 -2.34 -2.79 -3.01 -2.74 ...
 $ stat64 : num  -0.841 -0.853 -0.871 -0.693 -0.758 ...
 $ stat65 : num  -Inf -7.76 -8.02 -Inf -9.8 ...
 $ stat66 : num  -0.729 -0.953 -0.875 -0.838 -0.77 ...
 $ stat68 : num  -1.34 -1.01 -1.27 -1.17 -1.33 ...
 $ stat69 : num  -0.595 -0.179 -0.37 -0.724 -0.673 ...
 $ stat70 : num  -1.1 -1.09 -1.15 -1.07 -1.25 ...
 $ stat71 : num  -0.486 -0.151 -0.23 -0.669 -0.609 ...
 $ stat72 : num  -1.208 -0.892 -0.957 -1.041 -0.795 ...
 $ stat73 : num  -0.474 -0.435 -0.468 -0.464 -0.419 ...
 $ stat74 : num  -0.755 -0.739 -0.725 -0.789 -0.823 ...
 $ stat75 : num  -1.17 -1.12 -1 -1.3 -1.16 ...
 $ stat76 : num  -0.807 -0.767 -0.798 -0.831 -0.758 ...
 $ stat77 : num  -1.05 -1.139 -1.103 -0.843 -0.993 ...
 $ stat78 : num  -1.48 -1.69 -1.68 -1.45 -1.6 ...
 $ stat79 : num  -1.86 -1.52 -1.81 -1.96 -2.13 ...
 $ stat80 : num  -1.74 -1.85 -1.84 -1.57 -1.77 ...
 $ stat81 : num  -2.63 -2.91 -3.47 -3.46 -3.11 ...
 $ stat82 : num  -7.41 -5.87 -6.94 -8.84 -8.11 ...
 $ stat87 : num  -0.727 -0.892 -0.843 -0.544 -0.67 ...
 $ stat88 : num  -1.16 -1.11 -1.16 -1 -1.14 ...
 $ stat89 : num  -1.07 -1.027 -1.047 -0.597 -0.802 ...
 $ stat90 : num  -4.63 -4.38 -6.04 -3.89 -4.33 ...
 $ stat93 : num  -0.782 -0.673 -0.659 -0.618 -0.714 ...
 $ stat94 : num  -1.3 -1.06 -1.24 -1.1 -1.38 ...
 $ stat95 : num  -1.65 -1.77 -1.79 -1.53 -1.69 ...
 $ stat96 : num  -2.34 -3.39 -3.06 -2.33 -1.75 ...
 $ stat97 : num  -Inf -7.5 -Inf -Inf -Inf ...
 $ stat98 : num  -1.3 -1.41 -1.38 -1.13 -1.28 ...
 $ stat99 : num  -3.15 -1.35 -3.89 -2.62 -3.44 ...
 $ stat100: num  -2.21 -2.97 -2.22 -2.27 -2.19 ...
 $ stat102: num  -2.72 -1.84 -2.29 -2.53 -2.12 ...
 $ stat103: num  -0.524 -0.143 -0.302 -0.695 -0.618 ...
 $ stat104: num  -1.46 -1.21 -1.39 -1.28 -1.56 ...
 $ stat106: num  -1.74 -1.85 -1.84 -1.57 -1.77 ...
 $ stat107: num  -0.195 -0.433 -0.171 -0.22 -0.186 ...
 $ stat109: num  -2.51 -2.95 -2.45 -2.36 -2.69 ...
 $ stat110: num  -1.19 -1.1 -1.1 -1.19 -1.24 ...
 $ stat111: num  -0.947 -1.083 -1.212 -0.962 -1.181 ...
 $ stat113: num  -0.774 -0.8 -0.929 -0.528 -0.749 ...
 $ stat115: num  -0.766 -0.805 -0.779 -0.864 -0.831 ...
 $ stat117: num  -1.19 -1.26 -1.24 -1.27 -1.18 ...
 $ stat118: num  -0.837 -0.868 -0.856 -0.903 -0.805 ...
 $ stat119: num  -1.66 -1.86 -1.72 -1.5 -1.61 ...
 $ stat120: num  -0.933 -0.908 -0.983 -0.891 -1.01 ...
 $ stat121: num  -1.22 -1.46 -1.33 -1.09 -1.3 ...
 $ stat122: num  -1.38 -1.9 -1.35 -1.31 -1.18 ...
 $ stat123: num  -1.53 -1.99 -1.33 -5.88 -4.6 ...
 $ stat125: num  -1.25 -1.42 -1.33 -1.38 -1.26 ...
> x3 <- apply(x2, 2, diff) #считаем разницу между последовательными элементами
> str(x3)
 num [1:546, 1:97] 1.5 -Inf NaN Inf -Inf ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:97] "stat1" "stat2" "stat4" "stat5" ...
> x4 <- t(x3) #транспонируем таблицу
> str(x4)
 num [1:97, 1:546] 1.5046 -0.0265 0.0391 -0.4095 -0.0669 ...
 - attr(*, "dimnames")=List of 2
  ..$ : chr [1:97] "stat1" "stat2" "stat4" "stat5" ...
  ..$ : NULL
> is.na(x4) <- do.call(cbind,lapply(x4, is.infinite)) # Заменить все Inf на NA
> is.na(x4) <- do.call(cbind,lapply(x4, is.nan)) # Заменить все NaN на NA
> x5 <- na.omit(x4) # Удалить строки, содержащие NA
> x6<-kmeans(x5, 25, 100) # будем разбивать на 25 кластеров, максимум 1000000 итераций
> str(x6)
List of 9
 $ cluster     : Named int [1:83] 7 7 24 23 19 6 5 19 5 20 ...
  ..- attr(*, "names")= chr [1:83] "stat2" "stat4" "stat5" "stat7" ...
 $ centers     : num [1:25, 1:546] 0.0912 0.0253 -0.019 -0.7056 -0.6219 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:25] "1" "2" "3" "4" ...
  .. ..$ : NULL
 $ totss       : num 5061
 $ withinss    : num [1:25] 0 0 28.7 25.9 34.4 ...
 $ tot.withinss: num 798
 $ betweenss   : num 4262
 $ size        : int [1:25] 1 1 3 3 4 4 6 1 2 2 ...
 $ iter        : int 4
 $ ifault      : int 0
 - attr(*, "class")= chr "kmeans"


Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей