余弦夹角计算公式:
(余弦定理可用于文本分析中判断文章相似度)
程序中若存在除法,当除数为0时会报错,当除数及被除数均为0时,程序会报警告:
RuntimeWarning: invalid value encountered in double_scalars
本人愚见,解决除数为0的问题,尝试以下2种方法
方法一:使用try
def cos(x,y):
a = np.dot(x,y) #求两个数组内积
b = linalg.norm(x) * np.linalg.norm(y) #矩阵元素平方和开根号
return a / b
#计算数据
for n in range(data.shape[0]):
try:
data.loc[n,'余弦'] = cos(data.loc[n,'A'],data.loc[n,'B'])
except ValueError:
print(f'第{n}条数据向量均为0')
方法二:if
def cos(x,y):
a = np.dot(x,y) #求两个数组内积
b = linalg.norm(x) * np.linalg.norm(y) #矩阵元素平方和开根号
if b != 0:
return a / b
else:
return 0
注:
np.dot
求两个数组内积,(x1y1 + x2y2 + … + xn*yn)
np.linalg.norm
求范数
函数参数:
x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False)
x
:表示矩阵
(一维或n维)
ord
:范数类型
axis
:处理类型
axis=1表示按行向量处理,求多个行向量的范数
axis=0表示按列向量处理,求多个列向量的范数
axis=None表示矩阵范数(默认)
keeping
:是否保持矩阵二维特性,默认不保留二维特性(False)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)