基于线性接近度的聚类点

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) 

我想要得到的结果是这样的:

显然,常规(hierarchicalK-means)聚类不起作用。此外,我尝试了spectral 聚类也没有提供好的结果。

非常感谢任何有关如何执行此操作的建议(使用clusteringregression 或其他方法)!谢谢

【问题讨论】:

你知道先验你在寻找多少个集群吗? 是的,我希望将它们分成两个集群。 【参考方案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 的点为一簇,其余为第二簇。运行它们两次,你可能会得到非常不同的结果。另一方面,数据转换方法是稳定的,您可能可以找到一个很好的理论。 我也要试试你的方法。谢谢。

以上是关于基于线性接近度的聚类点的主要内容,如果未能解决你的问题,请参考以下文章

以列表格式获取 KMeans 之后的聚类点

第一节:基于网格的聚类算法概述

岩体结构面组蚁群ATTA聚类算法

基于密度的聚类方法

聚类:层次聚类基于划分的聚类(k-means)基于密度的聚类基于模型的聚类

基于网格的聚类算法CLIQUE