Python中计算相似度的方法详解

 更新时间:2025年02月19日 09:52:45   作者:mob64ca12d8c182  
计算相似度是许多机器学习和数据分析任务中的重要步骤,尤其是在推荐系统、文本分析和图像处理等领域,下面我们就来看看具体的实现方法吧

计算相似度是许多机器学习和数据分析任务中的重要步骤,尤其是在推荐系统、文本分析和图像处理等领域。相似度的计算有多种方法,每种方法适用于不同类型的数据。本文将探讨如何在 Python 中计算相似度,提供示例代码,并使用流程图和旅行图来表述我们的思路。

1. 相似度计算的基本概念

相似度是用来量化对象之间的相似程度的指标。相似度通常取值在 0 到 1 之间,值越接近 1 表示越相似。常见的相似度计算方法包括:

  • 余弦相似度(Cosine Similarity)
  • 欧氏距离(Euclidean Distance)
  • 曼哈顿距离(Manhattan Distance)
  • 杰卡德相似度(Jaccard Similarity)

2. 余弦相似度

余弦相似度是一种衡量两个非零向量夹角的相似度,计算公式为:

[ \text{cosine_similarity} = \frac{A \cdot B}{|A| |B|} ]

import numpy as np

def cosine_similarity(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

# 示例
vector_a = np.array([1, 2, 3])
vector_b = np.array([4, 5, 6])
similarity = cosine_similarity(vector_a, vector_b)
print(f'余弦相似度: {similarity}')

3. 欧氏距离

欧氏距离是计算两点之间的“直线”距离,计算公式为:

[ \text{Euclidean Distance} = \sqrt{\sum (a_i - b_i)^2} ]

示例代码

from scipy.spatial import distance

def euclidean_distance(a, b):
    return distance.euclidean(a, b)

# 示例
vector_a = np.array([1, 2, 3])
vector_b = np.array([4, 5, 6])
dist = euclidean_distance(vector_a, vector_b)
print(f'欧氏距离: {dist}')

4. 曼哈顿距离

曼哈顿距离计算两点在坐标轴上各分量的绝对差值的总和,计算公式为:

[ \text{Manhattan Distance} = \sum |a_i - b_i| ]

示例代码

def manhattan_distance(a, b):
    return np.sum(np.abs(a - b))# 示例
vector_a = np.array([1, 2, 3])


vector_b = np.array([4, 5, 6])
dist = manhattan_distance(vector_a, vector_b)
print(f'曼哈顿距离: {dist}')

5. 杰卡德相似度

杰卡德相似度用于测量有限样本集合之间的相似性,计算公式为:

[ \text{Jaccard Similarity} = \frac{|A \cap B|}{|A \cup B|} ]

示例代码

def jaccard_similarity(set_a, set_b):
    intersection = len(set_a.intersection(set_b))
    union = len(set_a.union(set_b))
    return intersection / union

# 示例
set_a = {1, 2, 3}
set_b = {3, 4, 5}
similarity = jaccard_similarity(set_a, set_b)
print(f'杰卡德相似度: {similarity}')

6. 流程分析

计算相似度的基本流程如下:

7. 旅行图

在数据分析的旅程中,我们可以将每个步骤视为旅途中的一个环节,以下是我们的数据计算之旅:

到此这篇关于Python中计算相似度的方法详解的文章就介绍到这了,更多相关Python计算相似度内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python轻松查到删除自己的微信好友

    python轻松查到删除自己的微信好友

    这篇文章主要介绍了python脚本快速查看自己被多少微信好友删除的方法,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Python descriptor(描述符)的实现

    Python descriptor(描述符)的实现

    这篇文章主要介绍了Python descriptor(描述符)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Tensorflow中TFRecord生成与读取的实现

    Tensorflow中TFRecord生成与读取的实现

    TFRecord格式的文件存储形式会很合理的帮我们存储数据,本文主要介绍了Tensorflow中TFRecord生成与读取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • Python文件去除注释的方法

    Python文件去除注释的方法

    这篇文章主要介绍了Python文件去除注释的方法,涉及Python正则表达式及文件操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • selenium + python 获取table数据的示例讲解

    selenium + python 获取table数据的示例讲解

    今天小编就为大家分享一篇selenium + python 获取table数据的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 什么是Python中的匿名函数

    什么是Python中的匿名函数

    在本篇文章里小编给大家整理的是关于Python匿名函数知识点总结,需要的朋友们可以学习参考下。
    2020-06-06
  • python采集微信公众号文章

    python采集微信公众号文章

    这篇文章主要为大家详细介绍了python采集微信公众号文章的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • python人工智能使用RepVgg实现图像分类示例详解

    python人工智能使用RepVgg实现图像分类示例详解

    这篇文章主要介绍了python人工智能使用RepVgg实现图像分类示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Python实现的多线程端口扫描工具分享

    Python实现的多线程端口扫描工具分享

    这篇文章主要介绍了Python实现的多线程端口扫描工具分享,工具实现了扫单IP和扫IP段功能,本文给出运行效果和实现源码,需要的朋友可以参考下
    2015-01-01
  • 基于Python和C++实现删除链表的节点

    基于Python和C++实现删除链表的节点

    这篇文章主要介绍了基于Python和C++实现删除链表的节点,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07

最新评论