在R-trouble绘图集群中观察了一百万个观测值

Pat*_*bug 5 plot r machine-learning k-means rstudio

我试图用超过一百万行进行KMeans聚类,有4个观察值,都是数字.我使用以下代码:

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

可以看出,我想将我的数据分成两个集群.该对象km正在填充,但我无法绘制结果.这是我用来绘制的代码:

plot(kmeansdf,col=km$cluster)
Run Code Online (Sandbox Code Playgroud)

这段代码给了我以下错误:

Error in plot.new() : figure margins too large
Run Code Online (Sandbox Code Playgroud)

我尝试在线研究,但找不到解决方案,我尝试在命令行上工作,但仍然得到相同的错误(我现在正在使用RStudio)

任何有助于解决错误的帮助都将受到高度赞赏.TIA.

jlh*_*ard 2

当我在具有 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)
Run Code Online (Sandbox Code Playgroud)

使用 1% 的样本(50,000 行)运行同样的事情可以得到这个结果。

在此输入图像描述