Подскажите по кластерному анализу.
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 13 окт 2018, 09:54
- Репутация: 0
- Откуда: Омск
Подскажите по кластерному анализу.
Здравствуйте всем, есть у меня задача и пытаюсь решить ее на 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
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: Подскажите по кластерному анализу.
1. rownames(x)<-x[,1] после загрузки. И см. элемент cluster в результате кластеризации (результат нужно куда-то положить)
2. Судя по программе, вы сделали совсем не то, чего хотели. Создайте небольшой модельный пример, и посмотрите результат после каждого шага.
2. Судя по программе, вы сделали совсем не то, чего хотели. Создайте небольшой модельный пример, и посмотрите результат после каждого шага.
-
- Завсегдатай
- Сообщения: 420
- Зарегистрирован: 21 мар 2012, 07:37
- Репутация: 67
- Откуда: Воронеж
Re: Подскажите по кластерному анализу.
Добрый день!
По своему опыту обработки данных знаю, что переходить к таким высоким материям как кластерный анализ можно только после того как становится понятно про данные все досконально. Иначе получишь что-то недоступное для интерпретации, если вообще получишь.
Мне, например, не понятно откуда после логарифмирования у вас получаются значения NaN, если все исходные данные неотрицательные?
По своему опыту обработки данных знаю, что переходить к таким высоким материям как кластерный анализ можно только после того как становится понятно про данные все досконально. Иначе получишь что-то недоступное для интерпретации, если вообще получишь.
Мне, например, не понятно откуда после логарифмирования у вас получаются значения NaN, если все исходные данные неотрицательные?
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 13 окт 2018, 09:54
- Репутация: 0
- Откуда: Омск
Re: Подскажите по кластерному анализу.
Ну я просто сделал как в примере с акциями, вычитал на хабре.ну и моя задача она такая же, только акции это игроки. Вот сейчас как раз встал вопрос, то есть я разделаю игроков по кластерам, то есть у меня 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.
Вот сделал такую штуку.
> 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.
-
- Завсегдатай
- Сообщения: 420
- Зарегистрирован: 21 мар 2012, 07:37
- Репутация: 67
- Откуда: Воронеж
Re: Подскажите по кластерному анализу.
Уважаемый, Vlad501! Вы видимо не заметили, что тут вам сделали несколько предложений, задали вопросы. Разберитесь сперва с ними, а потом и до кластеров дойдёте. Дублировать то что вы нам уже показывали нет никакого смысла, если вы хотите разобраться с проблемой.
По моему опыту такое большое число кластеров контрпродуктивно. Вы просто не сможете каждый из них проинтерпретировать. Вполне достаточно для начала из общих соображений разбить на 5 кластеров.
По моему опыту такое большое число кластеров контрпродуктивно. Вы просто не сможете каждый из них проинтерпретировать. Вполне достаточно для начала из общих соображений разбить на 5 кластеров.
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: Подскажите по кластерному анализу.
вы упорно продолжаете множить глупости, не слушая, что вам говорят. Попробуйте вдумчиво почитать вывод вашей программы ниже, и понять, что вы кластеризовали (хинт - см. атрибут "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"
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей