欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > Python实战:计算向量夹角及相关系数

Python实战:计算向量夹角及相关系数

2025/3/17 14:34:55 来源:https://blog.csdn.net/dulgao/article/details/139498318  浏览:    关键词:Python实战:计算向量夹角及相关系数

在Python中,我们可以使用NumPy库来计算向量之间的夹角(通常是它们之间的余弦值)以及相关系数(通常是皮尔逊相关系数)。以下是如何执行这些计算的示例代码。

计算向量夹角(余弦相似度)

假设我们有两个向量vec1vec2,我们可以使用NumPy的dot函数来计算它们的点积,并使用linalg.norm函数来计算它们的范数(长度)。然后,我们可以使用这些值来计算它们之间的余弦值,这可以视为向量之间的夹角(以弧度为单位)的余弦值。

import numpy as np# 定义两个向量
vec1 = np.array([1, 2, 3])
vec2 = np.array([4, 5, 6])# 计算点积
dot_product = np.dot(vec1, vec2)# 计算范数(长度)
norm_vec1 = np.linalg.norm(vec1)
norm_vec2 = np.linalg.norm(vec2)# 计算余弦值
cosine_similarity = dot_product / (norm_vec1 * norm_vec2)print(f"Cosine similarity: {cosine_similarity}")

计算皮尔逊相关系数

皮尔逊相关系数是衡量两个变量之间线性关系强度和方向的统计量。在NumPy中,我们可以使用corrcoef函数来计算两个向量之间的皮尔逊相关系数。

import numpy as np# 定义两个向量
vec1 = np.array([1, 2, 3, 4, 5])
vec2 = np.array([2, 3, 4, 5, 6])# 计算皮尔逊相关系数矩阵
correlation_matrix = np.corrcoef(vec1, vec2)# 皮尔逊相关系数在矩阵的对角线之外(因为矩阵是对称的)
pearson_correlation = correlation_matrix[0, 1]print(f"Pearson correlation: {pearson_correlation}")

注意,np.corrcoef函数返回的是一个2x2的矩阵,其中对角线上的元素是各自向量的自相关系数(总是1),而非对角线上的元素是向量之间的皮尔逊相关系数。在这个例子中,我们只对correlation_matrix[0, 1]感兴趣,它表示vec1vec2之间的皮尔逊相关系数。

这两个计算都是衡量向量之间关系的常用方法,但它们的解释和用途略有不同。余弦相似度主要用于衡量向量的方向相似性,而皮尔逊相关系数则用于衡量两个变量之间的线性关系强度和方向。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词