使用 Scikit-Learn 在 Python 中查找欧几里得距离2024年8月29日 | 阅读 8 分钟 欧几里得距离是欧几里得空间中的距离;这两个概念都以古希腊数学家欧几里得的名字命名,他的《几何原本》长期以来一直是几何学的标准教科书。长度和距离的概念在各种文化中都非常广泛,可以追溯到公元前四千年的苏美尔最早的“质数硝酸盐”管理记录(远在欧几里得之前),并且据推测,它们在儿童中比速度和时间等相关概念发展得更早。但是,距离(作为一个从两个点定义的数字)的概念在欧几里得的《几何原本》中并不一定出现。相反,欧几里得通过线段的全等、通过线段长度的比较以及通过比例概念来内在地处理这个概念。 欧几里得空间中两个点之间的欧几里得距离是连接这两个点的线段的长度。它可以通过这些点的笛卡尔坐标利用勾股定理来计算,因此有时被称为勾股距离。这些名称来自古希腊数学家欧几里得和毕达哥拉斯,尽管欧几里得并未将距离视为数字,并且直到十八世纪才将勾股定理与距离测量联系起来。 两个非点对象之间的距离通常定义为这两个对象上点对之间的最小距离。已知存在计算不同类型对象之间距离的公式,例如点到线的距离。在高等数学中,距离的概念已被推广到抽象度量空间,并且已经研究了不同于欧几里得距离的距离。在统计学和优化的一些应用中,使用欧几里得距离的平方而不是实际距离。 距离公式一维实数线上任意两点之间的距离是它们坐标的数学差的绝对值,即它们的绝对差。因此,如果 p 和 q 是实数线上的两个点,则它们之间的距离由下式给出 d(p, q) = |p-q| 一个更复杂的公式,给出相同的值,但更容易推广到更高维度,是 d(p, q) = √(p-q)2 在此公式中,计算然后取平方根会保持任何正数不变,但会将任何负数替换为其绝对值。 二维在欧几里得平面上,设点 p 的笛卡尔坐标为 q 的坐标为,则 p 和 q 之间的距离由下式给出 d(p, q) = √(q1-p1)2+(q2-p2)2 这应该可以通过将勾股定理应用于一条直角三角形,其水平和垂直边具有连接 p 和 q 的线段作为其斜边来理解。平方根内的两个平方项表示水平和垂直边的正方形的面积,而外部平方根将斜边上的正方形面积转换为斜边的长度。 也可以计算由极坐标给出的点的距离。如果 p 的极坐标是 (r, θ) 并且 q 的极坐标是 (s, ψ),则它们的距离由余弦定律给出 d(p, q) = √r2+s2-2rs cos(θ-ψ) 当 p 和 q 在复平面上表示为复数时,可以使用与表示为实数的一维点相同的公式,尽管这里绝对值符号表示复数模 d(p, q) = |p-q| 性质欧几里得距离是度量空间中距离的原型示例,并且满足度量空间的所有定义属性 它是对称的,这意味着对于所有点 p 和 q,d(p, q) = d(q, p)。也就是说(与单向道路的街道距离不同),两点之间的距离不取决于哪两点是起点,哪一点是终点。 它是正的,意味着任意两不同点之间的距离是一个正数,而从任何点到自身的距离为零。 它满足三角不等式:对于任意三个点 p、q 和 r,直观地说,通过 q 从 p 到 r 的路程不应比直接从 p 到 r 的路程更短。 另一个性质是托勒密不等式,它涉及四个点 p、q、r 和 s 之间的欧几里得距离。它陈述如下: d(p, q).d(r, s) + d(q, r).d(p, s) >= d(p, r).d(q, s) 对于平面上的点,这可以改写为表示对于任何四边形,对边乘积加上对角线乘积至少与对角线乘积一样大。然而,托勒密的不等式更普遍地适用于任何维度的欧几里得空间中的点,无论它们是如何排列的。对于非欧几里得空间的度量空间中的点,此不等式可能不成立。欧几里得距离数学侧重于欧几里得距离的性质,如托勒密的不等式,以及它们在测试给定距离集是否来自欧几里得空间中的点时的应用。 根据贝克曼-夸尔斯定理,任何保持单位距离的欧几里得平面或更高维欧几里得空间的变换都必须是等距变换,保留所有距离。 使用 Scikit-Learn 计算欧几里得距离对于 Python 中的人工智能,Scikit-Learn 是最好也是最有用的库。它包含许多工具,包括回归、分类、聚类和其他有用的机器学习算法。欧几里得距离是聚类算法用来确定簇如何得到优化,即簇的优化程度的度量之一。 我们都使用二维中著名的距离公式来计算计算中两点之间的距离 欧几里得距离公式d(x, y) = √(x1-x2)2+(y1-y2)2 其中,(x1, x2) 和 (y1, y2) 是笛卡尔平面上的点。 参数
一个数组,其中每一行是一个样本,每一列是一个特征。
一个数组,其中每一行是一个样本,每一列是一个特征。如果为 None,则该方法使用 Y=X。
Y 中向量的预计算点积(例如,(Y**2).sum(axis=1)) 有时可能被忽略,请参阅下面的注释。
返回平方欧几里得距离。
X 中向量的预计算点积(例如,(X**2).sum(axis=1)) 有时可能被忽略,请参阅下面的注释。 返回值distancesndarray of shape (n_samples_X, n_samples_Y) 返回 X 的行向量与 Y 的列向量之间的距离。 算法(步骤)以下是执行所需任务的计算/步骤:
示例以下项目使用 sklearn 模块的 scikit learn 函数的 euclidean_distances() 返回数组元素与原点之间的欧几里得距离。 输出 执行后,上述程序将生成以下结果 The Resultant euclidean distance of the array using the Scikit-learn method is: [[ 6.28490254] [ 4.58257569] [12.04159458]] 方法 2:计算两个数组之间的欧几里得距离两个数组元素之间的欧几里得距离可以以类似的方式计算。因此,如果列表分别有 m 和 n 个元素,则结果数组将有 m * n 个元素。 算法(步骤)以下是执行所需任务的计算/步骤。
示例 以下项目使用 sklearn 模块的 euclidean_distances() 函数返回两个相应输入数组元素之间的欧几里得距离。 输出 执行后,上述程序将生成以下结果 The Resultant euclidean distance between Ar1 and Ar2 is: [[4.18330013 4.30116263 5.12347538] [4. 3.31662479 8.7321246 ] [8.1240384 9.21954446 4.82182538]] 说明 如您所见,结果是一个二维数组。此数组中的每个元素包含第一个数组(称为“Ar1”)中的点与第二个数组(称为“Ar2”)中的另一组点之间的距离。 下一个主题Python 中的梯度下降优化器 |
在 Python 中检查两个字符串是否同构的问题涉及比较两个给定字符串并确定它们之间是否存在字符的一一映射或对应关系。换句话说,如果两个字符串具有相同的...
阅读9分钟
目标是根据元素的长度对列表进行排序。另外,假设列表只包含一种类型的元素。例如:输入 = ["Javatpoint", "Google", "Yahoo", "Microsoft"] 输出 = ["Yahoo", "Google", "Microsoft", "Javatpoint"] 解释:输入列表是一个字符串列表:["Javatpoint", "Google",...
5 分钟阅读
在本文中,我们将了解噪声、各种类型的噪声、图像去噪、使用 OpenCV 进行图像去噪、OpenCV 中的非局部均值算法以及 OpenCV 中的 fastNlMeansDenoising 函数。fastNIMeansDenoising 是 OpenCV 模块的一种方法。它用于对图像进行去噪。取出噪声的过程……
阅读 6 分钟
这里的缩进是指在开始任何语句或代码块时使用的空格和制表符的数量。这些空白和制表符的使用必须与特定代码块结束时匹配;因此,它指的是特定块的正确缩进。这个...
阅读 15 分钟
在本教程中,我们将讨论 Python 中未找到模块错误以及如何处理它。ModuleNotFoundError Python 开发人员经常遇到“ModuleNotFoundError No module named Python”问题。当您尝试将模块导入到代码中时,Python 解释器会遇到此错误,因为...
阅读 3 分钟
编程是我们可以掌握的世界上最赚钱的在线技能之一。如果您已经决定开始我们的 IT 冒险,请尝试学习 Python。我们将向您展示如何以有组织、有趣的方式更快地学习 Python。Python 可以快速学习……
5 分钟阅读
- Cookie 的设置方法 Cookie 的处理是 Web 应用程序的一个重要概念。Django 提供了与 Cookie 交互的简单方法。Cookie 允许我们存储和检索保存在会话中的数据。会话和 Cookie 与……
阅读 6 分钟
特征向量是特定可观察现象的可量化特征。一个很好的例子是人类类别的高度和体重特征,因为它们可以被看到和测量。假设它们将具有静态或非线性关系,我们通常依赖计算机特征...
阅读 3 分钟
在统计学中,数据可以呈现多种形状和行为,分布对于理解和建模现实世界现象至关重要。其中,Log-Laplace 分布是一种多功能选项,用于捕获具有独特对数形状的重尾数据模式。其应用范围从金融建模到异常检测,...
阅读9分钟
在本教程中,我们将编写 Python 程序来检查给定的链表是否为循环链表。我们将了解确定循环链表的各种高效方法。我们假设您熟悉基本...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India