常见距离公式 numpy 实现

简介: 在使用 keras 或者使用 tf 做深度学习时,通常有些内容需要计算距离来作为判定相似程度的依据,如下列举一些常见的距离公式:def minkowski_distance(vec1, vec2, p=3): """ 闵氏距离 ...

在使用 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')
目录
相关文章
|
3月前
|
数据可视化 Python
Python 绘制误码率对比折线图,纵坐标是10次幂,即求对数
本文介绍了如何在Python中绘制误码率(BER)的对比折线图,特别指出纵坐标使用10次幂即对数形式来表示误码率,横坐标为信噪比(SNR),并提供了相应的绘图函数和使用示例。
44 2
|
6月前
L1-048 矩阵A乘以B
L1-048 矩阵A乘以B
51 0
7-93 矩阵A乘以B
7-93 矩阵A乘以B
127 0
|
机器学习/深度学习
(模拟)(矩阵坐标表示)1219. 移动距离
(模拟)(矩阵坐标表示)1219. 移动距离
94 0
三角函数中的正弦、余弦、正切、余切、正割、余割函数性质及常用公式
三角函数中的正弦、余弦、正切、余切、正割、余割函数性质及常用公式
573 0
三角函数中的正弦、余弦、正切、余切、正割、余割函数性质及常用公式
|
Python
numpy:矩阵的元素选取
numpy:矩阵的元素选取
78 0
|
人工智能 开发者
矩阵的秩 | 学习笔记
快速学习矩阵的秩
矩阵的秩 | 学习笔记
|
数据挖掘 Python
Python | Numpy:详解计算矩阵的均值和标准差
对于 CRITIC 权重法而言,在标准差一定时,指标间冲突性越小,权重也越小;冲突性越大,权重也越大;另外,当两个指标间的正相关程度越大时,(相关系数越接近1),冲突性越小,这表明这两个指标在评价方案的优劣上反映的信息有较大的相似性。
418 0
Python | Numpy:详解计算矩阵的均值和标准差
|
算法 大数据
【scikit-learn 估计器】 距离方法
【scikit-learn 估计器】 距离方法
119 0
【scikit-learn 估计器】 距离方法