Answers:
也许您为问题使用了错误的算法。
K-均值对预处理非常敏感。如果一个属性的规模比其他属性大得多,它将主导输出。这样您的输出将有效为一维
无论您做什么,都需要通过除SSQ之类的数字之外的其他方法来验证结果。相反,请考虑可视化。
可视化还可以告诉您,数据中可能只有一个群集。
一种方法是手动检查群集中的成员是否有特定的k,以查看分组是否有意义(它们是否可区分?)。这可以通过列联表和有条件的手段来完成。对各种k执行此操作,然后可以确定合适的值。
一种不太主观的方法是使用Silhouette值:
/programming/18285434/how-do-i-choose-k-when-using-k-means-clustering-with-silhouette-function
可以使用您喜欢的软件包来计算。从链接:
该方法只是将组内相似度与最接近组相似度进行比较。如果到同一集群的其他成员的任何数据成员平均距离都比到某些其他集群成员的平均距离高,则此值为负,并且集群不成功。另一方面,silhuette值接近1表示成功的聚类操作。0.5不是用于聚类的精确度量。
contingency tables and conditional means
这是进一步的神秘。我应该怎么做才能“主观地”得出一个好k?
通常,您可以考虑:
我们可以使用NbClust包来找到k的最佳值。它提供了30个用于确定聚类数量的指标,并提出了最佳结果。
NbClust(data = df,distance =“ euclidean”,最小nc = 2,max.nc = 15,方法=“ kmeans”,index =“ all”)