基于线性接近度的聚类点
Posted
技术标签:
【中文标题】基于线性接近度的聚类点【英文标题】:Clustering points based on their linear proximity 【发布时间】:2015-10-06 07:04:34 【问题描述】:我有一些数据,我想根据它们的线性接近度将它们分成两组(即,几乎共线的点被组合在一起)。这是我的数据示例:
data <- data.frame(Y=c(seq(0,10,1), seq(0,4,0.5)), X= c(0:10,0:8))
plot(jitter(data$Y), jitter(data$X), pch=19)
我想要得到的结果是这样的:
显然,常规(hierarchical
或 K-means
)聚类不起作用。此外,我尝试了spectral
聚类也没有提供好的结果。
非常感谢任何有关如何执行此操作的建议(使用clustering
、regression
或其他方法)!谢谢
【问题讨论】:
你知道先验你在寻找多少个集群吗? 是的,我希望将它们分成两个集群。 【参考方案1】:你可以试试mclust
这个包
## Add a little noise to the lines
data <- data.frame(Y=c(seq(0,10,1), seq(0,4,0.5))+rnorm(20,0,0.1), X= c(0:10,0:8))
library(mclust)
fit <- Mclust(data)
plot(fit) # classification
【讨论】:
【参考方案2】:转换您的数据。
尝试对变量 z = x / y
进行聚类/分析
【讨论】:
嗯,0,0 处的点属于两者。任何聚类都很难“正确”分配它们,因为它是模棱两可的……但是诸如 mclust 之类的聚类方法很可能会决定,例如接近 0 的点为一簇,其余为第二簇。运行它们两次,你可能会得到非常不同的结果。另一方面,数据转换方法是稳定的,您可能可以找到一个很好的理论。 我也要试试你的方法。谢谢。以上是关于基于线性接近度的聚类点的主要内容,如果未能解决你的问题,请参考以下文章