2014-01-24 34 views
0

我正在尝试聚簇数组中的3D数据。它实际上是来自3D图像的信息,因此此数组表示具有x,y,z值的单个图像。我想知道什么样的体素倾向于聚集在一起。数组看起来像这样。R中的聚类3D数组

dim(x) 
[1] 34 34 34 1 

我该怎么办?我试图用scatterplot3d绘图,但它没有奏效。

+2

那你试试?告诉我们你的代码。 –

+0

这不起作用(不是这个集群):scatterplot3d(x [,,, 1])和dist(x [,,, 1])没有完成。 – user3141121

+0

您的矩阵似乎有4个维度(34,34,34,1)。最后维度的含义是什么? – jlhoward

回答

2

所以这是一个尝试群集。如果你想得到更好的答案,你应该提供数据。

library(reshape2) # for melt(...) 
library(rgl)  # for plot3d(...) 

set.seed(1)   # to create reproducible sample 

# 3D matrix, values clustered around -2 and +2 
m  <- c(rnorm(500,-2),rnorm(500,+2)) 
dim(m) <- c(10,10,10) 
v  <- melt(m, varnames=c("x","y","z")) # 4 columns: x, y, z, value 
# interactive 3D plot, coloring based on value 
plot3d(v$x,v$y,v$z, col=1+round(v$value-min(v$value)),size=5) 
# identify clusters 
v  <- scale(v)       # need to scale or clustering will fail 
v  <- data.frame(v)      # need data frame for later 
d <- dist(v)        # distance matrix 
km <- kmeans(d,centers=2)     # kmeans clustering, 2 clusters 
v$clust <- km$cluster      # identify clusters 
# plot the clusters 
plot(z[1:4],col=v$clust)     # scatterplot matrix 
plot3d(v$x,v$y,v$z, col=v$clust,size=5)  # 3D plot, colors based in cluster 

主要想法是重塑你的3D矩阵为“长”的格式,列x,y,z和实际的矩阵值。所以现在x,y和z包含位置信息(这里是索引值1:10)。您需要对其进行缩放,以便value列和索引列的大小相同,否则集群会给您带来误导性的结果。