【发布时间】:2020-02-17 09:43:09
【问题描述】:
谁能帮我找到一个很好的聚类算法,将它聚类成 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 是第二个最大值
【问题讨论】:
-
你为什么要在没有评论的情况下关闭??
-
问题是您希望如何对数据进行聚类。您将数据绘制为 2D 并说您想要 3 个集群。另一方面,您说您的数据本质上只是一维的,而第二维没有任何意义。那么,您想将数据聚集成一维还是二维?它看起来像 2D,但也似乎没有意义,因为您的数据只是 1D 并且图中明显的集群结构仅来自您添加
x = range(len(data))的事实。您也可以使用x = np.zeros(len(data)),情况会大不相同。 -
那么您可以将数据视为 2D,然后 range(len(data)) 将生成数据的顺序,这很重要.. 所以现在编辑问题
-
@a_guest 现在有什么问题吗?
-
2D 聚类在这里不是正确的方法。您有一个要分段的时间序列。看看步数检测。
标签: python scikit-learn cluster-analysis unsupervised-learning