Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python集群/查找类似的热图_Python_Image Processing_Machine Learning_Computer Vision_K Means - Fatal编程技术网

使用python集群/查找类似的热图

使用python集群/查找类似的热图,python,image-processing,machine-learning,computer-vision,k-means,Python,Image Processing,Machine Learning,Computer Vision,K Means,我有以下热图的示例图像(我有数百张这样的图像…现在,它将在以后增长): 用我的人眼,我会说热图1,3和4彼此相似,或者3和4彼此最相似,我不确定 我希望能够根据模式和强度将最相似的热图数据分成不同的组 例如,每个热图包含24行和5列(行表示时间,列表示要素)。每列中的每种颜色表示0到1之间的数字。第1列中热图3和4的模式和强度与其他热图相比更为相似。但是,我不想看每一列,而是想比较每个热图的整体模式和强度 我原以为我要使用kmeans集群,但找不到任何可以帮助我实现目标的信息。据我所知,

我有以下热图的示例图像(我有数百张这样的图像…现在,它将在以后增长):

用我的人眼,我会说热图1,3和4彼此相似,或者3和4彼此最相似,我不确定

我希望能够根据模式和强度将最相似的热图数据分成不同的组

例如,每个热图包含24行和5列(行表示时间,列表示要素)。每列中的每种颜色表示0到1之间的数字。第1列中热图3和4的模式和强度与其他热图相比更为相似。但是,我不想看每一列,而是想比较每个热图的整体模式和强度

我原以为我要使用kmeans集群,但找不到任何可以帮助我实现目标的信息。据我所知,我的搜索结果是相当多的层次聚类,这对我没有帮助

然后,我找到了一些关于图像哈希的信息。读一读,它似乎可以帮助我解决我的问题

在我进一步阅读和学习之前,我有几个问题/困惑需要解决,这样我可以进一步投入时间学习和阅读更好的方法来解决这个问题

我的问题/困惑:

  • 解决这个问题的最佳方法是什么?kmeans或image 散列
  • 甚至可以使用kmeans来实现这一点吗

  • 欢迎使用任何其他方法。

    您可以将此问题视为24 x 5=120维(或特征)数据点的群集问题。确保以相同的方式展平每个数据点(row1row2row3…连接或col1col2col3…连接,只选择一个并保持一致)。您可以为每个数据点获取这120个特征,并使用K-means或任何一种分层聚类族方法或任何其他聚类方法对其进行聚类(例如,哈希也可以是一种聚类类型,其中相似度由哈希函数确定)

    对于相似性度量,您可以尝试使用欧几里德距离或余弦相似性作为度量(或任何其他度量,例如对称KL散度等)。余弦相似性+K-均值变成球形K-均值,在文档聚类中非常流行(文档中的每个单词都被视为特征)

    要选择簇的数量(即K-means中的K或分层簇中的密度图高度),可以使用弯头方法


    希望这能有所帮助。

    在对任何数据执行聚类之前,您应该先弄清楚您的相似性度量是什么。换句话说,是什么使两个热图相似?此外,您应该问问自己是什么使热图非常不同。您可能还想向自己澄清集群对您的案例意味着什么。回答这些问题后,您可以选择适当的度量和聚类方法。(人们通常不会经历这个过程,要么是因为他们不知道足够的聚类方法,要么是因为他们懒惰。或者有时他们只是不想对他们得到的结果做任何假设。然后他们要做的是尝试一些在编程语言中实现的聚类方法,希望软管方法将满足其需求)

    下面列出了在选择聚类方法之前,您可能想问自己的一些问题:

    • 如果热图A是热图B的旋转,你会说它们相似吗
    • 如果热图A是热图B的反射,你会说它们相似吗
    • 如果热图A是热图B的移位版本(翻译),你会说它们相似吗
    • 如果热图A是热图B的负数,你会说它们相似吗
    • 值差为0.01的两个像素是否与值差为0.9的两个像素相同
    • 如果热图A和热图B相同,除了一个非常不同的像素外,你们会称它们为相似的吗?还是不同
    • 如果热图A的像素值都正好是热图B像素值的一半,你会说它们相似吗
    • 如果热图A和热图B非常相似,热图B和热图C非常相似,A和C也相似吗
    • 一个集群是否可以包含两个彼此不太相似的热图,前提是存在与这两个热图足够相似的第三个热图
    • 热图是否可以属于多个群集
    回答这些问题将帮助您,例如,回答以下问题:

    • 我应该使用模糊聚类还是硬聚类
    • 在所有热图的空间上,我的度量的公式是什么
    • 我的聚类方法依赖于三角形不等式吗
    • 我的聚类方法应该允许扩展的连续聚类(在特征空间中查看),其中每个成员仅与其邻居相似,还是所有聚类都需要彼此相似

    (选择聚类方法还取决于它的复杂性、它在大量数据上的性能、它是否能够并行、它是否能够为您提供分层聚类、它的结果是否允许对新的热图进行简单分类等等)

    定义相似性度量。。。什么是相似的?我用一个例子更新了我的问题。如果有帮助,请告诉我。