1.编程实现任意给定两个相同维度的向量之间的欧氏距离计算函数dist_E(x,y)。
输入:两个任意k维向量x和y,其中k的值随由数据决定。如x=[3,20,3.5], y=[-3,34,7]。
python测试代码如下:
if name == “main”:
x=np.array([3,20,3.5])
y=np.array([-3,34,7])
dist=dist_E(x,y)
print(dist)
(python代码粘贴在此处)
def dist_E(vect1,vect2):
if(vect1.size!= vect2.size):
print("长度不符合要求")
else:
a=np.multiply((vect1-vect2),(vect1-vect2))
dist=math.sqrt(a.sum())
return dist
2.编程实现任意给定两个相同维度的向量之间的夹角余弦相似度计算函数sim=sim_COS(x,y)。输入:两个任意k维向量x和y,其中k的值由数据决定。
python测试代码如下:
if name == “main”:
x=np.array([3, 2, 0, 5, 0, 0, 0, 2, 0, 0])
y=np.array([1, 0, 0, 0, 0, 0, 0, 1, 0, 2])
sim=sim_COS(x,y)
print(sim)
(python代码粘贴在此处)
def sim_COS(vect1,vect2):
if(vect1.size!= vect2.size):
print("长度不符合要求")
else:
s1=sum(vect1.*vect2)/(sqrt(sum(vect1.*vect1))*sqrt(sum(vect2.*vect2)))
return s1
3.编程实现任意给定两个相同维度的布尔向量之间的Jaccard系数计算函数dist1=dist_Jaccard(x,y)。
python测试代码如下:
if name == “main”:
x=np.array([1, 0, 0, 0, 0, 0, 1, 0, 0, 0])
y=np.array([1, 0, 0, 0, 0, 0, 0, 0, 0, 1])
dist=dist_Jaccard(x,y)
print(dist)
(python代码粘贴在此处)
def dist_Jaccard(vect1,vect2):
dist=-1
if(vect1.size!= vect2.size):
print("长度不符合要求")
else:
a1=np.logical_and(vect1==1,vect2==1)
a2=np.logical_or(vect1==1,vect2==1)
x=vect1[a1]
y=vect1[a2]
n1=np.size(x)
n2=np.size(y)
dist=n1/n2
return dist
4.编程实现任意给定两个相同维度的布尔向量之间的简单匹配系数计算函数dist1=dist_SMC(x,y)。
python测试代码如下:
if name == “main”:
x=np.array([1, 0, 0, 0, 0, 0, 1, 0, 0, 0])
y=np.array([1, 0, 0, 0, 0, 0, 0, 0, 0, 1])
dist=dist_SMC(x,y)
print(dist)
(python代码粘贴在此处)
```cpp
def dist_SMC(vect1,vect2):
dist=-1
if(vect1.size!= vect2.size):
print("长度不符合要求")
else:
a1=np.logical_and(vect1==1,vect2==1)
a2=np.logical_or(vect1==1,vect2==1)
b1=np.logical_and(vect1==0,vect2==0)
x=vect1[a1]
y=vect1[a2]
z=vect1[b1]
n1=np.size(x)
n2=np.size(y)
n3=np.size(z)
dist=(n1+n3)/(n2+n3)
return dist