我正在尝试对一组数据运行聚类分析,但无法找到适当的洞察力。例如:我有一组100个资源(列)中的50个变量(行)。每种资源都有一些作为优势的变量和另一些作为劣势的变量。因为每个资源可能只有10个变量作为强度,5个变量作为弱点,所以其他被遗漏的变量被标记为零。现在,我希望找到具有共同优势和劣势的资源集群。
我使用了分层聚类和k-means,通过转置dataset,使资源按行排列。k-means图显示了不同聚类之间的太多重叠,因此只使用层次聚类。我已经用+10替换了1(强度),用-10替换了2(弱点),看看集群算法是否有不同的响应,但仍然没有多大帮助。
有没有改进这个方法的意见和处理这个问题的替代方法?
非常感谢!
发布于 2016-09-01 14:30:07
下面的代码应该可以帮助您创建伪/二进制变量。
settingStrength <- as.numeric(setting.g == "Strength")
settingWeakness <- as.numeric(setting.g == "Weakness")我调用了专注于数据集的第3列和第4列的分层集群。不能将100个尺寸聚集在一起,然后在二维绘图中绘制它们。你必须首先进行降维。您选择分层聚类是正确的,因为k-means要求您知道聚类的数量,而您并不知道它们
CLUSTER <- hclust(dist(YOURDATA[, 3:4]))
plot(CLUSTER)然而,如果你使用k-means,你不应该只看图。在以下内容中,我选择了三组聚类。
KMEANSCLUSTER <- kmeans(YOURDATASET[,3:4],3)
KMEANSCLUSTER[1]现在您应该看到一个长度为15 (数据长度)的向量,值为1、2和3。变量属于集群"1“、集群"2”还是集群"3“的值。
发布于 2016-09-01 23:33:41
聚类二进制数据(以及低基数和分类虚拟编码数据)的问题在于它的二进制信息。
像k-means这样的方法是为连续变量设计的,其中平均值是有意义的,并且几乎每个距离都是唯一的。
对于二进制数据,一切往往会同时发生变化。您有许多重复的记录。您的记录在1个位置、2个位置等方面存在差异-在您的情况下,它们最多可以在30个位置不同,因此您有31个相似级别。
解决方案通常是从集群转移到项目集挖掘视图。这与聚类没有本质上的不同,但它始于一个二元假设:一个项目要么存在于事务中,要么不存在。然后,结果项集对应于频繁的组合,例如,具有A和B的行往往具有C。
尝试一下,频繁项集和关联规则。
https://stackoverflow.com/questions/39263708
复制相似问题