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进程运行时,使用Python自动录制屏幕生成视频,并用以检查其执行情况,感兴趣的小伙伴可以了解下
    2026-03-03
  • 在Django的模型中执行原始SQL查询的方法

    在Django的模型中执行原始SQL查询的方法

    这篇文章主要介绍了在Django的模型中执行原始SQL查询的方法,Django是最具人气的Python web开发框架,需要的朋友可以参考下
    2015-07-07
  • Django 返回json数据的实现示例

    Django 返回json数据的实现示例

    这篇文章主要介绍了Django 返回json数据的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • python使用smtplib模块发送邮件

    python使用smtplib模块发送邮件

    这篇文章主要为大家详细介绍了python使用smtplib模块发送邮件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • Django Form常用功能及代码示例

    Django Form常用功能及代码示例

    这篇文章主要介绍了Django Form常用功能及代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • python 如何上传包到pypi

    python 如何上传包到pypi

    这篇文章主要介绍了python 如何上传包到pypi,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • django的聚合函数和aggregate、annotate方法使用详解

    django的聚合函数和aggregate、annotate方法使用详解

    这篇文章主要介绍了django的聚合函数和aggregate、annotate方法使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python通过Schema实现数据验证方式

    Python通过Schema实现数据验证方式

    这篇文章主要介绍了Python通过Schema实现数据验证方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • python得到一个excel的全部sheet标签值方法

    python得到一个excel的全部sheet标签值方法

    今天小编就为大家分享一篇python得到一个excel的全部sheet标签值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python基础教程之csv格式文件的写入与读取

    python基础教程之csv格式文件的写入与读取

    逗号分隔值(Comma-Separated Values,CSV,也称为字符分隔值,分隔字符也可以不是逗号),新这篇文章主要给大家介绍了关于python基础教程之csv格式文件的写入与读取的相关资料,需要的朋友可以参考下
    2022-03-03

最新评论