Nbclust Kmeans 错误的聚类中心多于不同的数据点

eod*_*eod 5 r

当我想预测具有 3120 个观测值和 40 个变量的二进制矩阵中的簇数时,我在 Nbclust (method = "kmeans") 中遇到错误。矩阵维度为:

size(mtrx)
3120 40
class(mtrx)
'matrix'
Run Code Online (Sandbox Code Playgroud)

代码行是:

number_of_clusters<-NbClust(data=mtrx, diss=NULL, distance = "euclidean",
                            min.nc=2, max.nc=1600, method = "kmeans",
                            index = "alllong")
Run Code Online (Sandbox Code Playgroud)

错误信息是:

Error in kmeans(jeu, max_nc): more cluster centers than distinct data points.
Run Code Online (Sandbox Code Playgroud)

当我使用时,错误仍然存​​在distance = "binary"。如果我选择任何其他方法类型,则不会出现错误。

我在这里有点困惑。我想max.nc应该是这样3119。有什么帮助吗?

编辑:
此错误与 NbClust 包无关,它来自 kmeans 函数。线索就在“独特”这个词中,这很有趣,但我没听懂那部分。我想图片比文字更能说明一切。所以事情是这样的:

让我们从正确的方法开始。在本例中,我有一个至少包含 3 个不同行的数据集,并且我要求在 kmeans 中提供 3 个初始中心:

Vector<-c(2,2,2,2,2,2,20,10,500,300,400,2)
MATRIX<-matrix(Vector,nrow=4,ncol=3,byrow=TRUE)
print(MATRIX)
km<-kmeans(MATRIX,centers=3)  
    [,1] [,2] [,3]
[1,]   2    2    2
[2,]   2    2    2
[3,]  20   10  500
[4,] 300  400    2
Run Code Online (Sandbox Code Playgroud)

没有错误,一切正常。

现在,让我们浏览一下包含 <3 个不同行的数据集:

Vector<-c(2,2,2,2,2,2,2,2,2,500,300,400)
MATRIX<-matrix(Vector,nrow=4,ncol=3,byrow=TRUE)
print(MATRIX)
km<-kmeans(MATRIX,centers=3) 
    [,1] [,2] [,3]
[1,]   2    2    2
[2,]   2    2    2
[3,]   2    2    2
[4,] 500  300  400
Error in kmeans(MATRIX, centers=3):
  more cluster centers than distinct data points.
Run Code Online (Sandbox Code Playgroud)

现在错误很明显,我有 2 个不同的行,我要求 3 个初始中心。

希望这会对某人有所帮助!