簡體   English   中英

Kmeans關於R中的一百萬個觀測值-故障圖群集

[英]Kmeans on a million observations in R - trouble plotting clusters

我正在嘗試用4個觀察值對所有超過一百萬行執行KMeans聚類。 我正在使用以下代碼:

kmeansdf<-as.data.frame(rbind(train$V3,train$V5,train$V8,train$length))
km<-kmeans(kmeansdf,2)

可以看出,我想將數據分為兩個集群。 km的對象正在填充,但是我無法繪制結果。 這是我用來繪制的代碼:

plot(kmeansdf,col=km$cluster)

這段代碼給了我以下錯誤:

Error in plot.new() : figure margins too large

我嘗試在線研究,但找不到解決方案,我也嘗試在命令行上工作,但仍然遇到相同的錯誤(目前我正在使用RStudio)

解決錯誤的任何幫助將不勝感激。 TIA。

當我在具有1e6行的df上運行您的代碼時,沒有收到相同的錯誤,但是系統掛起(10分鍾后中斷)。 創建每幀1e6點的散點圖矩陣可能太多了。

您可以考慮隨機抽樣:

# all this to create a df with two distinct clusters
set.seed(1)
center.1 <- c(2,2,2,2)
center.2 <- c(-2,-2,-2,-2)
n <- 5e5
f <- function(x){return(data.frame(V1=rnorm(n,mean=x[1]),
                                   V2=rnorm(n,mean=x[2]),
                                   V3=rnorm(n,mean=x[3]),
                                   V4=rnorm(n,mean=x[4])))}
df <- do.call("rbind",lapply(list(center.1,center.2),f))

km <- kmeans(df,2)         # run kmeans on full dataset
df$cluster <- km$cluster   # append cluster column to df

# sample is 10% of population (100,000 rows)
s  <- 1e5
df <- df[sample(nrow(df),s),]
plot(df[,1:4],col=df$cluster)

使用1%的樣本(50,000行)運行同一件事可以實現這一點。

在此處輸入圖片說明

暫無
暫無

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

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