【发布时间】:2017-08-14 08:08:52
【问题描述】:
我正在研究一种聚类算法,我需要根据它们在数据中的频率对值进行聚类。这将指示哪些值不重要,并将被视为比单个实体更大的集群的一部分。
我是数据科学的新手,想知道实现这一目标的最佳算法/方法。
例如,我有以下数据集。第一列是属性值,第二列表示它们的出现频率。
Value = [1, 1.5, 2, 3, 4, 6, 8, 16, 32, 128]
Frequency = [207, 19, 169, 92, 36, 7, 12, 5, 2, 2]
Here, Frequency[i] corresponds to Value[i]
频率可以被认为是一个值的重要性。表示值重要性的另一件事是数组中元素之间的距离。例如,与 32 或 128 相比,1.5 并没有那么重要,因为它具有更接近的元素,例如 1 和 2。
在对这些值进行聚类时,我需要查看值之间的距离以及它们出现的频率。上述问题的可能输出是
Clust_value = [(1, 1.5), 2, 3, 4, (6, 8), 16, (32, 128)]
这不是最好的集群,而是一种可能的答案。我需要知道解决这个问题的最佳算法。
首先,我尝试在不考虑值数组中元素分布的情况下解决这个问题,但在某些情况下给出了错误的答案。我们再次尝试使用均值和中位数对值进行聚类,但没有成功。
我们尝试比较邻居的频率,然后将这些值合并到一个集群中。我们还尝试找到 values 数组元素之间的最小距离,然后如果它们的差异大于阈值,则将它们放入一个集群中,但如果它们的频率较低,则无法将值集群。我也在网上寻找了聚类算法,但没有得到任何与上面定义的问题相关的有用资源。
有没有更好的方法来解决这个问题?
【问题讨论】:
-
This is not the best cluster but one possible answer.- 问题似乎没有得到很好的定义。例如。为什么在这里聚类 32, 128 但单独留下 16 比例如更好聚类 16 和 32? -that gave wrong answers- 你如何准确地确定什么是对还是错?对于仅基于频率的聚类,我可能会建议使用 Shannon-Fano 或 Huffman 编码。 -
@500-InternalServerError 我无法正确解决问题。问题是来自值数组的集群取决于两件事 - 它们的频率和节点之间的距离。 32、128组成的簇基本构成频率为4的簇。如果它与 16 结合,则集群频率将为 7,而 128 将为 2。因此,为了在集群中实现可比频率,32 与 128 而不是 16 配对,但是 32 比 128 更接近 16。希望我足够清楚现在!
标签: algorithm statistics cluster-analysis frequency similarity