Torch和Numpy之——最小二乘法与余弦相似度

1最小二乘法

输入:

import numpy as np

x = np.array([[2],[5],[4]])
w = 5
y = w*x

print(x)
print(y)
print('_______________________________')

print(np.linalg.inv((x.T@x))@x.T@y)
print(np.matrix(x.T@x).I@x.T@y)

输出

[[2]
 [5]
 [4]]
[[10]
 [25]
 [20]]
_______________________________
[[5.]]
[[5.]]

 2余弦相似度

输入

import torch
import math

a = torch.tensor([[2.],[3.],[6.]])
b = torch.tensor([[2.],[3.],[7.]])

a1 = torch.sqrt(torch.sum(torch.pow(a,2)))  #pow(a,2),对a中数据求2次方,,sum求和,sqrt开方
b1 = torch.sqrt(torch.sum(torch.pow(b,2)))

cosx = torch.matmul(a.t(),b)/(a1*b1)  #即求向量夹角的公式,matmul(a.t(),b)表示向量a乘向量b
x_r = torch.acos(cosx)  #求弧度

x = math.degrees(x_r)  #将弧度转化为角度
print(x)  #角度
print(x_r)  #弧度

输出

3.7507147128951694
tensor([[0.0655]])

 

posted @ 2020-07-22 16:49  前尘•昨夜•此刻  阅读(471)  评论(0)    收藏  举报