我有一些二维数据(x,y),需要识别出x方向上许多数据点彼此靠近的位置。数据中有三个明显的聚类,这些聚类的x值都很接近,而其余数据并不属于这些聚类。我原本打算使用k-means聚类算法,但该算法似乎适用于对所有数据进行聚类,而我只想标记出数据中明显的三个聚类,并将剩余数据标记为正常数据。
这些数据存储在不同的csv文件中,我会先处理这些文件,然后将它们读入一个大的数据框。在处理数据的过程中,我已经过滤掉了处理后数据长度超过一定阈值的文件,但这显然有时会导致聚类的一部分或正常数据被排除在文件之外。
回答:
你可以尝试使用DBSCAN,它允许将某些点分类为“噪声”,这似乎是你想要的。scikit项目中有一个与之相关的层次版本,称为hdbscan
。
通过Google可以找到各种文档,描述了k-means聚类的替代方案。hdbscan
的文档中也很好地描述了比较替代方案的方法。