当前位置: 首页 > article >正文

python 实现euclidean distance欧式距离算法

euclidean distance欧式距离算法介绍

欧式距离(Euclidean Distance)是度量两点之间距离的一种常用方法,特别是在多维空间中。它基于欧几里得几何中的距离定义,即两点间的直线距离。

在二维空间中,假设有两个点 P 1 ( x 1 , y 1 ) P_1(x_1,y_1) P1(x1,y1) P 2 ( x 2 , y 2 ) P_2(x_2,y_2) P2(x2,y2),则它们之间的欧式距离 𝑑 可以通过以下公式计算:
d = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 d=\sqrt{(x_2−x_1)^2+(y_2−y_1)^2} d=(x2x1)2+(y2y1)2

这个公式可以很容易地扩展到更高维度的空间。例如,在三维空间中,假设有两个点
P 1 ( x 1 , y 1 , z 1 ) P_1(x_1,y_1,z_1) P1(x1,y1,z1) P 2 ( x 2 , y 2 , z 2 ) P_2(x_2,y_2,z_2) P2(x2,y2,z2),则它们之间的欧式距离 𝑑可以通过以下公式计算:
d = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 + ( z 2 − z 1 ) 2 d=\sqrt{(x_2−x_1)^2+(y_2−y_1)^2+(z_2−z_1)^2} d=(x2x1)2+(y2y1)2+(z2z1)2
​对于 𝑛 维空间中的两个点 P 1 ( x 1 , y 1 , z 1 , . . . , p 1 ) P_1(x_1,y_1,z_1,...,p_1) P1(x1,y1,z1,...,p1) P 2 ( x 2 , y 2 , z 2 , . . . , p 2 ) P_2(x_2,y_2,z_2,...,p_2) P2(x2,y2,z2,...,p2),它们之间的欧式距离 𝑑 的一般公式为:
d = ∑ i = 1 n ( p 2 i − p 1 i ) 2 d=\sqrt{\sum_{i=1}^{n}(p_2^i−p_1^i)^2} d=i=1n(p2ip1i)2

其中, p 1 i p_1^i p1i p 2 i p_2^i p2i 分别代表点 P 1 P_1 P1 P 2 P_2 P2​在第 𝑖 维上的坐标。

欧式距离因其直观性和易于计算而广泛应用于多种领域,如机器学习中的 K-最近邻(K-NN)算法、聚类分析等。然而,它也有其局限性,比如对于某些特定的问题(如高维空间中的距离度量),可能需要考虑使用其他类型的距离度量方法。

euclidean distance欧式距离算法python实现样例

可以使用以下代码来实现欧式距离算法:

import math

def euclidean_distance(point1, point2):
    distance = 0
    
    # 检查两个点的维度是否相同
    if len(point1) != len(point2):
        raise ValueError("Points must have the same number of dimensions")
    
    # 计算每个维度的差的平方和
    for i in range(len(point1)):
        distance += math.pow(point1[i] - point2[i], 2)
    
    # 计算平方和的平方根
    distance = math.sqrt(distance)
    
    return distance

使用示例:

point1 = [1, 2, 3]
point2 = [4, 5, 6]

distance = euclidean_distance(point1, point2)
print(distance)

输出结果:

5.196152422706632

http://www.kler.cn/news/305086.html

相关文章:

  • 分享JavaScript中直接调用CSS中的类名
  • 56 - I. 数组中数字出现的次数
  • CAN总线-STM32上CAN外设
  • ansible_find模块
  • 计算机四级数据库原理考试大纲.md
  • 37. MyBatis-Plus是什么?它与MyBatis的主要区别是什么?
  • 音视频开发常见的开源项目汇总
  • 新挂载的磁盘不能创建文件
  • 数据清洗-缺失值填充-随机森林填充
  • 【Django】Django Class-Based Views (CBV) 与 DRF APIView 的区别解析
  • Python基础语法(1)上
  • 基于微信小程序的图书馆预约占座系统
  • 【vscode】 快速生成react组件
  • uniapp小程序,使用腾讯地图获取定位
  • 监听html元素是否被删除,删除之后重新生成被删除的元素
  • PHP悦读随行一键借阅图书小程序
  • 【hot100-java】【环形链表】
  • 代理IP设置后IP不变?可能的原因及解决方法
  • 网站优化与服务器:性能提升的双重奏
  • Orchestrator 与 Mysql 8.0 的兼容性
  • NLP中文本生成任务
  • 【系统规划与管理师】【案例分析】【考点】【答案篇】第6章 IT服务运营管理
  • CSP-J 算法基础 前缀和与差分
  • 计算机毕业设计选题推荐-项目评审系统-Java/Python项目实战
  • 学习使用在windows系统上安装nodejs以及环境配置图文教程整理
  • MongoDB 高级索引
  • linux与unix
  • Ruby 语法概览
  • 《UniVS: Unified and Universal Video Segmentation with Prompts as Queries》要点提炼
  • GitHub上克隆项目