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]])

浙公网安备 33010602011771号