Итак, это попытка кластеризации. Вы действительно должны предоставить данные, если хотите получить лучший ответ.
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 и столбцы индекса были в одном масштабе, иначе кластеризация даст вам вводящие в заблуждение результаты.


person
jlhoward
schedule
25.01.2014