簡體   English   中英

R - 組內聚類(K 均值)

[英]R - Clustering (K-means) within groups

我需要幫助將我的數據聚類到指定的組中......

我有以下 dataframe:

# Generate data frame
set.seed(1)
df1 <- data.frame(
  start.x = sample(1:20),
  start.y = sample(1:20),
  end.x = sample(1:20),
  end.y = sample(1:20)
)

我使用 K-means 對其進行分組:

# Group using K-means
groups <- kmeans(df1[,c('start.x', 'start.y', 'end.x', 'end.y')], 4)
df1$group <- as.factor(groups$cluster)

現在,我想再次使用 K-means 將其聚類到我剛剛創建的組中,並將結果分配給 dataframe 中的新列。

有誰知道如何做到這一點或有更短的方法來同時完成這兩個步驟。

謝謝...

我們可以使用第一組來拆分數據並將kmeans僅應用於數據子集。 不過請確保使用正確的k數,因為這取決於第一個組的創建方式。

library(dplyr)
library(purrr)

df1 %>%
  group_split(group = kmeans(.[,c('start.x', 'start.y', 'end.x', 'end.y')], 
                             4)$cluster) %>%
   map_df(~.x %>% mutate(new_group = 
     kmeans(.x[,c('start.x', 'start.y', 'end.x', 'end.y')], 2)$cluster))

在 base R 中,您可以使用by which 進行拆分、應用和組合操作。

df1$new_group <- unlist(by(df1, df1$group, function(x) 
        kmeans(x[,c('start.x', 'start.y', 'end.x', 'end.y')], 2)$cluster))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM