对于给定的x位置,通过一对3点聚类?

时间:2014-03-25 12:35:42

标签: r

如果我有一组具有不同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)已经在做,通过几个点对进行聚类,通过图形可视化找到最具发生效果的对?

非常感谢任何帮助。

1 个答案:

答案 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?