当我想预测具有 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 个初始中心。
希望这会对某人有所帮助!
| 归档时间: |
|
| 查看次数: |
2395 次 |
| 最近记录: |