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.
当我在具有 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 行)运行同样的事情可以得到这个结果。
