如果我有一组具有不同y位置(A,B,C)的点,每个点具有相同的x坐标。是否有可能将这3个点集合在一起而不是单独集中?
我希望在给定的样本中看到这一组3点的出现,并看看最常见的集合(A,B,C)。
我已经看到大多数聚类算法可以聚集给定位置(x,y)的点,但不能聚合给定x坐标的几个点。
例如,如果我有以下
X A B C
1 0.7 0.1 0.2
2 0.3 0.4 0.1
3 0.4 0.5 0.1
4 0.7 0.1 0.2
5 0.7 0.1 0.2
6 0.2 0.1 0.5
位置x:1,4和5应该聚集在一起,因为它们具有相同的集合(A,B,C)=(0.7,0.1,0.2)。
是否有任何算法或工具(R)已经在做,通过几个点对进行聚类,通过图形可视化找到最具发生效果的对?
非常感谢任何帮助。
答案 0 :(得分:1)
如果您希望将实例制成表格,那么就是:
tab <- table(sprintf("%s:%s:%s", df1$A, df1$B, df1$C))
which.max(tab)
sort(tab, decreasing=TRUE)
会为您提供最频繁的组合(如果您需要继续以编程方式使用它们,可以使用strsplit
分隔各个组件。
如果您正在寻找群集,在找到类似距离的意义上,那么您可以使用
dis <- dist(as.matrix(df1[[c("A","B","C")]])
clust <- hclust(dis)
和dis
将告诉你所有的成对距离(找到零来获得相同的),而clust将根据A:c
如果没有回答这个问题,你可能需要澄清一下。您在文本中说出相同的x坐标之类的内容,但没有一行具有相同的 X 值。在 y坐标 / 位置 / (A,B,C)之间交替切换是相当不同寻常的。
如果不知道要强调哪些功能,很难建议可视化。可能是一个多维缩放图,其中每个节点代表具有相同(A,B,C)三元组的所有x,然后邻居是具有最接近(A',B',C')值的其他X?