Algorithm 以距离矩阵为输入的聚类[评估]算法

Algorithm 以距离矩阵为输入的聚类[评估]算法,algorithm,math,cluster-analysis,Algorithm,Math,Cluster Analysis,有人能推荐一些可以使用距离矩阵作为输入的聚类算法吗?还是基于距离矩阵来评估聚类“优度”的算法 此时,我正在使用Kruskal算法()的修改,将数据分成两个集群。但它有一个问题。当数据没有明显的簇时,算法仍将创建两个簇,其中一个簇包含一个元素,另一个簇包含所有其余元素。在本例中,我希望一个集群包含所有元素,另一个集群为空 是否有任何算法能够进行这种类型的聚类 是否有任何算法可以估计聚类的效果,甚至更好地估计数据中有多少个聚类 这些算法应该只使用距离(相似性)矩阵作为输入 或者可以评估 聚类的“善”

有人能推荐一些可以使用距离矩阵作为输入的聚类算法吗?还是基于距离矩阵来评估聚类“优度”的算法

此时,我正在使用Kruskal算法()的修改,将数据分成两个集群。但它有一个问题。当数据没有明显的簇时,算法仍将创建两个簇,其中一个簇包含一个元素,另一个簇包含所有其余元素。在本例中,我希望一个集群包含所有元素,另一个集群为空

是否有任何算法能够进行这种类型的聚类

是否有任何算法可以估计聚类的效果,甚至更好地估计数据中有多少个聚类

这些算法应该只使用距离(相似性)矩阵作为输入

或者可以评估 聚类的“善”也是如此 基于距离矩阵

KNN应该有助于评估聚类分配的“优点”。以下是方法:

给定一个距离矩阵,每个点根据其所属的簇(其“簇标签”)进行标记:

  • 根据k-最近邻分类隐含的聚类标签测试每个点的聚类标签
  • 如果k-最近邻表示另一个聚类,则该分类点会降低该聚类的总体“优度”评级
  • 将每个像素的“良好评级”贡献相加,得到整个集群的总体“良好评级”
  • 与k-means聚类分析不同,您的算法将返回关于分类不良点的信息。您可以使用该信息将某些点重新分配给新群集,从而提高群集的整体“优点”

    由于该算法不知道簇质心的位置,因此也不知道全局簇密度,确保局部和全局密集的集群的唯一方法是对k值范围运行算法,并找到一种在k值范围内使优度最大化的安排

    对于大量的点,您可能需要优化此算法;可以使用哈希表来跟踪相对于每个点的最近点。否则,该算法将需要相当长的时间来计算

    或者可以评估 聚类的“善”也是如此 基于距离矩阵

    KNN应该有助于评估聚类分配的“优点”。以下是方法:

    给定一个距离矩阵,每个点根据其所属的簇(其“簇标签”)进行标记:

  • 根据k-最近邻分类隐含的聚类标签测试每个点的聚类标签
  • 如果k-最近邻表示另一个聚类,则该分类点会降低该聚类的总体“优度”评级
  • 将每个像素的“良好评级”贡献相加,得到整个集群的总体“良好评级”
  • 与k-means聚类分析不同,您的算法将返回关于分类不良点的信息。您可以使用该信息将某些点重新分配给新群集,从而提高群集的整体“优点”

    由于该算法不知道簇质心的位置,因此也不知道全局簇密度,确保局部和全局密集的集群的唯一方法是对k值范围运行算法,并找到一种在k值范围内使优度最大化的安排


    对于大量的点,您可能需要优化此算法;可以使用哈希表来跟踪相对于每个点的最近点。否则,该算法将花费相当长的时间进行计算。

    可用于估计簇数的一些方法有:


    一些可用于估计集群数量的方法有:


    scipy.cluster.hierarchy运行3个步骤,就像Matlab(TM)一样 :

    在这里,
    链接
    可能是一个修改过的Kruskal,不知道。 这 (ahem)使用上述方法。
    作为聚类的一种度量,半径=rms到聚类中心的距离是快速而合理的, 用于二维/三维点

    告诉我们您的Npt、ndim、ncluster、hier/flat?
    群集是一个较大的区域,一个大小不适合所有区域。

    scipy.cluster.hierarchy运行3个步骤,就像Matlab(TM) :

    在这里,
    链接
    可能是一个修改过的Kruskal,不知道。 这 (ahem)使用上述方法。
    作为聚类的一种度量,半径=rms到聚类中心的距离是快速而合理的, 用于二维/三维点

    告诉我们您的Npt、ndim、ncluster、hier/flat?
    聚类是一个较大的区域,一个大小不能适合所有区域。

    K-最近邻()是一种简单有效的聚类算法。只要稍加调整,它就会满足您的需要。K最近邻——在原点中,是分类算法(我不知道如何在聚类中使用它)。其中最著名的是K-均值聚类。()据我所知,在原始形式中,我需要这个算法的坐标,我没有。我如何调整它,使其与距离矩阵一起工作?据我所知,k-means聚类是一种聚类分析算法,而不是聚类算法本身。K-均值是分析聚类优度的好方法。由于k-means聚类问题是NP难问题,您需要使用其他一些算法来近似理想的k-means聚类。劳埃德算法(),不会
    Y = scipy.spatial.distance.pdist( pts )  # you have this already
    Z = hier.linkage( Y, method )  # N-1
    T = hier.fcluster( Z, ncluster, criterion=criterion )