美文网首页
常见距离公式 numpy 实现

常见距离公式 numpy 实现

作者: 走在成长的道路上 | 来源:发表于2018-11-19 16:31 被阅读0次

    在使用 keras 或者使用 tf 做深度学习时,通常有些内容需要计算距离来作为判定相似程度的依据,如下列举一些常见的距离公式:

    def minkowski_distance(vec1, vec2, p=3):
        """
        闵氏距离
        当p=1时,就是曼哈顿距离
        当p=2时,就是欧氏距离
        当p→∞时,就是切比雪夫距离
        :param vec1:
        :param vec2:
        :param p:
        :return:
        """
        # return sum([(x - y) ** p for (x, y) in zip(vec1, vec2)]) ** (1 / p)
        return np.linalg.norm(vec1 - vec2, ord=p)
    
    def cosine_distance(vec1, vec2):
        """
        夹角余弦
        :param vec1:
        :param vec2:
        :return:
        """
        vec1_norm = np.linalg.norm(vec1)
        vec2_norm = np.linalg.norm(vec2)
        return vec1.dot(vec2) / (vec1_norm * vec2_norm)
    
    def euclidean_distance(vec1, vec2):
        """
        欧氏距离
        :param vec1:
        :param vec2:
        :return:
        """
        # return np.sqrt(np.sum(np.square(vec1 - vec2)))
        # return sum([(x - y) ** 2 for (x, y) in zip(vec1, vec2)]) ** 0.5
        return np.linalg.norm(vec1 - vec2, ord=2)
    
    def manhattan_distance(vec1, vec2):
        """
        曼哈顿距离
        :param vec1:
        :param vec2:
        :return:
        """
        # return np.sum(np.abs(vec1 - vec1))
        return np.linalg.norm(vec1 - vec2, ord=1)
    
    def chebyshev_distance(vec1, vec2):
        """
        切比雪夫距离
        :param vec1:
        :param vec2:
        :return:
        """
        # return np.abs(vec1 - vec2).max()
        return np.linalg.norm(vec1 - vec2, ord=np.inf)
    
    def hamming_distance(vec1, vec2):
        """
        汉明距离
        :param vec1:
        :param vec2:
        :return:
        """
        return np.shape(np.nonzero(vec1 - vec2)[0])[0]
    
    def jaccard_similarity_coefficient(vec1, vec2):
        """
        杰卡德距离
        :param vec1:
        :param vec2:
        :return:
        """
        return dist.pdist(np.array([vec1, vec2]), 'jaccard')
    

    相关文章

      网友评论

          本文标题:常见距离公式 numpy 实现

          本文链接:https://www.haomeiwen.com/subject/kjjafqtx.html