我想确定使用NbClust包进行聚类的最佳k。我的数据包含连续和分类变量,所以我使用相似矩阵,该矩阵是使用群集包中的daisy()计算的。我用下面的代码:
res.nb <- NbClust(gower_dist_gender, min.nc = 1,
max.nc = 5,method = "complete", index ="all")
遇到这个错误:
The TSS matrix is indefinite. There must be too many missing values. The
index cannot be calculated.
问题是什么?我该如何解决? 另外考虑当我将索引设置为“轮廓”时,没有出现任何问题并将最佳k返回为2.但是我想使用index =“all”来确保根据大多数索引获得最佳k的结果(当索引设置为“all”时,26个索引被视为索引,结果显示多数投票的索引数量为k)。 所以问题是为什么运行上面的代码将索引设置为“all”会遇到之前提到的错误?
非常感谢任何一点帮助。
答案 0 :(得分:0)
你对NbClust的电话是错误的。
请参阅有关如何使用距离矩阵而不是数据矩阵的文档:
数据
矩阵或数据集。
迪斯
要使用的相异矩阵。默认情况下,diss = NULL,但如果被相异矩阵替换,则距离应为“NULL”。
距离
用于计算相异度矩阵的距离度量。这必须是以下之一:“euclidean”,“maximum”,“manhattan”,“canberra”,“binary”,“minkowski”或“NULL”。默认情况下,distance =“euclidean”。 如果距离为“NULL”,则应由用户给出相异度矩阵(diss)。如果距离不是“NULL”,则相异度矩阵应为“NULL”。
使用data = NULL,distance = NULL并设置diss。