[英]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.