Есть ли отличный способ получить результаты с нескольких выходов кластера в один в виде фрейма данных? Есть Какие-Нибудь Предложения?

#r #output #cluster-computing

Вопрос:

Я завершаю кластерный анализ набора данных, срезаю и разбиваю его на различные части, используя различные методы, и все это с целью максимизировать результат использования kmeans для сегментации большого набора данных. Таким образом, в качестве результатов есть 15 отдельных объектов kmean, которые было бы очень полезно преобразовать в таблицу для одновременного просмотра, включая заголовок для ссылки на модель и ключевые статистические данные о каждой модели. Есть какие-нибудь советы? Любой пример результатов, когда вы просто печатаете результаты в разделе вывода R Studio, приведен ниже. Я искал пакеты и т. Д., Но мне не повезло. Спасибо за любую помощь, которую вы можете оказать!!!

  K-means clustering with 5 clusters of sizes 11356, 4621, 3380, 7455, 4381

Cluster means:
  PRCT_DIFF_LOCK_ON PRCT_FRONT_PTO_ON PRCT_REAR_PTO_ON PRCT_MFWD_ON
1       0.045629787      0.0006149385       0.05848930   0.80521712
2       0.006848544      0.0036244639       0.15807745   0.06906081
3       0.390860459      0.0004615964       0.07576421   0.79353567
4       0.040412934      0.0048262841       0.11052730   0.48966547
5       0.053424999      0.0149324570       0.45581038   0.64261907
Within cluster sum of squares by cluster:
    [1] 665.8571 568.6334 264.2810 554.8512 457.3876
     (between_SS / total_SS =  55.5 %)
 

Ответ №1:

Результатом kmeans является a list . Если мы хотим извлечь Cluster means , используйте

 k2$centers
    Murder    Assault   UrbanPop       Rape
1  1.004934  1.0138274  0.1975853  0.8469650
2 -0.669956 -0.6758849 -0.1317235 -0.5646433

 

broom пакет может суммировать выходные данные в формате data.frame/tibble

 library(broom)
> tidy(k2)
# A tibble: 2 x 7
  Murder Assault UrbanPop   Rape  size withinss cluster
   <dbl>   <dbl>    <dbl>  <dbl> <int>    <dbl> <fct>  
1  1.00    1.01     0.198  0.847    20     46.7 1      
2 -0.670  -0.676   -0.132 -0.565    30     56.1 2      
> glance(k2)
# A tibble: 1 x 4
  totss tot.withinss betweenss  iter
  <dbl>        <dbl>     <dbl> <int>
1   196         103.      93.1     1
 

-воспроизводимый пример

 library(cluster)  
df <- USArrests
df <- na.omit(df)
df <- scale(df)
k2 <- kmeans(df, centers = 2, nstart = 25)
 

Комментарии:

1. Спасибо! У меня есть несколько разных имен списков, привязанных к нескольким различным наборам данных, которые создали вывод kmeans. Таким образом, в вашем примере будут k2, p6, df1 и т.д. Вместе с отдельными наборами данных, которые являются подмножествами одного и того же основного фрейма данных. Можно ли завершить краткое изложение всего этого?

2. Вы можете использовать bind_rows(tidy(k2), glance(k2)) , зависит от того, как вы хотели и какая вся информация должна быть включена