R 二维矩阵聚类

R 二维矩阵聚类,r,matrix,cluster-computing,k-means,R,Matrix,Cluster Computing,K Means,我试图对由28x28个值矩阵表示的图像进行聚类。这些矩阵最初存储在列表中。但是kmeans不接受输入列表,因此我尝试制作一个长度为的3D数组(mylist)x28x28大小kmeans现在将单个值聚集到每个矩阵中,而不是矩阵本身。如何实现矩阵聚类 小代码示例: m1 <- array(rep(runif(64, 0.0, 1.0),64),dim=c(8,8)) m2 <- array(rep(runif(64, 0.0, 1.0),64),dim=c(8,8)) m3 <-

我试图对由28x28个值矩阵表示的图像进行聚类。这些矩阵最初存储在列表中。但是
kmeans
不接受输入列表,因此我尝试制作一个长度为
的3D数组(mylist)x28x28
大小
kmeans
现在将单个值聚集到每个矩阵中,而不是矩阵本身。如何实现矩阵聚类

小代码示例:

m1 <- array(rep(runif(64, 0.0, 1.0),64),dim=c(8,8))
m2 <- array(rep(runif(64, 0.0, 1.0),64),dim=c(8,8))
m3 <- array(rep(runif(64, 0.0, 1.0),64),dim=c(8,8))
list1 <- list(m1,m2,m3)

# This doesn't work
clusters <- kmeans(list1, 2)

# Transform to 3D array
library(abind)
array1 <- do.call(abind, c(list1, along = 0))

# This doesn't cluster matrices, but their elements
clusters <- kmeans(array1, 2)

m1什么是
m1
?它是图像吗?根据
?kmeans
,函数将只接受矩阵。为了进行这种比较,您可能需要从数据中构造一个矩阵。两个想法:1。将每个矩阵转换为向量并
rbind
。然后将其馈送到
kmeans
。2.找到一个特定的函数,将以您描述的方式存储的图像映射到一个一维向量,然后使用该函数,然后
rbind
@Headpoint它基本上是由
imageData(readImage(img))返回的矩阵,可以显示它。聚类图像对您意味着什么?您知道kmeans的集群标准吗?对于矩阵来说,这是如何计算的呢?@ayshelina,在这种情况下,它们应该是成行的——每个图像都是一个观察/样本——如果你试图将图像分组的话。什么是
m1
?它是图像吗?根据
?kmeans
,函数将只接受矩阵。为了进行这种比较,您可能需要从数据中构造一个矩阵。两个想法:1。将每个矩阵转换为向量并
rbind
。然后将其馈送到
kmeans
。2.找到一个特定的函数,将以您描述的方式存储的图像映射到一个一维向量,然后使用该函数,然后
rbind
@Headpoint它基本上是由
imageData(readImage(img))返回的矩阵,可以显示它。聚类图像对您意味着什么?您知道kmeans的集群标准吗?对于矩阵来说,这是如何计算的呢?@ayshelina,在这种情况下,它们应该是成行的——每个图像都是一个观察/样本——如果你试图将图像分组的话。