我有以下热图的示例图像(我有数百张图片......现在,它会在以后增长):
使用我的人眼,我说热图1,3和4彼此相似,或者3和4彼此最相似,我不确定。
我希望能够根据模式和强度将彼此最相似的热图数字分组到不同的组中。
例如,每个热图包含24行和5列(行表示时间,列表示要素)。每列中的每种颜色代表0到1之间的数字。热图3和4的第1列中的图案和强度与其他热图相比更为相似。但是,我想比较每个热图的整体模式和强度,而不是查看每一列。
我以为我会使用kmeans聚类,但无法找到任何可以帮助我实现我想要的信息。根据我的理解,我的搜索最终会出现层次聚类,这对我没有帮助。
然后,我找到了一些有关图像散列的信息。阅读一下,看起来它可以帮助我解决我的问题。
在我开始阅读和进一步学习之前,我有几个问题/困惑,我想解决这个问题,这样我可以进一步投入时间学习和阅读更好的方法来解决这个问题
我的问题/困惑:
欢迎任何其他方法。
答案 0 :(得分:0)
您可以将此问题视为数据点的聚类问题,每个数据点都是24 x 5 = 120维度(或要素)。确保以相同的方式展平每个数据点(row1row2row3 ... concatenated或col1col2col3 ...连接,只选择一个并保持一致)。您可以为每个数据点采用这120个特征,并使用K-means或任何一种层次聚类族方法或任何其他聚类方法对其进行聚类(例如,散列也可以是一种类型的聚类,其中相似性由散列函数确定) 。
对于相似性度量,您可以尝试欧几里德距离或余弦相似度作为度量(或任何其他例如对称KL发散等)。余弦相似度+ K-means变为球面K均值,并且非常适用于文档聚类(其中doc中的每个单词都被视为一个特征)。
为了选择簇的数量(即K-means中的K或层次聚类中的树形图的高度),您可以使用肘方法https://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set#The_elbow_method
希望有所帮助。
答案 1 :(得分:0)
在对任何数据执行群集之前,您应该清楚自己的相似性指标是什么。换句话说,是什么让两张热图相似?此外,你应该问问自己是什么让热图非常不同。您可能还想向自己说明群集对您的案例意味着什么。回答完这些问题后,您可以选择适当的指标和聚类方法。 (人们通常不会经历这个过程,要么是因为他们不知道足够的聚类方法,要么是因为他们很懒惰。或者有时他们只是不想做出任何关于什么类型的假设的假设。他们得到的结果。然后他们做的是尝试一些在他们的编程语言中有实现的聚类方法,希望这些方法能满足他们的需求)
以下是您在选择群集方法之前可能想要问自己的一些问题的列表:
回答这些问题可以帮助您,例如,回答以下问题:
(选择一种聚类方法也取决于它的复杂性,它在大量数据上的性能,它是否可以并行,是否可以给你层次聚类,是否它的结果是否允许新热图的简单分类,以及更多)