聚类此数据的最佳算法是什么

what is the best algorithm to cluster this data

谁能帮我找到一个好的聚类算法,在不定义聚类数量的情况下将其聚类成 3 个聚类。

我已经尝试了很多基本形式的算法。.似乎没有什么能正常工作。

clustering = AgglomerativeClustering().fit(temp)

我也以同样的方式尝试了 dbscan 和 kmeans.. 只是使用了 sklean 的指南。我无法得到预期的结果。

我的原始数据集是一维数字列表..但数字的顺序很重要,因此生成了如下所示的二维列表。

temp = []
for i in range(len(avgs)):
    temp.append([avgs[i], i+1])
clustering = AgglomerativeClustering().fit(temp)

在绘制导航时,我使用了一个类似的范围作为 y 轴

ax2.scatter(range(len(plots[i])), plots[i], c=np.random.rand(3,))

数据的顺序很重要,所以这需要聚类成3。可能还有一些其他数据集的数据非常好,所以结果只需要一个聚类。

Link to the list if someone want to try

所以我尝试使用步骤检测并根据您的回答得到了以下图像。但是我怎样才能找到峰值的值..如果我得到最大值我可以得到其中一个..但是如何得到它的其余部分..第二个最大值不是答案,因为旁边的那个max是第二个max

您的数据不是二维坐标。所以不要选择为此设计的算法!

相反,您的数据似乎是顺序的或时间序列的。

您要使用的是变化点检测算法,能够检测一系列平均值的变化。

一个简单的方法是计算后面 10 个点的总和减去前面 10 个点的总和,然后寻找这条曲线的极值。